cqp 2 月之前
父节点
当前提交
12e1a3f2ec

+ 67 - 0
app/Http/Controllers/Api/OrderController.php

@@ -73,4 +73,71 @@ class OrderController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
+    public function reminderEdit(Request $request)
+    {
+        $service = new OrderService();
+        $user = $request->userData;
+        list($status,$data) = $service->reminderEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function reminderAdd(Request $request)
+    {
+        $service = new OrderService();
+        $user = $request->userData;
+        list($status,$data) = $service->reminderAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function reminderDel(Request $request)
+    {
+        $service = new OrderService();
+        $user = $request->userData;
+        list($status,$data) = $service->reminderDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function reminderList(Request $request)
+    {
+        $service = new OrderService();
+        $user = $request->userData;
+        list($status,$data) = $service->reminderList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function reminderDetail(Request $request)
+    {
+        $service = new OrderService();
+        $user = $request->userData;
+        list($status,$data) = $service->reminderDetail($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
 }

+ 67 - 0
app/Http/Controllers/Api/QuantizationController.php

@@ -73,4 +73,71 @@ class QuantizationController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
+    public function quantizationCreateEdit(Request $request)
+    {
+        $service = new QuantizationService();
+        $user = $request->userData;
+        list($status,$data) = $service->quantizationCreateEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function quantizationCreateAdd(Request $request)
+    {
+        $service = new QuantizationService();
+        $user = $request->userData;
+        list($status,$data) = $service->quantizationCreateAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function quantizationCreateDel(Request $request)
+    {
+        $service = new QuantizationService();
+        $user = $request->userData;
+        list($status,$data) = $service->quantizationCreateDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function quantizationCreateList(Request $request)
+    {
+        $service = new QuantizationService();
+        $user = $request->userData;
+        list($status,$data) = $service->quantizationCreateList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function quantizationCreateDetail(Request $request)
+    {
+        $service = new QuantizationService();
+        $user = $request->userData;
+        list($status,$data) = $service->quantizationCreateDetail($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
 }

+ 8 - 1
app/Model/Quantization.php

@@ -9,7 +9,7 @@ class Quantization extends UseScopeBaseModel
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
 
-    public static $field = ['title','id','code','crt_time','is_use','crt_id'];
+    public static $field = ['title','id','code','crt_time','is_use','crt_id','type'];
 
     const is_use_zero = 0;
     const is_use_one = 1;
@@ -17,4 +17,11 @@ class Quantization extends UseScopeBaseModel
         self::is_use_zero => '停用',
         self::is_use_one => '启用',
     ];
+
+    const type_one = 1;
+    const type_two = 2;
+    public static $type_name = [
+        self::type_one => '能力量化',
+        self::type_two => '合作现状量化',
+    ];
 }

+ 21 - 0
app/Model/QuantizationCreate.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace App\Model;
+
+class QuantizationCreate extends UseScopeBaseModel
+{
+    protected $table = "quantization_create"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const employee_column = "crt_id";
+
+    public static $field = ['customer_supply_id','id','crt_time','crt_id','type','products','score','start_time','end_time'];
+
+    const type_one = 1;
+    const type_two = 2;
+    public static $type_name = [
+        self::type_one => '能力量化',
+        self::type_two => '合作现状量化',
+    ];
+}

+ 11 - 0
app/Model/QuantizationCreateDetails.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Model;
+
+class QuantizationCreateDetails extends UseScopeBaseModel
+{
+    protected $table = "quantization_create_details"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+}

+ 43 - 0
app/Model/Reminder.php

@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Model;
+
+class Reminder extends UseScopeBaseModel
+{
+    protected $table = "reminder"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const employee_column = "crt_id";
+
+    public static $field = ['order_number','id','order_no','crt_id','crt_time','product_code','product_title','product_size','product_size','quantity','order_time','lt_arrived_time','tl_arrived_time','tl_quantity','df_type','rule'];
+
+    const status_zero = 0;
+    const status_one = 1;
+    const status_two = 2;
+    public static $status_name = [
+        self::status_zero => '等待回复',
+        self::status_one => '已完成',
+        self::status_two => '已结束', // 拒绝
+    ];
+
+    const df_type_one = 1;
+    const df_type_two = 2;
+    const df_type_three = 3;
+    const df_type_four = 4;
+    const df_type_five = 5;
+    public static $df_type_name = [
+        self::df_type_one => '2小时',
+        self::df_type_two => '立即',
+        self::df_type_three => '上午',
+        self::df_type_four => '下午',
+        self::df_type_five => '下班前',
+    ];
+
+    const rule_one = 1;
+    const rule_two = 2;
+    public static $rule_name = [
+        self::rule_one => '与',
+        self::rule_two => '或',
+    ];
+}

+ 18 - 0
app/Model/ReminderDetails.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Model;
+
+class ReminderDetails extends UseScopeBaseModel
+{
+    protected $table = "reminder_details"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+    const is_main_one = 1;
+    const is_main_two = 2;
+    public static $rule_name = [
+        self::is_main_one => '是',
+        self::is_main_two => '否',
+    ];
+}

+ 14 - 0
app/Model/ReminderRecord.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Model;
+
+class ReminderRecord extends UseScopeBaseModel
+{
+    protected $table = "reminder_record"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const employee_column = "crt_id";
+
+    public static $field = ['reminder_id','id','tl_type','tl_result','tl_ways','crt_time'];
+}

+ 11 - 0
app/Model/ReminderRecordDetails.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Model;
+
+class ReminderRecordDetails extends UseScopeBaseModel
+{
+    protected $table = "reminder_record_details"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+}

+ 32 - 4
app/Service/CustomerSupplyService.php

@@ -254,22 +254,50 @@ class CustomerSupplyService extends Service
         if(empty($data['data'])) return $data;
 
         $emp = (new EmployeeService())->getEmployeeMap(array_unique(array_column($data['data'],'id')));
+        $emp_2 = $this->getEmployeeMap(array_column($data['data'],'id'),'detail');
         foreach ($data['data'] as $key => $value){
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
             $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
             $data['data'][$key]['type_title'] = CustomerSupply::$type_name[$value['type']] ?? '';
             $data['data'][$key]['status_title'] = CustomerSupply::$status_name[$data['status']] ?? '';
+            $e = $emp_2[$value['id']] ?? [];
+            $data['data'][$key]['organization_title'] = $e['organization_title'] ?? "";
         }
 
         return $data;
     }
 
-    public function getEmployeeMap($employee_ids){
+    public function getEmployeeMap($employee_ids, $type = ""){
         if(empty($employee_ids)) return [];
         if(! is_array($employee_ids)) $employee_ids = [$employee_ids];
 
-        return CustomerSupply::whereIn('id', $employee_ids)
-            ->pluck('title', 'id')
-            ->toArray();
+        $result = CustomerSupply::whereIn('id', $employee_ids)
+            ->select('title', 'id', 'code')
+            ->get()->toArray();
+        if(! $type) return array_column($result,'title','id');
+
+        $details = CustomerSupplyDetails::from('customer_supply_details as b')
+            ->leftJoin('organization as b','b.id','a.organization_id')
+            ->where('a.del_time',0)
+            ->whereIn('a.customer_supply_id',$employee_ids)
+            ->select('a.organization_id','a.title','a.customer_supply_id')
+            ->get()->toArray();
+        $details_map = [];
+        foreach ($details as $value){
+            $details_map[$value['customer_supply_id']][] = [
+                'organization_id' => $value['organization_id'],
+                'organization_title' => $value['organization_title'],
+            ];
+        }
+        foreach ($result as $key => $value){
+            $organization = $details_map[$value['id']] ?? [];
+            $string = "";
+            if(! empty($organization)){
+                $string = implode(',',array_column($organization,'organization_title'));
+            }
+            $result[$key]['organization_title'] = $string;
+        }
+
+        return array_column($result,null,'id');
     }
 }

+ 6 - 7
app/Service/DimensionService.php

@@ -20,7 +20,7 @@ class DimensionService extends Service
             $model->code = $data['code'] ?? '';
 //            $model->type = $data['type'] ?? 0;
             $model->is_use = $data['is_use'] ?? 0;
-            $model->sort = $data['sort'] ?? 0;
+            $model->score = $data['score'] ?? 0;
             $model->save();
 
             DB::commit();
@@ -44,7 +44,7 @@ class DimensionService extends Service
             $model->code = $data['code'] ?? '';
             $model->type = $data['type'] ?? 0;
             $model->is_use = $data['is_use'] ?? 0;
-            $model->sort = $data['sort'] ?? 0;
+            $model->score = $data['score'] ?? 0;
             $model->crt_id = $user['id'];
             $model->save();
 
@@ -96,7 +96,7 @@ class DimensionService extends Service
 
         $model = Dimension::where('del_time',0)
             ->select($field)
-            ->orderby('sort', 'desc');
+            ->orderby('id', 'desc');
 
         if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
         if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
@@ -124,10 +124,9 @@ class DimensionService extends Service
         if(empty($data['code'])) return [false, '维度编码不能为空'];
         if(empty($data['type'])) return [false, '类型不能为空'];
         if(! isset(Dimension::$type_name[$data['type']])) return [false, '类型不能不存在'];
-        if(isset($data['sort'])){
-            $res = $this->checkNumber($data['sort'],0);
-            if(! $res['valid']) return [false,'排序:' . $res['error']];
-        }
+        if(! isset($data['score'])) return [false, '分数不存在'];
+        $res = $this->checkNumber($data['score']);
+        if(! $res['valid']) return [false,'分数:' . $res['error']];
 
         if($is_add){
             $bool = Dimension::where('code',$data['code'])

+ 304 - 1
app/Service/OrderService.php

@@ -5,6 +5,8 @@ namespace App\Service;
 use App\Model\Employee;
 use App\Model\Order;
 use App\Model\OrderDetails;
+use App\Model\Reminder;
+use App\Model\ReminderDetails;
 use Illuminate\Support\Facades\DB;
 
 class OrderService extends Service
@@ -190,6 +192,8 @@ class OrderService extends Service
 
     public function orderRule(&$data, $user, $is_add = true){
         if(empty($data['order_number'])) return [false, '订单号不能为空'];
+        if(empty($data['order_time'])) return [false, '订单日期不能为空'];
+        $data['order_time'] = $this->changeDateToDate($data['order_time']);
         if(empty($data['details'])) return [false, '物料不能为空'];
         $total = 0;
         foreach ($data['details'] as $value){
@@ -202,7 +206,6 @@ class OrderService extends Service
         $data['quantity'] = $total;
         list($status, $msg) = $this->checkArrayRepeat($data['details'],'code','物料编码');
         if(! $status) return [false, $msg];
-        if(! empty($data['order_time'])) $data['order_time'] = $this->changeDateToDate($data['order_time']);
 
         if($is_add){
             $bool = Order::where('order_number',$data['order_number'])
@@ -237,4 +240,304 @@ class OrderService extends Service
 
         return $data;
     }
+
+    //催单管理---------------------------------------------
+
+    public function reminderEdit($data,$user){
+        list($status,$msg) = $this->reminderRule($data, $user, false);
+        if(!$status) return [$status,$msg];
+
+        try {
+            DB::beginTransaction();
+
+            $model = Reminder::where('id',$data['id'])->first();
+            $model->order_id = $data['order_id'] ?? 0;
+            $model->order_no = $data['order_no'] ?? '';
+            $model->product_code = $data['product_code'] ?? '';
+            $model->product_size = $data['product_size'] ?? '';
+            $model->product_unit = $data['product_unit'] ?? '';
+            $model->product_title = $data['product_title'] ?? '';
+            $model->quantity = $data['quantity'] ?? 0;
+            $model->order_time = $data['order_time'] ?? 0;
+            $model->lt_arrived_time = $data['lt_arrived_time'] ?? 0;
+            $model->tl_arrived_time = $data['tl_arrived_time'] ?? 0;
+            $model->tl_quantity = $data['tl_quantity'] ?? 0;
+            $model->df_type = $data['df_type'] ?? 0;
+            $model->save();
+
+            $time = time();
+            ReminderDetails::where('del_time',0)
+                ->where('reminder_id', $model->id)
+                ->update(['del_time' => $time]);
+            $this->saveDetail1($model->id, $time, $data);
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function reminderAdd($data,$user){
+        list($status,$msg) = $this->reminderRule($data, $user);
+        if(!$status) return [$status,$msg];
+
+        try {
+            DB::beginTransaction();
+
+            $model = new Reminder();
+            $model->order_number = $this->createOrderNumber();
+            $model->order_id = $data['order_id'] ?? 0;
+            $model->order_no = $data['order_no'] ?? '';
+            $model->product_code = $data['product_code'] ?? '';
+            $model->product_size = $data['product_size'] ?? '';
+            $model->product_unit = $data['product_unit'] ?? '';
+            $model->product_title = $data['product_title'] ?? '';
+            $model->quantity = $data['quantity'] ?? 0;
+            $model->order_time = $data['order_time'] ?? 0;
+            $model->lt_arrived_time = $data['lt_arrived_time'] ?? 0;
+            $model->tl_arrived_time = $data['tl_arrived_time'] ?? 0;
+            $model->tl_quantity = $data['tl_quantity'] ?? 0;
+            $model->df_type = $data['df_type'] ?? 0;
+            $model->crt_id = $user['id'];
+            $model->save();
+
+            $this->saveDetail1($model->id, time(), $data);
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    private function saveDetail1($id, $time, $data){
+        if(! empty($data['details'])){
+            $unit = [];
+            foreach ($data['details'] as $value){
+                $unit[] = [
+                    'reminder_id' => $id,
+                    'customer_supply_id' => $value['customer_supply_id'],
+                    'is_main' => $value['is_main'],
+                    'quantity' => $value['quantity'],
+                    'crt_time' => $time,
+                ];
+            }
+            if(! empty($unit)) ReminderDetails::insert($unit);
+        }
+    }
+
+    private function getDetail1($id){
+        $data = ReminderDetails::from('reminder_details as a')
+            ->leftJoin('customer_supply as b','b.id','a.customer_supply_id')
+            ->where('a.del_time',0)
+            ->where('a.reminder_id', $id)
+            ->select('a.customer_supply_id','a.is_main','b.title')
+            ->get()->toArray();
+
+        $unit = [];
+        foreach ($data as $value){
+            $unit[] = [
+                'customer_supply_id' => $value['customer_supply_id'],
+                'is_main' => $value['is_main'],
+            ];
+        }
+
+        $detail = [
+            'details' => $unit,
+        ];
+
+        foreach ($detail as $key => $value) {
+            if (empty($value)) {
+                $detail[$key] = (object)[]; // 转成 stdClass 对象
+            }
+        }
+
+        return $detail;
+    }
+
+    public function reminderDel($data){
+        if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
+
+        $bool = Reminder::where('del_time',0)
+            ->whereIn('id',$data['id'])
+            ->where('status','>',Reminder::status_zero)
+            ->exists();
+        if($bool) return [false, '催单状态已变更,删除失败'];
+        try {
+            DB::beginTransaction();
+            $time = time();
+
+            Reminder::where('del_time',0)
+                ->whereIn('id',$data['id'])
+                ->update(['del_time' => $time]);
+
+            ReminderDetails::where('del_time',0)
+                ->where('reminder_id', $data['id'])
+                ->update(['del_time' => $time]);
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function reminderDetail($data, $user){
+        if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
+        $customer = Reminder::where('del_time',0)
+            ->where('id',$data['id'])
+            ->first();
+        if(empty($customer)) return [false,'催单不存在或已被删除'];
+        $customer = $customer->toArray();
+        $customer['crt_name'] = Employee::where('id',$customer['crt_id'])->value('emp_name');
+        $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
+        $customer['order_time'] = $customer['order_time'] ? date("Y-m-d",$customer['order_time']): '';
+        $customer['lt_arrived_time'] = $customer['lt_arrived_time'] ? date("Y-m-d",$customer['lt_arrived_time']): '';
+        $customer['tl_arrived_time'] = $customer['tl_arrived_time'] ? date("Y-m-d",$customer['tl_arrived_time']): '';
+        $customer['df_type_title'] = Reminder::$df_type_name[$customer['df_type']] ?? "";
+        $customer['rule_title'] = Reminder::$rule_name[$customer['rule']] ?? "";
+        $customer['status_title'] = Reminder::$status_name[$customer['status']] ?? "";
+
+        $details = $this->getDetail1($data['id']);
+        $customer = array_merge($customer, $details);
+
+        return [true, $customer];
+    }
+
+    public function reminderCommon($data,$user, $field = []){
+        if(empty($field)) $field = Order::$field;
+
+        $model = Reminder::Clear($user,$data);
+        $model = $model->where('del_time',0)
+            ->select($field)
+            ->orderby('id', 'desc');
+
+        if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%');
+        if(! empty($data['order_no'])) $model->where('order_no', 'LIKE', '%'.$data['order_no'].'%');
+        if(! empty($data['product_title'])) $model->where('product_title', 'LIKE', '%'.$data['product_title'].'%');
+        if(! empty($data['product_code'])) $model->where('product_code', 'LIKE', '%'.$data['product_code'].'%');
+        if(! empty($data['id'])) $model->whereIn('id', $data['id']);
+        if(isset($data['status'])) $model->where('status', $data['status']);
+        if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
+            $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
+            $model->where('crt_time','>=',$return[0]);
+            $model->where('crt_time','<=',$return[1]);
+        }
+        if(! empty($data['order_time'][0]) && ! empty($data['order_time'][1])) {
+            $return = $this->changeDateToTimeStampAboutRange($data['order_time']);
+            $model->where('order_time','>=',$return[0]);
+            $model->where('order_time','<=',$return[1]);
+        }
+
+        return $model;
+    }
+
+    public function reminderList($data,$user){
+        $model = $this->reminderCommon($data, $user);
+        $list = $this->limit($model,'',$data);
+        $list = $this->fillReminderData($list,$user,$data);
+
+        $list['count'] = $this->countTotal($list['data'], $user['header_default']);
+
+        return [true, $list];
+    }
+
+    public function reminderRule(&$data, $user, $is_add = true){
+        if(empty($data['order_id'])) return [false, '订单ID不能为空'];
+        if(empty($data['order_no'])) return [false, '订单号不能为空'];
+        if(empty($data['order_time'])) return [false, '订单日期不能为空'];
+        $data['order_time'] = strtotime($data['order_time']);
+        if(empty($data['product_code'])) return [false, '物料编码不能为空'];
+        if(empty($data['product_title'])) return [false, '物料名称不能为空'];
+        if(empty($data['quantity'])) return [false, '物料数量不能为空'];
+        if(empty($data['lt_arrived_time'])) return [false, 'LT要求到货日期不能为空'];
+        $data['lt_arrived_time'] = $this->changeDateToDate($data['lt_arrived_time']);
+        if(empty($data['tl_arrived_time'])) return [false, '提拉到货日期不能为空'];
+        $data['tl_arrived_time'] = $this->changeDateToDate($data['tl_arrived_time']);
+        $res = $this->checkNumber($data['tl_quantity'],2,'positive');
+        if(! $res['valid']) return [false,'提拉到货数量:' . $res['error']];
+        if(empty($data['df_type'])) return [false, '要求答复时间不能为空'];
+        if(! isset(Reminder::$df_type_name[$data['df_type']])) return [false, '要求答复时间错误'];
+        if(empty($data['rule'])) return [false, '主要人员关系规则不能为空'];
+        if(! isset(Reminder::$rule_name[$data['rule']])) return [false, '主要人员关系规则不存在'];
+        if(empty($data['details'])) return [false, '催单提醒人员不能为空'];
+
+        $is_bool = false;
+        $main_ids = [];
+        $sub_ids = [];
+
+        foreach ($data['details'] as $value) {
+            if (empty($value['customer_supply_id'])) return [false, '人员id不能为空'];
+            if (empty($value['is_main'])) return [false, 'is_main不能为空'];
+
+            $customer_id = $value['customer_supply_id'];
+            $is_main_val = $value['is_main'];
+
+            if ($is_main_val == ReminderDetails::is_main_one) {
+                // 检查主要人员重复
+                if (in_array($customer_id, $main_ids)) {
+                    return [false, "主要成员不能重复"];
+                }
+                $main_ids[] = $customer_id;
+                $is_bool = true;
+            } elseif ($is_main_val == ReminderDetails::is_main_two) {
+                // 检查次要人员重复
+                if (in_array($customer_id, $sub_ids)) {
+                    return [false, "次要成员不能重复"];
+                }
+                $sub_ids[] = $customer_id;
+            } 
+        }
+
+        // 检查主要成员至少一个
+        if (!$is_bool) return [false, '主要成员必须选择'];
+
+        // 检查主要与次要是否有重复
+        $intersect = array_intersect($main_ids, $sub_ids);
+        if (!empty($intersect)) return [false, "主要成员与次要成员不能重复"];
+
+        if($is_add){
+
+        }else{
+            if(empty($data['id'])) return [false,'ID不能为空'];
+            $order = Order::where('id',$data['id'])
+                ->where('del_time',0)
+                ->fist();
+            if(empty($order)) return [false, '催单不存在或已被删除'];
+            $order = $order->toArray();
+            if($order['status'] > Reminder::status_zero) return [false, '催单状态已变更,编辑失败'];
+        }
+
+        return [true, $data];
+    }
+
+    public function fillReminderData($data, $user, $search){
+        if(empty($data['data'])) return $data;
+
+        $emp = (new EmployeeService())->getEmployeeMap(array_unique(array_column($data['data'],'id')));
+        foreach ($data['data'] as $key => $value){
+            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
+            $data['data'][$key]['order_time'] = $value['order_time'] ? date('Y-m-d',$value['order_time']) : '';
+            $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
+
+            $data['data'][$key]['lt_arrived_time'] = $value['lt_arrived_time'] ? date("Y-m-d",$value['lt_arrived_time']): '';
+            $data['data'][$key]['tl_arrived_time'] = $value['tl_arrived_time'] ? date("Y-m-d",$value['tl_arrived_time']): '';
+            $data['data'][$key]['df_type_title'] = Reminder::$df_type_name[$value['df_type']] ?? "";
+            $data['data'][$key]['rule_title'] = Reminder::$rule_name[$value['rule']] ?? "";
+            $data['data'][$key]['status_title'] = Reminder::$status_name[$value['status']] ?? "";
+        }
+
+        return $data;
+    }
+
+    public function createOrderNumber(){
+        return date('YmdHis',time()) . rand(1000,9999);
+    }
 }

+ 460 - 36
app/Service/QuantizationService.php

@@ -2,14 +2,18 @@
 
 namespace App\Service;
 
+use App\Model\CustomerSupply;
 use App\Model\Dimension;
 use App\Model\Employee;
 use App\Model\Quantization;
+use App\Model\QuantizationCreate;
+use App\Model\QuantizationCreateDetails;
 use App\Model\QuantizationDetails;
 use Illuminate\Support\Facades\DB;
 
 class QuantizationService extends Service
 {
+    //量化档案-----------------------------------------------
     public function quantizationEdit($data,$user){
         list($status,$msg) = $this->quantizationRule($data, $user, false);
         if(!$status) return [$status,$msg];
@@ -28,17 +32,7 @@ class QuantizationService extends Service
                 ->where('quantization_id', $data['id'])
                 ->update(['del_time' => $time]);
 
-            $details = [];
-            foreach ($data['details'] as $value){
-                $details[] = [
-                    'quantization_id' => $data['id'],
-                    'title' => $value['title'],
-                    'dimension_id' => $value['dimension_id'],
-                    'rate' => $value['rate'],
-                    'crt_time' => $time,
-                ];
-            }
-            if(! empty($details)) QuantizationDetails::insert($details);
+            $this->saveDetail($model->id, $time, $data);
 
             DB::commit();
         }catch (\Exception $exception){
@@ -60,21 +54,12 @@ class QuantizationService extends Service
             $model->title = $data['title'] ?? '';
             $model->code = $data['code'] ?? '';
             $model->is_use = $data['is_use'] ?? 0;
+            $model->type = $data['type'] ?? 0;
             $model->crt_id = $user['id'];
             $model->save();
 
-            $details = [];
             $time = time();
-            foreach ($data['details'] as $value){
-                $details[] = [
-                    'quantization_id' => $model->id,
-                    'title' => $value['title'],
-                    'dimension_id' => $value['dimension_id'],
-                    'rate' => $value['rate'],
-                    'crt_time' => $time,
-                ];
-            }
-            if(! empty($details)) QuantizationDetails::insert($details);
+            $this->saveDetail($model->id, $time, $data);
 
             DB::commit();
         }catch (\Exception $exception){
@@ -85,6 +70,61 @@ class QuantizationService extends Service
         return [true, ''];
     }
 
+    private function saveDetail($id, $time, $data){
+        foreach ($data['details'] as $value) {
+            // 插入父级
+            $parent = QuantizationDetails::create([
+                'quantization_id' => $id,
+                'title'           => $value['title'],
+                'rate'            => $value['rate'],
+                'parent_id'       => 0, // 顶层 parent_id = 0
+                'crt_time'        => $time,
+            ]);
+
+            // 再处理子级
+            if (! empty($value['details_son'])) {
+                foreach ($value['details_son'] as $son) {
+                    $detailsSonData[] = [
+                        'quantization_id' => $id,
+                        'title'           => $son['title'],
+                        'parent_id'       => $parent->id, // 子级关联父级 id
+                        'crt_time'        => $time,
+                    ];
+                }
+            }
+        }
+
+        // 批量插入子级
+        if (!empty($detailsSonData)) QuantizationDetails::insert($detailsSonData);
+    }
+
+    private function getDetail($id){
+        // 查所有数据
+        $all = QuantizationDetails::where('quantization_id', $id)
+            ->where('del_time', 0)
+            ->orderBy('id','asc')
+            ->get()
+            ->toArray();
+
+        // 按 parent_id 分组
+        $grouped = [];
+        foreach ($all as $item) {
+            $grouped[$item['parent_id']][] = $item;
+        }
+
+        $result = [];
+
+        // 只取 parent_id = 0 的父级
+        if (!empty($grouped[0])) {
+            foreach ($grouped[0] as $parent) {
+                $parent['details_son'] = $grouped[$parent['id']] ?? (object)[];
+                $result[] = $parent;
+            }
+        }
+
+        return $result;
+    }
+
     public function quantizationDel($data){
         if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
 
@@ -117,15 +157,7 @@ class QuantizationService extends Service
         if(empty($customer)) return [false,'量化档案不存在或已被删除'];
         $customer = $customer->toArray();
 
-        $details = QuantizationDetails::from('quantization_details as a')
-            ->leftJoin('dimension as b','b.id','a.dimension_id')
-            ->where('a.del_time',0)
-            ->where('a.quantization_id', $data['id'])
-            ->select('a.title','a.dimension_id','a.rate','b.title','b.type')
-            ->get()->toArray();
-        foreach ($details as $key => $value){
-            $details[$key]['type_title'] = Dimension::$type_name[$value['type']] ?? '';
-        }
+        $details = $this->getDetail($customer['id']);
         $customer['details'] = $details;
         $customer['crt_name'] = Employee::where('id',$customer['crt_id'])->value('emp_name');
         $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
@@ -142,6 +174,7 @@ class QuantizationService extends Service
 
         if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
         if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
+        if(! empty($data['type'])) $model->where('type', $data['type']);
         if(! empty($data['id'])) $model->whereIn('id', $data['id']);
         if(isset($data['is_use'])) $model->where('is_use', $data['is_use']);
         if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
@@ -162,14 +195,48 @@ class QuantizationService extends Service
     }
 
     public function quantizationRule(&$data, $user, $is_add = true){
+        if(empty($data['type'])) return [false, '量化档案类型类型不能为空'];
+        if(! isset(Quantization::$type_name[$data['type']])) return [false, '量化档案类型错误'];
         if(empty($data['title'])) return [false, '名称不能为空'];
         if(empty($data['code'])) return [false, '编码不能为空'];
-        if(empty($data['details'])) return [false, '维度明细不能为空'];
-        foreach ($data['details'] as $value){
-            if(empty($value['title'])) return [false, '维度名称不能为空'];
-            if(empty($value['dimension_id'])) return [false, '选项不能为空'];
-            if(empty($value['rate'])) return [false, '占比不能为空'];
+        if(empty($data['details'])) return [false, '评价明细不能为空'];
+        foreach ($data['details'] as $key => $value) {
+            $rowNum = $key + 1;
+
+            // 校验外层 title 不能为空
+            if (empty($value['title'])) {
+                return [false, "第{$rowNum}行的评价名称不能为空"];
+            }
+
+            // 校验外层 title 不重复
+            if (!isset($titleSet)) $titleSet = [];
+            if (in_array($value['title'], $titleSet)) {
+                return [false, "第{$rowNum}行的评价名称 [{$value['title']}] 重复"];
+            }
+            $titleSet[] = $value['title'];
+
+            // 校验占比
+            if (empty($value['rate']) || ! is_numeric($value['rate']) || floatval($value['rate']) <= 0.0) {
+                return [false, "第{$rowNum}行的占比填写错误"];
+            }
+
+            // 明细不能为空
+            if (! empty($value['details_son'])) {
+                // 校验明细中 title 不重复
+                $sonTitleSet = [];
+                foreach ($value['details_son'] as $sonKey => $val) {
+                    $sonRowNum = $sonKey + 1;
+                    if (empty($val['title'])) {
+                        return [false, "第{$rowNum}行下的第{$sonRowNum}个明细名称不能为空"];
+                    }
+                    if (in_array($val['title'], $sonTitleSet)) {
+                        return [false, "第{$rowNum}行下的明细名称 [{$val['title']}] 重复"];
+                    }
+                    $sonTitleSet[] = $val['title'];
+                }
+            }
         }
+
         $rate_total = floatval(array_sum(array_column($data['details'],'rate')));
         if($rate_total != 100.0) return [false, '占比之和必须等于100'];
 
@@ -197,8 +264,365 @@ class QuantizationService extends Service
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
             $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
             $data['data'][$key]['is_use_title'] = Quantization::$is_use_name[$value['is_use']] ?? '';
+            $data['data'][$key]['type_title'] = Quantization::$type_name[$value['type']] ?? '';
+        }
+
+        return $data;
+    }
+    //量化档案-----------------------------------------------
+
+
+    //量化创建-----------------------------------------------
+    public function quantizationCreateEdit($data,$user){
+        list($status,$msg) = $this->quantizationCreateRule($data, $user, false);
+        if(!$status) return [$status,$msg];
+
+        try {
+            DB::beginTransaction();
+
+            $model = QuantizationCreate::where('id',$data['id'])->first();
+            $model->customer_supply_id = $data['customer_supply_id'];
+            $model->start_time = $data['start_time'] ?? 0;
+            $model->end_time = $data['end_time'] ?? 0;
+            $model->products = $data['products'] ?? '';
+            $model->score = $data['score'] ?? 0;
+            $model->save();
+
+            $time = time();
+            QuantizationCreateDetails::where('del_time',0)
+                ->where('quantization_create_id', $data['id'])
+                ->update(['del_time' => $time]);
+
+            $this->saveDetail1($model->id, $time, $data);
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function quantizationCreateAdd($data,$user){
+        list($status,$msg) = $this->quantizationCreateRule($data, $user);
+        if(!$status) return [$status,$msg];
+
+        try {
+            DB::beginTransaction();
+
+            $model = new Quantization();
+            $model->customer_supply_id = $data['customer_supply_id'];
+            $model->start_time = $data['start_time'] ?? 0;
+            $model->end_time = $data['end_time'] ?? 0;
+            $model->products = $data['products'] ?? '';
+            $model->score = $data['score'] ?? 0;
+            $model->type = $data['type'] ?? 0;
+            $model->crt_id = $user['id'];
+            $model->save();
+
+            $time = time();
+            $this->saveDetail1($model->id, $time, $data);
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    private function saveDetail1($id, $time, $data){
+        foreach ($data['details'] as $value) {
+            // 插入父级
+            $parent = QuantizationDetails::create([
+                'quantization_create_id' => $id,
+                'title'           => $value['title'],
+                'rate'            => $value['rate'],
+                'parent_id'       => 0, // 顶层 parent_id = 0
+                'crt_time'        => $time,
+                'dimension_id' => $value['dimension_id'] ?? 0,
+                'score' => $value['score'] ?? 0,
+            ]);
+
+            // 再处理子级
+            if (! empty($value['details_son'])) {
+                foreach ($value['details_son'] as $son) {
+                    $detailsSonData[] = [
+                        'quantization_create_id' => $id,
+                        'title'           => $son['title'],
+                        'parent_id'       => $parent->id, // 子级关联父级 id
+                        'crt_time'        => $time,
+                        'dimension_id' => $value['dimension_id'] ?? 0,
+                        'score' => $value['score'] ?? 0,
+                    ];
+                }
+            }
+        }
+
+        // 批量插入子级
+        if (!empty($detailsSonData)) QuantizationCreateDetails::insert($detailsSonData);
+    }
+
+    private function getDetail1($id){
+        // 查所有数据
+        $all = QuantizationCreateDetails::where('quantization_create_id', $id)
+            ->where('del_time', 0)
+            ->orderBy('id','asc')
+            ->get()
+            ->toArray();
+
+        $map = Dimension::whereIn('id',array_unique(array_filter(array_column($all,'dimension_id'))))
+            ->pluck('title','id')
+            ->toArray();
+
+        // 按 parent_id 分组
+        $grouped = [];
+        foreach ($all as $item) {
+            $item['dimension_title'] = $map[$item['dimension_id']] ?? "";
+            $grouped[$item['parent_id']][] = $item;
+        }
+
+        $result = [];
+
+        // 只取 parent_id = 0 的父级
+        if (!empty($grouped[0])) {
+            foreach ($grouped[0] as $parent) {
+                $parent['details_son'] = $grouped[$parent['id']] ?? (object)[];
+                $result[] = $parent;
+            }
+        }
+
+        return $result;
+    }
+
+    public function quantizationCreateDel($data){
+        if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
+
+        try {
+            DB::beginTransaction();
+            $time = time();
+
+            QuantizationCreate::where('del_time',0)
+                ->whereIn('id',$data['id'])
+                ->update(['del_time' => $time]);
+
+            QuantizationCreateDetails::where('del_time',0)
+                ->whereIn('quantization_create_id', $data['id'])
+                ->update(['del_time' => $time]);
+
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return [false,$exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function quantizationCreateDetail($data,$user){
+        if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
+        $customer = QuantizationCreate::where('del_time',0)
+            ->where('id',$data['id'])
+            ->first();
+        if(empty($customer)) return [false,'量化信息不存在或已被删除'];
+        $customer = $customer->toArray();
+
+        $emp_2 = (new CustomerSupplyService())->getEmployeeMap([$customer['customer_supply_id']],'detail');
+        $e = $emp_2[$customer['customer_supply_id']] ?? [];
+        $customer['organization_title'] = $e['organization_title'] ?? "";
+        $customer['customer_supply_title'] = $e['title'] ?? "";
+        $customer['customer_supply_code'] = $e['code'] ?? "";
+
+        $details = $this->getDetail1($customer['id']);
+        $customer['details'] = $details;
+        $customer['crt_name'] = Employee::where('id',$customer['crt_id'])->value('emp_name');
+        $customer['crt_time'] = $customer['crt_time'] ? date("Y-m-d H:i:s",$customer['crt_time']): '';
+
+        return [true, $customer];
+    }
+
+    public function quantizationCreateCommon($data,$user, $field = []){
+        if(empty($data['type']) || ! isset(QuantizationCreate::$type_name[$data['type']])) return [false, '类型不存在或错误'];
+        if(empty($field)) $field = QuantizationCreate::$field;
+
+        $model = QuantizationCreate::Clear($user,$data);
+        $model->where('del_time',0)
+            ->select($field)
+            ->orderby('id', 'desc');
+
+        if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
+        if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
+        if(! empty($data['type'])) $model->where('type', $data['type']);
+        if(! empty($data['id'])) $model->whereIn('id', $data['id']);
+        if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
+            $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
+            $model->where('crt_time','>=',$return[0]);
+            $model->where('crt_time','<=',$return[1]);
+        }
+        if(! empty($data['zq'][0]) && ! empty($data['zq'][1])) {
+            $return = $this->changeDateToTimeStampAboutRange($data['zq']);
+            $model->where('start_time','>=',$return[0]);
+            $model->where('end_time','<=',$return[1]);
+        }
+
+        return $model;
+    }
+
+    public function quantizationCreateList($data,$user){
+        $model = $this->quantizationCreateCommon($data, $user);
+        $list = $this->limit($model,'',$data);
+        $list = $this->fillCreateData($list,$user);
+
+        return [true, $list];
+    }
+
+    public function quantizationCreateRule(&$data, $user, $is_add = true){
+        if(empty($data['type'])) return [false, '量化档案类型类型不能为空'];
+        if(empty($data['quantization_id'])) return [false, '量化档案ID不能为空'];
+        $q = Quantization::where('del_time',0)
+            ->where('id', $data['quantization_id'])
+            ->first();
+        if(empty($q)) return [false, '引用的档案不存在或已被删除'];
+        $q = $q->toArray();
+        if(! isset(QuantizationCreate::$type_name[$data['type']])) return [false, '量化档案类型错误'];
+        if($q['type'] != $data['type']) return [false, '引用档案类型与量化档案类型不一致'];
+        if($data['type'] == QuantizationCreate::type_two){
+            if(empty($data['start_time']) || empty($data['end_time'])) return [false, '周期不能为空'];
+            $data['start_time'] = $this->changeDateToDate($data['start_time']);
+            $data['end_time'] = $this->changeDateToDate($data['end_time']);
+        }
+        if(empty($data['customer_supply_id'])) return [false, '人员id不能为空'];
+        $bool = CustomerSupply::where('del_time',0)
+            ->where('id',$data['customer_supply_id'])
+            ->exists();
+        if(! $bool) return [false, '人员不存在或已被删除'];
+        if(! isset($data['score'])) return [false, '分数不存在'];
+        $res = $this->checkNumber($data['score']);
+        if(! $res['valid']) return [false,'分数:' . $res['error']];
+
+        if(empty($data['details'])) return [false, '量化详情不能为空'];
+        foreach ($data['details'] as $key => $value) {
+            $rowNum = $key + 1;
+
+            // 校验外层 title 不能为空
+            if (empty($value['title'])) return [false, "第{$rowNum}行的评价名称不能为空"];
+
+            // 校验占比
+            if (empty($value['rate']) || ! is_numeric($value['rate']) || floatval($value['rate']) <= 0.0) {
+                return [false, "第{$rowNum}行的占比错误"];
+            }
+
+            // 明细不能为空
+            if (! empty($value['details_son'])) {
+                foreach ($value['details_son'] as $sonKey => $val) {
+                    $sonRowNum = $sonKey + 1;
+                    if (empty($val['title'])) return [false, "第{$rowNum}行下的第{$sonRowNum}个明细名称不能为空"];
+                    if (empty($val['dimension_id'])) return [false, "第{$rowNum}行下的第{$sonRowNum}个明细的维度选项不能为空"];
+                }
+            }else{
+                if(empty($value['dimension_id'])) return [false, "第{$rowNum}行的维度选项不能为空"];
+            }
+        }
+
+        $startTime = $data['start_time'];
+        $endTime   = $data['end_time'];
+
+        if ($is_add) {
+
+            if ($data['type'] == QuantizationCreate::type_one) {
+                // 能力量化:只允许唯一一份
+                $bool = QuantizationCreate::where('customer_supply_id', $data['customer_supply_id'])
+                    ->where('type', QuantizationCreate::type_one)
+                    ->where('del_time', 0)
+                    ->exists();
+
+                if ($bool) {
+                    return [false, '该人员已创建能力量化档案,请勿重复创建'];
+                }
+
+            } else {
+                // 合作量化:检查时间区间重叠
+                $bool = QuantizationCreate::where('customer_supply_id', $data['customer_supply_id'])
+                    ->where('type', QuantizationCreate::type_two) // 建议限定 type,防止误匹配
+                    ->where('del_time', 0)
+                    ->where(function($query) use ($startTime, $endTime) {
+                        $query->where('start', '<=', $endTime)
+                            ->where('end', '>=', $startTime);
+                    })
+                    ->exists();
+
+                if ($bool) {
+                    return [false, '该人员在该周期内已创建合作量化档案,请勿重复创建'];
+                }
+            }
+
+        } else {
+            // 编辑模式
+            if (empty($data['id'])) return [false, 'ID不能为空'];
+            $id = $data['id'];
+
+            if ($data['type'] == QuantizationCreate::type_one) {
+                $bool = QuantizationCreate::where('customer_supply_id', $data['customer_supply_id'])
+                    ->where('type', QuantizationCreate::type_one)
+                    ->where('id', '<>', $id)
+                    ->where('del_time', 0)
+                    ->exists();
+                if ($bool) return [false, '该人员已创建能力量化档案,请勿重复创建'];
+            } else {
+                $bool = QuantizationCreate::where('customer_supply_id', $data['customer_supply_id'])
+                    ->where('type', QuantizationCreate::type_two)
+                    ->where('del_time', 0)
+                    ->where(function($query) use ($startTime, $endTime) {
+                        $query->where('start', '<=', $endTime)
+                            ->where('end', '>=', $startTime);
+                    })
+                    ->where('id', '<>', $id)
+                    ->exists();
+
+                if ($bool) return [false, '该人员在该周期内已创建合作量化档案,请勿重复创建'];
+            }
+        }
+
+        return [true, $data];
+    }
+
+    public function fillCreateData($data, $user){
+        if(empty($data['data'])) return $data;
+
+        $emp = (new EmployeeService())->getEmployeeMap(array_unique(array_column($data['data'],'id')));
+        $emp_2 = (new CustomerSupplyService())->getEmployeeMap(array_unique(array_column($data['data'],'customer_supply_id')),'detail');
+        foreach ($data['data'] as $key => $value){
+            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
+            $data['data'][$key]['start_time'] = $value['start_time'] ? date('Y-m-d',$value['start_time']) : '';
+            $data['data'][$key]['end_time'] = $value['end_time'] ? date('Y-m-d',$value['end_time']) : '';
+            $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
+            $data['data'][$key]['type_title'] = QuantizationCreate::$type_name[$value['type']] ?? '';
+            $e = $emp_2[$value['id']] ?? [];
+            $data['data'][$key]['organization_title'] = $e['organization_title'] ?? "";
+            $data['data'][$key]['customer_supply_title'] = $e['title'] ?? "";
+            $data['data'][$key]['customer_supply_code'] = $e['code'] ?? "";
+            $data['data'][$key]['result'] = $this->fillDataResult($value);
         }
 
         return $data;
     }
+
+    private function fillDataResult($value)
+    {
+        $score = isset($value['score']) ? floatval($value['score']) : 0;
+        $type  = $value['type'] ?? null;
+
+        if ($type == QuantizationCreate::type_one) {
+            if ($score < 50) return '不合格';
+            if ($score < 70) return '改善后评估';
+            return '合格';
+        }
+
+        // 其他类型
+        return $score < 60 ? '不合格' : '合格';
+    }
+
+    //量化创建-----------------------------------------------
 }

+ 4 - 0
config/header/66.php

@@ -22,6 +22,10 @@ return [
         'key' =>'type_title',
         'value' => '类型',
     ],
+    [
+        'key' =>'organization_title',
+        'value' => '组织',
+    ],
     [
         'key' =>'status_title',
         'value' => '合作状态',

+ 16 - 94
config/header/69.php

@@ -7,113 +7,35 @@
 
 return [
     [
-        'key' =>'order_number',
-        'value' => '销货单号',
+        'key' =>'customer_supply_code',
+        'value' => '人员编码',
     ],
     [
-        'key' =>'order_time',
-        'value' => '单据日期',
+        'key' =>'customer_supply_title',
+        'value' => '人员名称',
     ],
     [
-        'key' =>'employee_id_1_title',
-        'value' => '业务员',
+        'key' =>'organization_title',
+        'value' => '组织名称',
     ],
     [
-        'key' =>'employee_id_2_title',
-        'value' => '上级管理人员',
+        'key' =>'products',
+        'value' => '拟合作产品',
     ],
     [
-        'key' =>'customer_code',
-        'value' => '结算客户编码',
+        'key' =>'score',
+        'value' => '得分',
     ],
     [
-        'key' =>'customer_title',
-        'value' => '结算客户',
+        'key' =>'result',
+        'value' => '结',
     ],
     [
-        'key' =>'channel_finance',
-        'value' => '渠道财务',
+        'key' =>'crt_name',
+        'value' => '创建人',
     ],
     [
-        'key' =>'channel_details',
-        'value' => '渠道明细',
-    ],
-    [
-        'key' =>'product_code',
-        'value' => '存货编码',
-    ],
-    [
-        'key' =>'product_title',
-        'value' => '存货名称',
-    ],
-    [
-        'key' =>'product_size',
-        'value' => '规格型号',
-    ],
-    [
-        'key' =>'unit',
-        'value' => '单位',
-    ],
-    [
-        'key' =>'price_1',
-        'value' => '核销单价',
-        'value1' => '存货档案中的核销单价',
-    ],
-    [
-        'key' =>'price_1_total',
-        'value' => '核销总价',
-        'value1' => '核销单价 * 销货数量',
-        'sum' => 1,
-    ],
-    [
-        'key' =>'price_2',
-        'value' => '运费单价',
-        'value1' => '存货档案中的运费单价',
-    ],
-    [
-        'key' =>'price_2_total',
-        'value' => '运费总价',
-        'value1' => '运费单价 * 销货数量',
-        'sum' => 1,
-    ],
-    [
-        'key' =>'quantity',
-        'value' => '销货数量',
-        'sum' => 1,
-    ],
-    [
-        'key' =>'price_3',
-        'value' => '含税单价',
-    ],
-    [
-        'key' =>'price_3_total',
-        'value' => '含税金额',
-        'sum' => 1,
-    ],
-    [
-        'key' =>'price_4',
-        'value' => '业务成本单价',
-        'value1' => '存货档案中的业务成本单价',
-    ],
-    [
-        'key' =>'price_4_total',
-        'value' => '业务成本金额',
-        'value1' => '销货数量 * 业务成本单价',
-        'sum' => 1,
-    ],
-    [
-        'key' =>'profit',
-        'value' => '毛利',
-        'value1' => '销货金额(含税金额) - 业务成本金额',
-        'sum' => 2,
-        'formula' => 'price_3_total - business',
-    ],
-    [
-        'key' =>'profit_rate',
-        'value' => '毛利率%',
-        'value1' => '毛利 / 销货金额(含税金额)',
-        'sum' => 2,
-        'formula' => 'profit / price_3_total * 100',
-        'split_join' => '%',
+        'key' =>'crt_time',
+        'value' => '创建时间',
     ],
 ];

+ 18 - 62
config/header/70.php

@@ -7,83 +7,39 @@
 
 return [
     [
-        'key' =>'order_number',
-        'value' => '销售发票号',
+        'key' =>'customer_supply_code',
+        'value' => '人员编码',
     ],
     [
-        'key' =>'order_time',
-        'value' => '单据日期',
+        'key' =>'customer_supply_title',
+        'value' => '人员名称',
     ],
     [
-        'key' =>'employee_id_1_title',
-        'value' => '业务员',
+        'key' =>'organization_title',
+        'value' => '组织名称',
     ],
     [
-        'key' =>'employee_id_2_title',
-        'value' => '上级管理人员',
+        'key' =>'start_time',
+        'value' => '评估周期起点',
     ],
     [
-        'key' =>'customer_code',
-        'value' => '结算客户编码',
+        'key' =>'end_time',
+        'value' => '评估周期终点',
     ],
     [
-        'key' =>'customer_title',
-        'value' => '结算客户',
+        'key' =>'score',
+        'value' => '得分',
     ],
     [
-        'key' =>'product_code',
-        'value' => '存货编码',
+        'key' =>'result',
+        'value' => '结论',
     ],
     [
-        'key' =>'product_title',
-        'value' => '存货名称',
+        'key' =>'crt_name',
+        'value' => '创建人',
     ],
     [
-        'key' =>'product_size',
-        'value' => '规格型号',
-    ],
-    [
-        'key' =>'unit',
-        'value' => '单位',
-    ],
-    [
-        'key' =>'quantity',
-        'value' => '开票数量',
-        'sum' => 1,
-    ],
-    [
-        'key' =>'price_1',
-        'value' => '单价',
-    ],
-    [
-        'key' =>'price_1_total',
-        'value' => '开票金额',
-        'sum' => 1,
-    ],
-    [
-        'key' =>'price_4',
-        'value' => '业务成本单价',
-        'value1' => '存货档案中的业务成本单价',
-    ],
-    [
-        'key' =>'price_4_total',
-        'value' => '业务成本金额',
-        'value1' => '开票数量 * 业务成本单价',
-        'sum' => 1,
-    ],
-    [
-        'key' =>'profit',
-        'value' => '毛利',
-        'value1' => '开票金额 - 业务成本金额',
-        'sum' => 2,
-        'formula' => 'price_1_total - price_4_total',
-    ],
-    [
-        'key' =>'profit_rate',
-        'value' => '毛利率%',
-        'value1' => '毛利 / 开票金额',
-        'sum' => 2,
-        'formula' => 'profit / price_1_total * 100',
-        'split_join' => '%',
+        'key' =>'crt_time',
+        'value' => '创建时间',
     ],
 ];

+ 2 - 2
config/header/77.php

@@ -19,8 +19,8 @@ return [
         'value' => 'type_title',
     ],
     [
-        'key' =>'sort',
-        'value' => '排序',
+        'key' =>'score',
+        'value' => '分数',
     ],
     [
         'key' =>'is_use_title',

+ 4 - 0
config/header/78.php

@@ -14,6 +14,10 @@ return [
         'key' =>'title',
         'value' => '名称',
     ],
+    [
+        'key' =>'type_title',
+        'value' => '类型',
+    ],
     [
         'key' =>'is_use_title',
         'value' => '是否启用',

+ 15 - 0
routes/api.php

@@ -123,6 +123,21 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('orderDel', 'Api\OrderController@orderDel');
     $route->any('orderDetail', 'Api\OrderController@orderDetail');
 
+    //创建量化
+    $route->any('quantizationCreateCapList', 'Api\QuantizationController@quantizationCreateList');
+    $route->any('quantizationCreateCooList', 'Api\QuantizationController@quantizationCreateList');
+    $route->any('quantizationCreateEdit', 'Api\QuantizationController@quantizationCreateEdit');
+    $route->any('quantizationCreateAdd', 'Api\QuantizationController@quantizationCreateAdd');
+    $route->any('quantizationCreateDel', 'Api\QuantizationController@quantizationCreateDel');
+    $route->any('quantizationCreateDetail', 'Api\QuantizationController@quantizationCreateDetail');
+
+    //催单
+    $route->any('reminderList', 'Api\OrderController@reminderList');
+    $route->any('reminderEdit', 'Api\OrderController@reminderEdit');
+    $route->any('reminderAdd', 'Api\OrderController@reminderAdd');
+    $route->any('reminderDel', 'Api\OrderController@reminderDel');
+    $route->any('reminderDetail', 'Api\OrderController@reminderDetail');
+
     //获取默认表头
     $route->any('getTableHead','Api\TableHeadController@tableHeadGet');
     //设置表头