diff --git a/app/adminapi/lists/cost_project/CostApprovedProjectLists.php b/app/adminapi/lists/cost_project/CostApprovedProjectLists.php index d9ec4f1e4..3e5f72d59 100644 --- a/app/adminapi/lists/cost_project/CostApprovedProjectLists.php +++ b/app/adminapi/lists/cost_project/CostApprovedProjectLists.php @@ -43,7 +43,7 @@ { return [ '=' => ['business_nature', 'industry_nature', 'fund_sources', 'const_area', 'status'], - '%like%' => ['contract_name', 'contract_num', 'part_a', 'part_b'], + '%like%' => ['contract_name', 'contract_code', 'part_a', 'part_b'], ]; } diff --git a/app/adminapi/logic/cost_project/CostProjectLogic.php b/app/adminapi/logic/cost_project/CostProjectLogic.php index 2e327b8d5..301620e47 100644 --- a/app/adminapi/logic/cost_project/CostProjectLogic.php +++ b/app/adminapi/logic/cost_project/CostProjectLogic.php @@ -11,317 +11,309 @@ // +---------------------------------------------------------------------- // | author: likeadminTeam // +---------------------------------------------------------------------- - -namespace app\adminapi\logic\cost_project; - - -use app\common\model\ApprovalIssuanceAchievementDocuments; -use app\common\model\cost_project\CostProject; -use app\common\logic\BaseLogic; -use app\common\model\auth\Admin; -use app\common\model\cost_project\CostApprovedProject; -use app\common\model\cost_project\CostProjectPerson; -use app\common\model\DataReception; -use app\common\model\dept\Dept; -use app\common\model\dept\Orgs; -use app\common\model\GeoCity; -use app\common\model\GeoProvince; -use app\common\model\project_process_management\ApplyWithSeal; -use app\common\model\project_process_management\JianliProjectProgressReport; -use app\common\model\project_process_management\ProjectChangeVisa; -use app\common\model\project_process_management\ProjectProgressPayment; -use app\common\model\project_process_management\ProjectRectification; -use app\common\model\project_process_management\ProjectSurveySignature; -use app\common\model\ProjectCommission; -use app\common\model\task\TaskAllocation; -use app\common\model\task\TaskType; -use app\common\model\TaskHandlingThreeLevelReview; -use think\facade\Db; - - -/** - * 造价项目台账逻辑 - * Class CostProjectLogic - * @package app\adminapi\logic\cost_project - */ -class CostProjectLogic extends BaseLogic -{ - - - /** - * @notes 添加造价项目台账 - * @param array $params - * @return bool - * @author likeadmin - * @date 2024/02/21 09:23 - */ - public static function add(array $params): bool - { - Db::startTrans(); - try { - CostProject::create([ - 'project_num' => generate_sn(CostProject::class, 'project_num'), - 'project_name' => $params['project_name'], - 'contract_id' => $params['contract_id'], - 'types' => $params['types'], - 'industry' => $params['industry'], - 'province' => $params['province'], - 'city' => $params['city'], - 'address' => $params['address'], - 'starting' => !empty($params['starting']) ? strtotime($params['starting']) : 0, - 'endtime' => !empty($params['endtime']) ? strtotime($params['endtime']) : 0, - 'jhgq' => $params['jhgq'], - 'org_id' => $params['org_id'], - 'depar' => $params['depar'], - 'principal' => $params['principal'], - 'person' => $params['person'] ? json_encode($params['person']) : null, - 'invest' => $params['invest'], - 'budget' => $params['budget'], - 'cost' => $params['cost'], - 'approval' => $params['approval'], - 'aunit' => $params['aunit'], - 'js_unit' => $params['js_unit'], - 'Acontact' => $params['Acontact'], - 'acontactnum' => $params['acontactnum'], - 'date' => !empty($params['date']) ? strtotime($params['date']) : 0, - 'generalize' => $params['generalize'], - 'note' => $params['note'], - 'remark' => $params['remark'], - 'annex' => $params['annex'] ? json_encode($params['annex']) : null, - ]); - if($params['contract_id']>0){ - CostApprovedProject::where('id',$params['contract_id'])->update(['status'=>2]); - } - Db::commit(); - return true; - } catch (\Exception $e) { - Db::rollback(); - self::setError($e->getMessage()); - return false; - } - } - - - /** - * @notes 编辑造价项目台账 - * @param array $params - * @return bool - * @author likeadmin - * @date 2024/02/21 09:23 - */ - public static function edit(array $params): bool - { - Db::startTrans(); - try { - CostProject::where('id', $params['id'])->update([ - 'project_num' => generate_sn(CostProject::class, 'project_num'), - 'project_name' => $params['project_name'], - 'contract_id' => $params['contract_id'], - 'types' => $params['types'], - 'industry' => $params['industry'], - 'province' => $params['province'], - 'city' => $params['city'], - 'address' => $params['address'], - 'starting' => !empty($params['starting']) ? strtotime($params['starting']) : 0, - 'endtime' => !empty($params['endtime']) ? strtotime($params['endtime']) : 0, - 'jhgq' => $params['jhgq'], - 'org_id' => $params['org_id'], - 'depar' => $params['depar'], - 'principal' => $params['principal'], - 'person' => $params['person'] ? json_encode($params['person']) : null, - 'invest' => $params['invest'], - 'budget' => $params['budget'], - 'cost' => $params['cost'], - 'approval' => $params['approval'], - 'aunit' => $params['aunit'], - 'js_unit' => $params['js_unit'], - 'Acontact' => $params['Acontact'], - 'acontactnum' => $params['acontactnum'], - 'date' => !empty($params['date']) ? strtotime($params['date']) : 0, - 'generalize' => $params['generalize'], - 'note' => $params['note'], - 'remark' => $params['remark'], - 'annex' => $params['annex'] ? json_encode($params['annex']) : null, - ]); - Db::commit(); - return true; - } catch (\Exception $e) { - Db::rollback(); - self::setError($e->getMessage()); - return false; - } - } - - - /** - * @notes 删除造价项目台账 - * @param array $params - * @return bool - * @author likeadmin - * @date 2024/02/21 09:23 - */ - public static function delete(array $params): bool - { - //任务类别 - $task_type = TaskType::where('cost_project_id','in',$params['id'])->findOrEmpty(); - if(!$task_type->isEmpty()){ - self::setError('此数据关联了任务类别信息,须删除任务类别信息'); - return false; + + namespace app\adminapi\logic\cost_project; + + + use app\common\logic\BaseLogic; + use app\common\model\ApprovalIssuanceAchievementDocuments; + use app\common\model\cost_project\CostApprovedProject; + use app\common\model\cost_project\CostProject; + use app\common\model\cost_project\CostProjectPerson; + use app\common\model\DataReception; + use app\common\model\dept\Dept; + use app\common\model\GeoCity; + use app\common\model\GeoProvince; + use app\common\model\project_process_management\ApplyWithSeal; + use app\common\model\project_process_management\JianliProjectProgressReport; + use app\common\model\project_process_management\ProjectChangeVisa; + use app\common\model\project_process_management\ProjectProgressPayment; + use app\common\model\project_process_management\ProjectRectification; + use app\common\model\project_process_management\ProjectSurveySignature; + use app\common\model\ProjectCommission; + use app\common\model\task\TaskAllocation; + use app\common\model\task\TaskType; + use app\common\model\TaskHandlingThreeLevelReview; + use think\facade\Db; + + + /** + * 造价项目台账逻辑 + * Class CostProjectLogic + * @package app\adminapi\logic\cost_project + */ + class CostProjectLogic extends BaseLogic + { + + + /** + * @notes 添加造价项目台账 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/02/21 09:23 + */ + public static function add(array $params): bool + { + Db::startTrans(); + try { + CostProject::create([ + 'project_num' => generate_sn(CostProject::class, 'project_num'), + 'project_name' => $params['project_name'], + 'contract_id' => $params['contract_id'], + 'types' => $params['types'], + 'industry' => $params['industry'], + 'province' => $params['province'], + 'city' => $params['city'], + 'address' => $params['address'], + 'starting' => !empty($params['starting']) ? strtotime($params['starting']) : 0, + 'endtime' => !empty($params['endtime']) ? strtotime($params['endtime']) : 0, + 'jhgq' => $params['jhgq'], + 'depar' => $params['depar'], + 'principal' => $params['principal'], + 'person' => $params['person'] ? json_encode($params['person']) : null, + 'invest' => $params['invest'], + 'budget' => $params['budget'], + 'cost' => $params['cost'], + 'approval' => $params['approval'], + 'aunit' => $params['aunit'], + 'js_unit' => $params['js_unit'], + 'Acontact' => $params['Acontact'], + 'acontactnum' => $params['acontactnum'], + 'date' => !empty($params['date']) ? strtotime($params['date']) : 0, + 'generalize' => $params['generalize'], + 'note' => $params['note'], + 'remark' => $params['remark'], + 'annex' => $params['annex'] ? json_encode($params['annex']) : null, + ]); + if ($params['contract_id'] > 0) { + CostApprovedProject::where('id', $params['contract_id'])->update(['status' => 2]); + } + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } } - //任务分配 - $task_allocation = TaskAllocation::where('cost_project_id','in',$params['id'])->findOrEmpty(); - if(!$task_allocation->isEmpty()){ - self::setError('此数据关联了任务分配信息,须删除任务分配信息'); - return false; - } - //任务办理与三级审核 - $task_handling_three_level_review = TaskHandlingThreeLevelReview::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$task_handling_three_level_review->isEmpty()){ - self::setError('此数据关联了任务办理与三级审核信息,须删除任务办理与三级审核信息'); - return false; - } - //成果文件审定、签发列表 - $approval_issuance_achievement_documents = ApprovalIssuanceAchievementDocuments::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$approval_issuance_achievement_documents->isEmpty()){ - self::setError('此数据关联了成果文件审定签发信息,须删除成果文件审定签发信息'); - return false; - } - //资料接收 - $data_reception = DataReception::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$data_reception->isEmpty()){ - self::setError('此数据关联了资料接收信息,须删除资料接收信息'); - return false; - } - //项目提成 - $project_commission = ProjectCommission::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$project_commission->isEmpty()){ - self::setError('此数据关联了项目提成信息,须删除项目提成信息'); - return false; - } - //项目变更签证 - $project_change_visa = ProjectChangeVisa::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$project_change_visa->isEmpty()){ - self::setError('此数据关联了项目变更签证信息,须删除项目变更签证信息'); - return false; - } - //项目踏勘会签 - $project_survey_signature = ProjectSurveySignature::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$project_survey_signature->isEmpty()){ - self::setError('此数据关联了项目踏勘会签信息,须删除项目踏勘会签信息'); - return false; - } - //项目整改 - $project_rectification = ProjectRectification::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$project_rectification->isEmpty()){ - self::setError('此数据关联了项目整改信息,须删除项目整改信息'); - return false; - } - //项目进度汇报 - $jianli_project_progress_report = JianliProjectProgressReport::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$jianli_project_progress_report->isEmpty()){ - self::setError('此数据关联了项目进度汇报信息,须删除项目进度汇报信息'); - return false; - } - //项目进度款 - $project_progress_payment = ProjectProgressPayment::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$project_progress_payment->isEmpty()){ - self::setError('此数据关联了项目进度款信息,须删除项目进度款信息'); - return false; - } - //用章申请 - $apply_with_seal = ApplyWithSeal::where('project_id','in',$params['id'])->findOrEmpty(); - if(!$apply_with_seal->isEmpty()){ - self::setError('此数据关联了用章申请信息,须删除用章申请信息'); - return false; - } - return CostProject::destroy($params['id']); - } - - - /** - * @notes 获取造价项目台账详情 - * @param $params - * @return array - * @author likeadmin - * @date 2024/02/21 09:23 - */ - public static function detail($params): array - { - $res= CostProject::with(['contract'])->findOrEmpty($params['id']); - $res['person_text'] = $res->person_text; - $res['types_text'] = $res->types_text; - $res['industry_nature_text'] = $res['contract']->industry_nature_text; - $province = GeoProvince::field('province_name')->where('province_code',$res['province'])->findOrEmpty(); - $city = GeoCity::field('city_name')->where('city_code',$res['city'])->findOrEmpty(); - $org = Orgs::field('name')->where('id',$res['org_id'])->findOrEmpty(); - $dept = Dept::field('name')->where('id',$res['depar'])->findOrEmpty(); - $res['province_name'] = $province['province_name']; - $res['city_name'] = $city['city_name']; - $res['org_name'] = $org['name']; - $res['dept_name'] = $dept['name']; - return $res->toArray(); - } - - public static function datas($name) - { - $datas = CostProject::where(function ($query) use ($name) { - if ($name) { - $query->where('project_name', 'like', '%' . $name . '%'); - } - }) - ->field(['id', 'project_num', 'project_name']) - ->order(['id' => 'desc']) - ->select() - ->toArray(); - foreach ($datas as &$item) { - $item['projectinfo'] = 'ID:' . $item['id'] . ' / 名称:' . $item['project_name']; - } - return $datas; - } - - public static function createProject($data) - { - Db::startTrans(); - try { - $res = CostProject::create([ - 'project_num' => generate_sn(CostProject::class, 'project_num'), - 'project_name' => $data['project_name'], - 'contract_id' => $data['contract_id'], - 'types' => $data['types'], - 'industry' => $data['industry'], - 'province' => $data['province'], - 'city' => $data['city'], - 'address' => $data['address'], - 'starting' => $data['starting'], - 'endtime' => $data['endtime'], - 'jhgq' => $data['jhgq'], - 'depar' => $data['depar'], - 'principal' => $data['principal'], - 'invest' => $data['invest'], - 'budget' => $data['budget'], - 'cost' => $data['cost'], - 'approval' => $data['approval'], - 'aunit' => $data['aunit'], - 'Acontact' => $data['Acontact'], - 'acontactnum' => $data['acontactnum'], - 'date' => $data['date'], - 'generalize' => $data['generalize'], - 'note' => $data['note'], - 'remark' => $data['remark'], - 'annex' => $data['annex'] - ]); - if ($data['person_id']) { - $arr = []; - $person_id = explode(',', $data['person_id']); - (new CostProjectPerson)->delete($person_id); - foreach ($person_id as $k => $v) { - $arr[] = ['cost_project_id' => $data->id, $v]; - } - $arr ?? (new CostProjectPerson)->saveAll($arr); - } - return $res; - } catch (\Exception $e) { - return false; - } - } -} + + + /** + * @notes 编辑造价项目台账 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/02/21 09:23 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + CostProject::where('id', $params['id'])->update([ + 'project_num' => generate_sn(CostProject::class, 'project_num'), + 'project_name' => $params['project_name'], + 'contract_id' => $params['contract_id'], + 'types' => $params['types'], + 'industry' => $params['industry'], + 'province' => $params['province'], + 'city' => $params['city'], + 'address' => $params['address'], + 'starting' => !empty($params['starting']) ? strtotime($params['starting']) : 0, + 'endtime' => !empty($params['endtime']) ? strtotime($params['endtime']) : 0, + 'jhgq' => $params['jhgq'], + 'depar' => $params['depar'], + 'principal' => $params['principal'], + 'person' => $params['person'] ? json_encode($params['person']) : null, + 'invest' => $params['invest'], + 'budget' => $params['budget'], + 'cost' => $params['cost'], + 'approval' => $params['approval'], + 'aunit' => $params['aunit'], + 'js_unit' => $params['js_unit'], + 'Acontact' => $params['Acontact'], + 'acontactnum' => $params['acontactnum'], + 'date' => !empty($params['date']) ? strtotime($params['date']) : 0, + 'generalize' => $params['generalize'], + 'note' => $params['note'], + 'remark' => $params['remark'], + 'annex' => $params['annex'] ? json_encode($params['annex']) : null, + ]); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + /** + * @notes 获取造价项目台账详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/02/21 09:23 + */ + public static function detail($params): array + { + $res = CostProject::with(['contract'])->findOrEmpty($params['id']); + $res['person_text'] = $res->person_text; + $res['types_text'] = $res->types_text; + $res['industry_nature_text'] = $res['contract']->industry_nature_text; + $province = GeoProvince::field('province_name')->where('province_code', $res['province'])->findOrEmpty(); + $city = GeoCity::field('city_name')->where('city_code', $res['city'])->findOrEmpty(); + $dept = Dept::field('name')->where('id', $res['depar'])->findOrEmpty(); + $res['province_name'] = $province['province_name']; + $res['city_name'] = $city['city_name']; + $res['dept_name'] = $dept['name']; + return $res->toArray(); + } + + public static function datas($name) + { + $datas = CostProject::where(function ($query) use ($name) { + if ($name) { + $query->where('project_name', 'like', '%' . $name . '%'); + } + }) + ->field(['id', 'project_num', 'project_name']) + ->order(['id' => 'desc']) + ->select() + ->toArray(); + foreach ($datas as &$item) { + $item['projectinfo'] = 'ID:' . $item['id'] . ' / 名称:' . $item['project_name']; + } + return $datas; + } + + public static function createProject($data) + { + Db::startTrans(); + try { + $res = CostProject::create([ + 'project_num' => generate_sn(CostProject::class, 'project_num'), + 'project_name' => $data['project_name'], + 'contract_id' => $data['contract_id'], + 'types' => $data['types'], + 'industry' => $data['industry'], + 'province' => $data['province'], + 'city' => $data['city'], + 'address' => $data['address'], + 'starting' => $data['starting'], + 'endtime' => $data['endtime'], + 'jhgq' => $data['jhgq'], + 'depar' => $data['depar'], + 'principal' => $data['principal'], + 'invest' => $data['invest'], + 'budget' => $data['budget'], + 'cost' => $data['cost'], + 'approval' => $data['approval'], + 'aunit' => $data['aunit'], + 'Acontact' => $data['Acontact'], + 'acontactnum' => $data['acontactnum'], + 'date' => $data['date'], + 'generalize' => $data['generalize'], + 'note' => $data['note'], + 'remark' => $data['remark'], + 'annex' => $data['annex'] + ]); + if ($data['person_id']) { + $arr = []; + $person_id = explode(',', $data['person_id']); + (new CostProjectPerson)->delete($person_id); + foreach ($person_id as $k => $v) { + $arr[] = ['cost_project_id' => $data->id, $v]; + } + $arr ?? (new CostProjectPerson)->saveAll($arr); + } + return $res; + } catch (\Exception $e) { + return false; + } + } + + /** + * @notes 删除造价项目台账 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/02/21 09:23 + */ + public static function delete(array $params): bool + { + //任务类别 + $task_type = TaskType::where('cost_project_id', 'in', $params['id'])->findOrEmpty(); + if (!$task_type->isEmpty()) { + self::setError('此数据关联了任务类别信息,须删除任务类别信息'); + return false; + } + //任务分配 + $task_allocation = TaskAllocation::where('cost_project_id', 'in', $params['id'])->findOrEmpty(); + if (!$task_allocation->isEmpty()) { + self::setError('此数据关联了任务分配信息,须删除任务分配信息'); + return false; + } + //任务办理与三级审核 + $task_handling_three_level_review = TaskHandlingThreeLevelReview::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$task_handling_three_level_review->isEmpty()) { + self::setError('此数据关联了任务办理与三级审核信息,须删除任务办理与三级审核信息'); + return false; + } + //成果文件审定、签发列表 + $approval_issuance_achievement_documents = ApprovalIssuanceAchievementDocuments::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$approval_issuance_achievement_documents->isEmpty()) { + self::setError('此数据关联了成果文件审定签发信息,须删除成果文件审定签发信息'); + return false; + } + //资料接收 + $data_reception = DataReception::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$data_reception->isEmpty()) { + self::setError('此数据关联了资料接收信息,须删除资料接收信息'); + return false; + } + //项目提成 + $project_commission = ProjectCommission::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$project_commission->isEmpty()) { + self::setError('此数据关联了项目提成信息,须删除项目提成信息'); + return false; + } + //项目变更签证 + $project_change_visa = ProjectChangeVisa::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$project_change_visa->isEmpty()) { + self::setError('此数据关联了项目变更签证信息,须删除项目变更签证信息'); + return false; + } + //项目踏勘会签 + $project_survey_signature = ProjectSurveySignature::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$project_survey_signature->isEmpty()) { + self::setError('此数据关联了项目踏勘会签信息,须删除项目踏勘会签信息'); + return false; + } + //项目整改 + $project_rectification = ProjectRectification::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$project_rectification->isEmpty()) { + self::setError('此数据关联了项目整改信息,须删除项目整改信息'); + return false; + } + //项目进度汇报 + $jianli_project_progress_report = JianliProjectProgressReport::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$jianli_project_progress_report->isEmpty()) { + self::setError('此数据关联了项目进度汇报信息,须删除项目进度汇报信息'); + return false; + } + //项目进度款 + $project_progress_payment = ProjectProgressPayment::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$project_progress_payment->isEmpty()) { + self::setError('此数据关联了项目进度款信息,须删除项目进度款信息'); + return false; + } + //用章申请 + $apply_with_seal = ApplyWithSeal::where('project_id', 'in', $params['id'])->findOrEmpty(); + if (!$apply_with_seal->isEmpty()) { + self::setError('此数据关联了用章申请信息,须删除用章申请信息'); + return false; + } + return CostProject::destroy($params['id']); + } + } diff --git a/app/common/model/cost_project/CostProject.php b/app/common/model/cost_project/CostProject.php index e67cb640a..ffb887782 100644 --- a/app/common/model/cost_project/CostProject.php +++ b/app/common/model/cost_project/CostProject.php @@ -11,61 +11,68 @@ // +---------------------------------------------------------------------- // | author: likeadminTeam // +---------------------------------------------------------------------- - -namespace app\common\model\cost_project; - - -use app\common\model\auth\Admin; -use app\common\model\BaseModel; -use app\common\model\dict\DictData; -use think\model\concern\SoftDelete; - - -/** - * 造价项目台账模型 - * Class CostProject - * @package app\common\model\cost_project - */ -class CostProject extends BaseModel -{ - use SoftDelete; - protected $name = 'cost_project'; - protected $deleteTime = 'delete_time'; - - public function contract() - { - return $this->hasOne(CostApprovedProject::class, 'id','contract_id'); - } - - public function CostProjectContract() - { - return $this->hasOne(CostProjectContract::class, 'id','contract_id'); - } - public function getTypesTextAttr($value,$data){ - $dict = DictData::where('type_value','consultation_type')->column('name','value'); - return !empty($data['types']) ? $dict[$data['types']] : ''; - } + namespace app\common\model\cost_project; - public function getPersonAttr($value){ - return !empty($value) ? json_decode($value,true) : ''; - } - public function getStartingAttr($value){ - return !empty($value) ? date('Y-m-d',$value) : ''; - } + use app\common\model\auth\Admin; + use app\common\model\BaseModel; + use app\common\model\dict\DictData; + use app\common\model\marketing\MarketingContract; + use think\model\concern\SoftDelete; - public function getEndtimeAttr($value){ - return !empty($value) ? date('Y-m-d',$value) : ''; - } - public function getDateAttr($value){ - return !empty($value) ? date('Y-m-d',$value) : ''; - } - - public function getPersonTextAttr($value,$data): string + /** + * 造价项目台账模型 + * Class CostProject + * @package app\common\model\cost_project + */ + class CostProject extends BaseModel { - $person = Admin::where('id','in',json_decode($data['person'],true))->column('name'); - return !empty($person) ? implode(',',$person) : ''; - } -} \ No newline at end of file + use SoftDelete; + + protected $name = 'cost_project'; + protected $deleteTime = 'delete_time'; + + public function contract() + { + return $this->hasOne(MarketingContract::class, 'id', 'contract_id'); + } + + public function CostProjectContract() + { + return $this->hasOne(MarketingContract::class, 'id', 'contract_id'); + } + + public function getTypesTextAttr($value, $data) + { + $dict = DictData::where('type_value', 'consultation_type')->column('name', 'value'); + return !empty($data['types']) ? $dict[$data['types']] : ''; + } + + public function getPersonAttr($value) + { + return !empty($value) ? json_decode($value, true) : ''; + } + + public function getStartingAttr($value) + { + return !empty($value) ? date('Y-m-d', $value) : ''; + } + + public function getEndtimeAttr($value) + { + return !empty($value) ? date('Y-m-d', $value) : ''; + } + + public function getDateAttr($value) + { + return !empty($value) ? date('Y-m-d', $value) : ''; + } + + public function getPersonTextAttr($value, $data): string + { + $person = Admin::where('id', 'in', json_decode($data['person'], true))->column('name'); + return !empty($person) ? implode(',', $person) : ''; + } + } \ No newline at end of file