diff --git a/app/adminapi/logic/cost_project/CostProjectLogic.php b/app/adminapi/logic/cost_project/CostProjectLogic.php index 374388780..dee89d2fe 100644 --- a/app/adminapi/logic/cost_project/CostProjectLogic.php +++ b/app/adminapi/logic/cost_project/CostProjectLogic.php @@ -42,7 +42,7 @@ class CostProjectLogic extends BaseLogic { Db::startTrans(); try { - $data = CostProject::create([ + CostProject::create([ 'project_num' => generate_sn(CostProject::class, 'project_num'), 'project_name' => $params['project_name'], 'contract_id' => $params['contract_id'], @@ -51,12 +51,13 @@ class CostProjectLogic extends BaseLogic 'province' => $params['province'], 'city' => $params['city'], 'address' => $params['address'], - 'starting' => $params['starting'], - 'endtime' => $params['endtime'], + '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'], @@ -65,20 +66,12 @@ class CostProjectLogic extends BaseLogic 'js_unit' => $params['js_unit'], 'Acontact' => $params['Acontact'], 'acontactnum' => $params['acontactnum'], - 'date' => $params['date'], + '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['person_id']) { - $arr = []; - $person_id = explode(',', $params['person_id']); - foreach ($person_id as $k => $v) { - $arr[] = ['cost_project_id' => $data->id, $v]; - } - $arr ?? (new CostProjectPerson)->saveAll($arr); - } Db::commit(); return true; } catch (\Exception $e) { @@ -101,43 +94,35 @@ class CostProjectLogic extends BaseLogic Db::startTrans(); try { CostProject::where('id', $params['id'])->update([ - 'project_num' => $params['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' => $params['starting'], - 'endtime' => $params['endtime'], - 'jhgq' => $params['jhgq'], - 'org_id' => $params['org_id'], - 'depar' => $params['depar'], - 'principal' => $params['principal'], - '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' => $params['date'], - 'generalize' => $params['generalize'], - 'note' => $params['note'], - 'remark' => $params['remark'], + '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['person_id']) { - $arr = []; - $person_id = explode(',', $params['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); - } Db::commit(); return true; } catch (\Exception $e) { @@ -170,17 +155,9 @@ class CostProjectLogic extends BaseLogic */ public static function detail($params): array { - $res= CostProject::with(['contract'])->findOrEmpty($params['id'])->toArray(); - if($res){ - $uid=(new CostProjectPerson)->where('cost_project_id',$res['id'])->column('uid'); - if($uid){ - $admin=Admin::whereIn('id',$uid)->column('name'); - if($admin){ - $res['person']=implode(',',$admin); - } - } - } - return $res; + $res= CostProject::with(['contract'])->findOrEmpty($params['id']); + $res['person_text'] = $res->person_text; + return $res->toArray(); } public static function datas($name) diff --git a/app/adminapi/validate/cost_project/CostProjectValidate.php b/app/adminapi/validate/cost_project/CostProjectValidate.php index c38ee5e73..e95057ddc 100644 --- a/app/adminapi/validate/cost_project/CostProjectValidate.php +++ b/app/adminapi/validate/cost_project/CostProjectValidate.php @@ -36,10 +36,11 @@ class CostProjectValidate extends BaseValidate 'contract_id' => 'require', 'types' => 'checkTypes', 'industry' => 'checkIndustry', - 'starting' => 'require', - 'endtime' => 'require', + 'starting' => 'require|dateFormat:Y-m-d', + 'endtime' => 'require|dateFormat:Y-m-d', 'jhgq' => 'require', 'principal' => 'require', + 'person' => 'checkPerson', 'invest' => 'require', 'aunit' => 'require', 'annex' => 'checkAnnex' @@ -110,5 +111,13 @@ class CostProjectValidate extends BaseValidate { return $this->only(['id']); } + + public function checkPerson($value): bool|string + { + if(!empty($value) && $value != '' && !is_array($value)){ + return '项目相关人员格式错误'; + } + return true; + } } \ No newline at end of file diff --git a/app/common/model/cost_project/CostProject.php b/app/common/model/cost_project/CostProject.php index 57085c7f8..14a9abf37 100644 --- a/app/common/model/cost_project/CostProject.php +++ b/app/common/model/cost_project/CostProject.php @@ -15,6 +15,7 @@ namespace app\common\model\cost_project; +use app\common\model\auth\Admin; use app\common\model\BaseModel; use think\model\concern\SoftDelete; @@ -39,4 +40,26 @@ class CostProject extends BaseModel { return $this->hasOne(CostProjectContract::class, 'id','contract_id'); } + + 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