更新命名问题

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
+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();