
2、新增:企业员工管理新增离职状态查询; 3、新增:离职档案新增一键资料转移功能,把项目、任务、客户、合同等资料交接到交接人上; 4、新增:任务新增前置任务,如果存在前置任务的,需要把前置任务完成后才能完成当前任务; 5、新增:任务新增子任务功能; 6、修复:新增项目文档成功后,跳转报错的问题; 7、优化:任务进度与任务状态联动,任务完成时,进度默认设置为100%,任务设置进度时,如果任务未开始,状态默认设置为进行中; 8、删除:去除项目选择项目时间周期的联动操作; 9、优化:项目选择弹层操作; 10、修复:修复自定义tab打开时,左侧二级菜单宽度未收回的问题; 11、优化:客户选择弹层添加‘新增客户’的按钮,方便快捷新建客户; 12、优化:工作台项目、任务、知识位置调整优化; 注意:本次数据结构更新代码如下: ALTER TABLE `oa_personal_quit` ADD COLUMN `connect_id` int(11) NOT NULL DEFAULT 0 COMMENT '资料交接人' AFTER `connect_uids`; ALTER TABLE `oa_personal_quit` ADD COLUMN `connect_time` int(11) NOT NULL DEFAULT 0 COMMENT '资料交接时间' AFTER `connect_id`; ALTER TABLE `oa_personal_quit` MODIFY COLUMN `connect_uids` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '参与交接人,多' AFTER `lead_admin_id`; ALTER TABLE `oa_project_task` ADD COLUMN `pid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '父任务id' AFTER `title`; ALTER TABLE `oa_project_task` ADD COLUMN `before_task` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '前置任务id' AFTER `priority`; ALTER TABLE `oa_project_task` MODIFY COLUMN `type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '任务类型(预留字段)' AFTER `cate`;
138 lines
3.6 KiB
PHP
138 lines
3.6 KiB
PHP
<?php
|
|
/**
|
|
* @copyright Copyright (c) 2022 勾股工作室
|
|
* @license https://opensource.org/licenses/GPL-3.0
|
|
* @link https://www.gougucms.com
|
|
*/
|
|
/**
|
|
======================
|
|
*模块数据获取公共文件
|
|
======================
|
|
*/
|
|
use think\facade\Db;
|
|
//是否是项目管理员,count>1即有权限
|
|
function isAuthProject($uid)
|
|
{
|
|
if($uid == 1){
|
|
return 1;
|
|
}
|
|
$map = [];
|
|
$map[] = ['name', '=', 'project_admin'];
|
|
$map[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',uids)")];
|
|
$count = Db::name('DataAuth')->where($map)->count();
|
|
return $count;
|
|
}
|
|
//写入日志
|
|
function add_project_log($uid,$module,$param,$old)
|
|
{
|
|
$log_data = [];
|
|
$key_array = ['id', 'create_time', 'update_time', 'delete_time', 'over_time', 'md_content'];
|
|
foreach ($param as $key => $value) {
|
|
if (!in_array($key, $key_array)) {
|
|
$log_data[] = array(
|
|
'module' => $module,
|
|
'field' => $key,
|
|
$module . '_id' => $param['id'],
|
|
'admin_id' => $uid,
|
|
'old_content' => $old[$key],
|
|
'new_content' => $value,
|
|
'create_time' => time(),
|
|
);
|
|
}
|
|
}
|
|
Db::name('ProjectLog')->strict(false)->field(true)->insertAll($log_data);
|
|
}
|
|
//读取项目
|
|
function get_project($uid = 0)
|
|
{
|
|
$map = [];
|
|
$map[] = ['delete_time', '=', 0];
|
|
if ($uid > 0) {
|
|
$project_ids = Db::name('ProjectUser')->where(['uid' => $uid, 'delete_time' => 0])->column('project_id');
|
|
$map[] = ['id', 'in', $project_ids];
|
|
}
|
|
$project = Db::name('Project')->where($map)->select()->toArray();
|
|
return $project;
|
|
}
|
|
//读取工作分类列表
|
|
function work_cate()
|
|
{
|
|
$cate = Db::name('WorkCate')->order('id desc')->select()->toArray();
|
|
return $cate;
|
|
}
|
|
|
|
|
|
//任务分配情况统计
|
|
function plan_count($arrData)
|
|
{
|
|
$documents = array();
|
|
foreach ($arrData as $index => $value) {
|
|
$planTime = date("Y-m-d", $value['end_time']);
|
|
if (empty($documents[$planTime])) {
|
|
$documents[$planTime] = 1;
|
|
} else {
|
|
$documents[$planTime] += 1;
|
|
}
|
|
}
|
|
return $documents;
|
|
}
|
|
|
|
//工时登记情况统计
|
|
function hour_count($arrData)
|
|
{
|
|
$documents = array();
|
|
foreach ($arrData as $index => $value) {
|
|
$hourTime = date("Y-m-d", $value['start_time']);
|
|
if (empty($documents[$hourTime])) {
|
|
$documents[$hourTime] = $value['labor_time'] + 0;
|
|
} else {
|
|
$documents[$hourTime] += $value['labor_time'];
|
|
}
|
|
$documents[$hourTime] = round($documents[$hourTime], 2);
|
|
}
|
|
return $documents;
|
|
}
|
|
|
|
//燃尽图统计
|
|
function cross_count($arrData)
|
|
{
|
|
$documents = array();
|
|
foreach ($arrData as $index => $value) {
|
|
$planTime = date("Y-m-d", $value['end_time']);
|
|
if (empty($documents[$planTime])) {
|
|
$documents[$planTime] = 1;
|
|
} else {
|
|
$documents[$planTime] += 1;
|
|
}
|
|
}
|
|
return $documents;
|
|
}
|
|
|
|
//读取后置任务的ids
|
|
function admin_after_task_son($task_id = 0, $list = [])
|
|
{
|
|
$task_ids = Db::name('ProjectTask')->where([['before_task','in',$task_id]])->column('id');
|
|
if(!empty($task_ids)){
|
|
$new_list = array_merge($list, $task_ids);
|
|
$list = admin_after_task_son($task_ids, $new_list);
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
//读取父任务的ids
|
|
function admin_parent_task($task_id = 0, $list = [])
|
|
{
|
|
$pids = Db::name('ProjectTask')->where([['pid','in',$task_id]])->column('id');
|
|
if(!empty($pids)){
|
|
$new_list = array_merge($list, $pids);
|
|
$list = admin_parent_task($pids, $new_list);
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
//获取后置任务
|
|
function after_task($task_id)
|
|
{
|
|
$list = Db::name('ProjectTask')->where('before_task',$task_id)->order('id desc')->select()->toArray();
|
|
return $list;
|
|
} |