generated from liutk/owl-admin-base
完善人口新增,删除,编辑
parent
2358300875
commit
d43eebf310
|
|
@ -26,7 +26,7 @@ class PersonController extends AdminController
|
||||||
{
|
{
|
||||||
$crud = $this->baseCRUD()->tableLayout('fixed')
|
$crud = $this->baseCRUD()->tableLayout('fixed')
|
||||||
->headerToolbar([
|
->headerToolbar([
|
||||||
$this->createTypeButton('drawer', 'xl'),
|
$this->createTypeButton('drawer', '', '50%'),
|
||||||
amis('reload')->align('right'),
|
amis('reload')->align('right'),
|
||||||
amis('filter-toggler')->align('right'),
|
amis('filter-toggler')->align('right'),
|
||||||
])
|
])
|
||||||
|
|
@ -47,7 +47,7 @@ class PersonController extends AdminController
|
||||||
]),
|
]),
|
||||||
]))
|
]))
|
||||||
->columns([
|
->columns([
|
||||||
amis()->TableColumn('domicile_code', __('admin.persons.domicile_code'))->width('120px')->copyable(),
|
amis()->TableColumn('domicile_code', __('admin.persons.domicile_code'))->width('100px'),
|
||||||
amis()->TableColumn('name', __('admin.persons.name'))->width('100px')->copyable()->searchable(),
|
amis()->TableColumn('name', __('admin.persons.name'))->width('100px')->copyable()->searchable(),
|
||||||
amis()->TableColumn('master_connect', __('admin.persons.master_connect'))->width('60px'),
|
amis()->TableColumn('master_connect', __('admin.persons.master_connect'))->width('60px'),
|
||||||
amis()->TableColumn('master.name', __('admin.persons.master_name'))->width('100px')->copyable()->searchable(),
|
amis()->TableColumn('master.name', __('admin.persons.master_name'))->width('100px')->copyable()->searchable(),
|
||||||
|
|
@ -64,7 +64,8 @@ class PersonController extends AdminController
|
||||||
amis()->TableColumn('now_address', __('admin.persons.now_address'))->copyable(),
|
amis()->TableColumn('now_address', __('admin.persons.now_address'))->copyable(),
|
||||||
|
|
||||||
amisMake()->Operation()->label(__('admin.actions'))->buttons([
|
amisMake()->Operation()->label(__('admin.actions'))->buttons([
|
||||||
$this->rowEditTypeButton('drawer', 'xl'),
|
$this->rowEditTypeButton('drawer', '', '50%'),
|
||||||
|
$this->rowDeleteButton(),
|
||||||
])
|
])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
@ -200,7 +201,7 @@ class PersonController extends AdminController
|
||||||
]),
|
]),
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
)->description('输入 户主姓名 进行筛选,忽略则为添加户主'),
|
)->description('输入 户主姓名 进行筛选,忽略则为添加户主')->disabledOn('this.id > 0'),
|
||||||
amis()->TextControl('master_connect', __('admin.persons.master_connect'))->required(),
|
amis()->TextControl('master_connect', __('admin.persons.master_connect'))->required(),
|
||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,6 @@ class Person extends Model
|
||||||
use Filterable;
|
use Filterable;
|
||||||
|
|
||||||
protected $table = 'persons';
|
protected $table = 'persons';
|
||||||
|
|
||||||
protected $fillable = ['type','name', 'used_name', 'value', 'parent_id', 'parent_key', 'path', 'sort', 'lv', 'oid'];
|
|
||||||
|
|
||||||
protected $appends = ['age', 'now_address'];
|
protected $appends = ['age', 'now_address'];
|
||||||
|
|
||||||
|
|
@ -24,6 +22,31 @@ class Person extends Model
|
||||||
return $date->format('Y-m-d H:i:s');
|
return $date->format('Y-m-d H:i:s');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static function boot()
|
||||||
|
{
|
||||||
|
parent::boot();
|
||||||
|
// 监听 oldman 的创建事件,用于初始化 位置信息
|
||||||
|
static::saving(function ($person) {
|
||||||
|
if($person->origin_city_code){
|
||||||
|
list($originProvince, $originCity, $originArea) = Zone::codeToZone($person->origin_city_code);
|
||||||
|
$person->origin_province_id = $originProvince?->id ?? 0;
|
||||||
|
$person->origin_city_id = $originCity?->id ?? 0;
|
||||||
|
$person->origin_area_id = $originArea?->id ?? 0;
|
||||||
|
}
|
||||||
|
if($person->card_city_code){
|
||||||
|
list($cardProvince, $cardCity, $cardArea) = Zone::codeToZone($person->card_city_code);
|
||||||
|
$person->card_province_id = $cardProvince?->id ?? 0;
|
||||||
|
$person->card_city_id = $cardCity?->id ?? 0;
|
||||||
|
$person->card_area_id = $cardArea?->id ?? 0;
|
||||||
|
$person->card_complete_address = ($cardProvince?->name ?? '未知').'-'.($cardCity?->name ?? '未知').'-'.($cardArea?->name ?? '未知').$person->card_address;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function scopeValid($q){
|
||||||
|
$q->where('valid', 1);
|
||||||
|
}
|
||||||
|
|
||||||
public function scopeSort($q)
|
public function scopeSort($q)
|
||||||
{
|
{
|
||||||
$q->orderBy('id', 'asc');
|
$q->orderBy('id', 'asc');
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use EloquentFilter\Filterable;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Zone extends Model
|
||||||
|
{
|
||||||
|
use Filterable;
|
||||||
|
|
||||||
|
protected $fillable = ['name', 'parent_id', 'type', 'index', 'code'];
|
||||||
|
|
||||||
|
public function parent()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(self::class, 'parent_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function children()
|
||||||
|
{
|
||||||
|
return $this->hasMany(self::class, 'parent_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function codeToZone($code = null)
|
||||||
|
{
|
||||||
|
$province = $city = $area = null;
|
||||||
|
$zone = self::where('code', $code)->first();
|
||||||
|
if($zone){
|
||||||
|
if($zone->type == 'area'){
|
||||||
|
$area = $zone;
|
||||||
|
$city = $area->parent;
|
||||||
|
$zone = $city;
|
||||||
|
}
|
||||||
|
if($zone->type == 'city'){
|
||||||
|
$city = $zone;
|
||||||
|
$province = $city->parent;
|
||||||
|
$zone = $province;
|
||||||
|
}
|
||||||
|
if($zone->type == 'province'){
|
||||||
|
$province = $zone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return array($province, $city, $area);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -26,6 +26,56 @@ class PersonService extends BaseService
|
||||||
|
|
||||||
public function query(): Builder
|
public function query(): Builder
|
||||||
{
|
{
|
||||||
return $this->modelName::query()->whereIn('type', [11, 12]);
|
return $this->modelName::query()->valid()->whereIn('type', [11, 12]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store($data): bool
|
||||||
|
{
|
||||||
|
$columns = $this->getTableColumns();
|
||||||
|
$model = $this->getModel();
|
||||||
|
|
||||||
|
$data['avatar'] = $this->saveImage('avatar', 'persons/avatar')[0] ?? '';
|
||||||
|
|
||||||
|
foreach ($data as $k => $v) {
|
||||||
|
if (!in_array($k, $columns)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->setAttribute($k, $v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $model->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update($primaryKey, $data): bool
|
||||||
|
{
|
||||||
|
$columns = $this->getTableColumns();
|
||||||
|
$model = $this->query()->whereKey($primaryKey)->first();
|
||||||
|
|
||||||
|
if(isset($data['avatar'])){
|
||||||
|
$data['avatar'] = $this->saveImage('avatar', 'persons/avatar')[0] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($data as $k => $v) {
|
||||||
|
if (!in_array($k, $columns)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->setAttribute($k, $v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $model->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 软删除
|
||||||
|
*
|
||||||
|
* @param string $ids
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function delete(string $ids): mixed
|
||||||
|
{
|
||||||
|
return $this->query()->whereIn($this->primaryKey(), explode(',', $ids))->update(['valid'=> 0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -16,18 +16,23 @@ trait CustomActionTrait
|
||||||
*
|
*
|
||||||
* @param string $type
|
* @param string $type
|
||||||
* @param string $size
|
* @param string $size
|
||||||
|
* @param string $width
|
||||||
*
|
*
|
||||||
* @return DialogAction|DrawerAction|LinkAction
|
* @return DialogAction|DrawerAction|LinkAction
|
||||||
*/
|
*/
|
||||||
protected function createTypeButton(string $type = '', string $size = ''): DialogAction|DrawerAction|LinkAction
|
protected function createTypeButton(string $type = '', string $size = '', string $width = ''): DialogAction|DrawerAction|LinkAction
|
||||||
{
|
{
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'drawer':
|
case 'drawer':
|
||||||
$form = $this->form(false)->api($this->getStorePath())->onEvent([]);
|
$form = $this->form(false)->api($this->getStorePath())->onEvent([]);
|
||||||
|
|
||||||
$button = DrawerAction::make()->drawer(
|
$drawer = Drawer::make()->title(__('admin.create'))->body($form);
|
||||||
Drawer::make()->title(__('admin.create'))->body($form)->size($size)
|
if($width){
|
||||||
);
|
$drawer->width($width);
|
||||||
|
}else{
|
||||||
|
$drawer->size($size);
|
||||||
|
}
|
||||||
|
$button = DrawerAction::make()->drawer($drawer);
|
||||||
break;
|
break;
|
||||||
case 'dialog':
|
case 'dialog':
|
||||||
$form = $this->form(false)->api($this->getStorePath())->onEvent([]);
|
$form = $this->form(false)->api($this->getStorePath())->onEvent([]);
|
||||||
|
|
@ -49,10 +54,11 @@ trait CustomActionTrait
|
||||||
*
|
*
|
||||||
* @param string $type
|
* @param string $type
|
||||||
* @param string $size
|
* @param string $size
|
||||||
|
* @param string $width
|
||||||
*
|
*
|
||||||
* @return DialogAction|DrawerAction|LinkAction
|
* @return DialogAction|DrawerAction|LinkAction
|
||||||
*/
|
*/
|
||||||
protected function rowEditTypeButton(string $type = '', string $size = ''): DialogAction|DrawerAction|LinkAction
|
protected function rowEditTypeButton(string $type = '', string $size = '', string $width = ''): DialogAction|DrawerAction|LinkAction
|
||||||
{
|
{
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'drawer':
|
case 'drawer':
|
||||||
|
|
@ -62,9 +68,15 @@ trait CustomActionTrait
|
||||||
->redirect('')
|
->redirect('')
|
||||||
->onEvent([]);
|
->onEvent([]);
|
||||||
|
|
||||||
$button = DrawerAction::make()->drawer(
|
$drawer = Drawer::make()->title(__('admin.edit'))->body($form);
|
||||||
Drawer::make()->title(__('admin.edit'))->body($form)->size($size)
|
|
||||||
);
|
if($width){
|
||||||
|
$drawer->width($width);
|
||||||
|
}else{
|
||||||
|
$drawer->size($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
$button = DrawerAction::make()->drawer($drawer);
|
||||||
break;
|
break;
|
||||||
case 'dialog':
|
case 'dialog':
|
||||||
$form = $this->form(true)
|
$form = $this->form(true)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ return new class extends Migration
|
||||||
|
|
||||||
$table->string('avatar')->nullable()->comment('头像');
|
$table->string('avatar')->nullable()->comment('头像');
|
||||||
$table->string('used_name')->nullable()->comment('曾用名');
|
$table->string('used_name')->nullable()->comment('曾用名');
|
||||||
$table->string('idcard', 50)->unique()->nullable()->comment('身份证号码');
|
$table->string('idcard', 50)->nullable()->comment('身份证号码');
|
||||||
$table->unsignedBigInteger('gender')->nullable()->comment('性别:0未知,1男,2女');
|
$table->unsignedBigInteger('gender')->nullable()->comment('性别:0未知,1男,2女');
|
||||||
$table->date('birthday')->nullable()->comment('生日');
|
$table->date('birthday')->nullable()->comment('生日');
|
||||||
|
|
||||||
|
|
@ -67,7 +67,13 @@ return new class extends Migration
|
||||||
|
|
||||||
$table->unsignedTinyInteger('state')->nullable()->comment('状态1正常2死亡3迁出');
|
$table->unsignedTinyInteger('state')->nullable()->comment('状态1正常2死亡3迁出');
|
||||||
|
|
||||||
|
|
||||||
|
$table->date('deathday')->nullable()->comment('死亡日期');
|
||||||
|
$table->unsignedTinyInteger('valid')->default(1)->comment('是否有效');
|
||||||
|
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
|
$table->unique(['valid', 'idcard']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,14 +108,19 @@ class PersonSeeder extends Seeder
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//处理籍贯地址选中问题-todo;如果是重庆市-巴南区,重庆市-九龙坡,重庆-巴县,重庆市-綦江区
|
//处理籍贯地址选中问题;如果是重庆市-巴南区,重庆市-九龙坡,重庆-巴县,重庆市-綦江区
|
||||||
if(Str::startsWith($person->nativePlace, '重庆市') || Str::startsWith($person->nativePlace, '重庆')){
|
if(Str::startsWith($person->nativePlace, '重庆市') || Str::startsWith($person->nativePlace, '重庆')){
|
||||||
|
$_person['origin_city_code'] = '500100';
|
||||||
$_person['origin_province_id'] = 2221;
|
$_person['origin_province_id'] = 2221;
|
||||||
$_person['origin_city_id'] = 2222;
|
$_person['origin_city_id'] = 2222;
|
||||||
}
|
}
|
||||||
|
|
||||||
//处理户籍地址选中问题*-doto;
|
//处理户籍地址选中问题;如果是重庆市-巴南区,重庆市-九龙坡,重庆-巴县,重庆市-綦江区
|
||||||
|
if(Str::startsWith($person->birthAddr, '重庆市') || Str::startsWith($person->birthAddr, '重庆')){
|
||||||
|
$_person['origin_city_code'] = '500100';
|
||||||
|
$_person['origin_province_id'] = 2221;
|
||||||
|
$_person['origin_city_id'] = 2222;
|
||||||
|
}
|
||||||
//处理居住地址
|
//处理居住地址
|
||||||
if($person->courtId){
|
if($person->courtId){
|
||||||
$houseCompleteAddress = '';
|
$houseCompleteAddress = '';
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue