Explorar o código

Merge branch 'master' into develop

wanghaijun %!s(int64=4) %!d(string=hai) anos
pai
achega
7d9fa5f4d2

+ 3 - 4
app/Admin/Actions/backstage/Orders/ServicePackOrderList.php

xqd xqd
@@ -2,6 +2,7 @@
 
 namespace App\Admin\Actions\backstage\Orders;
 
+use App\Models\Order;
 use App\Models\OrderPack;
 use App\Models\OrderPatient;
 use Encore\Admin\Actions\RowAction;
@@ -13,10 +14,8 @@ class ServicePackOrderList extends RowAction
 
     public function handle(Model $model)
     {
-        $patient_id_arr = OrderPatient::where('order_id',$this->row->id)->pluck('patient_id');
-        $patient_id = $patient_id_arr[0];
-        $pack_id_arr = OrderPack::where('order_id',$this->row->id)->pluck('service_pack_id');
-        $pack_id = $pack_id_arr[0];
+        $patient_id = Order::where('id',$this->row->id)->value('patient_id');
+        $pack_id = OrderPack::where('order_id',$this->row->id)->value('service_pack_id');
         return $this->response()->success('跳转服务包订单列表成功')->redirect('/admin/service_packs_order_list?patient_id='.$patient_id.'&pay_order_pack_id='.$pack_id.'');
     }
 

+ 103 - 0
app/Admin/Actions/backstage/Service/ServiceBatchGrant.php

xqd
@@ -0,0 +1,103 @@
+<?php
+
+namespace App\Admin\Actions\backstage\Service;
+
+use App\Models\Order;
+use App\Models\OrderPack;
+use App\Models\Patient;
+use App\Models\ServicePack;
+use Encore\Admin\Actions\BatchAction;
+use Illuminate\Database\Eloquent\Collection;
+
+class ServiceBatchGrant extends BatchAction
+{
+    public $name = '批量发放服务包';
+
+    public function handle(Collection $collection)
+    {
+        $service_pack_id = request('id');
+        //拿到服务包id
+        $service_pack = ServicePack::where('id',$service_pack_id)->get()->toArray();
+        //计算有效天数
+        $effective_days = $service_pack[0]['effective_days'];
+        $start_time = time();
+        $str = '+'.$effective_days.'days';
+        $end_time = strtotime($str,$start_time);
+        foreach ($collection as $model) {
+            //获取患者是否有医保
+            $has_security = Patient::where('id',$model->id)->value('social_card_number');
+            if (!empty($has_security))
+            {
+                $is_security = 1;
+            }else
+            {
+                $is_security = 0;
+            }
+
+            //写入订单表
+            $order_arr = [
+                'user_id' => $model->user_id,
+                'docter_id' => 0,
+                'patient_id' => $model->id,
+                'organization_id' => 0,
+                'order_sn' => 0,
+                'pay_order_pack_id' =>0,
+                'is_faster' => 0,
+                'is_discount' => 0,
+                'is_evaluate' => 0,
+                'payment_type' => 2,
+                'product_type' => 6,
+                'order_status' => 3,
+                'payment_status' => 2,
+                'total_amount' => 0,
+                'payment_amount' => 0,
+                'discount_amount' => 0,
+                'payment_time' => time(),
+                'end_time' => 0,
+                'receiving_time' => 0,
+                'cancel_time' => 0,
+            ];
+            //先创建订单,再根据订单号去修改订单号
+            $order_id = Order::create($order_arr)->id;
+            $order_sn = build_sn($order_id);
+            Order::where('id',$order_id)->update(['order_sn'=>$order_sn]);
+
+            //创建订单服务包数据
+            $order_pack_arr = [
+              'user_id' => $model->user_id,
+              'order_id' => $order_id,
+              'service_pack_id' => $service_pack_id,
+              'pack_name' => $service_pack[0]['name'],
+              'pack_intro' => $service_pack[0]['intro'],
+              'pack_price' => $service_pack[0]['price'],
+              'team_id' => $service_pack[0]['team_id'],
+              'total_phone_minutes' => $service_pack[0]['phone_minutes'],
+              'phone_minutes' => $service_pack[0]['phone_minutes'],
+              'total_chat_num' => $service_pack[0]['chat_num'],
+              'chat_num' => $service_pack[0]['chat_num'],
+              'total_appoint_num' => $service_pack[0]['appoint_num'],
+              'appoint_num' => $service_pack[0]['appoint_num'],
+              'total_vaccine_limit_amount' => $service_pack[0]['vaccine_limit_amount'],
+              'vaccine_limit_amount' => $service_pack[0]['vaccine_limit_amount'],
+              'total_nurses_limit_amount' => $service_pack[0]['nurses_limit_amount'],
+              'nurses_limit_amount' => $service_pack[0]['nurses_limit_amount'],
+              'effective_days' => $effective_days,
+              'start_time' => $start_time,
+              'end_time' => $end_time,
+              'is_security' => $is_security,
+              'guardian_name' => $model->guardian_name,
+              'relationship_type' => $model->relationship_type,
+              'label' => $service_pack[0]['label'],
+              'is_need_insurance' => $service_pack[0]['is_need_insure'],
+              'expire_type' => 1,
+            ];
+            OrderPack::create($order_pack_arr);
+        }
+        return $this->response()->success('批量发放服务包成功')->refresh();
+    }
+    public function form()
+    {
+        $name = ServicePack::pluck('name','id');
+        $this->select('id', '服务包名称')->options($name);
+    }
+}

+ 25 - 0
app/Admin/Actions/backstage/Service/ServiceDistributions.php

xqd
@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Admin\Actions\backstage\Service;
+
+use Encore\Admin\Actions\Action;
+use Illuminate\Http\Request;
+
+class ServiceDistributions extends Action
+{
+    protected $selector = '.service-distributions';
+
+    public function handle(Request $request)
+    {
+        // $request ...
+
+        return $this->response()->success('跳转服务包发放列表成功')->redirect('/admin/service_distribution_user_list');
+    }
+
+    public function html()
+    {
+        return <<<HTML
+        <a class="btn btn-sm btn-default service-distributions">服务包发放</a>
+HTML;
+    }
+}

+ 5 - 4
app/Admin/Controllers/OrdersManagement/BookingOrderController.php

xqd xqd
@@ -9,6 +9,7 @@ use App\Admin\Actions\backstage\Refund\RefundServicePackAction;
 use App\Models\Order;
 use App\Admin\Actions\backstage\Orders\OrderDetails;
 use App\Models\OrderPack;
+use App\Models\Organization;
 use App\Models\ServicePack;
 use Encore\Admin\Widgets\Table;
 use Encore\Admin\Controllers\AdminController;
@@ -114,13 +115,13 @@ class BookingOrderController extends AdminController
         $grid->column('docter.name', __('医生姓名'));
         $grid->column('orderPatient.name', __('患者姓名'));
         $grid->column('orderPatient.patient_phone', __('患者电话'));
-        $grid->column('orderPatient.appoint_start_time', __('预约日期'))->display(function ($time){
-            return date('Y-m-d H:i:s',$time);
+        $grid->column('organization_id', __('预约机构'))->display(function ($org_id){
+            $name = Organization::where('id',$org_id)->value('name');
+            return $name;
         });
-        $grid->column('orderPatient.appoint_end_time', __('就诊日期'))->display(function ($time){
+        $grid->column('orderPatient.appoint_start_time', __('预约日期'))->display(function ($time){
             return date('Y-m-d H:i:s',$time);
         });
-//        $grid->column('evaluate.score', __('订单评分'));
         $grid->column('product_type', __('产品类型'))->using([3=>'门诊预约',4=>'疫苗接种预约',5=>'儿保预约']);
         $grid->column('payment_type', __('支付方式'))->display(function ($payment_type){
             if ($payment_type == 1)

+ 2 - 2
app/Admin/Controllers/OrdersManagement/ServicePackOrderController.php

xqd
@@ -66,8 +66,8 @@ class ServicePackOrderController extends AdminController
         $grid->column('id', __('Id'))->sortable();
         $grid->column('order_sn', __('订单编号'));
         $grid->column('user.nickname', __('用户姓名'));
-        $grid->column('orderPatient.name', __('患者姓名'));
-        $grid->column('orderPatient.patient_id', __('患者id'))->hide();
+        $grid->column('patient.name', __('患者姓名'));
+        $grid->column('patient_id', __('患者id'))->hide();
         $grid->column('user.phone', __('用户电话'));
         $grid->column('orderPack.service_pack_id', __('服务包id'));
         $grid->column('orderPack.pack_name', __('服务包名称'));

+ 2 - 2
app/Admin/Controllers/ServiceManagement/ServiceController.php

xqd
@@ -76,8 +76,8 @@ class ServiceController extends AdminController
         $grid->filter(function ($filter){
             $filter->disableIdFilter();
             $filter->equal('service_type','服务类别')->select([1 => '图文咨询', 2 => '电话咨询', 3 => '门诊预约']);
-            $filter->equal('status','状态')->select([1=>'待审核',2 =>'已通 ',3=>'未开通']);
-            $filter->equal('docterorganization.organization_id','机构')->select(Organization::pluck('intro','id'));
+            $filter->equal('status','状态')->select([1=>'待审核',2 =>'已通 ']);
+            $filter->equal('docterorganization.organization_id','所属机构')->select(Organization::pluck('intro','id'));
         });
         $grid->actions(function ($actions) {
             $actions->disableEdit();

+ 14 - 4
app/Admin/Controllers/ServicePacksManagment/InsuranceAgreementController.php

xqd xqd
@@ -26,16 +26,13 @@ class InsuranceAgreementController extends AdminController
     {
         $grid = new Grid(new InsuranceAgreement());
         $grid->disableBatchActions();
-        $grid->actions(function ($actions){
-           $actions->disableView();
-        });
         $grid->filter(function ($filter){
            $filter->disableIdFilter();
            $filter->like('name','协议名称');
         });
         $grid->column('id', __('Id'));
         $grid->column('name', __('协议名称'));
-        $grid->column('content', __('协议内容'))->limit(20,'...');
+//        $grid->column('content', __('协议内容'))->limit('300','...');
         $status = [
             'off' => ['value' => 0, 'text' => '禁用', 'color' => 'danger'],
             'on'  => ['value' => 1, 'text' => '启用', 'color' => 'success'],
@@ -54,6 +51,19 @@ class InsuranceAgreementController extends AdminController
      * @return Show
      */
 
+    protected function detail($id)
+    {
+        $show = new Show(InsuranceAgreement::findOrFail($id));
+
+        $show->field('id', 'ID');
+        $show->field('name', '协议名称');
+        $show->field('content', '协议内容')->unescape();
+        $show->field('status', '状态')->using([0=>'禁用',1=>'启用'])->label('info');
+        $show->field('created_at', '创建时间');
+        $show->field('updated_at', '更新时间');
+
+        return $show;
+    }
     /**
      * Make a form builder.
      *

+ 66 - 0
app/Admin/Controllers/ServicePacksManagment/ServiceDistributionUserList.php

xqd
@@ -0,0 +1,66 @@
+<?php
+
+namespace App\Admin\Controllers\ServicePacksManagment;
+
+
+use App\Admin\Actions\backstage\Service\ServiceBatchGrant;
+use App\Models\Patient;
+use App\Models\User;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Form;
+use Encore\Admin\Grid;
+use Encore\Admin\Show;
+
+class ServiceDistributionUserList extends AdminController
+{
+    /**
+     * Title for current resource.
+     *
+     * @var string
+     */
+    protected $title = '服务包发放患者列表';
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $grid = new Grid(new Patient());
+        $grid->disableCreateButton();
+        $uesr_id = \request('user_id');
+        $grid->filter(function ($filter){
+            $filter->disableIdFilter();
+            $filter->like('userspatient.nickname','用户姓名');
+            $filter->like('name','患者姓名');
+            $filter->equal('phone','联系电话');
+            $filter->like('guardian_name','监护人姓名');
+            $filter->between('created_at', "创建时间")->datetime();
+            $filter->between('updated_at', "更新时间")->datetime();
+        });
+        $grid->disableActions();
+        $grid->batchActions(function ($batch) {
+            $batch->add(new ServiceBatchGrant());
+            $batch->disableDelete();
+        });
+        $grid->model()->orderBy('id','desc');
+        $grid->column('id', __('患者id'));
+        $grid->column('userspatient.nickname', __('用户姓名'));
+        $grid->column('name', __('患者姓名'));
+        $grid->column('sex', __('性别'))->using([0=>'未知',1=>'男',2=>'女',]);
+//        $grid->column('avatar', __('头像'))->lightbox(['width' =>'', 'height' => 30]);
+        $grid->column('age', __('年龄'));
+        $grid->column('email', __('邮箱'));
+        $grid->column('phone', __('联系电话'));
+        $grid->column('address', __('家庭住址'))->limit(20,'...');
+        $grid->column('guardian_name', __('监护人姓名'));
+        $grid->column('card_type', __('证件类型'))->using([1=>'身份证',2=>'护照']);
+        $grid->column('card_number', __('证件号'));
+        $grid->column('social_card_number', __('社保卡号'));
+        $grid->column('created_at', __('创建时间'));
+        $grid->column('updated_at', __('更新时间'));
+        return $grid;
+    }
+
+}

+ 73 - 3
app/Admin/Controllers/ServicePacksManagment/ServicePacksController.php

xqd xqd xqd xqd
@@ -2,6 +2,7 @@
 
 namespace App\Admin\Controllers\ServicePacksManagment;
 
+use App\Admin\Actions\backstage\Service\ServiceDistributions;
 use App\Models\InsuranceAgreement;
 use App\Models\Nurse;
 use App\Models\ServicePack;
@@ -29,8 +30,8 @@ class ServicePacksController extends AdminController
         protected function grid()
     {
         $grid = new Grid(new ServicePack());
-        $grid->actions(function ($actions){
-           $actions->disableView();
+        $grid->tools(function (Grid\Tools $tools) {
+            $tools->append(new ServiceDistributions());
         });
         $grid->filter(function ($filter){
            $filter->disableIdFilter();
@@ -40,7 +41,7 @@ class ServicePacksController extends AdminController
         $grid->column('id', __('Id'));
         $grid->column('name', __('服务包名称'));
         $grid->column('intro', __('简介'));
-        $grid->column('desc', __('详细内容'))->limit(100);
+//        $grid->column('desc', __('详细内容'))->limit();
         $grid->column('label','服务类型')->display(function (){
             $tag = [1 => '图文',2 => '电话',3 => '门诊',4 => '计免',5 => '儿保'];
             $datas = $this -> label;
@@ -83,6 +84,75 @@ class ServicePacksController extends AdminController
 
         return $grid;
     }
+
+    protected function detail($id)
+    {
+        $show = new Show(ServicePack::findOrFail($id));
+
+        $show->field('id', 'ID');
+        $show->field('name', __('服务包名称'));
+        $show->field('intro', __('简介'));
+        $show->field('desc', '详细内容')->unescape()->as(function ($avatar) {
+            return $avatar;
+        });
+        $show->field('label', __('服务类型'))->unescape()->as(function ($label) {
+            $arr = [];
+            foreach ($label as $value){
+                switch ($value)
+                {
+                    case 1 :
+                        array_push($arr,'图文');
+                        break;
+                    case 2 :
+                        array_push($arr,'电话');
+                        break;
+                    case 3 :
+                        array_push($arr,'门诊');
+                        break;
+                    case 4 :
+                        array_push($arr,'门诊');
+                        break;
+                    case 5 :
+                        array_push($arr,'儿保');
+                        break;
+                }
+            }
+            return $arr;
+        })->label('info');
+        $show->field('price','价格')->as(function ($price){
+           return $price/100;
+        });
+        $show->field('team_id')->as(function ($team_id){
+            $arr = [];
+           if ($team_id == 0)
+           {
+               array_push($arr,'通用');
+               return $arr;
+           }
+           foreach ($team_id as $value){
+               $name = Team::where('id',$value)->value('name');
+               array_push($arr,$name);
+           }
+           return $arr;
+        })->label();
+
+        $show->field('image','图片')->image();
+        $show->field('is_need_insure', __('是否包含保险'))->using([0=>'不包含',1=>'包含']);
+        $show->field('insuranceagreement.name', __('保险协议名称'));
+        $show->field('phone_minutes', __('电话次数'));
+        $show->field('chat_num', __('图文次数'));
+        $show->field('appoint_num', __('门诊次数'));
+        $show->field('vaccine_limit_amount', __('计免次数'));
+        $show->field('nurses_limit_amount', __('儿保次数'));
+        $show->field('effective_days', __('服务时长'));
+        $show->field('created_at', __('创建时间'));
+        $show->field('updated_at', __('更新时间'));
+
+
+
+
+        return $show;
+    }
         /**
          * Make a form builder.
          *

+ 1 - 1
app/Admin/Controllers/UserManagement/BmUser/UserListController.php

xqd
@@ -88,7 +88,7 @@ class UserListController extends AdminController
                 if ($time == 0 ){
                     return '';
                 }else{
-                    return $time;
+                    return date('Y-m-d H:i:s',$time);
                 }
             });
         return $grid;

+ 1 - 0
app/Admin/Controllers/UserManagement/DocterManagement/DoctorManagementController.php

xqd
@@ -60,6 +60,7 @@ class DoctorManagementController extends AdminController
             $actions->disableEdit();
             // 去掉查看
             $actions->disableView();
+            $actions->disableDelete();
             //签约管理
             $actions->add(new SignUp());
             //团队管理

+ 1 - 0
app/Admin/routes.php

xqd
@@ -68,6 +68,7 @@ Route::group([
     $router->resource('open_pack', ServicePacksManagment\OpenPackController::class);
 
     $router->resource('insurance_agreements', ServicePacksManagment\InsuranceAgreementController::class);
+    $router->resource('service_distribution_user_list', ServicePacksManagment\ServiceDistributionUserList::class);
 
     $router->resource('/setting', 'Config\ConfigController');
     $router->get('/setting_form', 'Config\FormController@form');

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

xqd
@@ -67,7 +67,7 @@ class OrderVaccinesController extends AdminController
         }
 
         $grid->column('id', __('Id'));
-        $grid->column('orderPatient.name', __('预约用户'));
+        $grid->column('user.nickname', __('预约用户'));
 //        $grid->column('yuyue', __('预约时间'))->display(function ($w){
 //            if(empty($this->orderPatient) || empty($this->orderPatient->appoint_start_time)) return '';
 //            return date('Y-m-d H:i',($this->orderPatient->appoint_start_time)) .'致' . date('H:i',($this->orderPatient->appoint_end_time));

+ 1 - 0
app/Models/Article.php

xqd
@@ -15,6 +15,7 @@ class Article extends BaseModel
     public static $_post_type = [
         1=>'健康科普',
         2=>'疫苗科普',
+        3=>'娱乐'
     ];
     public function getIsCollectAttribute()
     {

+ 3 - 0
app/Models/Order.php

xqd
@@ -81,6 +81,9 @@ class Order extends BaseModel
     public function patients(){
         return $this->belongsTo(Patient::class);
     }
+    public function patient(){
+        return $this->hasOne(Patient::class,'id','patient_id');
+    }
     public function orderPatient()
     {
         return $this->hasOne(OrderPatient::class);