generated from liutk/owl-admin-base
完善人口管理
parent
62386555f1
commit
64e4ce15e7
|
|
@ -331,21 +331,24 @@ class PersonController extends AdminController
|
||||||
),
|
),
|
||||||
//迁移
|
//迁移
|
||||||
amis()->DialogAction()->level('info')->label('迁移')->dialog(
|
amis()->DialogAction()->level('info')->label('迁移')->dialog(
|
||||||
amis()->Dialog()->title('迁移')->body($this->migrateMasterForm())->size('lg')->actions([
|
amis()->Dialog()->title('迁移')->body($this->personMigrateForm())->size('lg')->actions([
|
||||||
amis()->Button()->label('取消')->actionType('cancel'),
|
amis()->Button()->label('取消')->actionType('cancel'),
|
||||||
amis()->Button()->label('确认')->actionType('submit')->primary()->close('detail_info'),
|
amis()->Button()->label('确认')->actionType('submit')->primary()->close('detail_info'),
|
||||||
])
|
])
|
||||||
),
|
),
|
||||||
//迁出
|
//迁出
|
||||||
amis()->DialogAction()->level('success')->label('迁出')->dialog(
|
amis()->DialogAction()->level('success')->label('迁出')->dialog(
|
||||||
amis()->Dialog()->title('迁出')->body($this->outMasterForm())->size('lg')->actions([
|
amis()->Dialog()->title('迁出')->body($this->personOutForm())->size('lg')->actions([
|
||||||
amis()->Button()->label('取消')->actionType('cancel'),
|
amis()->Button()->label('取消')->actionType('cancel'),
|
||||||
amis()->Button()->label('确认')->actionType('submit')->primary()->close('detail_info'),
|
amis()->Button()->label('确认')->actionType('submit')->primary()->close('detail_info'),
|
||||||
])
|
])
|
||||||
),
|
),
|
||||||
//死亡-todo
|
//死亡
|
||||||
amis()->DialogAction()->level('danger')->label('死亡')->dialog(
|
amis()->DialogAction()->level('danger')->label('死亡')->dialog(
|
||||||
amis()->Dialog()->title('死亡')->body()->size('lg')
|
amis()->Dialog()->title('死亡')->body($this->personDieForm())->size('lg')->actions([
|
||||||
|
amis()->Button()->label('取消')->actionType('cancel'),
|
||||||
|
amis()->Button()->label('确认')->actionType('submit')->primary()->close('detail_info'),
|
||||||
|
])
|
||||||
),
|
),
|
||||||
//返回
|
//返回
|
||||||
amis()->Button()->actionType('cancel')->label(__('admin.back'))->primary()
|
amis()->Button()->actionType('cancel')->label(__('admin.back'))->primary()
|
||||||
|
|
@ -406,7 +409,7 @@ class PersonController extends AdminController
|
||||||
/**
|
/**
|
||||||
* 迁移-迁移到其他户下面去
|
* 迁移-迁移到其他户下面去
|
||||||
*/
|
*/
|
||||||
public function migrateMasterForm()
|
public function personMigrateForm()
|
||||||
{
|
{
|
||||||
return amis()->form()->title('')->reload('curd_list')
|
return amis()->form()->title('')->reload('curd_list')
|
||||||
->api(admin_url('migrate_master'))
|
->api(admin_url('migrate_master'))
|
||||||
|
|
@ -453,21 +456,21 @@ class PersonController extends AdminController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function doMigrateMaster(Request $request)
|
public function doPersonMigrate(Request $request)
|
||||||
{
|
{
|
||||||
$res = $this->service->migrateMaster($request->input('id', 0), $request->input('new_master_id', 0), $request->input('new_master_connect', ''),
|
$res = $this->service->personMigrate($request->input('id', 0), $request->input('new_master_id', 0), $request->input('new_master_connect', ''),
|
||||||
$request->input('old_master_arr', []), $request->input());
|
$request->input('old_master_arr', []), $request->input());
|
||||||
|
|
||||||
return $this->autoResponse($res, '迁移');
|
return $this->autoResponse($res, '迁移');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 迁出
|
* 迁出-迁出本村
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function outMasterForm(){
|
public function personOutForm(){
|
||||||
return amis()->form()->title('')->reload('curd_list')
|
return amis()->form()->title('')->reload('curd_list')
|
||||||
->api(admin_url('out_master'))
|
->api(admin_url('person_out'))
|
||||||
->body([
|
->body([
|
||||||
amis()->HiddenControl('id'),
|
amis()->HiddenControl('id'),
|
||||||
amis()->GroupControl()->body([
|
amis()->GroupControl()->body([
|
||||||
|
|
@ -497,7 +500,7 @@ class PersonController extends AdminController
|
||||||
]
|
]
|
||||||
])
|
])
|
||||||
->body(
|
->body(
|
||||||
amis()->TableControl('old_master_arr', '原户籍情况')->columnsTogglable(false)->id('old_master_arr')->columns([
|
amis()->TableControl('old_master_arr', '户籍情况')->columnsTogglable(false)->id('old_master_arr')->columns([
|
||||||
amis()->TableColumn('name', __('admin.persons.name'))->width('100px'),
|
amis()->TableColumn('name', __('admin.persons.name'))->width('100px'),
|
||||||
amis()->TableColumn('idcard', __('admin.persons.idcard')),
|
amis()->TableColumn('idcard', __('admin.persons.idcard')),
|
||||||
amis()->TableColumn('master_connect', __('admin.persons.master_connect'))->width('60px'),
|
amis()->TableColumn('master_connect', __('admin.persons.master_connect'))->width('60px'),
|
||||||
|
|
@ -518,13 +521,79 @@ class PersonController extends AdminController
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function doOutMaster(Request $request)
|
public function doPersonOut(Request $request)
|
||||||
{
|
{
|
||||||
$res = $this->service->outMaster($request->input('id'), $request->input('old_master_arr', []), $request->input());
|
$res = $this->service->personOut($request->input('id'), $request->input('old_master_arr', []), $request->input());
|
||||||
|
|
||||||
return $this->autoResponse($res, '迁出');
|
return $this->autoResponse($res, '迁出');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 死亡
|
||||||
|
*/
|
||||||
|
public function personDieForm(){
|
||||||
|
return amis()->form()->title('')->reload('curd_list')
|
||||||
|
->api(admin_url('person_die'))
|
||||||
|
->body([
|
||||||
|
amis()->HiddenControl('id'),
|
||||||
|
amis()->GroupControl()->body([
|
||||||
|
amis()->StaticExactControl('name', __('admin.persons.name'))->copyable(['content'=>'${name}']),
|
||||||
|
amis()->RadiosControl('gender', __('admin.persons.gender'))->options([
|
||||||
|
'1'=>'男', '2'=>'女'
|
||||||
|
])->static(),
|
||||||
|
]),
|
||||||
|
amis()->GroupControl()->body([
|
||||||
|
amis()->StaticExactControl('idcard', __('admin.persons.idcard'))->copyable(['content'=>'${idcard}']),
|
||||||
|
amis()->StaticExactControl('birthday', __('admin.persons.birthday')),
|
||||||
|
]),
|
||||||
|
amis()->GroupControl()->body([
|
||||||
|
amis()->StaticExactControl('age', __('admin.persons.age'))->copyable(['content'=>'${idcard}']),
|
||||||
|
amis()->StaticExactControl('master.name', __('admin.persons.master')),
|
||||||
|
]),
|
||||||
|
amis()->Divider()->visibleOn('${is_master}'),
|
||||||
|
amis()->Service()
|
||||||
|
->api(admin_url('persons?_action=getData&state=1&master[id]=${master_id}&perPage=10'))
|
||||||
|
->onEvent([
|
||||||
|
'fetchInited' => [
|
||||||
|
'actions' => [
|
||||||
|
[
|
||||||
|
'actionType'=>'setValue',
|
||||||
|
"componentId" => "old_master_arr",
|
||||||
|
"args" => [
|
||||||
|
'value'=>'${event.data.items}'
|
||||||
|
],
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
])
|
||||||
|
->body(
|
||||||
|
amis()->TableControl('old_master_arr', '户籍情况')->columnsTogglable(false)->id('old_master_arr')->columns([
|
||||||
|
amis()->TableColumn('name', __('admin.persons.name'))->width('100px'),
|
||||||
|
amis()->TableColumn('idcard', __('admin.persons.idcard')),
|
||||||
|
amis()->TableColumn('master_connect', __('admin.persons.master_connect'))->width('60px'),
|
||||||
|
amis()->RadioControl('is_new_master', '新户主')->disabledOn('is_master'),
|
||||||
|
amis()->TextControl('new_master_connect', '新关系')->disabledOn('is_master'),
|
||||||
|
])->required()
|
||||||
|
)->visibleOn('${is_master}'),
|
||||||
|
amis()->Divider(),
|
||||||
|
amis()->GroupControl()->body([
|
||||||
|
amis()->DateControl('die_at', '死亡日期')->valueFormat('YYYY-MM-DD')->required(),
|
||||||
|
amis()->TextControl('die_reason', '死亡原因')->required()
|
||||||
|
]),
|
||||||
|
amis()->GroupControl()->body([
|
||||||
|
amis()->TextControl('die_phone', '联系方式')->required(),
|
||||||
|
amis()->TextControl('die_remark', '备注')
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function doPersonDie(Request $request)
|
||||||
|
{
|
||||||
|
$res = $this->service->personDie($request->input('id'), $request->input('old_master_arr', []), $request->input());
|
||||||
|
|
||||||
|
return $this->autoResponse($res, '记录');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合户
|
* 合户
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,9 @@ Route::group([
|
||||||
$router->post('split_master', [\App\Admin\Controllers\PersonController::class, 'doSplitMaster']);
|
$router->post('split_master', [\App\Admin\Controllers\PersonController::class, 'doSplitMaster']);
|
||||||
$router->post('merge_master', [\App\Admin\Controllers\PersonController::class, 'doMergeMaster']);
|
$router->post('merge_master', [\App\Admin\Controllers\PersonController::class, 'doMergeMaster']);
|
||||||
$router->post('edit_master', [\App\Admin\Controllers\PersonController::class, 'doEditMaster']);
|
$router->post('edit_master', [\App\Admin\Controllers\PersonController::class, 'doEditMaster']);
|
||||||
$router->post('migrate_master', [\App\Admin\Controllers\PersonController::class, 'doMigrateMaster']);
|
$router->post('person_migrate', [\App\Admin\Controllers\PersonController::class, 'doPersonMigrate']);
|
||||||
$router->post('out_master', [\App\Admin\Controllers\PersonController::class, 'doOutMaster']);
|
$router->post('person_out', [\App\Admin\Controllers\PersonController::class, 'doPersonOut']);
|
||||||
|
$router->post('person_die', [\App\Admin\Controllers\PersonController::class, 'doPersonDie']);
|
||||||
|
|
||||||
|
|
||||||
$router->resource('person_changes', \App\Admin\Controllers\PersonChangeController::class);
|
$router->resource('person_changes', \App\Admin\Controllers\PersonChangeController::class);
|
||||||
|
|
|
||||||
|
|
@ -288,9 +288,9 @@ class PersonService extends BaseService
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* 迁移
|
||||||
*/
|
*/
|
||||||
public function migrateMaster($personId, $newMasterId, $newMasterConnect, $oldMasterArr = [], $extends)
|
public function personMigrate($personId, $newMasterId, $newMasterConnect, $oldMasterArr = [], $extends)
|
||||||
{
|
{
|
||||||
$person = Person::find($personId);
|
$person = Person::find($personId);
|
||||||
|
|
||||||
|
|
@ -307,7 +307,7 @@ class PersonService extends BaseService
|
||||||
$oldNewMaster = $oldPersonList->first(function ($item) {
|
$oldNewMaster = $oldPersonList->first(function ($item) {
|
||||||
return isset($item['is_new_master']) && $item['is_new_master'];
|
return isset($item['is_new_master']) && $item['is_new_master'];
|
||||||
});
|
});
|
||||||
if(empty($oldNewMaster)){
|
if($oldPersonList->count() > 1 && empty($oldNewMaster)){
|
||||||
return $this->setError('迁移失败, 未选择原户新户主');
|
return $this->setError('迁移失败, 未选择原户新户主');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -391,7 +391,7 @@ class PersonService extends BaseService
|
||||||
/**
|
/**
|
||||||
* 迁出
|
* 迁出
|
||||||
*/
|
*/
|
||||||
public function outMaster($personId, $oldMasterArr = [], $extends)
|
public function personOut($personId, $oldMasterArr = [], $extends)
|
||||||
{
|
{
|
||||||
$person = Person::find($personId);
|
$person = Person::find($personId);
|
||||||
|
|
||||||
|
|
@ -400,7 +400,7 @@ class PersonService extends BaseService
|
||||||
$oldNewMaster = $oldPersonList->first(function ($item) {
|
$oldNewMaster = $oldPersonList->first(function ($item) {
|
||||||
return isset($item['is_new_master']) && $item['is_new_master'];
|
return isset($item['is_new_master']) && $item['is_new_master'];
|
||||||
});
|
});
|
||||||
if(empty($oldNewMaster)){
|
if($oldPersonList->count() > 1 && empty($oldNewMaster)){
|
||||||
return $this->setError('迁出失败, 未选择原户新户主');
|
return $this->setError('迁出失败, 未选择原户新户主');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -418,7 +418,7 @@ class PersonService extends BaseService
|
||||||
'changed_at' => isset($extends['out_at']) ? $extends['out_at'] : null,
|
'changed_at' => isset($extends['out_at']) ? $extends['out_at'] : null,
|
||||||
'reason' => isset($extends['out_reason']) ? $extends['out_reason'] : null,
|
'reason' => isset($extends['out_reason']) ? $extends['out_reason'] : null,
|
||||||
'old_master' => $person->master_id,
|
'old_master' => $person->master_id,
|
||||||
'new_master' => $oldNewMaster['id'],
|
'new_master' => isset($oldNewMaster) ? $oldNewMaster['id']:null,
|
||||||
'phone' => isset($extends['out_phone']) ? $extends['out_phone'] : null,
|
'phone' => isset($extends['out_phone']) ? $extends['out_phone'] : null,
|
||||||
'extends' => json_encode([
|
'extends' => json_encode([
|
||||||
'to_address' => isset($extends['out_to_address']) ? $extends['out_to_address'] : null
|
'to_address' => isset($extends['out_to_address']) ? $extends['out_to_address'] : null
|
||||||
|
|
@ -464,11 +464,102 @@ class PersonService extends BaseService
|
||||||
}
|
}
|
||||||
|
|
||||||
Person::where('id', $person->id)->update([
|
Person::where('id', $person->id)->update([
|
||||||
|
'domicile_code' => '99999999',
|
||||||
'is_master' => 0,
|
'is_master' => 0,
|
||||||
'master_id' => null,
|
'master_id' => null,
|
||||||
'master_connect' => null,
|
'master_connect' => null,
|
||||||
'state' => 3,
|
'state' => 2,
|
||||||
'real_address' => isset($extends['out_to_address']) ? $extends['out_to_address'] : null,
|
]);
|
||||||
|
|
||||||
|
count($personChangeLogs) > 0 && PersonChange::insert($personChangeLogs);
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
}catch(Throwable $th){
|
||||||
|
DB::rollBack();
|
||||||
|
report($th);
|
||||||
|
return $this->setError('系统错误,请刷新后重试');
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 迁出
|
||||||
|
*/
|
||||||
|
public function personDie($personId, $oldMasterArr = [], $extends)
|
||||||
|
{
|
||||||
|
$person = Person::find($personId);
|
||||||
|
|
||||||
|
if(!empty($oldMasterArr)){
|
||||||
|
$oldPersonList = collect($oldMasterArr);
|
||||||
|
$oldNewMaster = $oldPersonList->first(function ($item) {
|
||||||
|
return isset($item['is_new_master']) && $item['is_new_master'];
|
||||||
|
});
|
||||||
|
if($oldPersonList->count() > 1 && empty($oldNewMaster)){
|
||||||
|
return $this->setError('记录失败, 未选择原户新户主');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try{
|
||||||
|
DB::beginTransaction();
|
||||||
|
$personChangeLogs = [];
|
||||||
|
|
||||||
|
$changeMark = (isset($extends['die_at']) ? $extends['die_at'] : '某日'). '日,' .(isset($extends['die_reason']) ? ($extends['die_reason']) : '去世');
|
||||||
|
|
||||||
|
$personChangeLogs[] = [
|
||||||
|
'person_id' => $person->id,
|
||||||
|
'type' => PersonChange::TYPE_DIE,
|
||||||
|
'changed_at' => isset($extends['die_at']) ? $extends['die_at'] : null,
|
||||||
|
'reason' => isset($extends['die_reason']) ? $extends['die_reason'] : null,
|
||||||
|
'old_master' => $person->master_id,
|
||||||
|
'new_master' => null,
|
||||||
|
'phone' => isset($extends['die_phone']) ? $extends['die_phone'] : null,
|
||||||
|
'extends_mark' => $changeMark,
|
||||||
|
'remark' => isset($extends['die_remark']) ? $extends['die_remark'] : null,
|
||||||
|
'created_at' => now(),
|
||||||
|
'updated_at' => now()
|
||||||
|
];
|
||||||
|
//如果死亡的是户主, 则更新原户内人口信息
|
||||||
|
if($person->is_master){
|
||||||
|
foreach($oldMasterArr as $oldPerson){
|
||||||
|
if($oldPerson['id'] == $person->id){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$changeMark = (isset($extends['die_at']) ? $extends['die_at'] : '某日'). '日,原户主' .(isset($extends['die_reason']) ? ($extends['die_reason']) : '去世');
|
||||||
|
if($oldPerson['is_new_master']){
|
||||||
|
$changeMark .= ',成为户主';
|
||||||
|
}else{
|
||||||
|
$changeMark .= ',户主由【'.$person->master->name.'】变更为【'.$oldNewMaster['name'].'】,与新户主关系更新为【'.$oldPerson['new_master_connect'].'】';
|
||||||
|
}
|
||||||
|
$personChangeLogs[] = [
|
||||||
|
'person_id' => $person['id'],
|
||||||
|
'type' => PersonChange::TYPE_CHANGE,
|
||||||
|
'changed_at' => isset($extends['out_at']) ? $extends['out_at'] : null,
|
||||||
|
'reason' => '原户主去世',
|
||||||
|
'old_master' => $person->master_id,
|
||||||
|
'new_master' => $oldNewMaster['id'],
|
||||||
|
'extends' => null,
|
||||||
|
'phone' => isset($extends['out_phone']) ? $extends['out_phone'] : null,
|
||||||
|
'extends_mark' => $changeMark,
|
||||||
|
'remark' => null,
|
||||||
|
'created_at' => now(),
|
||||||
|
'updated_at' => now()
|
||||||
|
];
|
||||||
|
|
||||||
|
Person::where('id', $oldPerson['id'])->update([
|
||||||
|
'master_id' => $oldNewMaster['id'],
|
||||||
|
'is_master' => $oldNewMaster['id'] == $oldPerson['id'] ? true : false,
|
||||||
|
'master_connect' => (isset($oldPerson['new_master_connect']) && !empty($oldPerson['new_master_connect'])) ? $oldPerson['new_master_connect'] : ($oldNewMaster['id'] == $oldPerson['id'] ? '户主':'')
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Person::where('id', $person->id)->update([
|
||||||
|
'domicile_code' => '99999999',
|
||||||
|
'is_master' => 0,
|
||||||
|
'master_id' => null,
|
||||||
|
'master_connect' => null,
|
||||||
|
'state' => 2,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
count($personChangeLogs) > 0 && PersonChange::insert($personChangeLogs);
|
count($personChangeLogs) > 0 && PersonChange::insert($personChangeLogs);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue