diff --git a/app/adminapi/lists/contract/AdministrativeContractLists.php b/app/adminapi/lists/contract/AdministrativeContractLists.php index 907e8b368..15d68e9b5 100644 --- a/app/adminapi/lists/contract/AdministrativeContractLists.php +++ b/app/adminapi/lists/contract/AdministrativeContractLists.php @@ -18,7 +18,7 @@ namespace app\adminapi\lists\contract; use app\adminapi\lists\BaseAdminDataLists; use app\common\model\contract\AdministrativeContract; use app\common\lists\ListsSearchInterface; - +use think\facade\Db; /** * AdministrativeContract列表 @@ -38,7 +38,7 @@ class AdministrativeContractLists extends BaseAdminDataLists implements ListsSea public function setSearch(): array { return [ - '=' => ['supplier_id', 'contract_no', 'contract_name', 'procurement_type', 'asset_apply_no'], + '=' => ['ac.supplier_id', 'ac.contract_no', 'ac.contract_name', 'ac.procurement_type', 'ac.asset_apply_no'], ]; } @@ -54,11 +54,19 @@ class AdministrativeContractLists extends BaseAdminDataLists implements ListsSea */ public function lists(): array { - return AdministrativeContract::where($this->searchWhere) - ->field(['*']) + return Db::name('AdministrativeContract')->alias('ac') + ->where($this->searchWhere) + ->whereNull('ac.delete_time') + ->leftJoin('orgs o','o.id = ac.org_id') + ->leftJoin('dept d','d.id = ac.dept_id') + ->field('ac.*, d.name as dept_name, o.name as org_name') ->limit($this->limitOffset, $this->limitLength) - ->order(['id' => 'desc']) - ->select() + ->order(['ac.id' => 'desc']) + ->select()->each(function($item, $key){ + //关联数据后续添加 + $item['supplier_name'] = '供应商名称'; + return $item; + }) ->toArray(); } @@ -71,7 +79,11 @@ class AdministrativeContractLists extends BaseAdminDataLists implements ListsSea */ public function count(): int { - return AdministrativeContract::where($this->searchWhere)->count(); + return Db::name('AdministrativeContract')->alias('ac') + ->where($this->searchWhere) + ->whereNull('ac.delete_time') + ->leftJoin('orgs o','o.id = ac.org_id') + ->leftJoin('dept d','d.id = ac.dept_id')->count(); } } \ No newline at end of file diff --git a/app/adminapi/logic/contract/AdministrativeContractLogic.php b/app/adminapi/logic/contract/AdministrativeContractLogic.php index e131d9a75..ca89f935e 100644 --- a/app/adminapi/logic/contract/AdministrativeContractLogic.php +++ b/app/adminapi/logic/contract/AdministrativeContractLogic.php @@ -41,6 +41,8 @@ class AdministrativeContractLogic extends BaseLogic Db::startTrans(); try { AdministrativeContract::create([ + 'org_id' => $params['org_id'] ?? 0, + 'dept_id' => $params['dept_id'] ?? 0, 'supplier_id' => $params['supplier_id'] ?? 0, 'contract_no' => $params['contract_no'] ?? '', 'contract_name' => $params['contract_name'] ?? '', @@ -79,6 +81,8 @@ class AdministrativeContractLogic extends BaseLogic Db::startTrans(); try { AdministrativeContract::where('id', $params['id'])->update([ + 'org_id' => $params['org_id'] ?? 0, + 'dept_id' => $params['dept_id'] ?? 0, 'supplier_id' => $params['supplier_id'] ?? 0, 'contract_no' => $params['contract_no'] ?? '', 'contract_name' => $params['contract_name'] ?? '', @@ -127,6 +131,9 @@ class AdministrativeContractLogic extends BaseLogic */ public static function detail($params): array { - return AdministrativeContract::findOrEmpty($params['id'])->toArray(); + $administrativeContract = AdministrativeContract::findOrEmpty($params['id']); + $administrativeContract->org; + $administrativeContract->dept; + return $administrativeContract->toArray(); } } \ No newline at end of file diff --git a/app/adminapi/logic/contract/SubcontractingContractNegotiationLogic.php b/app/adminapi/logic/contract/SubcontractingContractNegotiationLogic.php index b847a6b49..070866c84 100644 --- a/app/adminapi/logic/contract/SubcontractingContractNegotiationLogic.php +++ b/app/adminapi/logic/contract/SubcontractingContractNegotiationLogic.php @@ -132,8 +132,10 @@ class SubcontractingContractNegotiationLogic extends BaseLogic $subcontractingContractNegotiation->project = null; if (!empty($subcontractingContractNegotiation->contract->project)) { $subcontractingContractNegotiation->project = $subcontractingContractNegotiation->contract->project; + unset($subcontractingContractNegotiation->contract->project); } - unset($subcontractingContractNegotiation->contract->project); + $subcontractingContractNegotiation->negotiation_quotation = json_decode($subcontractingContractNegotiation->negotiation_quotation, true); + $subcontractingContractNegotiation->negotiation_basis = json_decode($subcontractingContractNegotiation->negotiation_basis, true); return $subcontractingContractNegotiation->toArray(); } } \ No newline at end of file diff --git a/app/common/model/contract/AdministrativeContract.php b/app/common/model/contract/AdministrativeContract.php index 81deb57c8..14b0448c2 100644 --- a/app/common/model/contract/AdministrativeContract.php +++ b/app/common/model/contract/AdministrativeContract.php @@ -30,5 +30,14 @@ class AdministrativeContract extends BaseModel protected $name = 'administrative_contract'; protected $deleteTime = 'delete_time'; + public function org() + { + return $this->hasOne(\app\common\model\dept\Orgs::class, 'id', 'org_id'); + } + + public function dept() + { + return $this->hasOne(\app\common\model\dept\Dept::class, 'id', 'dept_id'); + } } \ No newline at end of file