This commit is contained in:
weiz 2024-03-15 11:40:23 +08:00
parent 11b344cd53
commit d2ed16edfc
3 changed files with 69 additions and 60 deletions

View File

@ -42,7 +42,7 @@ class CostProjectLogic extends BaseLogic
{ {
Db::startTrans(); Db::startTrans();
try { try {
$data = CostProject::create([ CostProject::create([
'project_num' => generate_sn(CostProject::class, 'project_num'), 'project_num' => generate_sn(CostProject::class, 'project_num'),
'project_name' => $params['project_name'], 'project_name' => $params['project_name'],
'contract_id' => $params['contract_id'], 'contract_id' => $params['contract_id'],
@ -51,12 +51,13 @@ class CostProjectLogic extends BaseLogic
'province' => $params['province'], 'province' => $params['province'],
'city' => $params['city'], 'city' => $params['city'],
'address' => $params['address'], 'address' => $params['address'],
'starting' => $params['starting'], 'starting' => !empty($params['starting']) ? strtotime($params['starting']) : 0,
'endtime' => $params['endtime'], 'endtime' => !empty($params['endtime']) ? strtotime($params['endtime']) : 0,
'jhgq' => $params['jhgq'], 'jhgq' => $params['jhgq'],
'org_id' => $params['org_id'], 'org_id' => $params['org_id'],
'depar' => $params['depar'], 'depar' => $params['depar'],
'principal' => $params['principal'], 'principal' => $params['principal'],
'person' => $params['person'] ? json_encode($params['person']) : null,
'invest' => $params['invest'], 'invest' => $params['invest'],
'budget' => $params['budget'], 'budget' => $params['budget'],
'cost' => $params['cost'], 'cost' => $params['cost'],
@ -65,20 +66,12 @@ class CostProjectLogic extends BaseLogic
'js_unit' => $params['js_unit'], 'js_unit' => $params['js_unit'],
'Acontact' => $params['Acontact'], 'Acontact' => $params['Acontact'],
'acontactnum' => $params['acontactnum'], 'acontactnum' => $params['acontactnum'],
'date' => $params['date'], 'date' => !empty($params['date']) ? strtotime($params['date']) : 0,
'generalize' => $params['generalize'], 'generalize' => $params['generalize'],
'note' => $params['note'], 'note' => $params['note'],
'remark' => $params['remark'], 'remark' => $params['remark'],
'annex' => $params['annex'] ? json_encode($params['annex']) : null, '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(); Db::commit();
return true; return true;
} catch (\Exception $e) { } catch (\Exception $e) {
@ -101,43 +94,35 @@ class CostProjectLogic extends BaseLogic
Db::startTrans(); Db::startTrans();
try { try {
CostProject::where('id', $params['id'])->update([ CostProject::where('id', $params['id'])->update([
'project_num' => $params['project_num'], 'project_num' => generate_sn(CostProject::class, 'project_num'),
'project_name' => $params['project_name'], 'project_name' => $params['project_name'],
'contract_id' => $params['contract_id'], 'contract_id' => $params['contract_id'],
'types' => $params['types'], 'types' => $params['types'],
'industry' => $params['industry'], 'industry' => $params['industry'],
'province' => $params['province'], 'province' => $params['province'],
'city' => $params['city'], 'city' => $params['city'],
'address' => $params['address'], 'address' => $params['address'],
'starting' => $params['starting'], 'starting' => !empty($params['starting']) ? strtotime($params['starting']) : 0,
'endtime' => $params['endtime'], 'endtime' => !empty($params['endtime']) ? strtotime($params['endtime']) : 0,
'jhgq' => $params['jhgq'], 'jhgq' => $params['jhgq'],
'org_id' => $params['org_id'], 'org_id' => $params['org_id'],
'depar' => $params['depar'], 'depar' => $params['depar'],
'principal' => $params['principal'], 'principal' => $params['principal'],
'invest' => $params['invest'], 'person' => $params['person'] ? json_encode($params['person']) : null,
'budget' => $params['budget'], 'invest' => $params['invest'],
'cost' => $params['cost'], 'budget' => $params['budget'],
'approval' => $params['approval'], 'cost' => $params['cost'],
'aunit' => $params['aunit'], 'approval' => $params['approval'],
'js_unit' => $params['js_unit'], 'aunit' => $params['aunit'],
'Acontact' => $params['Acontact'], 'js_unit' => $params['js_unit'],
'acontactnum' => $params['acontactnum'], 'Acontact' => $params['Acontact'],
'date' => $params['date'], 'acontactnum' => $params['acontactnum'],
'generalize' => $params['generalize'], 'date' => !empty($params['date']) ? strtotime($params['date']) : 0,
'note' => $params['note'], 'generalize' => $params['generalize'],
'remark' => $params['remark'], 'note' => $params['note'],
'remark' => $params['remark'],
'annex' => $params['annex'] ? json_encode($params['annex']) : null, '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(); Db::commit();
return true; return true;
} catch (\Exception $e) { } catch (\Exception $e) {
@ -170,17 +155,9 @@ class CostProjectLogic extends BaseLogic
*/ */
public static function detail($params): array public static function detail($params): array
{ {
$res= CostProject::with(['contract'])->findOrEmpty($params['id'])->toArray(); $res= CostProject::with(['contract'])->findOrEmpty($params['id']);
if($res){ $res['person_text'] = $res->person_text;
$uid=(new CostProjectPerson)->where('cost_project_id',$res['id'])->column('uid'); return $res->toArray();
if($uid){
$admin=Admin::whereIn('id',$uid)->column('name');
if($admin){
$res['person']=implode(',',$admin);
}
}
}
return $res;
} }
public static function datas($name) public static function datas($name)

View File

@ -36,10 +36,11 @@ class CostProjectValidate extends BaseValidate
'contract_id' => 'require', 'contract_id' => 'require',
'types' => 'checkTypes', 'types' => 'checkTypes',
'industry' => 'checkIndustry', 'industry' => 'checkIndustry',
'starting' => 'require', 'starting' => 'require|dateFormat:Y-m-d',
'endtime' => 'require', 'endtime' => 'require|dateFormat:Y-m-d',
'jhgq' => 'require', 'jhgq' => 'require',
'principal' => 'require', 'principal' => 'require',
'person' => 'checkPerson',
'invest' => 'require', 'invest' => 'require',
'aunit' => 'require', 'aunit' => 'require',
'annex' => 'checkAnnex' 'annex' => 'checkAnnex'
@ -111,4 +112,12 @@ class CostProjectValidate extends BaseValidate
return $this->only(['id']); return $this->only(['id']);
} }
public function checkPerson($value): bool|string
{
if(!empty($value) && $value != '' && !is_array($value)){
return '项目相关人员格式错误';
}
return true;
}
} }

View File

@ -15,6 +15,7 @@
namespace app\common\model\cost_project; namespace app\common\model\cost_project;
use app\common\model\auth\Admin;
use app\common\model\BaseModel; use app\common\model\BaseModel;
use think\model\concern\SoftDelete; use think\model\concern\SoftDelete;
@ -39,4 +40,26 @@ class CostProject extends BaseModel
{ {
return $this->hasOne(CostProjectContract::class, 'id','contract_id'); 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) : '';
}
} }