Browse Source

Merge branch 'master' of ssh://gitlab.frkj.cc:222/php/zhjwxt

master
王泽彦 9 months ago
parent
commit
2d5aca52c7
  1. 17
      admin/src/app/views/customer_resources/customer_resources.vue
  2. 28
      admin/src/app/views/personnel/components/personnel-edit.vue
  3. 1
      niucloud/app/adminapi/controller/customer_resources/CustomerResources.php
  4. 38
      niucloud/app/api/controller/apiController/Course.php
  5. 11
      niucloud/app/api/controller/apiController/CustomerResources.php
  6. 59
      niucloud/app/api/controller/apiController/Statistics.php
  7. 9
      niucloud/app/api/route/route.php
  8. 8
      niucloud/app/common.php
  9. 10
      niucloud/app/service/admin/customer_resources/CustomerResourcesService.php
  10. 96
      niucloud/app/service/api/apiService/CourseService.php
  11. 2
      niucloud/app/service/api/apiService/CustomerResourcesService.php

17
admin/src/app/views/customer_resources/customer_resources.vue

@ -11,14 +11,24 @@
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never"> <el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="customerResourcesTable.searchParam" ref="searchFormRef"> <el-form :inline="true" :model="customerResourcesTable.searchParam" ref="searchFormRef">
<el-form-item label="校区" prop="campus_name">
<el-input v-model="customerResourcesTable.searchParam.campus_name" placeholder="请输入校区" />
</el-form-item>
<el-form-item :label="t('name')" prop="name"> <el-form-item :label="t('name')" prop="name">
<el-input v-model="customerResourcesTable.searchParam.name" <el-input v-model="customerResourcesTable.searchParam.name"
:placeholder="t('namePlaceholder')" /> :placeholder="t('namePlaceholder')" />
</el-form-item> </el-form-item>
<el-form-item label="年龄" prop="age"> <el-form-item label="年龄" prop="age">
<el-input v-model="customerResourcesTable.searchParam.age" placeholder="请输入年龄" /> <el-input v-model="customerResourcesTable.searchParam.age" placeholder="请输入年龄" />
</el-form-item> </el-form-item>
<el-form-item label="性别" prop="gender"> <el-form-item label="性别" prop="gender">
@ -63,6 +73,8 @@
<template #empty> <template #empty>
<span>{{ !customerResourcesTable.loading ? t('emptyData') : '' }}</span> <span>{{ !customerResourcesTable.loading ? t('emptyData') : '' }}</span>
</template> </template>
<el-table-column prop="campus_name" label="校区" min-width="120" :show-overflow-tooltip="true" />
<el-table-column :label="t('source')" min-width="180" align="center" :show-overflow-tooltip="true"> <el-table-column :label="t('source')" min-width="180" align="center" :show-overflow-tooltip="true">
<template #default="{ row }"> <template #default="{ row }">
<div v-for="(item, index) in sourceList"> <div v-for="(item, index) in sourceList">
@ -246,7 +258,8 @@
"member_label": "", "member_label": "",
'type': '', 'type': '',
"created_at": "", "created_at": "",
"updated_at": "" "updated_at": "",
"campus_name" : ""
} }
}) })

28
admin/src/app/views/personnel/components/personnel-edit.vue

@ -193,7 +193,7 @@
</el-row> </el-row>
<el-row :gutter="20"> <!-- <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="学历" prop="info.education"> <el-form-item label="学历" prop="info.education">
<el-input v-model="formData.info.education" placeholder="请填写学历" class="input-width" /> <el-input v-model="formData.info.education" placeholder="请填写学历" class="input-width" />
@ -206,9 +206,15 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row> -->
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="专业" prop="info.major">
<el-input v-model="formData.info.major" placeholder="请填写专业" class="input-width" />
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="毕业时间" prop="info.graduation_date"> <el-form-item label="毕业时间" prop="info.graduation_date">
<el-date-picker <el-date-picker
@ -222,16 +228,15 @@
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="籍贯" prop="info.native_place">
<el-input v-model="formData.info.native_place" placeholder="请填写籍贯" class="input-width" />
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="户籍所在地" prop="info.household_place"> <el-form-item label="户籍所在地" prop="info.household_place">
<el-input v-model="formData.info.household_place" placeholder="请填写户籍所在地" class="input-width" /> <el-input v-model="formData.info.household_place" placeholder="请填写户籍所在地" class="input-width" />
@ -247,7 +252,7 @@
</el-row> </el-row>
<el-row :gutter="20"> <!-- <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="户籍地址" prop="info.household_address"> <el-form-item label="户籍地址" prop="info.household_address">
<el-input v-model="formData.info.household_address" placeholder="请填写户籍地址" class="input-width" /> <el-input v-model="formData.info.household_address" placeholder="请填写户籍地址" class="input-width" />
@ -260,9 +265,9 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row> -->
<!--
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="紧急联系人" prop="info.emergency_contact"> <el-form-item label="紧急联系人" prop="info.emergency_contact">
@ -276,7 +281,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row> -->
<el-row :gutter="20"> <el-row :gutter="20">
@ -348,6 +353,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="备注" prop="info.remark"> <el-form-item label="备注" prop="info.remark">
<el-input v-model="formData.info.remark" placeholder="请填写备注" class="input-width" /> <el-input v-model="formData.info.remark" placeholder="请填写备注" class="input-width" />
</el-form-item> </el-form-item>

1
niucloud/app/adminapi/controller/customer_resources/CustomerResources.php

@ -37,6 +37,7 @@ class CustomerResources extends BaseAdminController
["type", "khzy"], ["type", "khzy"],
["created_at", []], ["created_at", []],
["updated_at", []], ["updated_at", []],
["campus_name",""]
]); ]);
return success((new CustomerResourcesService())->getPage($data)); return success((new CustomerResourcesService())->getPage($data));
} }

38
niucloud/app/api/controller/apiController/Course.php

@ -27,6 +27,7 @@ class Course extends BaseApiService
//课程列表 //课程列表
public function courseList(Request $request){ public function courseList(Request $request){
$id = $this->member_id; $id = $this->member_id;
$data = $this->request->params([ $data = $this->request->params([
["schedule_date",0] ["schedule_date",0]
]); ]);
@ -77,4 +78,41 @@ class Course extends BaseApiService
return success('SUCCESS',(new CourseService())->delStudentCourse($data)); return success('SUCCESS',(new CourseService())->delStudentCourse($data));
} }
public function get_date(){
$data = $this->request->params([
["date",''],
['day','']
]);
return success(( new CourseService() )->getDate($data));
}
public function courseAllList(Request $request){
$data = $this->request->params([
["schedule_date",0]
]);
return success((new CourseService())->listAll($data));
}
public function addSchedule(Request $request){
$data = $this->request->params([
["resources_id",''],
["person_type",''],
["schedule_id",''],
["course_date",''],
["time_slot",'']
]);
return (new CourseService())->addSchedule($data);
}
public function schedule_list(Request $request){
$data = $this->request->params([
["schedule_id",'']
]);
return success((new CourseService())->schedule_list($data));
}
} }

11
niucloud/app/api/controller/apiController/CustomerResources.php

@ -176,12 +176,18 @@ class CustomerResources extends BaseApiService
"communication" => $request->param('communication', ''),//沟通备注 "communication" => $request->param('communication', ''),//沟通备注
"staff_id" => $request->param('staff_id', ''),//人员ID//如果没有就是当前登录人的员工id "staff_id" => $request->param('staff_id', ''),//人员ID//如果没有就是当前登录人的员工id
"first_visit_status" => $request->param('first_visit_status', null),//一访情况
"second_visit_status" => $request->param('second_visit_status', null),//二访情况
"efficacious" => $request->param('efficacious', 1), "efficacious" => $request->param('efficacious', 1),
"first_visit_time" => $request->param('first_visit_time', ''),
"first_visit_status" => $request->param('first_visit_status', ''),
"second_visit_time" => $request->param('second_visit_time', ''),
"second_visit_status" => $request->param('second_visit_status', ''),
"chasing_orders" => $request->param('chasing_orders', ''),
"is_bm" => $request->param('is_bm', 1),
"consultation_remark" => $request->param('consultation_remark', ''),
]; ];
if (strlen($customer_resources_data['phone_number']) > 12) { if (strlen($customer_resources_data['phone_number']) > 12) {
return fail("联系电话不能超过12位"); return fail("联系电话不能超过12位");
} }
@ -198,7 +204,6 @@ class CustomerResources extends BaseApiService
} }
} }
$res = (new CustomerResourcesService())->editData($where, $customer_resources_data, $six_speed_data); $res = (new CustomerResourcesService())->editData($where, $customer_resources_data, $six_speed_data);
if (!$res['code']) { if (!$res['code']) {
return fail($res['msg']); return fail($res['msg']);

59
niucloud/app/api/controller/apiController/Statistics.php

@ -11,6 +11,7 @@
namespace app\api\controller\apiController; namespace app\api\controller\apiController;
use app\model\campus_person_role\CampusPersonRole;
use app\model\market_performance\MarketPerformance; use app\model\market_performance\MarketPerformance;
use app\model\order_table\OrderTable; use app\model\order_table\OrderTable;
use app\model\personnel\PersonnelSummary; use app\model\personnel\PersonnelSummary;
@ -252,6 +253,7 @@ class Statistics extends BaseApiService
{ {
$resourceSharing = new ResourceSharing(); $resourceSharing = new ResourceSharing();
$customerResources = new CustomerResources(); $customerResources = new CustomerResources();
$campus_person_role = new CampusPersonRole();
$personnel_id = $request->param('personnel_id','');//员工表id $personnel_id = $request->param('personnel_id','');//员工表id
$role_key_arr = $request->param('role_key_arr','');//array 角色key $role_key_arr = $request->param('role_key_arr','');//array 角色key
$role_key_arr = explode(',',$role_key_arr); $role_key_arr = explode(',',$role_key_arr);
@ -264,18 +266,25 @@ class Statistics extends BaseApiService
$assigned = 0; $assigned = 0;
$unassigned = 0; $unassigned = 0;
$lastWeekNewTotal = 0; $lastWeekNewTotal = 0;
$resource_list = $resourceSharing->where(['shared_by' => $personnel_id])->select(); // $resource_list = $resourceSharing->where(['shared_by' => $personnel_id])->select();
foreach($resource_list as $item){ // foreach($resource_list as $item){
$sharedAt = strtotime($item['shared_at']); // $sharedAt = strtotime($item['shared_at']);
$date = date("Y-m-d",$sharedAt); // $date = date("Y-m-d",$sharedAt);
if(isDateInThisWeek($date)){ // if(isDateInThisWeek($date)){
$assigned++; // $assigned++;
} // }
//
} // }
$customer_list = $customerResources->where(['consultant' => $personnel_id])->select(); $customer_list = $customerResources->where(['consultant' => $personnel_id])->select();
foreach($customer_list as $item){ foreach($customer_list as $item){
if($resourceSharing->where(['resource_id' => $item['id']])->find()){
if(isDateInThisWeek($item['create_date'])){
$assigned++;
}
}
if(!$resourceSharing->where(['resource_id' => $item['id']])->find()){ if(!$resourceSharing->where(['resource_id' => $item['id']])->find()){
if(isDateInThisWeek($item['create_date'])){ if(isDateInThisWeek($item['create_date'])){
$unassigned++; $unassigned++;
@ -287,18 +296,34 @@ class Statistics extends BaseApiService
} }
$staff_list = []; $staff_list = $campus_person_role
$personnel_summary = new PersonnelSummary(); ->alias("a")
$staff_list = $personnel_summary ->join(['school_personnel' => 'c'],'a.person_id = c.id','left')
->alias('a') ->where([
->join(['school_campus_person_role' => 'b'],'a.campus_person_role_id = b.id','left') ['a.dept_id','in',1]
->join(['school_personnel' => 'c'],'b.person_id = c.id','left') ])
->field("c.name,a.task_num as goal,a.complete_num as wx_yj") ->field("c.id,c.name")
->select(); ->select();
if(in_array('market',$role_key_arr) || in_array('market_manager',$role_key_arr)){ $staff_list = $staff_list->toArray(); // 转换成数组
$customer_list = $customerResources->select();
$goal = count($customer_list);
$staff_map = [];
foreach($staff_list as &$staff){
$staff['goal'] = $goal;
$staff['wx_yj'] = 0;
$staff_map[$staff['id']] = &$staff; // 现在可以引用赋值了
}
foreach ($customer_list as $val){
if(isset($staff_map[$val['consultant']])){
$staff_map[$val['consultant']]['wx_yj']++;
}
}
unset($staff); // 清除引用
if(in_array('market',$role_key_arr) || in_array('market_manager',$role_key_arr)){
//市场人员统计数据(地推拉人头的) //市场人员统计数据(地推拉人头的)
$data = [ $data = [

9
niucloud/app/api/route/route.php

@ -333,6 +333,15 @@ Route::group(function () {
//提交试卷 //提交试卷
Route::get('teachingResearch/submitTestPaper', 'apiController.teachingResearch/submitTestPaper'); Route::get('teachingResearch/submitTestPaper', 'apiController.teachingResearch/submitTestPaper');
Route::get('course/get_date', 'apiController.Course/get_date');
Route::get('course/courseAllList', 'apiController.course/courseAllList');
Route::post('course/addSchedule', 'apiController.course/addSchedule');
Route::get('course/scheduleList', 'apiController.course/schedule_list');
Route::get('per_list_call_up', 'member.Member/list_call_up'); Route::get('per_list_call_up', 'member.Member/list_call_up');
Route::post('per_update_call_up', 'member.Member/update_call_up'); Route::post('per_update_call_up', 'member.Member/update_call_up');
})->middleware(ApiChannel::class) })->middleware(ApiChannel::class)

8
niucloud/app/common.php

@ -1293,3 +1293,11 @@ function isDateInLastWeek($date) {
return $timestamp >= $startOfLastWeek && $timestamp <= $endOfLastWeek; return $timestamp >= $startOfLastWeek && $timestamp <= $endOfLastWeek;
} }
function getChineseWeekday($date)
{
$weekdays = ['日', '一', '二', '三', '四', '五', '六'];
return '星期' . $weekdays[$date->format('w')];
}

10
niucloud/app/service/admin/customer_resources/CustomerResourcesService.php

@ -51,7 +51,7 @@ class CustomerResourcesService extends BaseAdminService
public function getPage(array $data = []) public function getPage(array $data = [])
{ {
// dump($data);die; // dump($data);die;
$field = 'a.*,b.id as shared_id'; $field = 'a.*,b.id as shared_id,c.campus_name';
$order = 'a.id desc'; $order = 'a.id desc';
$where = []; $where = [];
if ($data['phone_number']) { if ($data['phone_number']) {
@ -78,12 +78,18 @@ class CustomerResourcesService extends BaseAdminService
$where[] = ['a.member_label', 'like', "%" . $data['member_label'] . "%"]; $where[] = ['a.member_label', 'like', "%" . $data['member_label'] . "%"];
} }
if ($data['campus_name']) {
$where[] = ['c.campus_name', 'like', "%" . $data['campus_name'] . "%"];
}
$search_model = $this->model $search_model = $this->model
->alias("a") ->alias("a")
->join(['school_resource_sharing' => 'b'], 'a.id = b.resource_id', 'left') ->join(['school_resource_sharing' => 'b'], 'a.id = b.resource_id', 'left')
->join(['school_campus' => 'c'], 'a.campus = c.id', 'left')
->where($where) ->where($where)
->with(['personnel'])->field($field)->order($order); ->with(['personnel'])
->field($field)->order($order);
if (isset($data['created_at'][0]) && isset($data['created_at'][1])) { if (isset($data['created_at'][0]) && isset($data['created_at'][1])) {

96
niucloud/app/service/api/apiService/CourseService.php

@ -19,6 +19,7 @@ use app\model\assignment\Assignment;
use app\model\course\Course; use app\model\course\Course;
use app\model\student_courses\StudentCourses; use app\model\student_courses\StudentCourses;
use core\base\BaseApiService; use core\base\BaseApiService;
use DateTime;
use think\Model; use think\Model;
use think\facade\Db; use think\facade\Db;
@ -217,6 +218,101 @@ class CourseService extends BaseApiService
} }
} }
public function getDate(array $baseDate)
{
$dates = [];
$this_date = $baseDate['date'] ?: date('Y-m-d');
$date = new DateTime($this_date);
for ($i = -2; $i <= 4; $i++) {
$tempDate = clone $date; // 避免修改原始对象
$tempDate->modify("$i days");
$status = false;
if($baseDate['day'] == $tempDate->format('d')){
$status = true;
}else if(empty($baseDate['day'])){
if($tempDate->format('Y-m-d') === date('Y-m-d')){
$status = true;
}
}
$dates[] = [
'date' => $tempDate->format('Y-m-d'),
'day' => $tempDate->format('d'),
'week' => getChineseWeekday($tempDate),
'status' => $status
];
}
return ['dates' => $dates,'date' => $this_date];
}
public function listAll($data)
{
$where = [];
if ($data['schedule_date']) {
$where[] = ['course_date','=', $data['schedule_date']];
}
$CourseSchedule = new CourseSchedule();
$list = $CourseSchedule
->where($where)
->with(['course' => function($query) {
$query->select();
},'venue' => function($query) {
$query->select();
},'campus','studentCourses'])->select()->toArray();
foreach ($list as $k => $v) {
$student = Db::name('person_course_schedule')
->alias('pcs')
->where('pcs.schedule_id', $v['id']) // 建议加上表别名避免冲突
->join('school_student st', 'pcs.student_id = st.id')
->join('school_customer_resources cr', 'st.user_id = cr.id')
->join('school_member sm', 'cr.member_id = sm.member_id')
->field('st.name, sm.headimg as avatar') // 👈 正确方式取字段
->select();
$list[$k]['student'] = $student;
}
return $list;
}
public function addSchedule(array $data){
$CourseSchedule = new CourseSchedule();
$personCourseSchedule = new PersonCourseSchedule();
if($personCourseSchedule->where([
'resources_id' => $data['resources_id'],
'schedule_id' => $data['schedule_id']
])->find()){
return fail("重复添加");
}
$personCourseSchedule->insert([
'resources_id' => $data['resources_id'],
'person_id' => $this->member_id,
'person_type' => $data['person_type'],
'schedule_id' => $data['schedule_id'],
'course_date' => $data['course_date'],
'time_slot' => $data['time_slot'],
]);
$CourseSchedule->where(['id' => $data['schedule_id']])->dec("available_capacity")->update();
return success("添加成功");
}
public function schedule_list(array $data){
$personCourseSchedule = new PersonCourseSchedule();
$list = $personCourseSchedule
->alias('a')
->join(['school_customer_resources' => 'b'],'a.resources_id = b.id','left')
->where('a.schedule_id',$data['schedule_id'])
->field("b.name,a.status")
->select()->toArray();
return $list;
}
} }

2
niucloud/app/service/api/apiService/CustomerResourcesService.php

@ -315,7 +315,7 @@ class CustomerResourcesService extends BaseApiService
return $res; return $res;
} catch (\Exception $exception) { } catch (\Exception $exception) {
Db::rollback(); Db::rollback();
return $res; return $exception->getMessage();
} }
} }

Loading…
Cancel
Save