更新命名问题

This commit is contained in:
2025-06-25 11:52:01 +08:00
parent 9f374011ae
commit 6b78ee29cf
57 changed files with 3295 additions and 1288 deletions
+137 -117
View File
@@ -32,8 +32,22 @@ class Index extends BaseController
->paginate($rows, false, ['query' => $param])
->each(function ($item, $key) {
$item->director_name = Db::name('Admin')->where(['id' => $item->director_uid])->value('name');
$item->plan_time = date('Y-m-d', $item->start_time) . ' 至 ' . date('Y-m-d', $item->end_time);
$item->status_name = ProjectList::$Status[(int)$item->status];
// 判断时间戳是否为空,如果为空则返回“-”
$item->plan_time = $item->start_time && $item->end_time
? date('Y-m-d', $item->start_time) . ' ~ ' . date('Y-m-d', $item->end_time)
: '-';
$item->project_plan_time = $item->project_start_time
? (
$item->project_end_time
? (
date('Y-m-d', $item->project_end_time) === '1970-01-01'
? date('Y-m-d', $item->project_start_time) . ' ~ 至今'
: date('Y-m-d', $item->project_start_time) . ' ~ ' . date('Y-m-d', $item->project_end_time)
)
: date('Y-m-d', $item->project_start_time) . ' ~ 至今'
)
: '-';
$item->status_name = ProjectList::$Status[(int) $item->status];
$business = BusinessList::where('id', $item->business_id)->find();
$item->business_id = $business ? ($business->name_short ?: $business->name) : null;
@@ -100,7 +114,7 @@ class Index extends BaseController
$flowNameData = isset($param['flowName']) ? $param['flowName'] : '';
$flowUidsData = isset($param['chargeIds']) ? $param['chargeIds'] : '';
$flowIdsData = isset($param['membeIds']) ? $param['membeIds'] : '';
// $flowDateData = isset($param['cycleDate']) ? $param['cycleDate'] : '';
// $flowDateData = isset($param['cycleDate']) ? $param['cycleDate'] : '';
$flow = [];
$time_1 = $param['start_time'];
$time_2 = $param['end_time'];
@@ -108,7 +122,7 @@ class Index extends BaseController
if (!$value) {
continue;
}
// $flowDate = explode('到', $flowDateData[$key]);
// $flowDate = explode('到', $flowDateData[$key]);
// $start_time = strtotime(urldecode(trim($flowDate[0])));
// $end_time = strtotime(urldecode(trim($flowDate[1])));
// if ($start_time < $time_1) {
@@ -131,7 +145,7 @@ class Index extends BaseController
$item['flow_uid'] = $flowUidsData[$key];
$item['flow_ids'] = $flowIdsData[$key];
$item['sort'] = $key;
// $item['start_time'] = $start_time;
// $item['start_time'] = $start_time;
// $item['end_time'] = $end_time;
$item['create_time'] = time();
$flow[] = $item;
@@ -155,7 +169,7 @@ class Index extends BaseController
if (!empty($param['team_admin_ids'])) {
$project_users .= "," . $param['team_admin_ids'];
}
$project_array = explode(",", (string)$project_users);
$project_array = explode(",", (string) $project_users);
$project_array = array_unique($project_array);
$project_user_array = [];
foreach ($project_array as $k => $v) {
@@ -209,137 +223,143 @@ class Index extends BaseController
//编辑
public function edit()
{
$param = get_params();
$id = isset($param['id']) ? $param['id'] : 0;
$detail = (new ProjectList())->detail($id);
{
$param = get_params();
$id = isset($param['id']) ? $param['id'] : 0;
$detail = (new ProjectList())->detail($id);
if (request()->isPost()) {
if ($this->uid == $detail['admin_id'] || $this->uid == $detail['director_uid']) {
try {
validate(ProjectCheck::class)->scene('edit')->check($param);
} catch (ValidateException $e) {
return json(['code' => 1, 'msg' => $e->getError()]);
}
// Convert start_time and end_time from date string to Unix timestamp
if (!empty($param['start_time'])) {
$param['start_time'] = strtotime($param['start_time']);
}
if (!empty($param['end_time'])) {
$param['end_time'] = strtotime($param['end_time']);
}
$param['update_time'] = time();
$res = ProjectList::where('id', $param['id'])->strict(false)->field(true)->update($param);
if ($res) {
// 新增 team_admin_ids 处理逻辑
$project_users = $this->uid;
if (!empty($param['director_uid'])) {
$project_users .= "," . $param['director_uid'];
if (request()->isPost()) {
if ($this->uid == $detail['admin_id'] || $this->uid == $detail['director_uid']) {
try {
validate(ProjectCheck::class)->scene('edit')->check($param);
} catch (ValidateException $e) {
return json(['code' => 1, 'msg' => $e->getError()]);
}
// 如果 team_admin_ids 存在,则拆解并加入到 $project_users
if (!empty($param['team_admin_ids'])) {
$project_users .= "," . $param['team_admin_ids'];
// 将时间从日期字符串转换为Unix时间戳
if (!empty($param['start_time'])) {
$param['start_time'] = strtotime($param['start_time']);
}
if (!empty($param['end_time'])) {
$param['end_time'] = strtotime($param['end_time']);
}
if (!empty($param['project_start_time'])) {
$param['project_start_time'] = strtotime($param['project_start_time']);
}
if (!empty($param['project_end_time'])) {
$param['project_end_time'] = strtotime($param['project_end_time']);
}
// 将 $project_users 拆解为数组,去重
$project_array = explode(",", (string)$project_users);
$project_array = array_unique($project_array);
$param['update_time'] = time();
$res = ProjectList::where('id', $param['id'])->strict(false)->field(true)->update($param);
if ($res) {
// 新增 team_admin_ids 处理逻辑
$project_users = $this->uid;
if (!empty($param['director_uid'])) {
$project_users .= "," . $param['director_uid'];
}
// 获取当前已有的项目用户
$existing_users = Db::name('ProjectUser')->where('project_id', $param['id'])->column('uid');
$delete_users = array_diff($existing_users, $project_array); // 找出要删除的用户
// 如果 team_admin_ids 存在,则拆解并加入到 $project_users
if (!empty($param['team_admin_ids'])) {
$project_users .= "," . $param['team_admin_ids'];
}
// 删除用户,将 `delete_time` 设置为当前时间
if (!empty($delete_users)) {
Db::name('ProjectUser')->where('project_id', $param['id'])
->whereIn('uid', $delete_users)
->update(['delete_time' => time()]);
}
// 将 $project_users 拆解为数组,去重
$project_array = explode(",", (string) $project_users);
$project_array = array_unique($project_array);
// 插入新用户(如果之前没有的话)
$project_user_array = [];
foreach ($project_array as $k => $v) {
if (is_numeric($v)) {
$project_user_array[] = array(
'uid' => $v,
// 获取当前已有的项目用户
$existing_users = Db::name('ProjectUser')->where('project_id', $param['id'])->column('uid');
$delete_users = array_diff($existing_users, $project_array); // 找出要删除的用户
// 删除用户,将 `delete_time` 设置为当前时间
if (!empty($delete_users)) {
Db::name('ProjectUser')->where('project_id', $param['id'])
->whereIn('uid', $delete_users)
->update(['delete_time' => time()]);
}
// 插入新用户(如果之前没有的话)
$project_user_array = [];
foreach ($project_array as $k => $v) {
if (is_numeric($v)) {
$project_user_array[] = array(
'uid' => $v,
'admin_id' => $this->uid,
'project_id' => $param['id'],
'create_time' => time(),
);
}
}
// 插入或更新 ProjectUser 表
Db::name('ProjectUser')->strict(false)->field(true)->insertAll($project_user_array);
// 更新阶段的处理逻辑(保持不变)
if (isset($param['director_uid'])) {
$project_user = [
'uid' => $param['director_uid'],
'admin_id' => $this->uid,
'project_id' => $param['id'],
'create_time' => time(),
);
'delete_time' => 0,
];
$has = Db::name('ProjectUser')->where(['uid' => $param['director_uid'], 'project_id' => $param['id']])->find();
if (empty($has)) {
Db::name('ProjectUser')->strict(false)->field(true)->insert($project_user);
} else {
Db::name('ProjectUser')->where(['id' => $has['id']])->strict(false)->field(true)->update($project_user);
}
}
add_log('edit', $param['id'], $param, $detail);
}
return json(['code' => 0, 'msg' => '编辑成功']);
} else {
return json(['code' => 1, 'msg' => '只有创建人或者负责人才有权限编辑']);
}
} else {
if (empty($detail)) {
return json(['code' => 1, 'msg' => '项目不存在']);
} else {
$step_array = Db::name('Step')
->field('s.*,a.name as check_name')
->alias('s')
->join('Admin a', 'a.id = s.flow_uid', 'LEFT')
->order('s.sort asc')
->where(['s.action_id' => $id, 's.type' => 1, 's.delete_time' => 0])
->select()->toArray();
foreach ($step_array as &$vv) {
$flow_names = Db::name('Admin')->where([['id', 'in', $vv['flow_ids']]])->column('name');
$vv['flow_names'] = implode(',', $flow_names);
}
// 插入或更新 ProjectUser 表
Db::name('ProjectUser')->strict(false)->field(true)->insertAll($project_user_array);
$file_array = Db::name('FileInterfix')
->field('mf.id,mf.topic_id,mf.admin_id,f.name,f.filesize,f.filepath,a.name as admin_name')
->alias('mf')
->join('File f', 'mf.file_id = f.id', 'LEFT')
->join('Admin a', 'mf.admin_id = a.id', 'LEFT')
->order('mf.create_time desc')
->where(['mf.topic_id' => $id, 'mf.module' => 'project'])
->select()->toArray();
// 更新阶段的处理逻辑(保持不变)
if (isset($param['director_uid'])) {
$project_user = [
'uid' => $param['director_uid'],
'admin_id' => $this->uid,
'project_id' => $param['id'],
'create_time' => time(),
'delete_time' => 0,
];
$has = Db::name('ProjectUser')->where(['uid' => $param['director_uid'], 'project_id' => $param['id']])->find();
if (empty($has)) {
Db::name('ProjectUser')->strict(false)->field(true)->insert($project_user);
} else {
Db::name('ProjectUser')->where(['id' => $has['id']])->strict(false)->field(true)->update($project_user);
}
}
add_log('edit', $param['id'], $param, $detail);
return json([
'code' => 0,
'msg' => '成功',
'data' => [
'detail' => $detail,
'step_array' => $step_array,
'file_array' => $file_array,
]
]);
}
return json(['code' => 0, 'msg' => '编辑成功']);
} else {
return json(['code' => 1, 'msg' => '只有创建人或者负责人才有权限编辑']);
}
} else {
if (empty($detail)) {
return json(['code' => 1, 'msg' => '项目不存在']);
} else {
$step_array = Db::name('Step')
->field('s.*,a.name as check_name')
->alias('s')
->join('Admin a', 'a.id = s.flow_uid', 'LEFT')
->order('s.sort asc')
->where(['s.action_id' => $id, 's.type' => 1, 's.delete_time' => 0])
->select()->toArray();
foreach ($step_array as &$vv) {
$flow_names = Db::name('Admin')->where([['id', 'in', $vv['flow_ids']]])->column('name');
$vv['flow_names'] = implode(',', $flow_names);
}
$file_array = Db::name('FileInterfix')
->field('mf.id,mf.topic_id,mf.admin_id,f.name,f.filesize,f.filepath,a.name as admin_name')
->alias('mf')
->join('File f', 'mf.file_id = f.id', 'LEFT')
->join('Admin a', 'mf.admin_id = a.id', 'LEFT')
->order('mf.create_time desc')
->where(['mf.topic_id' => $id, 'mf.module' => 'project'])
->select()->toArray();
return json([
'code' => 0,
'msg' => '成功',
'data' => [
'detail' => $detail,
'step_array' => $step_array,
'file_array' => $file_array,
]
]);
}
}
}
// public function edit()
// public function edit()
// {
// $param = get_params();
// $id = isset($param['id']) ? $param['id'] : 0;
@@ -434,7 +454,7 @@ class Index extends BaseController
$param = get_params();
$id = isset($param['id']) ? $param['id'] : 0;
// print_r('id是:'.$id);
// print_r('id是:'.$id);
// 获取项目详细信息
$detail = (new ProjectList())->detail($id);
@@ -473,7 +493,7 @@ class Index extends BaseController
View::assign('detail', $detail); // 传递 detail
return view();
// return json([
// return json([
// 'code' => 1,
// 'msg' => '获取项目阶段信息成功',
// 'data' => [
+97 -59
View File
@@ -1,46 +1,45 @@
<style>
.layui-form-item.layui-form-pane{margin-bottom:8px;}
.layui-form-pane .layui-form-label {width:60px; padding:8px;}
.layui-form-pane .layui-form-label.label-index,.layui-form-pane .layui-form-label.label-first {width:80px;}
.layui-form-item .layui-input-inline {margin-right:4px;}
.layui-form-item .layui-inline {margin-right:0; margin-bottom:0;}
.layui-form-item.layui-form-pane {
margin-bottom: 8px;
}
.layui-form-pane .layui-form-label {
width: 60px;
padding: 8px;
}
.layui-form-pane .layui-form-label.label-index,
.layui-form-pane .layui-form-label.label-first {
width: 80px;
}
.layui-form-item .layui-input-inline {
margin-right: 4px;
}
.layui-form-item .layui-inline {
margin-right: 0;
margin-bottom: 0;
}
</style>
<form class="layui-form page-content p-4">
<h3 class="h3-title">新建项目</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">项目名称<font>*</font></td>
<td class="layui-td-gray">项目名称<font>*</font>
</td>
<td>
<input type="text" name="name" lay-verify="required" lay-reqText="请输入项目名称" placeholder="请输入项目名称" class="layui-input" value="">
<input type="text" name="name" lay-verify="required" lay-reqText="请输入项目名称" placeholder="请输入项目名称"
class="layui-input" value="">
</td>
<td class="layui-td-gray">项目简称<font>*</font>
</td>
<td class="layui-td-gray">项目简称<font>*</font></td>
<td>
<input type="text" name="name_short" lay-verify="required" lay-reqText="请输入项目简称" placeholder="请输入项目简称" class="layui-input" value="">
<input type="text" name="name_short" lay-verify="required" lay-reqText="请输入项目简称" placeholder="请输入项目简称"
class="layui-input" value="">
</td>
<td class="layui-td-gray-2">计划完成周期</td>
<td id="date">
<div class="layui-input-inline" style="width:100px;">
<input type="text" id="start_time" name="start_time" readonly lay-reqText="请选择开始时间" placeholder="请选择" class="layui-input" value="">
</div>
-
<div class="layui-input-inline" style="width:100px;">
<input type="text" id="end_time" name="end_time" readonly lay-reqText="请选择结束时间" placeholder="请选择" class="layui-input" value="">
</div>
<td class="layui-td-gray">项目类型<font>*</font>
</td>
</tr>
<tr>
<td class="layui-td-gray">负责人<font>*</font></td>
<td>
<input type="text" name="director_name" placeholder="请选择项目负责人" readonly class="layui-input picker-one" value="{$user_info.name}">
<input type="hidden" name="director_uid" lay-verify="required" readonly lay-reqText="请选择项目负责人" value="{$user_info.id}">
</td>
<td class="layui-td-gray">项目成员<span style="color: red">*</span></td>
<td>
<input type="text" id="team_admin_names" name="team_admin_names" placeholder="请选择项目成员" readonly class="layui-input picker-more" value="{$user_info.name}">
<input type="hidden" id="team_admin_ids" name="team_admin_ids" class="layui-input" value="{$user_info.id}">
</td>
<td class="layui-td-gray">项目类型<font>*</font></td>
<td>
<!-- <select name="product_id" lay-verify="required" lay-reqText="请选择关联产品">-->
<select name="project_type" lay-verify="" lay-reqText="是否是内部项目">
@@ -52,22 +51,51 @@
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">负责人<font>*</font>
</td>
<td>
<input type="text" name="director_name" placeholder="请选择项目负责人" readonly class="layui-input picker-one"
value="{$user_info.name}">
<input type="hidden" name="director_uid" lay-verify="required" readonly lay-reqText="请选择项目负责人"
value="{$user_info.id}">
</td>
<td class="layui-td-gray">项目成员<span style="color: red">*</span></td>
<td>
<input type="text" id="team_admin_names" name="team_admin_names" placeholder="请选择项目成员" readonly
class="layui-input picker-more" value="{$user_info.name}">
<input type="hidden" id="team_admin_ids" name="team_admin_ids" class="layui-input"
value="{$user_info.id}">
</td>
<td class="layui-td-gray">关联客户</td>
<td>
<select name="business_id" id="business_id" lay-verify="" lay-search="" lay-reqText="请选择客户">
<option value="">请选择客户</option>
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">关联产品</td>
<td>
<!-- <select name="product_id" lay-verify="required" lay-reqText="请选择关联产品">-->
<select name="product_id" lay-verify="" lay-reqText="请选择关联产品">
<select name="product_id" lay-verify="" lay-search="" lay-reqText="请选择关联产品">
<option value="">请选择关联产品</option>
{volist name=":get_product()" id="v"}
<option value="{$v.id}">{$v.name}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray">关联客户</td>
<td>
<select name="business_id" id="business_id" lay-verify="" lay-reqText="请选择客户">
<option value="">请选择客户</option>
</select>
<td class="layui-td-gray-2">合同周期</td>
<td id="date">
<div class="layui-input-inline" style="width:100px;">
<input type="text" id="start_time" name="start_time" readonly lay-reqText="请选择开始时间"
placeholder="请选择" class="layui-input" value="">
</div>
-
<div class="layui-input-inline" style="width:100px;">
<input type="text" id="end_time" name="end_time" readonly lay-reqText="请选择结束时间" placeholder="请选择"
class="layui-input" value="">
</div>
</td>
</tr>
<tr>
@@ -77,7 +105,8 @@
</td>
</tr>
<tr>
<td colspan="6" class="layui-td-gray" style="text-align:left; font-weight:600">项目阶段<font>*</font></td>
<td colspan="6" class="layui-td-gray" style="text-align:left; font-weight:600">项目阶段<font>*</font>
</td>
</tr>
<tr>
<td colspan="6">
@@ -91,7 +120,7 @@
<select name="flowName[]" lay-filter="flowName" lay-reqText="请选择阶段名称">
<option value="">请选择</option>
{volist name = "section" id="voo" key="kk"}
<option value="{$voo}" {eq name="$kk" value ="$k"} selected{/eq}>{$voo}</option>
<option value="{$voo}" {eq name="$kk" value="$k" } selected{/eq}>{$voo}</option>
{/volist}
</select>
</div>
@@ -99,14 +128,18 @@
<div class="layui-inline">
<label class="layui-form-label">负责人</label>
<div class="layui-input-inline" style="width:120px;">
<input type="text" name="chargeNames[]" autocomplete="off" readonly placeholder="选择阶段负责人" class="layui-input picker-one" lay-reqText="请选择阶段负责人" value="{$user_info.name}">
<input type="text" name="chargeNames[]" autocomplete="off" readonly
placeholder="选择阶段负责人" class="layui-input picker-one" lay-reqText="请选择阶段负责人"
value="{$user_info.name}">
<input type="hidden" name="chargeIds[]" value="{$user_info.id}">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">成员</label>
<div class="layui-input-inline" style="width:168px;">
<input type="text" name="membeNames[]" value="{$user_info.name}" autocomplete="off" readonly placeholder="选择阶段成员,可多选" class="layui-input picker-more" lay-reqText="请选择阶段成员">
<input type="text" name="membeNames[]" value="{$user_info.name}" autocomplete="off"
readonly placeholder="选择阶段成员,可多选" class="layui-input picker-more"
lay-reqText="请选择阶段成员">
<input type="hidden" name="membeIds[]" value="{$user_info.id}">
</div>
</div>
@@ -119,7 +152,7 @@
<select name="flowName[]" lay-filter="flowName" lay-reqText="请选择阶段名称">
<option value="">请选择</option>
{volist name = "section" id="voo" key="kk"}
<option value="{$voo}" {eq name="$kk" value ="$k"} selected{/eq}>{$voo}</option>
<option value="{$voo}" {eq name="$kk" value="$k" } selected{/eq}>{$voo}</option>
{/volist}
</select>
</div>
@@ -127,14 +160,18 @@
<div class="layui-inline">
<label class="layui-form-label">负责人</label>
<div class="layui-input-inline" style="width:120px;">
<input type="text" name="chargeNames[]" value="{$user_info.name}" autocomplete="off" readonly placeholder="选择阶段负责人" class="layui-input picker-one" lay-reqText="请选择阶段负责人">
<input type="text" name="chargeNames[]" value="{$user_info.name}" autocomplete="off"
readonly placeholder="选择阶段负责人" class="layui-input picker-one"
lay-reqText="请选择阶段负责人">
<input type="hidden" name="chargeIds[]" value="{$user_info.id}">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">成员</label>
<div class="layui-input-inline" style="width:168px;">
<input type="text" name="membeNames[]" value="{$user_info.name}" autocomplete="off" readonly placeholder="选择阶段成员,可多选" class="layui-input picker-more" lay-reqText="请选择阶段成员">
<input type="text" name="membeNames[]" value="{$user_info.name}" autocomplete="off"
readonly placeholder="选择阶段成员,可多选" class="layui-input picker-more"
lay-reqText="请选择阶段成员">
<input type="hidden" name="membeIds[]" value="{$user_info.id}">
</div>
</div>
@@ -143,7 +180,8 @@
{/eq}
{/volist}
</div>
<span class="layui-btn layui-btn-xs layui-btn-normal add-flow" data-type="0">+ 添加固定阶段</span><span class="layui-btn layui-btn-xs add-flow" data-type="1">+ 添加自定义阶段</span>
<span class="layui-btn layui-btn-xs layui-btn-normal add-flow" data-type="0">+ 添加固定阶段</span><span
class="layui-btn layui-btn-xs add-flow" data-type="1">+ 添加自定义阶段</span>
<div style="padding:10px; margin-top:10px; font-size:12px; background-color:#fffcf0">
<p><strong>温馨提示</strong></p>
<p>1、项目开始流转前,请确保已完善好各项目信息。</p>
@@ -171,11 +209,11 @@
form.render();
function fetchCustomers() {
tool.get('/business/index/getlistsmore', {}, function(response) {
tool.get('/business/index/getlistsmore', {}, function (response) {
if (response.code == 1) {
var customers = response.data;
var customerSelect = document.getElementById('business_id');
customers.forEach(function(customer) {
customers.forEach(function (customer) {
var option = document.createElement('option');
option.value = customer.id;
option.text = customer.name;
@@ -209,13 +247,13 @@
});
});
$('.add-flow').on('click',function(){
$('.add-flow').on('click', function () {
let len = $('#flowList').find('.layui-form-item').length;
let index = len+1;
let index = len + 1;
let type = $(this).data('type');;
let tem=['<div class="layui-form-item layui-form-pane">\
let tem = ['<div class="layui-form-item layui-form-pane">\
<div class="layui-inline">\
<label class="layui-form-label label-index">第'+index+'阶段</label>\
<label class="layui-form-label label-index">第'+ index + '阶段</label>\
<div class="layui-input-inline" style="width:150px;">\
<select name="flowName[]" lay-filter="flowName" lay-verify="required" lay-reqText="请选择阶段名称">\
<option value="">请选择</option>\
@@ -246,9 +284,9 @@
</div>\
<span class="layui-btn layui-btn-danger layui-btn-sm">删除</span>\
</div>',
'<div class="layui-form-item layui-form-pane">\
'<div class="layui-form-item layui-form-pane">\
<div class="layui-inline">\
<label class="layui-form-label label-index">第'+index+'阶段</label>\
<label class="layui-form-label label-index">第'+ index + '阶段</label>\
<div class="layui-input-inline" style="width:120px;">\
<input type="text" name="flowName[]" autocomplete="off" placeholder="输入阶段名称" class="layui-input" lay-verify="required" lay-reqText="请输入阶段名称">\
</div>\
@@ -281,12 +319,12 @@
});
});
});
$('#flowList').on('click','.layui-btn-danger',function(){
$('#flowList').on('click', '.layui-btn-danger', function () {
$(this).parents('.layui-form-item').remove();
var items = $('.label-index').length;
if(items>0){
$('.label-index').each(function(index,item){
$(this).html('第'+(index+2)+'阶段');
if (items > 0) {
$('.label-index').each(function (index, item) {
$(this).html('第' + (index + 2) + '阶段');
})
}
});
@@ -299,7 +337,7 @@
tool.close(1000);
}
}
tool.post("/project/index/add",data.field,callback);
tool.post("/project/index/add", data.field, callback);
return false;
});
}
+1 -1
View File
@@ -11,7 +11,7 @@
<tr>
<td class="layui-td-gray">项目名称<font>*</font></td>
<td>{$detail.name}</td>
<td class="layui-td-gray-2">计划完成周期</td>
<td class="layui-td-gray-2">合同周期</td>
<td>{$detail.start_time|date='Y-m-d'} - {$detail.end_time|date='Y-m-d'}</td>
</tr>
<tr>
+2 -1
View File
@@ -71,7 +71,8 @@
}
}
, { field: 'director_name', title: '负责人', align: 'center', width: 80, rowspan: 2 }
, { field: 'plan_time', title: '项目周期', align: 'center', width: 240, rowspan: 2 }
, { field: 'plan_time', title: '合同周期', align: 'center', width: 240, rowspan: 2 }
, { field: 'project_plan_time', title: '项目周期', align: 'center', width: 240, rowspan: 2 }
, { align: 'center', title: '关联任务', colspan: 3 }
, { align: 'center', title: 'BUG缺陷', colspan: 3 }
], [
+202 -168
View File
@@ -105,17 +105,17 @@
<div class="layui-col-md3" style="text-align:right">
{eq name="$role" value="2"}
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm"
id="delProject">删除项目
id="delProject">删除项目
</button>
<button type="button" class="layui-btn layui-btn-sm layui-bg-blue" id="editProject">编辑项目
</button>
{eq name="$detail.status" value="4"}
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm"
id="reopenProject">开启项目
id="reopenProject">开启项目
</button>
{else/}
<button type="button" class="layui-btn layui-btn-waring layui-btn-sm"
id="closeProject">关闭项目
id="closeProject">关闭项目
</button>
{/eq}
{/eq}
@@ -127,42 +127,57 @@
<span class="font-gray">项目ID</span>
<span id="{$detail.id}" data-val="{$detail.id}">{$detail.id}</span>
<input type="hidden" name="id" value="{$detail.id}">
<!-- <i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}"-->
<!-- data-name="id"></i>-->
<!-- <i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}"-->
<!-- data-name="id"></i>-->
<!-- <button data-id="{$detail.id}" data-name="business_id">编辑</button> -->
</div>
<hr>
<div class="py-1">
<span class="font-gray">客户名称:</span>
<span id="business_id_{$detail.id}"
data-val="{$detail.business_id}">{$detail.business_id}</span>
<!-- <i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}"-->
<!-- data-name="business_id"></i>-->
data-val="{$detail.business_id}">{$detail.business_id}</span>
<!-- <i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}"-->
<!-- data-name="business_id"></i>-->
<!-- <button data-id="{$detail.id}" data-name="business_id">编辑</button> -->
</div>
<hr>
<div class="py-1">
<span class="font-gray">计划完成周期:</span>
<span class="font-gray">合同周期:</span>
<span id="start_time_{$detail.id}" data-val="">{$detail.start_time|date='Y-m-d'}</span>
&nbsp;&nbsp;&nbsp;&nbsp; <span id="end_time_{$detail.id}" data-val="">{$detail.end_time|
~&nbsp;&nbsp; <span id="end_time_{$detail.id}" data-val="">{$detail.end_time|
date='Y-m-d'}</span>
</div>
<hr>
<div class="py-1">
<span class="font-gray">项目周期:</span>
<span id="project_start_time_{$detail.id}"
data-val="">{$detail.project_start_time|date='Y-m-d'}</span>
~&nbsp;&nbsp;
<span id="project_end_time_{$detail.id}" data-val="">
{if $detail.project_end_time == '1970-01-01' || $detail.project_end_time == 0 ||
$detail.project_end_time == ''}
至今
{else}
{$detail.project_end_time|date='Y-m-d'}
{/if}
</span>
</div>
<hr>
<div class="py-1">
<span class="font-gray">创建人:</span>{$detail.admin_name}
<span class="font-gray" style="margin-left:32px">负责人:</span>
<span id="director_uid_{$detail.id}"
data-val="{$detail.director_uid}">{$detail.director_name}</span>
<!-- <i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}"-->
<!-- data-name="director_uid"></i>-->
data-val="{$detail.director_uid}">{$detail.director_name}</span>
<!-- <i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}"-->
<!-- data-name="director_uid"></i>-->
<span class="font-gray" style="margin-left:32px">项目成员:</span>{$detail.team_admin_names}
</div>
<hr>
<div class="py-1">
<span class="font-gray">项目简介:</span>
<span id="content_{$detail.id}" data-val="{$detail.content}">{$detail.content}</span>
<!-- <i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}"-->
<!-- data-name="content"></i>-->
<!-- <i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}"-->
<!-- data-name="content"></i>-->
</div>
</div>
@@ -180,7 +195,7 @@
{neq name="$detail.status" value="4"}
<div class="layui-col-md6" style="margin-top:10px">
<span data-href="/project/index/editstep/id/{$detail.id}"
class="layui-btn layui-btn-normal layui-btn-sm open-a fr">编辑项目阶段</span>
class="layui-btn layui-btn-normal layui-btn-sm open-a fr">编辑项目阶段</span>
</div>
{/neq}
{/gt}
@@ -191,16 +206,16 @@
<span class="gray">当前阶段:</span>{$step.flow_name}
<span class="gray" style="margin-left:20px">负责人:</span>{$step.check_name}
<span class="gray" style="margin-left:20px">成员:</span>{$step.flow_names}
<!-- <span class="gray" style="margin-left:20px">周期:</span>{$step.start_time|time_format=###,'Y-m-d'}-->
<!-- 到 {$step.end_time|time_format=###,'Y-m-d'}-->
<!-- <span class="gray" style="margin-left:20px">周期:</span>{$step.start_time|time_format=###,'Y-m-d'}-->
<!-- 到 {$step.end_time|time_format=###,'Y-m-d'}-->
{eq name="$step.flow_uid" value="$login_user"}
{neq name="$detail.status" value="4"}
<div class="pt-3">
<span class="layui-btn layui-btn-normal layui-btn-sm" data-event="step"
data-check="1">确认</span>
data-check="1">确认</span>
{gt name="$detail.step_sort" value="0"}
<span class="layui-btn layui-btn-danger layui-btn-sm" data-event="step"
data-check="2">退回</span>
data-check="2">退回</span>
{/gt}
</div>
{/neq}
@@ -215,7 +230,7 @@
<i class="layui-icon layui-icon-time"></i>
{/gt}
{eq name="$vo.sort" value="$detail.step_sort"}
<!-- <i class="layui-icon layui-icon-username" data-on=""></i>-->
<!-- <i class="layui-icon layui-icon-username" data-on=""></i>-->
{/eq}
{lt name="$vo.sort" value="$detail.step_sort"}
<i class="layui-icon layui-icon-ok-circle" data-ok=""></i>
@@ -271,7 +286,7 @@
</div>
<div class="layui-col-md6" style="margin-top: 10px;">
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm fr"
style="margin-left: 10px" id="fileBtn">选择文件
style="margin-left: 10px" id="fileBtn">选择文件
</button>
<button type="button" class="layui-btn layui-btn-sm layui-btn-sm2 fr" id="test9">开始上传
</button>
@@ -288,11 +303,11 @@
</div>
<div class="file-tool">
<a href="{$vo.filepath}" download="{$vo.name}" data-id="{$vo.id}" target="_blank"
title="大小:{$vo.filesize/1048576|round=2}MB">
title="大小:{$vo.filesize/1048576|round=2}MB">
<i class="iconfont icon-shujudaoru" style="color: #12bb37;"></i>
</a>
<i class="btn-delete iconfont icon-shanchu" data-id="{$vo.id}"
style="color: #FF5722;"></i>
style="color: #FF5722;"></i>
</div>
</div>
</div>
@@ -319,36 +334,36 @@
<div class="layui-card-body">
<table class="layui-table">
<thead>
<tr>
<th width="50%">链接URL</th>
<th width="30%" style="text-align:center">链接说明</th>
<th width="10%" style="text-align:center">添加人</th>
<th width="10%" style="text-align:center">操作</th>
</tr>
<tr>
<th width="50%">链接URL</th>
<th width="30%" style="text-align:center">链接说明</th>
<th width="10%" style="text-align:center">添加人</th>
<th width="10%" style="text-align:center">操作</th>
</tr>
</thead>
<tbody id="linkList">
{volist name="link_array" id="vo"}
<tr>
<td><a href="{$vo.url}" target="_blank">{$vo.url}</a></td>
<td>{$vo.desc}</td>
<td style="text-align: center;">{$vo.admin_name}</td>
<td style="text-align: center;">
<div class="layui-btn-group" style="width:66px">
<button type="button" class="layui-btn layui-btn-xs link-edit"
{volist name="link_array" id="vo"}
<tr>
<td><a href="{$vo.url}" target="_blank">{$vo.url}</a></td>
<td>{$vo.desc}</td>
<td style="text-align: center;">{$vo.admin_name}</td>
<td style="text-align: center;">
<div class="layui-btn-group" style="width:66px">
<button type="button" class="layui-btn layui-btn-xs link-edit"
data-id="{$vo.id}" data-href="{$vo.url}" data-desc="{$vo.desc}"><i
class="layui-icon"></i></button>
<button type="button"
class="layui-icon"></i></button>
<button type="button"
class="layui-btn layui-btn-danger layui-btn-xs link-delete"
data-id="{$vo.id}"><i class="layui-icon"></i></button>
</div>
</td>
</tr>
{/volist}
{empty name="$link_array" }
<tr>
<td colspan="4" class="content-none">暂无链接</td>
</tr>
{/empty}
</div>
</td>
</tr>
{/volist}
{empty name="$link_array" }
<tr>
<td colspan="4" class="content-none">暂无链接</td>
</tr>
{/empty}
</tbody>
</table>
</div>
@@ -417,7 +432,7 @@
</div>
<div class="layui-card-body">
<div id="cross" class="data-none" style="width:100%; height:360px;"
data-tips="任务数:{$detail.tasks},已完成:{$detail.tasks_finish},未完成:{$detail.tasks_unfinish}">
data-tips="任务数:{$detail.tasks},已完成:{$detail.tasks_finish},未完成:{$detail.tasks_unfinish}">
</div>
</div>
</div>
@@ -467,7 +482,7 @@
if (deleteFilePaths) {
$.ajax({
url: basePath + 'deleteFile.do',
data: {deleteFilePaths: deleteFilePaths},
data: { deleteFilePaths: deleteFilePaths },
dataType: 'JSON',
Type: 'POST',
async: false,
@@ -551,71 +566,71 @@
var $ = layui.jquery
, upload = layui.upload
, uploadListIns = upload.render({
elem: '#testList'
, url: basePath + 'upload.do'
, data: {fileDir: fileDirIndex}
, accept: 'file'
, multiple: true
, auto: false
, bindAction: '#testListAction'
, choose: function (obj) {
files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function (index, file, result) {
var tr = $(['<tr id="upload-' + index + '">'
, '<td>' + file.name + '</td>'
, '<td>' + (file.size / 1024).toFixed(1) + 'kb</td>'
, '<td>等待上传</td>'
, '<td>'
, '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
, '<button class="layui-btn layui-btn-xs layui-btn-danger notUpload-delete">删除</button>'
, '</td>'
, '</tr>'].join(''));
elem: '#testList'
, url: basePath + 'upload.do'
, data: { fileDir: fileDirIndex }
, accept: 'file'
, multiple: true
, auto: false
, bindAction: '#testListAction'
, choose: function (obj) {
files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function (index, file, result) {
var tr = $(['<tr id="upload-' + index + '">'
, '<td>' + file.name + '</td>'
, '<td>' + (file.size / 1024).toFixed(1) + 'kb</td>'
, '<td>等待上传</td>'
, '<td>'
, '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
, '<button class="layui-btn layui-btn-xs layui-btn-danger notUpload-delete">删除</button>'
, '</td>'
, '</tr>'].join(''));
//单个重传
tr.find('.demo-reload').on('click', function () {
obj.upload(index, file);
});
//单个重传
tr.find('.demo-reload').on('click', function () {
obj.upload(index, file);
});
//删除
tr.find('.notUpload-delete').on('click', function () {
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
//删除
tr.find('.notUpload-delete').on('click', function () {
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
});
demoListView.append(tr);
});
demoListView.append(tr);
});
}
, allDone: function (obj) { //当文件全部被提交后,才触发
$("#" + id + "State").text("已上传");
layer.closeAll('page'); //关闭所有页面层
}
, done: function (res, index, upload) {
if (res.code == 0) { //上传成功
}
, allDone: function (obj) { //当文件全部被提交后,才触发
$("#" + id + "State").text("已上传");
layer.closeAll('page'); //关闭所有页面层
}
, done: function (res, index, upload) {
if (res.code == 0) { //上传成功
var tr = demoListView.find('tr#upload-' + index)
, tds = tr.children();
tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
tds.eq(3).html(''); //清空操作
//赋值给弹出框对应的input
var value = JSON.stringify(res);
if ($("#" + id).val() == '') {
$("#" + id).val(value);
} else {
$("#" + id).val($("#" + id).val() + ";" + value);
}
return delete this.files[index]; //删除文件队列已经上传成功的文件
}
this.error(index, upload);
}
, error: function (index, upload) {
var tr = demoListView.find('tr#upload-' + index)
, tds = tr.children();
tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
tds.eq(3).html(''); //清空操作
//赋值给弹出框对应的input
var value = JSON.stringify(res);
if ($("#" + id).val() == '') {
$("#" + id).val(value);
} else {
$("#" + id).val($("#" + id).val() + ";" + value);
}
return delete this.files[index]; //删除文件队列已经上传成功的文件
tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
this.error(index, upload);
}
, error: function (index, upload) {
var tr = demoListView.find('tr#upload-' + index)
, tds = tr.children();
tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
});
});
});
//添加已上传文件列表
@@ -655,10 +670,10 @@
var project_start_time = '{$detail.start_time| date="Y-m-d"}';
const opsData = {
status: [
{'id': 1, 'title': '未开始'},
{'id': 2, 'title': '进行中'},
{'id': 3, 'title': '已完成'},
{'id': 4, 'title': '已关闭'}
{ 'id': 1, 'title': '未开始' },
{ 'id': 2, 'title': '进行中' },
{ 'id': 3, 'title': '已完成' },
{ 'id': 4, 'title': '已关闭' }
]
}
@@ -698,8 +713,8 @@
show: false
},
data: [
{value: 1048, name: '待处理'},
{value: 735, name: '已完成'}
{ value: 1048, name: '待处理' },
{ value: 735, name: '已完成' }
]
}
]
@@ -748,13 +763,13 @@
color: "#ED6666",
}
},
{
value: 735,
name: '按时完成',
itemStyle: {
color: "#91CC75",
}
{
value: 735,
name: '按时完成',
itemStyle: {
color: "#91CC75",
}
}
]
}
]
@@ -782,11 +797,11 @@
radius: ['25%', '75%'],
center: ['60%', '50%'],
data: [
{value: 40, name: '待解决'},
{value: 38, name: '进行中'},
{value: 32, name: '已解决'},
{value: 28, name: '不解决'},
{value: 26, name: '已关闭'}
{ value: 40, name: '待解决' },
{ value: 38, name: '进行中' },
{ value: 32, name: '已解决' },
{ value: 28, name: '不解决' },
{ value: 26, name: '已关闭' }
]
}
]
@@ -897,7 +912,7 @@
itemStyle: {
borderWidth: 0.5
},
yearLabel: {show: false},
yearLabel: { show: false },
monthLabel: {
nameMap: 'cn',
fontSize: 12
@@ -962,7 +977,7 @@
itemStyle: {
borderWidth: 0.5
},
yearLabel: {show: false},
yearLabel: { show: false },
monthLabel: {
nameMap: 'cn',
fontSize: 12
@@ -1005,7 +1020,7 @@
data.push([this_date, 0]);
}
}
var res = {'range': rangeArray, 'data': data};
var res = { 'range': rangeArray, 'data': data };
return res;
}
@@ -1061,7 +1076,7 @@
yArray = tem_y_array.concat(yArray);
yArray2 = tem_y_array.concat(yArray2);
}
return {'x': xArray, 'y': yArray, 'y2': yArray2};
return { 'x': xArray, 'y': yArray, 'y2': yArray2 };
}
function cross_recursion(start, end, arr) {
@@ -1121,7 +1136,7 @@
}, 1000)
}
}
let postData = {id: id};
let postData = { id: id };
postData[name] = real_val;
tool.post("/project/index/edit", postData, callback);
}
@@ -1157,7 +1172,7 @@
$('#delProject').on('click', function () {
layer.confirm('确定要删除该项目吗?请慎重', {icon: 3, title: '提示'}, function (index) {
layer.confirm('确定要删除该项目吗?请慎重', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.closeAll();
layer.msg(e.msg);
@@ -1167,7 +1182,7 @@
}, 1000)
}
}
let postData = {"id": project_id};
let postData = { "id": project_id };
tool.delete("/project/index/delete", postData, callback);
});
})
@@ -1253,23 +1268,40 @@
</div>
<div class="layui-form-item" style="display:flex">
<div class="layui-inline" style="display:flex;align-items:center;justify-content:center;">
<label class="layui-form-label">开始时间</label>
<label class="layui-form-label">合同开始</label>
<div class="" style="width: 212px">
<input type="text" name="start_time" required lay-verify="required" placeholder="请输入开始时间" autocomplete="off"
<input type="text" name="start_time" placeholder="请输入开始时间" autocomplete="off"
class="layui-input" id="start_time" value="${new Date(detail.start_time * 1000).toLocaleDateString('en-CA')}"
onclick="layui.use('laydate', function(){ laydate({ elem: '#start_time', format: 'YYYY-MM-DD' }); })">
</div>
</div>
<div class="layui-inline" style="display:flex;align-items:center;justify-content:center;">
<label class="layui-form-label">结束时间</label>
<label class="layui-form-label">合同结束</label>
<div class="" style="width: 212px">
<input type="text" name="end_time" required lay-verify="required" placeholder="请输入结束时间" autocomplete="off"
<input type="text" name="end_time" placeholder="请输入结束时间" autocomplete="off"
class="layui-input" id="end_time" value="${formatLocalDate(detail.end_time)}"
onclick="layui.use('laydate', function(){ laydate({ elem: '#end_time', format: 'YYYY-MM-DD' }); })">
</div>
</div>
</div>
<div class="layui-form-item" style="display:flex">
<div class="layui-inline" style="display:flex;align-items:center;justify-content:center;">
<label class="layui-form-label">项目开始</label>
<div class="" style="width: 212px">
<input type="text" name="project_start_time" placeholder="请输入开始时间" autocomplete="off"
class="layui-input" id="project_start_time" value="${new Date(detail.project_start_time * 1000).toLocaleDateString('en-CA')}"
onclick="layui.use('laydate', function(){ laydate({ elem: '#project_start_time', format: 'YYYY-MM-DD' }); })">
</div>
</div>
<div class="layui-inline" style="display:flex;align-items:center;justify-content:center;">
<label class="layui-form-label">项目结束</label>
<div class="" style="width: 212px">
<input type="text" name="project_end_time" placeholder="请输入结束时间" autocomplete="off"
class="layui-input" id="project_end_time" value="${formatLocalDate(detail.project_end_time)}"
onclick="layui.use('laydate', function(){ laydate({ elem: '#project_end_time', format: 'YYYY-MM-DD' }); })">
</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">项目简介</label>
<div class="layui-input-block">
@@ -1290,6 +1322,8 @@
laydate.render({ elem: '#start_time', type: 'date', format: 'yyyy-MM-dd' });
laydate.render({ elem: '#end_time', type: 'date', format: 'yyyy-MM-dd' });
laydate.render({ elem: '#project_start_time', type: 'date', format: 'yyyy-MM-dd' });
laydate.render({ elem: '#project_end_time', type: 'date', format: 'yyyy-MM-dd' });
form.on('submit(saveProject)', function (data) {
$.ajax({
@@ -1339,11 +1373,11 @@
//关闭项目
$('#closeProject').on('click', function () {
layer.confirm('确定要关闭该项目吗?请慎重', {icon: 3, title: '提示'}, function (index) {
layer.confirm('确定要关闭该项目吗?请慎重', { icon: 3, title: '提示' }, function (index) {
$.ajax({
url: "/project/index/close",
type: "POST",
data: {"id": project_id},
data: { "id": project_id },
success: function (e) {
layer.closeAll();
layer.msg(e.msg);
@@ -1362,11 +1396,11 @@
//开启项目
$('#reopenProject').on('click', function () {
layer.confirm('确定要开启该项目吗?请慎重', {icon: 3, title: '提示'}, function (index) {
layer.confirm('确定要开启该项目吗?请慎重', { icon: 3, title: '提示' }, function (index) {
$.ajax({
url: "/project/index/open",
type: "POST", // 根据实际情况调整请求类型
data: {"id": project_id},
data: { "id": project_id },
success: function (e) {
layer.closeAll();
layer.msg(e.msg);
@@ -1416,11 +1450,11 @@
})
} else {
layer.confirm('确认已完成该阶段工作,进入下个阶段?', {
icon: 3,
title: '提示'
},
icon: 3,
title: '提示'
},
function (index) {
tool.post("/api/project/step_check", {id: project_id, check: check}, callback);
tool.post("/api/project/step_check", { id: project_id, check: check }, callback);
})
}
});
@@ -1434,7 +1468,7 @@
//,multiple: true
, bindAction: '#test9'
, before: function (obj) {
layer.msg('上传中...', {time: 3600000});
layer.msg('上传中...', { time: 3600000 });
}
, done: function (res, index, upload) {
let callback = function (e) {
@@ -1460,7 +1494,7 @@
$('#fileList').on('click', '.btn-delete', function () {
let id = $(this).data('id');
layer.confirm('确定要删除该附件吗?', {icon: 3, title: '提示'}, function (index) {
layer.confirm('确定要删除该附件吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.closeAll();
layer.msg(e.msg);
@@ -1468,7 +1502,7 @@
location.reload();
}, 2000)
}
let postData = {"id": id};
let postData = { "id": id };
tool.delete("/api/appendix/delete", postData, callback);
});
})
@@ -1484,7 +1518,7 @@
})
$('#linkList').on('click', '.link-delete', function () {
let id = $(this).data('id');
layer.confirm('确定要删除该链接吗?', {icon: 3, title: '提示'}, function (index) {
layer.confirm('确定要删除该链接吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.closeAll();
layer.msg(e.msg);
@@ -1492,7 +1526,7 @@
location.reload();
}, 2000)
}
let postData = {"id": id};
let postData = { "id": id };
tool.delete("/api/appendix/delete_link", postData, callback);
});
})
@@ -1510,8 +1544,8 @@
show: false
},
data: [
{value: res.data.task_pie.count - res.data.task_pie.count_ok, name: '待处理'},
{value: res.data.task_pie.count_ok, name: '已完成'}
{ value: res.data.task_pie.count - res.data.task_pie.count_ok, name: '待处理' },
{ value: res.data.task_pie.count_ok, name: '已完成' }
]
}
];
@@ -1534,13 +1568,13 @@
color: "#ED6666",
}
},
{
value: res.data.task_pie.count - res.data.task_pie.delay,
name: '按时完成',
itemStyle: {
color: "#91CC75",
}
{
value: res.data.task_pie.count - res.data.task_pie.delay,
name: '按时完成',
itemStyle: {
color: "#91CC75",
}
}
]
}
];
@@ -1553,11 +1587,11 @@
radius: ['25%', '75%'],
center: ['60%', '50%'],
data: [
{value: res.data.bug_status.status_a, name: '待解决'},
{value: res.data.bug_status.status_b, name: '进行中'},
{value: res.data.bug_status.status_c, name: '已解决'},
{value: res.data.bug_status.status_d, name: '不解决'},
{value: res.data.bug_status.status_e, name: '已关闭'}
{ value: res.data.bug_status.status_a, name: '待解决' },
{ value: res.data.bug_status.status_b, name: '进行中' },
{ value: res.data.bug_status.status_c, name: '已解决' },
{ value: res.data.bug_status.status_d, name: '不解决' },
{ value: res.data.bug_status.status_e, name: '已关闭' }
]
}
]
@@ -1588,7 +1622,7 @@
type: 'line',
showSymbol: false,
markLine: {
data: [{type: 'average', name: 'Avg'}],
data: [{ type: 'average', name: 'Avg' }],
},
lineStyle: {
width: 2
@@ -1603,7 +1637,7 @@
opacity: 0.1
},
markLine: {
data: [{type: 'average', name: 'Avg'}],
data: [{ type: 'average', name: 'Avg' }],
},
lineStyle: {
width: 2
@@ -1634,7 +1668,7 @@
}
}
}
tool.get('/api/project/get_chart_data', {'project_id': project_id}, callback);
tool.get('/api/project/get_chart_data', { 'project_id': project_id }, callback);
window.onresize = function () {
progressChart.resize();