| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
							- <?php
 
- namespace app\common\model;
 
- use think\facade\Db;
 
- use app\common\model\Contract;
 
- use app\common\model\ProjectSchedule;
 
- /**
 
-  * 
 
-  * @property string $status 状态值
 
-  * @property array<number> $participants_id
 
-  * @property number $responsibility_person_id
 
-  * @property array<ProjectSchedule> $schedules
 
-  * @property array<Contract> $contracts
 
-  */
 
- class Project extends Base
 
- {
 
-     protected $schema = [
 
-         'id'     => 'int',       // id
 
-         'create_time'    => 'datetime',  // 创建时间
 
-         'update_time'    => 'datetime',  // 更新时间
 
-         'delete_time'    => 'datetime',  // 删除时间
 
-         'name'   => 'varchar',   // 名称
 
-         'responsibility_person_id'    => 'int',       // 责任人id
 
-         'desc'   => 'text',      // 描述
 
-         'source'         => 'varchar',   // 来源
 
-         'estimated_amount'       => 'int',       // 预估金额, 分为单位
 
-         'status'         => 'varchar',   // 状态值
 
-         'project_start_date'     => 'date',      // 项目周期开始时间
 
-         'project_end_date'       => 'date',      // 项目周期结束时间
 
-         'dev_start_date'         => 'date',      // 开发开始时间
 
-         'dev_end_date'   => 'date',      // 开发结束时间
 
-         'pre_dev_time'   => 'int',       // 约定开发周期,单位为天
 
-         'maintain_start_date'    => 'date',      // 维护开始时间
 
-         'maintain_end_date'      => 'date',      // 维护结束时间
 
-         'pre_maintain_time'      => 'int',       // 约定维护周期,单位为天
 
-         'participants_id'   => 'json',      // 项目参与人员
 
-     ];
 
-     protected $type = [
 
-         'participants_id' => 'array'
 
-     ];
 
-     public function responsibilityPersonName()
 
-     {
 
-         return $this->belongsTo(Admin::class, 'responsibility_person_id', 'id');
 
-     }
 
-     public function contracts()
 
-     {
 
-         return $this->hasMany(Contract::class);
 
-     }
 
-     public function schedules()
 
-     {
 
-         return $this->hasMany(ProjectSchedule::class)
 
-             ->field('s.*')
 
-             ->field('a.real_name as updater')
 
-             ->alias('s')
 
-             ->order('s.start_date asc')
 
-             ->join('admin a', 'a.id = s.updater_id', 'LEFT');
 
-     }
 
-     public function getParticipantsIdAttr($value, $data) {
 
-         return array_map(fn($i) => (int) $i, json_decode($value) ?? []);
 
-     }
 
-     public function getParticipantsAttr($value, $data) {
 
-         return (new Admin)->where('id', 'in', $this->participants_id)->select()->map(fn($admin) => $admin->real_name);
 
-     }
 
- }
 
 
  |