From 78ff55ca1cec69003c78e13509e92fb34fa8e3f9 Mon Sep 17 00:00:00 2001
From: vine_liutk <961510893@qq.com>
Date: Mon, 19 Feb 2024 16:07:31 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=BA=E5=8F=A3=E5=88=97?=
=?UTF-8?q?=E8=A1=A8=E6=90=9C=E7=B4=A2=E6=9F=A5=E7=9C=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/Admin/Controllers/PersonController.php | 28 ++++++--
app/Models/Filters/PersonFilter.php | 64 ++++++++++++++++++-
app/Services/Admin/PersonService.php | 6 ++
.../2024_01_29_110440_create_people_table.php | 2 +-
database/seeders/AdminMenuSeeder.php | 2 +-
lang/zh_CN/admin.php | 4 ++
6 files changed, 97 insertions(+), 9 deletions(-)
diff --git a/app/Admin/Controllers/PersonController.php b/app/Admin/Controllers/PersonController.php
index 111154c..480744a 100644
--- a/app/Admin/Controllers/PersonController.php
+++ b/app/Admin/Controllers/PersonController.php
@@ -8,6 +8,7 @@ use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Controllers\AdminController;
use App\Services\Admin\PersonService;
use App\Traits\CustomActionTrait;
+use App\Models\Keyword;
/**
* 人口管理
@@ -29,19 +30,34 @@ class PersonController extends AdminController
amis('filter-toggler')->align('right'),
])
->filter($this->baseFilter()->labelWidth('80px')->body([
-
+ amis()->GroupControl()->mode('horizontal')->body([
+ amis()->SelectControl('organized_body', __('admin.persons.organized_body'))->options(Keyword::where('parent_key', 'organized_body')->pluck('name', 'id')->toArray())
+ ->columnRatio(3)->clearable(true),
+ amis()->NestedSelectControl('house_building', __('admin.persons.house_building'))->source(admin_url('api/keywords/tree-list?parent_name=housing_estate&has_owner=0'))->labelField('name')->valueField('id')->columnRatio(6)->clearable(true),
+ // amis()->TextControl('master.name', __('admin.persons.master_name'))->placeholder(__('admin.persons.master_name')),
+ // amis()->TextControl('name', __('admin.persons.name'))->placeholder(__('admin.persons.name')),
+ // amis()->TextControl('idcard', __('admin.persons.idcard'))->placeholder(__('admin.persons.idcard')),
+ ]),
+ amis()->GroupControl()->mode('horizontal')->body([
+ amis()->SelectControl('state', __('admin.persons.state'))->options([
+ '1'=>'实有人口','2'=>'已死亡','3'=>'已迁出'
+ ])->columnRatio(3)->clearable(true),
+ amis()->DateRangeControl()->label(__('admin.persons.birthday'))->name('birthday')->valueFormat('YYYY-MM-DD')->columnRatio(6),
+ ]),
]))
->columns([
- amis()->TableColumn('domicile_code', __('admin.persons.domicile_code'))->width('100px')->copyable(),
- amis()->TableColumn('name', __('admin.persons.name'))->width('150px')->copyable(),
+ amis()->TableColumn('domicile_code', __('admin.persons.domicile_code'))->width('120px')->copyable(),
+ amis()->TableColumn('name', __('admin.persons.name'))->width('150px')->copyable()->searchable(),
amis()->TableColumn('master_connect', __('admin.persons.master_connect'))->width('100px'),
- amis()->TableColumn('master.name', __('admin.persons.master_name'))->width('150px')->copyable(),
- amis()->TableColumn('idcard', __('admin.persons.idcard'))->copyable(),
+ amis()->TableColumn('master.name', __('admin.persons.master_name'))->width('150px')->copyable()->searchable(),
+ amis()->TableColumn('idcard', __('admin.persons.idcard'))->copyable()->searchable(),
amis()->TableColumn('gender', __('admin.persons.gender'))->type('mapping')->map([
"1"=>"男",
"2"=>"女",
"*"=> '其他:${gender}'
- ]),
+ ])->filterable(['options'=>[
+ ['label'=>'男', 'value'=>1], ['label'=> '女', 'value'=>2]
+ ]]),
amis()->TableColumn('birthday', __('admin.persons.birthday')),
amis()->TableColumn('age', __('admin.persons.age')),
amis()->TableColumn('now_address', __('admin.persons.now_address'))->copyable(),
diff --git a/app/Models/Filters/PersonFilter.php b/app/Models/Filters/PersonFilter.php
index 26fc151..68cea14 100644
--- a/app/Models/Filters/PersonFilter.php
+++ b/app/Models/Filters/PersonFilter.php
@@ -2,11 +2,32 @@
namespace App\Models\Filters;
-use Illuminate\Support\Arr;
use EloquentFilter\ModelFilter;
+use Illuminate\Database\Eloquent\Builder;
+use App\Models\Keyword;
class PersonFilter extends ModelFilter
{
+ /**
+ * 姓名
+ */
+ public function name($name)
+ {
+ return $this->where('name', $name);
+ }
+ /**
+ * 户主姓名
+ */
+ public function master($master)
+ {
+ if(isset($master['name'])){
+ return $this->whereHas('master', function(Builder $q) use ($master){
+ $q->where('name', $master['name']);
+ });
+ }else{
+ return ;
+ }
+ }
/**
* 身份证
*/
@@ -14,4 +35,45 @@ class PersonFilter extends ModelFilter
{
return $this->where('idcard', $idcard);
}
+
+ /**
+ * 性别
+ */
+ public function gender($gender)
+ {
+ return $this->where('gender', $gender);
+ }
+
+ /**
+ * 社别
+ */
+ public function organizedBody($organizedBody)
+ {
+ return $this->where('organized_body', $organizedBody);
+ }
+
+ /**
+ * 居住小区
+ */
+ public function houseBuilding($houseBuilding)
+ {
+ if(Keyword::where('id',$houseBuilding)->value('lv') == 3)
+ {
+ return $this->where('building', $houseBuilding);
+ }else{
+ return $this->where('housing_estate', $houseBuilding);
+ }
+ }
+
+ public function state($state)
+ {
+ return $this->where('state', $state);
+ }
+
+ public function birthday($birthday)
+ {
+ $birthday = explode(',', $birthday);
+
+ return $this->whereBetween('birthday', $birthday);
+ }
}
diff --git a/app/Services/Admin/PersonService.php b/app/Services/Admin/PersonService.php
index 6405994..b129fb9 100644
--- a/app/Services/Admin/PersonService.php
+++ b/app/Services/Admin/PersonService.php
@@ -6,6 +6,7 @@ use App\Models\Person;
use App\Models\Filters\PersonFilter;
use App\Traits\UploadTrait;
use Illuminate\Support\Arr;
+use Illuminate\Database\Eloquent\Builder;
/**
* @method Person getModel()
@@ -22,4 +23,9 @@ class PersonService extends BaseService
protected array $withRelationships = ['master'];
protected bool $modelSortAble = true;
+
+ public function query(): Builder
+ {
+ return $this->modelName::query()->whereIn('type', [11, 12]);
+ }
}
\ No newline at end of file
diff --git a/database/migrations/2024_01_29_110440_create_people_table.php b/database/migrations/2024_01_29_110440_create_people_table.php
index 57d52c8..d94ed5e 100644
--- a/database/migrations/2024_01_29_110440_create_people_table.php
+++ b/database/migrations/2024_01_29_110440_create_people_table.php
@@ -65,7 +65,7 @@ return new class extends Migration
$table->string('wx_openid')->nullable()->comment('微信openId');
$table->string('baidu_face_id')->nullable()->comment('百度人脸ID');
- $table->unsignedTinyInteger('state')->nullable()->comment('状态');
+ $table->unsignedTinyInteger('state')->nullable()->comment('状态1正常2死亡3迁出');
$table->timestamps();
});
diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php
index 8982ba8..075897c 100644
--- a/database/seeders/AdminMenuSeeder.php
+++ b/database/seeders/AdminMenuSeeder.php
@@ -34,7 +34,7 @@ class AdminMenuSeeder extends Seeder
'children' => [
['title'=>'base_person_data', 'icon'=>'carbon:data-center','url'=>'/base_person_data', 'order'=>1, 'children' => [
['title'=>'real_person_data', 'icon'=>'material-symbols:frame-person-outline-rounded','url'=>'/real_person_data', 'order'=>0, 'children' => [
- ['title'=>'persons', 'icon'=>'material-symbols:switch-account-outline','url'=>'/persons', 'order'=>0],
+ ['title'=>'persons', 'icon'=>'material-symbols:switch-account-outline','url'=>'/persons?state=1', 'order'=>0],
['title'=>'person_changes', 'icon'=>'material-symbols:user-attributes-outline','url'=>'/person_changes', 'order'=>1],
]],
]],
diff --git a/lang/zh_CN/admin.php b/lang/zh_CN/admin.php
index 4e79071..9703a8a 100644
--- a/lang/zh_CN/admin.php
+++ b/lang/zh_CN/admin.php
@@ -348,5 +348,9 @@ return [
'birthday' => '出生日期',
'age' => '年龄',
'now_address' => '现住址',
+ 'organized_body' => '社别',
+ 'house_building' => '居住小区',
+ 'state' => '人口状态',
+ 'birthday'=> '出生日期',
],
];