zgg 3 ماه پیش
والد
کامیت
1c01b3ac19

+ 15 - 3
application/admin/controller/Cate.php

@@ -40,7 +40,18 @@ class Cate extends Auth
                 ->limit($start,$length)
                 ->order($order)
                 ->select();
-
+            $dep= Db::name('dep')
+                ->where('org_id','=',$this->orgId)
+                ->where('del','=',0)
+                ->where('enable','=',1)
+                ->column('title','id');
+            foreach ($lists as $k=>$v){
+                $depList = explode(',',$v['deps']);
+                foreach ($depList as $k1=>$v1){
+                    $depList[$k1] = $dep[$v1] ?? '';
+                }
+                $lists[$k]['depName'] = implode(',',$depList);
+            }
             //数据返回
             $totalCount = Db::name('cate')->alias('c')->Leftjoin('org o','c.org_id=o.id')->where($map)->count();
             $totalPage = ceil($totalCount/$length);
@@ -71,11 +82,12 @@ class Cate extends Auth
             $meta_title = '新增服务';
             if($id){
                 $info = Db::name('cate')->where('id',$id)->find();
-
+                $info['deps'] = $info['deps'] ? explode(',',$info['deps']):[];
                 $this->assign('info',$info);
-
                 $meta_title = '编辑服务';
             }
+            $depList = model('Dep')->getList();
+            $this->assign('depList', $depList);
             $this->assign('meta_title',$meta_title);
             return $this->fetch();
         }

+ 14 - 6
application/admin/controller/PhOrders.php

@@ -33,10 +33,13 @@ class PhOrders extends Auth
                     ->where('u.real_name','like','%'.$title.'%')
                     ->where('uo.org_id',$this->orgId)
                     ->column('u.id');
-                if(!empty($user)){
-                    $map[] = ['a.user_id','in',$user];
-                }else{
-                    $map[] = ['a.user_id','=',0];
+                $orderId = Db::name('ph_todo')
+                    ->alias('p')
+                    ->join('worker w','w.id=p.worker_id')
+                    ->where('w.user_id','in',$user)
+                    ->column('p.order_id');
+                if(!empty($orderId)){
+                    $map[] = ['a.id','in',$orderId];
                 }
             }
 
@@ -44,6 +47,10 @@ class PhOrders extends Auth
             if($sn){
                 $map[] = ['a.sn','=',$sn];
             }
+            $name = input('name','','trim');
+            if($name){
+                $map[] = ['a.name','like','%'.$name.'%'];
+            }
 
             $cateId = input('cateId','','trim');
             if($cateId){
@@ -63,11 +70,9 @@ class PhOrders extends Auth
             $b = input('begin','','trim');
             $e = input('end','','trim');
             if($b){
-                $b = date('Y-m-d 00:00:00',strtotime($b));
                 $map[] = ['a.create_time','>=',$b];
             }
             if($e){
-                $e = date('Y-m-d 23:59:59',strtotime($e));
                 $map[] = ['a.create_time','<=',$e];
             }
             $map[] = ['a.org_id','=',$this->orgId];
@@ -158,6 +163,9 @@ class PhOrders extends Auth
             }
         }else{
             $cate =(new \app\common\model\Cate())->getAllByOrg($this->orgId);
+            foreach ($cate as $k => $v){
+                $cate[$k]['deps'] = $v['deps'] ? explode(',',$v['deps']):[];
+            }
             $this->assign('cate',$cate);
 
             $dep =(new \app\common\model\Dep())->getList($this->orgId);

+ 6 - 1
application/admin/view/cate/add.html

@@ -27,7 +27,12 @@
                             <input type="number" class="form-control" name="price" value="{$info.price|default=''}">
                         </div>
                     </div>
-
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">绑定科室</label>
+                        <div class="col-sm-6">
+                            {:widget('common/multiselect2',['name'=>'deps','lists'=>$depList,'val'=>!empty($info.deps)?$info.deps:[]])}
+                        </div>
+                    </div>
                     <div class="form-group">
                         <label class="col-sm-2 control-label">状态</label>
                         <div class="col-sm-6">

+ 4 - 3
application/admin/view/cate/index.html

@@ -55,8 +55,9 @@
             colModel:[
                 {label:'ID',name:'id',index:'id', width:30,sortable: false},
                 {label:'名称',name:'title',index:'title',width:80,editable: false,sortable: false},
-                {label:'价格',name:'price',index:'price',width:80,editable: false,sortable: false},
-                {label:'状态',name:'enable',index:'enable',width:50,editable: false,sortable: false,formatter:function (a,b,c){
+                {label:'价格',name:'price',index:'price',width:60,editable: false,sortable: false},
+                {label:'绑定科室',name:'depName',index:'depName',width:150,editable: false,sortable: false},
+                {label:'状态',name:'enable',index:'enable',width:30,editable: false,sortable: false,formatter:function (a,b,c){
                         if(a == 0){
                             var url = "{:url('changeField',[],'')}/fn/enable/fv/1/id/"+c.id;
                             return '<a href="'+url+'" class="ajax-get" data-table="1"><span class="label label-danger" title="禁用">禁用</span></a>';
@@ -65,7 +66,7 @@
                             return '<a href="'+url+'" class="ajax-get" data-table="1"><span class="label label-primary" title="正常">正常</span></a>';
                         }
                     }},
-                {label:'操作',width:80,sortable: false,formatter: function (a, b, c) {
+                {label:'操作',width:60,sortable: false,formatter: function (a, b, c) {
                         var editurl = "{:url('add',[],'')}/id/"+c.id;
                         var delurl = "{:url('del',[],'')}/id/"+c.id;
                        // var btn = '<a href="'+editurl+'"><span class="label label-primary" title="编辑">编辑</span></a>&nbsp;';

+ 43 - 13
application/admin/view/ph_orders/add.html

@@ -87,7 +87,7 @@
                     <div class="form-group">
                         <label class="col-sm-2 control-label">科室/部门 <span class="text-danger">*</span></label>
                         <div class="col-sm-7">
-                            <select name="depId" class="form-control">
+                            <select name="depId" id="dep" class="form-control">
                                 <option value="">选择科室/部门</option>
                                 {volist name="dep" id="v"}
                                 <option value="{$v.id}">{$v.title}</option>
@@ -96,14 +96,11 @@
                         </div>
                     </div>
 
-                    <div class="form-group">
+                    <div class="form-group" >
                         <label class="col-sm-2 control-label">陪护服务<span class="text-danger">*</span></label>
                         <div class="col-sm-7">
-                            <select name="cateId" class="form-control" onchange="changeService(this)">
-                                <option value="">选择服务</option>
-                                {volist name="cate" id="v"}
-                                <option value="{$v.id}">{$v.title}</option>
-                                {/volist}
+                            <select name="cateId" id="cate" class="form-control" onchange="changeService(this)" >
+                                <option value="" id="tips">选择服务</option>
                             </select>
                         </div>
                     </div>
@@ -155,20 +152,53 @@
         theme: '#148d8f'
     });
     var cates = JSON.parse('{:json_encode($cate)}');
+    document.addEventListener('DOMContentLoaded', function () {
+        const cateSelect = document.getElementById('cate');
+        const depSelect = document.getElementById('dep');
+        const tipsOption = document.getElementById('tips');
+        tipsOption.textContent = '请先选择科室/部门';
+        cateSelect.disabled = true;
+        let filteredData = [];
 
-
+        // 监听 dep 的值变化
+        depSelect.addEventListener('change', function () {
+            cateSelect.value = '';
+            cateSelect.innerHTML = '';
+            $('#price').val('');
+            if (depSelect.value) {
+                tipsOption.textContent = '选择服务';
+                cateSelect.disabled = false;
+                const defaultOption = document.createElement('option');
+                defaultOption.value = '';
+                defaultOption.textContent = '选择服务';
+                cateSelect.appendChild(defaultOption);
+                filteredData = cates.filter(item => item.deps.includes(depSelect.value));
+                if (filteredData.length === 0) {
+                    filteredData = cates.filter(item => item.deps.length === 0);
+                }
+                if (filteredData.length === 0){
+                    cateSelect.disabled = true;
+                    tipsOption.textContent = '无陪护服务,请选择其他科室';
+                }else{
+                    filteredData.forEach(option => {
+                        cateSelect.add(new Option(option.title, option.id));
+                    });
+                }
+            } else {
+                cateSelect.disabled = true;
+                tipsOption.textContent = '请先选择科室/部门';
+            }
+        });
+    });
     function changeService(_self) {
-        console.log(cates);
         var cateId = $(_self).val();
         var price = '';
-        console.log(cateId);
-        for (let o in cates){
-            if(cates[o].id == cateId){
+        for (let o in cates) {
+            if (cates[o].id == cateId) {
                 price = cates[o].price;
                 break;
             }
         }
-        console.log(price);
         $('#price').val(price);
     }
 </script>

+ 13 - 12
application/admin/view/ph_orders/index.html

@@ -7,7 +7,6 @@
         border-color: #23c6c8 !important;
     }
 
-    }
 </style>
 <div class="ibox">
     <div class="ibox-content">
@@ -15,22 +14,22 @@
             <div class="col-xs-2" style="margin-bottom: 15px;margin-right: 10px">
                 <a href="javascript:;" url="{:url('add')}" data-title="创建订单" onclick="layer_open(this,1)" class="btn btn-sm btn-primary">创建订单</a>
             </div>
-            <div class="col-xs-14" style="text-align: left;">
+            <div class="col-xs-14" style="text-align: right;margin-right: 20px">
                 <form class="form-inline" id="form-search" action="{:url('index')}">
                     <div class="input-group">
                         <input type="text" class="form-control" name="sn" placeholder="订单编号">
                     </div>
-                    <!--<div class="input-group">-->
-                        <!--<input type="text" class="form-control" name="title" placeholder="创建人">-->
-                    <!--</div>-->
-                    <!--<div class="input-group">-->
-                        <!--<input type="text" class="form-control" name="title1" placeholder="护工名称">-->
-                    <!--</div>-->
                     <div class="input-group">
-                        <input type="text" id="date" readonly class="form-control" name="begin" placeholder="开始日期">
+                        <input type="text" class="form-control" name="name" placeholder="患者姓名">
+                    </div>
+                    <div class="input-group">
+                        <input type="text" class="form-control" name="title" placeholder="护工姓名">
+                    </div>
+                    <div class="input-group">
+                        <input type="text" id="date" readonly class="form-control" name="begin" placeholder="开始日期" style="width: 160px !important;">
                     </div>
                     <div class="input-group">
-                        <input type="text" id="date1" readonly class="form-control" name="end" placeholder="结束日期">
+                        <input type="text" id="date1" readonly class="form-control" name="end" placeholder="结束日期" style="width: 160px !important;">
                     </div>
 
                     <div class="input-group">
@@ -113,14 +112,16 @@
         //设置开始日期、日期日期的 input 选择器
         //数组格式为 5.3.0 开始新增,之前版本直接配置 true 或任意分割字符即可
         trigger: 'click' ,
-        theme: '#337ab7'
+        theme: '#337ab7',
+        type:'datetime'
     });
     laydate.render({
         elem: '#date1',
         //设置开始日期、日期日期的 input 选择器
         //数组格式为 5.3.0 开始新增,之前版本直接配置 true 或任意分割字符即可
         trigger: 'click' ,
-        theme: '#337ab7'
+        theme: '#337ab7',
+        type:'datetime'
     });
     $(function () {
 

+ 1 - 0
application/api/controller/h5/Worker.php

@@ -57,6 +57,7 @@ class Worker extends Base
         $lists = $lists?$lists:[];
         foreach ($lists as $k=>$v){
             $lists[$k]['title'] = $v['title']."[单价:".$v['price']."]";
+            $lists[$k]['deps'] = $v['deps'] ? explode(',',$v['deps']) : [];
         }
         HelpHander::success($lists,'操作成功');
     }

+ 23 - 5
application/api/controller/v1/Cate.php

@@ -10,11 +10,29 @@ class Cate extends Base
 {
 
     public function cateList(){
-
-        $model = new \app\common\model\Cate();
-        $ret = $model->getAllByOrg($this->orgId);
-
-        HelpHander::success($ret);
+        $deptId = input('deptId/d',0);
+        if ($deptId > 0){
+            $map[] = ['','exp',Db::raw('FIND_IN_SET('.$deptId.',deps)')];
+        }
+        $map = !empty($map)?$map:true;
+        $list = Db::name('cate')
+            ->where('enable',1)
+            ->where('del',0)
+            ->field('id,title,price')
+            ->where('org_id',$this->orgId)
+            ->where($map)
+            ->select();
+        if (!$list){
+            $list = Db::name('cate')
+                ->where('enable',1)
+                ->where('del',0)
+                ->field('id,title,price')
+                ->where('org_id',$this->orgId)
+                ->where('deps','=','')
+                ->select();
+        }
+        $list = $list?$list:[];
+        HelpHander::success($list);
     }
 
 }

+ 36 - 1
application/api/controller/v1/PhOrders.php

@@ -29,13 +29,26 @@ class PhOrders extends Base
         HelpHander::success($res,'操作成功');
 
     }
+    public function editTodo(){
+        $model = new \app\common\model\PhOrders();
+        $res = $model->edit_todo($this->userId,$this->orgId);
+        if(!$res){
+            HelpHander::error($model->getError());
+        }else{
+            HelpHander::success([],'操作成功');
+        }
+    }
     //调度订单列表
     public function orderList(){
         $page = input('page',1);
         $size = input('size',10);
         $status = input('status/d',-1);
+        $start = input('start','');
+        $end = input('end','');
+        $hgName = input('hgName','','trim');
+        $brName = input('brName','','trim');
         $model = new \app\common\model\PhOrders();
-        $res = $model->orderList1($this->orgId,$this->userId,$status,$page,$size);
+        $res = $model->orderList1($this->orgId,$this->userId,$status,$start,$end,$hgName,$brName,$page,$size);
         HelpHander::success($res,'操作成功');
 
     }
@@ -186,4 +199,26 @@ class PhOrders extends Base
         HelpHander::success($list);
     }
 
+    public function phBalanceWarning()
+    {
+        $page = input('page',1);
+        $size = input('size',10);
+        $deps = Db::name('ph_user')
+            ->where('user', $this->userId)
+            ->where('org_id', $this->orgId)
+            ->value('dep');
+        $depIds = $deps ? explode(',', $deps) : [];
+        $list = Db::name('ph_balance_warning')
+            ->alias('pbw')
+            ->join('ph_orders po', 'pbw.sn = po.sn')
+            ->where('pbw.org_id', $this->orgId)
+            ->where('po.dep_id','in',$depIds)
+            ->order('create_time', 'desc')
+            ->field('pbw.*')
+            ->limit(($page-1)*$size,$size)
+            ->select();
+        $list = $list?$list:[];
+        HelpHander::success($list,'操作成功');
+    }
+
 }

+ 1 - 1
application/common/model/Cate.php

@@ -17,7 +17,7 @@ class Cate extends Base
         $list = Db::name('Cate')
             ->where('enable',1)
             ->where('del',0)
-            ->field('id,title,price')
+            ->field('id,title,price,deps')
             ->where('org_id',$orgId)
             ->select();
         return $list;

+ 39 - 8
application/common/model/PhOrders.php

@@ -39,7 +39,7 @@ class PhOrders extends Base
             'cate_id' => input('cateId/d','','trim'),
             'is_service' => 0,
         ];
-
+        $isFirst = input('isFirst/d',1);
         $serviceMoney = model("Config")->getConfig("web_service_money",$data['org_id']);
         $serviceMoney = floatval($serviceMoney) > 0? floatval($serviceMoney) : 0;
         if($serviceMoney <= 0){
@@ -73,6 +73,10 @@ class PhOrders extends Base
 
         Db::startTrans();
         try{
+            if($isFirst == 2){
+                $data['is_service'] = 1;
+                $data['service_money'] = 0;
+            }
             $data['status'] = 0;
             $data['create_time'] = date('Y-m-d H:i:s');
             $orderId = Db::name('ph_orders')->insertGetId($data);
@@ -80,10 +84,9 @@ class PhOrders extends Base
                 \exception('创建订单失败');
             }
             $payId = -1;
-            if($serviceMoney > 0){ // 服务费
+            if($serviceMoney > 0 && $isFirst == 1){ // 服务费
                 $payId = model("PhOrderPay")->addSave($data['user_id'],$data['org_id'],$orderId,$serviceMoney,1);
             }
-
             Db::commit();
 
         }catch (Exception $e){
@@ -617,9 +620,12 @@ class PhOrders extends Base
         if($info){
             $info['cate_name'] = '';
             if($info['cate_id'] > 0){
-                $info['cate_name'] = Db::name('cate')
+               $cate = Db::name('cate')
                     ->where('id',$info['cate_id'])
-                    ->value('title');
+                    ->field('title,price')
+                    ->find();
+                $info['cate_name'] = $cate['title'];
+                $info['cate_name2'] = $cate['title']."[单价:".$cate['price']."]";;
             }
             $info['dep_name'] = '';
             if($info['dep_id'] > 0){
@@ -663,7 +669,7 @@ class PhOrders extends Base
                 $todos[$k]['worker_name'] =  Db::name('user')
                     ->where('id',$user_id)
                     ->value('real_name');
-                $todos[$k]['end'] = $v['end']? $info['end']:"";
+                $todos[$k]['end'] = $v['end']? $v['end']:"";
 
             }
             $info['todo'] = $todos;
@@ -709,7 +715,7 @@ class PhOrders extends Base
                 $serviceMoney = floatval($serviceMoney) > 0? floatval($serviceMoney) : 0;
                 $info['serviceCharge'] = $serviceMoney;
             }
-
+            $info['isEdit'] = !in_array($info['status'],[3,4]) ? 1 : 0;
         }
 
         return $info;
@@ -836,7 +842,7 @@ class PhOrders extends Base
 
 
     //调度订单列表
-    public function orderList1($orgId,$userId,$status,$page,$size){
+    public function orderList1($orgId,$userId,$status,$begin,$end,$hgName,$brName,$page,$size){
         $start = ($page - 1) * $size;
         if($status >= 0){
             if($status==2){
@@ -846,6 +852,31 @@ class PhOrders extends Base
                 $map[] = ['status','=',$status];
             }
         }
+        if($begin){
+            $map[] = ['create_time','>=',$begin.'00'];
+        }
+        if($end){
+            $map[] = ['create_time','<=',$end.'00'];
+        }
+        if($hgName){
+            $user = Db::name('user')
+                ->alias('u')
+                ->join('user_org uo','uo.user_id = u.id')
+                ->where('u.real_name','like','%'.$hgName.'%')
+                ->where('uo.org_id',$orgId)
+                ->column('u.id');
+            $orderId = Db::name('ph_todo')
+                ->alias('p')
+                ->join('worker w','w.id=p.worker_id')
+                ->where('w.user_id','in',$user)
+                ->column('p.order_id');
+            if(!empty($orderId)){
+                $map[] = ['id','in',$orderId];
+            }
+        }
+        if($brName){
+            $map[] = ['name','like','%'.$brName.'%'];
+        }
 //        $depId = Db::name('ph_user')
 //            ->where('enable',1)
 //            ->where('del',0)

+ 9 - 0
application/common/model/PhUser.php

@@ -30,6 +30,15 @@ class PhUser extends Base
                 }
 
             }else{
+                $record = Db::name('ph_user')
+                    ->where('org_id',$orgId)
+                    ->where('del',0)
+                    ->where('user',$data['user'])
+                    ->findOrEmpty();
+                if (!empty($record)){
+                    $this->error = '改负责人已绑定过部门,请修改';
+                    return false;
+                }
                 $data['org_id'] = $orgId;
                 $data['create_time'] = date('Y-m-d H:i:s');
                 $ret = $this->allowField(true)->insert($data);