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();
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)

View File

@ -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;
}
}

View File

@ -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) : '';
}
}