whj 4 vuotta sitten
vanhempi
commit
338c9b1389

+ 22 - 0
app/Admin/Actions/Community/Docter/AddAccount.php

xqd
@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Admin\Actions\Community\Docter;
+
+use Encore\Admin\Actions\Action;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Http\Request;
+
+class AddAccount extends RowAction
+{
+    public $name = '添加账号';
+
+    public function href()
+    {
+        $organization_id = $this->row->organization_id;
+        $docter_id = $this->row->docter_id;
+        if($organization_id && $docter_id){
+            return  '/cdms/docter_account/create?org_id='.$organization_id.'&docter_id='.$docter_id;
+        }
+        return '';
+    }
+}

+ 24 - 0
app/Admin/Actions/Community/Docter/EditAccount.php

xqd
@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Admin\Actions\Community\Docter;
+
+use App\Models\CdmsUsers;
+use Encore\Admin\Actions\Action;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Http\Request;
+
+class EditAccount extends RowAction
+{
+    public $name = '编辑账号';
+
+    public function href()
+    {
+        $docter_id = $this->row->docter_id;
+        $org_id = $this->row->organization_id;
+        $account = CdmsUsers::where(['org_id'=>$org_id,'docter_id'=>$docter_id])->first();
+        if($account){
+            return  '/cdms/docter_account/'.$account->id.'/edit';
+        }
+        return '';
+    }
+}

+ 23 - 0
app/Admin/Actions/Community/Docter/Pass.php

xqd xqd
@@ -2,6 +2,7 @@
 
 namespace App\Admin\Actions\Community\Docter;
 
+use App\Models\CdmsUsers;
 use App\Models\Docter;
 use App\Models\DocterOrganization;
 use Encore\Admin\Actions\RowAction;
@@ -15,19 +16,41 @@ class Pass extends RowAction
     public function handle()
     {
         $id = $this->row->id;
+        $org_id = $this->row->organization_id;
         $docter_id = $this->row->docter_id;
+        $name = $this->row->docter->name;
         try{
             $DocOrg = new DocterOrganization();
             $DocOrg->where('id',$id)->update(['state'=>1]);
             $count = $DocOrg->where('state','!=',1)->count();
             if($count == 0){
                 Docter::where(['id'=>$docter_id])->update(['is_then'=>1]);
+                $user_name = $this->randomkeys(8);
+                $data['username'] = $user_name;
+                $data['name'] = $name;
+                $data['password'] = bcrypt('123456');
+                $data['org_id'] = $org_id;
+                $data['docter_id'] = $docter_id;
+                CdmsUsers::insert($data);
             }
+
         } catch (\Exception $e){
             return $this->response()->error('更新失败!');
         }
+
         return $this->response()->success('更新成功')->refresh();
     }
 
+    function randomkeys($length)
+    {
+        $key = '';
+        $pattern = '1234567890abcdefghijklmnopqrstuvwxyz
+               ABCDEFGHIJKLOMNOPQRSTUVWXYZ';
+        for($i=0;$i<$length;$i++)
+        {
+            $key .= $pattern{mt_rand(0,35)};    //生成php随机数
+        }
+        return $key;
+    }
 
 }

+ 11 - 5
app/Community/Controllers/ApiController.php

xqd
@@ -32,14 +32,20 @@ class ApiController extends Controller
     public function  sendmsg(){
 
         $config = [
-//            'app_id' => 'wx1c2357232cd25f65',
-//            'secret' => 'c8cab53e4e52234ed1bc2abbdeaba57d',
-            'app_id' => 'wx13bedfcc62e9bab0',
-            'secret' => '175e5518b6426dd12d3096f24ca68fb8',
+            'app_id' => 'wx1c2357232cd25f65',
+            'secret' => 'c8cab53e4e52234ed1bc2abbdeaba57d',
+//            'app_id' => 'wx13bedfcc62e9bab0',
+//            'secret' => '175e5518b6426dd12d3096f24ca68fb8',
             'response_type' => 'array'
+//            oVxTzvgYlGktIDZXwfLMLQ01Tr5s
         ];
+
+        $renyuan = ['oVxTzvhu4gs4RyCt4kJDRWOgsUXw','oVxTzvgYlGktIDZXwfLMLQ01Tr5s']; //周璐
+        $renyuan = ['oVxTzvvTnnbjEE9jsalOYj4mtp6U','oVxTzvgu4XnI5F2aF7DcrbJIp5fI']; //简行
         $app = Factory::officialAccount($config );
-        $app->broadcasting->sendText("大家好!欢迎使用 EasyWeChat。",['o481Y5AtcbnOQef1vc4rL4TwYpDU', 'o481Y5AQG11MyqsEA9656TBEYTFM']);
+        $res = $app->broadcasting->sendText("大家好!欢迎使用 EasyWeChat。",$renyuan);
+
+        dd($res);
     }
 
 }

+ 50 - 0
app/Community/Controllers/AuthController.php

xqd
@@ -6,5 +6,55 @@ use Encore\Admin\Controllers\AuthController as BaseAuthController;
 
 class AuthController extends BaseAuthController
 {
+    protected $title = '医生账号';
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    public function form()
+    {
+        $userModel = config('tenancy.database.users_model');
+        $permissionModel = config('tenancy.database.permissions_model');
+        $roleModel = config('tenancy.database.roles_model');
 
+        $org_id = request('org_id');
+        $doc_id = request('doc_id');
+
+        $form = new Form(new $userModel());
+
+        $userTable = config('tenancy.database.users_table');
+        $connection = config('tenancy.database.connection');
+
+        $form->display('id', 'ID');
+        $form->text('username', trans('tenancy.username'))
+            ->creationRules(['required', "unique:{$connection}.{$userTable}"])
+            ->updateRules(['required', "unique:{$connection}.{$userTable},username,{{id}}"]);
+
+        $form->text('name', trans('tenancy.name'))->rules('required');
+        $form->image('avatar', trans('tenancy.avatar'));
+        $form->password('password', trans('tenancy.password'))->rules('required|confirmed');
+        $form->password('password_confirmation', trans('tenancy.password_confirmation'))->rules('required')
+            ->default(function ($form) {
+                return $form->model()->password;
+            });
+
+        $form->ignore(['password_confirmation']);
+
+        $form->hidden('org_id')->value(request('org_id'));
+        $form->hidden('docter_id')->value(request('doc_id'));
+        $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::where('org_id',$org_id)->all()->pluck('name', 'id'))->rule('required',['requried'=>'请选择角色']);
+
+        $form->display('created_at', trans('tenancy.created_at'));
+        $form->display('updated_at', trans('tenancy.updated_at'));
+
+        $form->saving(function (Form $form) use ($doc_id,$org_id){
+            if ($form->password && $form->model()->password != $form->password) {
+                $form->password = bcrypt($form->password);
+            }
+        });
+
+
+        return $form;
+    }
 }

+ 73 - 0
app/Community/Controllers/DocterAccountController.php

xqd
@@ -0,0 +1,73 @@
+<?php
+
+
+namespace App\Community\Controllers;
+
+
+use App\Models\CdmsUsers;
+use App\Models\Organization;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Form;
+
+class DocterAccountController extends  AdminController
+{
+    protected $title = '添加账号';
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    public function form()
+    {
+        $userModel = config('tenancy.database.users_model');
+        $roleModel = config('tenancy.database.roles_model');
+
+
+        $org_id = request('org_id');
+
+        $form = new Form(new $userModel());
+
+        $userTable = config('tenancy.database.users_table');
+        $connection = config('tenancy.database.connection');
+        $form->display('id', 'ID');
+        $form->text('username', trans('tenancy.username'))
+            ->creationRules(['required', "unique:{$connection}.{$userTable}"])
+            ->updateRules(['required', "unique:{$connection}.{$userTable},username,{{id}}"]);
+
+        $form->text('name', trans('tenancy.name'))->rules('required');
+        $form->image('avatar', trans('tenancy.avatar'));
+        $form->password('password', trans('tenancy.password'))->rules('required|confirmed');
+        $form->password('password_confirmation', trans('tenancy.password_confirmation'))->rules('required')
+            ->default(function ($form) {
+                return $form->model()->password;
+            });
+
+        $form->ignore(['password_confirmation']);
+
+        $form->hidden('org_id')->value(request('org_id'));
+        $form->hidden('docter_id')->value(request('docter_id'));
+        if($form->isEditing()){
+            $reoute = request()->route()->parameters();
+            $id = intval($reoute['docter_account']);
+            $org_id = CdmsUsers::where(['id'=>$id])->value('org_id');
+            $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::where('org_id',$org_id)->get()->pluck('name', 'id'));
+        } else {
+            $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::where('org_id',$org_id)->get()->pluck('name', 'id'));
+        }
+        $form->display('created_at', trans('tenancy.created_at'));
+        $form->display('updated_at', trans('tenancy.updated_at'));
+
+        $form->saving(function (Form $form) {
+            if ($form->password && $form->model()->password != $form->password) {
+                $form->password = bcrypt($form->password);
+            }
+        });
+
+        $form->saved(function (){
+            return redirect('/cdms/docters');
+        });
+
+
+        return $form;
+    }
+}

+ 40 - 15
app/Community/Controllers/DocterOrgController.php

xqd xqd xqd xqd xqd xqd
@@ -2,6 +2,9 @@
 
 namespace App\Community\Controllers;
 
+use App\Admin\Actions\Community\Docter\AddAccount;
+use App\Admin\Actions\Community\Docter\EditAccount;
+use App\Models\CdmsUsers;
 use App\Models\Docter;
 use App\Models\DocterOrganization;
 use App\Models\Office;
@@ -31,10 +34,16 @@ class DocterOrgController extends AdminController
         $grid = new Grid(new DocterOrganization());
 
 //        $grid->disableCreateButton(false);
-        $is_admin = Admin::user()->isRole('administrator');
-        $grid->model()->where(['organization_id'=>Admin::user()->org_id]);
+        $is_manager = Admin::user()->isRole('manager');
         $grid->column('id', __('Id'));
         $grid->column('docter.name', __('成员名称'));
+        if($is_manager){
+            $grid->model()->where(['organization_id'=>Admin::user()->org_id]);
+        } else {
+            $grid->column('organization.name','所属机构')->display(function ($org_name){
+                return $org_name ?? '总后台';
+            });
+        }
         $grid->column('docter.sex', __('性别'))->display(function ($w){
             return $w==1?'男':'女';
         });;
@@ -53,8 +62,17 @@ class DocterOrgController extends AdminController
         });
 
         $grid->actions(function ($actions){
-            $actions->disableDelete(false);
+            $actions->disableDelete();
             $actions->disableView(false);
+            $actions->disableEdit();
+            $docter_id = $actions->row->docter_id;
+            $org_id = $actions->row->organization_id;
+            $have_user = CdmsUsers::where(['org_id'=>$org_id,'docter_id'=>$docter_id])->first();
+            if($have_user){
+                $actions->add(new EditAccount());
+            } else {
+                $actions->add(new AddAccount());
+            }
         });
         return $grid;
     }
@@ -69,12 +87,16 @@ class DocterOrgController extends AdminController
     {
         $show = new Show(DocterOrganization::findOrFail($id));
 
-        $show->field('id', __('Id'));
-        $show->field('docter_id', __('Docter id'));
-        $show->field('organization_id', __('Organization id'));
-        $show->field('created_at', __('Created at'));
-        $show->field('updated_at', __('Updated at'));
-
+        $show->field('docter.name', __('名称'));
+        $show->field('docter.phone', __('联系方式 '));
+        $show->field('organization.name', __('机构'));
+        $show->field('created_at', __('创建时间'));
+        $show->field('updated_at', __('更新时间'));
+        $show->panel()
+            ->tools(function ($tools) {
+                $tools->disableEdit(true);
+                $tools->disableDelete(true);
+            });
         return $show;
     }
 
@@ -87,12 +109,11 @@ class DocterOrgController extends AdminController
     {
         $form = new Form(new DocterOrganization());
 
-        $form->text('docter.name', __('姓名'));
-        $form->text('docter.sex', __('姓名'));
-        $form->text('docter.phone', __('电话'));
-        $form->text('docter.email', __('邮箱'));
-        $form->select('docter.card_id', __('身份证号'));
-        $form->text('docter.tyep', __('类型'));
+        $form->display('docter.name', __('姓名'))->rules('required',['required'=>'名称必须']);
+        $form->display('docter.sex', __('姓名'));
+        $form->display('docter.phone', __('电话'));
+//        $form->display('docter.email', __('邮箱'));
+        $form->display('docter.card_id', __('身份证号'));
         $form->select('docter.office_id', __('所属部门'))->options(function (){
             $org_id = Admin::user()->org_id;
             return Office::where(['org_id'=>$org_id])->pluck('name','id');
@@ -102,6 +123,10 @@ class DocterOrgController extends AdminController
             return Qualification::pluck('name','id');
         });
 
+        $form->saved(function ($form){
+            return redirect('/docters');
+        });
+
         return $form;
     }
 }

+ 2 - 2
app/Community/Controllers/DocterVerifyController.php

xqd xqd xqd
@@ -2,6 +2,7 @@
 
 namespace App\Community\Controllers;
 
+use App\Admin\Actions\Community\Docter\Failed;
 use App\Admin\Actions\Community\Docter\Pass;
 use App\Models\DocterOrganization;
 use Encore\Admin\Controllers\AdminController;
@@ -9,8 +10,6 @@ use Encore\Admin\Facades\Admin;
 use Encore\Admin\Form;
 use Encore\Admin\Grid;
 use Encore\Admin\Show;
-use Illuminate\Auth\Events\Failed;
-
 class DocterVerifyController extends AdminController
 {
     /**
@@ -58,6 +57,7 @@ class DocterVerifyController extends AdminController
             $filter->disableIdFilter();
             $filter->like('docter.name','姓名');
             $filter->equal('docter.sex','性别')->select(['未知','男','女']);
+            $filter->equal('state','状态')->select(['待审核','已通过','以拒绝']);
         });
 
         return $grid;

+ 1 - 1
app/Community/Controllers/OfficeController.php

xqd
@@ -16,7 +16,7 @@ class OfficeController extends AdminController
      *
      * @var string
      */
-    protected $title = '用户管理';
+    protected $title = '科室';
 
     /**
      * Make a grid builder.

+ 11 - 4
app/Community/Controllers/OrderNurseController.php

xqd xqd
@@ -2,8 +2,8 @@
 
 namespace App\Community\Controllers;
 
-use App\Admin\Actions\Commuinity\Nurse\DelNurse;
-use App\Admin\Actions\Commuinity\Nurse\Finished;
+use App\Admin\Actions\Community\Nurse\DelNurse;
+use App\Admin\Actions\Community\Nurse\Finished;
 use App\Models\Docter;
 use App\Models\Order;
 use App\Models\OrderNurse;
@@ -37,8 +37,15 @@ class OrderNurseController extends AdminController
 
         if(!$is_admin){
             $org_id = $user->org_id;
-            $grid->model()->whereHas('orders',function ($query) use ($org_id) {
-                $query->where(['organization_id'=>$org_id]);
+            $docter_id = $user->docter_id;
+
+
+            $grid->model()->whereHas('orders',function ($query) use ($org_id,$docter_id) {
+                $where['organization_id']=$org_id;
+                if($docter_id){
+                    $where['docter_id'] = $docter_id;
+                 }
+                $query->where($where);
             });
         }
 

+ 92 - 0
app/Community/Controllers/PermissionController.php

xqd
@@ -0,0 +1,92 @@
+<?php
+
+namespace App\Community\Controllers;
+
+use App\Models\CdmsPermissions;
+use App\Models\CdmsRoles;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Facades\Admin;
+use Encore\Admin\Form;
+use Encore\Admin\Grid;
+use Encore\Admin\Show;
+
+class PermissionController extends AdminController
+{
+    /**
+     * Title for current resource.
+     *
+     * @var string
+     */
+    protected $title = '权限列表';
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $grid = new Grid(new CdmsRoles());
+
+        $user = Admin::user();
+        $is_admin = Admin::user()->inRoles(['administrator','devloper']);
+        $grid->disableCreateButton(false);
+//        $is_manager = Admin::user()->isRole('manager');
+        if(!$is_admin){
+            $org_id = $user->org_id;
+            $grid->model()->where(['org_id'=>$org_id]);
+        }
+        $grid->column('organization.name', __('所属机构'))->display(function ($org_name){
+            return $org_name ?? '总后台';
+        });
+        $grid->column('name', __('名称'));
+        $grid->column('slug', __('标识'));
+        $grid->column('created_at', __('创建时间'));
+        $grid->column('updated_at', __('更新时间'));
+
+        return $grid;
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        $show = new Show(CdmsRoles::findOrFail($id));
+
+        $show->field('id', __('Id'));
+        $show->field('name', __('Name'));
+        $show->field('slug', __('Slug'));
+        $show->field('created_at', __('Created at'));
+        $show->field('updated_at', __('Updated at'));
+
+        return $show;
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        $form = new Form(new CdmsRoles());
+        $is_manager = Admin::user()->isRole('manager');
+
+        if($is_manager){
+            $org_id = Admin::user()->org_id;
+            $form->hidden('org_id')->value($org_id);
+        }
+
+        $form->text('slug', __('标识'))->rules('required',['required'=>'标识必须']);
+        $form->text('name', '名称')
+            ->creationRules(['required', "unique:cdms_roles"])
+            ->updateRules(['required', "unique:cdms_roles,name,{{id}}"]);
+        $form->listbox('permissions', trans('admin.permissions'))->options(CdmsPermissions::all()->pluck('name', 'id'));
+
+        return $form;
+    }
+}

+ 4 - 2
app/Community/routes.php

xqd
@@ -2,16 +2,18 @@
 //常规路由
 Route::get('/', 'HomeController@index');
 Route::resource('nurses', NurseController::class);
+Route::resource('nurse_users', NurseUserController::class);
 Route::resource('order_nurses', OrderNurseController::class);
 Route::resource('vaccines', VaccineController::class);
 Route::resource('order_vaccines', OrderVaccinesController::class);
+Route::resource('vaccine_users', VaccineUserController::class);
 Route::resource('docters', DocterOrgController::class);
 Route::resource('offices', OfficeController::class);
 Route::resource('orders', OrderController::class);
 Route::resource('docter_org', DocterOrgController::class);
-Route::resource('nurse_users', NurseUserController::class);
-Route::resource('vaccine_users', VaccineUserController::class);
 Route::resource('docter_verifies', DocterVerifyController::class);
+Route::resource('cdms_roles', PermissionController::class);
+Route::resource('docter_account', DocterAccountController::class);
 
 //api
 Route::get('/api/getDocter', 'ApiController@getDocter');

+ 5 - 0
app/Models/CdmsRoles.php

xqd
@@ -109,4 +109,9 @@ class CdmsRoles extends Model
             $model->permissions()->detach();
         });
     }
+
+    public function organization()
+    {
+        return $this->hasOne(Organization::class,'id','org_id');
+    }
 }

+ 5 - 0
app/Models/DocterOrganization.php

xqd
@@ -26,4 +26,9 @@ class DocterOrganization extends Model
     }
 
 
+    public function organization()
+    {
+        return $this->hasOne(Organization::class,'id','organization_id');
+    }
+
 }

+ 80 - 0
app/Tenancy/Controllers/DocterVerifyController.php

xqd
@@ -0,0 +1,80 @@
+<?php
+
+namespace App\Tenancy\Controllers;
+
+use App\Models\DocterOrganization;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Form;
+use Encore\Admin\Grid;
+use Encore\Admin\Show;
+
+class DocterVerifyController extends AdminController
+{
+    /**
+     * Title for current resource.
+     *
+     * @var string
+     */
+    protected $title = '审核';
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $grid = new Grid(new DocterOrganization());
+
+        $grid->column('id', __('Id'));
+        $grid->column('docter_id', __('Docter id'));
+        $grid->column('organization_id', __('Organization id'));
+        $grid->column('offices_id', __('Offices id'));
+        $grid->column('qualifications_id', __('Qualifications id'));
+        $grid->column('state', __('State'));
+        $grid->column('created_at', __('Created at'));
+        $grid->column('updated_at', __('Updated at'));
+
+        return $grid;
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        $show = new Show(DocterOrganization::findOrFail($id));
+
+        $show->field('id', __('Id'));
+        $show->field('docter_id', __('Docter id'));
+        $show->field('organization_id', __('Organization id'));
+        $show->field('offices_id', __('Offices id'));
+        $show->field('qualifications_id', __('Qualifications id'));
+        $show->field('state', __('State'));
+        $show->field('created_at', __('Created at'));
+        $show->field('updated_at', __('Updated at'));
+
+        return $show;
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        $form = new Form(new DocterOrganization());
+
+        $form->number('docter_id', __('Docter id'));
+        $form->number('organization_id', __('Organization id'));
+        $form->number('offices_id', __('Offices id'));
+        $form->number('qualifications_id', __('Qualifications id'));
+        $form->number('state', __('State'));
+
+        return $form;
+    }
+}