dev_oa/app/project/common.php
HDM58\hdm58 9ee6fb5afb 1、优化:项目、任务的状态显示;
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`;
2023-10-26 09:16:33 +08:00

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;
}