first commit

This commit is contained in:
2025-02-20 14:59:35 +08:00
parent d7be84fac6
commit d4a3bb8ffc
2541 changed files with 336536 additions and 0 deletions
@@ -0,0 +1,197 @@
<#function on_textarea(planTypeName, planRows)>
onpropertychange="resize(this)" onkeyup="resize(this)" oninput="resize(this)" ontextinput="resize(this)" placeholder="按下写${planTypeName},按回车键换行" data-rows="${planRows}" maxlength="512" spellcheck="false"
</#function>
<script>
Z.onload(function()
{
Z("textarea").each(function(textarea){
resize(textarea);
});
});
function resize(textarea)
{
var $textarea = Z(textarea);
var width = $textarea.offsetWidth();
var initNum = $textarea.attr("data-rows");
var lineNum = Z.textLineNum($textarea.val(), width, 14);
var currNum = (lineNum < initNum)?initNum:lineNum;
$textarea.css("height", 25 * currNum);
}
function doUpdatePersonSummary(type, date, content)
{//修改个人总结
var ajax = new Z.Ajax();
ajax.setClassName("ZpmPersonPresenter");
ajax.setMethodName("doUpdatePersonSummary");
ajax.addParam(type);
ajax.addParam(date);
ajax.addParam(content);
ajax.setFailureAlert();
//ajax.setSuccess(function(){Z.tips("保存成功");});
ajax.execute();
}
function doAddPersonPlan(beginDate)
{//增加计划空项
var hasEmpty = false;
var $textareas = Z("textarea[name=plan_"+beginDate+"]");
$textareas.each(function(textarea)
{
if (Z.V.isEmptyBlank(textarea.value))
{
hasEmpty = true;
return true;
}
});
if (hasEmpty)
{
Z.alert("请先把未填写的计划项填写完成再新增计划");
return;
}
var ajax = new Z.Ajax();
ajax.setClassName("ZpmPersonPresenter");
ajax.setMethodName("doAddPersonPlan");
ajax.addParam(beginDate);
ajax.addParam(0);
ajax.addParam("");
ajax.setFailureAlert();
ajax.setSuccess(function(){Z.L.reload();});
ajax.execute();
}
function doUpdatePersonPlan(id, date, content)
{//修改个人总结
var ajax = new Z.Ajax();
ajax.setClassName("ZpmPersonPresenter");
ajax.setMethodName("doUpdatePersonPlan");
ajax.addParam(id);
ajax.addParam(date);
ajax.addParam(content);
ajax.setFailureAlert();
//ajax.setSuccess(function(){Z.tips("保存成功");});
ajax.execute();
}
function doUpdatePersonPlanStatus(elem, id, date, status)
{//修改计划状态
var ajax = new Z.Ajax();
ajax.setClassName("ZpmPersonPresenter");
ajax.setMethodName("doUpdatePersonPlanStatus");
ajax.addParam(id);
ajax.addParam(date);
ajax.addParam(status);
ajax.setFailureAlert();
ajax.setSuccess(function()
{
var color = status==0?"#333":status==1?"green":status==2?"red":"gray";
Z(elem).parent().parent().siblings("td > textarea").css("color", color);
});
ajax.execute();
}
function doDeletePersonPlan(id, beginDate)
{//删除计划项
if (Z("textarea[name=plan_"+beginDate+"]").length <= 1)
{
Z.alert("工作计划最后一项不能删除");
return;
}
var ajax = new Z.Ajax();
ajax.setClassName("ZpmPersonPresenter");
ajax.setMethodName("doDeletePersonPlan");
ajax.addParam(id);
ajax.setFailureAlert();
ajax.setSuccess(function(){Z.L.reload();});
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb ("我的计划总结")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li class="z-active">我的计划总结</li>
<li onclick="Z.L.href('personReader.htm');">向我汇报的成员</li>
</ul>
</nav>
</div>
<table id="table" class="z-table zi-bd zi-bd-b-none z-bg-white z-pd6">
<tr class="z-h60">
<td width="200"><button class="z-button z-xlarge z-relative-left ${zmr_color_class}" onclick="Z.L.href('?prev=true&year=${year}&month=${month}');">上个月</button></td>
<td width="*" class="z-lh60 z-px18 z-text-center">我的&nbsp;[<span class="z-samp zi-px18">${year}</span>年<span class="z-samp zi-px18">${month}</span>月]&nbsp;计划和总结</td>
<td width="200"><button class="z-button z-xlarge z-relative-right ${zmr_color_class}" onclick="Z.L.href('?next=true&year=${year}&month=${month}');">下个月</button></td>
</tr>
</table>
<table id="table" class="z-table z-bordered z-bg-white z-pd6">
<#for item : weekList>
<tr class="z-text-center z-bg-gray z-h40">
<td width="125">日期</td>
<td width="84">名称</td>
<td width="*">计划总结项</td>
<td width="86">计划状态</td>
<td width="80"><button class="z-button z-h25 z-xsmall z-font z-add ${zmr_color_class}" onclick="doAddPersonPlan(${item.getKey().getBeginDate()});"></button></td>
</tr>
<!-- 周信息(含第一个计划) -->
<tr class="z-bordered z-h40" bgcolor="${zmr_tr_even_bgcolor}">
<td class="z-text-center" rowspan="${item.getRowSize()}" >
<span class="z-samp zi-px16">${item.getWeekBegin()}</span><br><br>至<br><br><span class="z-samp zi-px16">${item.getWeekEnd()}</span>
</td>
<td class="z-text-center">
<span class="z-round z-gray z-px12">1</span>
</td>
<td><textarea name="plan_${item.getKey().getBeginDate()}" class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" style="${item.getFirstPlan().getColor()}" ${on_textarea("本周计划", 1)} onchange="doUpdatePersonPlan(${item.getFirstPlan().getId()}, ${item.getKey().getBeginDate()}, this.value);">${item.getFirstPlan().getContent()}</textarea></td>
<td class="z-text-center">
<select class="z-select z-w80" data-role="z-select" data-class="${zmr_color_class}" onchange="doUpdatePersonPlanStatus(this, ${item.getFirstPlan().getId()}, ${item.getKey().getBeginDate()}, this.value);">
<option value="0" <#if item.getFirstPlan().getStatus() == 0>selected</#if>>正常</option>
<option value="1" <#if item.getFirstPlan().getStatus() == 1>selected</#if>>新增</option>
<option value="2" <#if item.getFirstPlan().getStatus() == 2>selected</#if>>延误</option>
<option value="3" <#if item.getFirstPlan().getStatus() == 3>selected</#if>>取消</option>
</select>
</td>
<td class="z-text-center"><button class="z-button z-h25 z-xsmall z-font z-delete z-red" onclick="doDeletePersonPlan(${item.getFirstPlan().getId()}, ${item.getKey().getBeginDate()});"></button></td>
</tr>
<!-- 周计划(除第一个计划) -->
<#for model : item.getPlanList()>
<#if model_index gt 0>
<tr class="z-bordered z-h40">
<td class="z-text-center zi-bd-l"><span class="z-round z-gray z-px12">${model_index+1}</span></td>
<td><textarea name="plan_${item.getKey().getBeginDate()}" class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" style="${model.getColor()}" ${on_textarea("本周计划", 1)} onchange="doUpdatePersonPlan(${model.getId()}, ${item.getKey().getBeginDate()}, this.value);">${model.getContent()}</textarea></td>
<td class="z-text-center">
<select class="z-select z-w80" data-role="z-select" data-class="${zmr_color_class}" onchange="doUpdatePersonPlanStatus(this, ${model.getId()}, ${item.getKey().getBeginDate()}, this.value);">
<option value="0" <#if model.getStatus() == 0>selected</#if>>正常</option>
<option value="1" <#if model.getStatus() == 1>selected</#if>>新增</option>
<option value="2" <#if model.getStatus() == 2>selected</#if>>延误</option>
<option value="3" <#if model.getStatus() == 3>selected</#if>>取消</option>
</select>
</td>
<td class="z-text-center"><button class="z-button z-h25 z-xsmall z-font z-delete z-red" onclick="doDeletePersonPlan(${model.getId()}, ${item.getKey().getBeginDate()});"></button></td>
</tr>
</#if>
</#for>
<!-- 日总结 -->
<#for model : item.getDayList()>
<tr class="z-bordered z-h40" bgcolor="${eventColor}">
<td class="z-text-center zi-bd-l">${model.getWeekString()}</td>
<td colspan="3"><textarea class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" ${on_textarea("每日总结", 1)} onchange="doUpdatePersonSummary(1, ${model.getDate()}, this.value);">${model.getContent()}</textarea></td>
</tr>
</#for>
<!-- 周总结 -->
<tr class="z-bordered" bgcolor="${zmr_tr_even_color}">
<td class="z-text-center zi-bd-l">周总结</td>
<td colspan="3"><textarea class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" ${on_textarea("本周总结", 5)} onchange="doUpdatePersonSummary(2, ${item.getWeek().getDate()}, this.value);">${item.getWeek().getContent()}</textarea></td>
</tr>
</#for>
<!-- 月总结 -->
<tr class="z-h120" bgcolor="${zmr_tr_even_color}">
<td class="z-text-center"><span class="z-samp zi-px18">${year}-${Strings.prefixZero(month, 2)}</span><br><br>月总结</td>
<td colspan="4"><textarea class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" ${on_textarea("本月总结", 7)} onchange="doUpdatePersonSummary(3, ${monthModel.getDate()}, this.value);">${monthModel.getContent()}</textarea></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,52 @@
<#def designatedPath="/zhiqim_plan/personMonth.htm"/>
<script>
function doDelete(e, operatorCode)
{//删除向我汇报的成员
Z.E.stop(e);
Z.confirm("恢复需要重新汇报,确定删除该汇报成员?", function()
{
var ajax = new Z.Ajax();
ajax.setClassName("ZpmPersonPresenter");
ajax.setMethodName("doDeleteOperator");
ajax.addParam(operatorCode);
ajax.setFailureAlert();
ajax.setSuccess(function(){Z.L.reload();});
ajax.execute();
});
}
</script>
${zhiqim_manager_breadcrumb ("向我汇报的成员")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li onclick="Z.L.href('personMonth.htm');">我的计划总结</li>
<li class="z-active">向我汇报的成员</li>
</ul>
</nav>
</div>
<#-- 列表 -->
<table class="z-table z-bordered z-pd5 z-bg-white z-text-center">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="20%">操作员头像</td>
<td width="20%">操作员编码</td>
<td width="*">操作员名称</td>
<td width="120">操作</td>
</tr>
${zhiqim_manager_tr_no_record(list, 4, "暂无向我汇报的成员")}
<#for item : list>
<tr class="z-pointer" ${zhiqim_manager_tr_onmouse()} onclick="Z.L.href('personReview.htm?operatorCode='+encodeURIComponent('${item.getOperatorCode()}'))">
<td><img src="${sessionUser.getAvatarUrl(item.getOperatorAvatar(), 50)}" class="z-w50 z-h50 z-bd-rd50p"></td>
<td>${item.getOperatorCode()}</td>
<td>${item.getOperatorName()}</td>
<td><button class="z-button z-h25 z-xsmall z-font z-delete z-red" title="删除" onclick="doDelete(event, '${item.getOperatorCode()}');"></button></td>
</tr>
</#for>
</table>
${zhiqim_manager_list(list.size())}
${zhiqim_manager_content_end()}
@@ -0,0 +1,104 @@
<#def designatedPath="/zhiqim_plan/personMonth.htm"/>
<#function on_textarea(planTypeName, planRows)>
rows="${planRows}" data-rows="${planRows}" spellcheck="false" readonly
</#function>
<script>
Z.onload(function()
{
Z("textarea").each(function(textarea){
resize(textarea);
});
});
function resize(textarea)
{
var $textarea = Z(textarea);
var width = $textarea.offsetWidth();
var initNum = $textarea.attr("data-rows");
var lineNum = Z.textLineNum($textarea.val(), width, 14);
$textarea.attr("rows", (lineNum < initNum)?initNum:lineNum);
}
</script>
${zhiqim_manager_breadcrumb ("我的计划总结")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li onclick="Z.L.href('personMonth.htm');">我的计划总结</li>
<li class="z-active zi-pointer" onclick="Z.L.href('personReader.htm');">向我汇报的成员</li>
</ul>
<div class="z-text-right z-mg-t10 z-mg-r5">
<button class="z-button ${zmr_color_class}" onclick="Z.L.href('personReader.htm');"><i class="z-font z-return"></i>返回向我汇报的成员</button>
</div>
</nav>
</div>
<table id="table" class="z-table zi-bd zi-bd-b-none z-bg-white z-pd6">
<tr class="z-h60">
<td width="200"><button class="z-button z-xlarge z-relative-left ${zmr_color_class}" onclick="Z.L.href('?prev=true&year=${year}&month=${month}&operatorCode='+encodeURIComponent('${operatorCode}'));">上个月</button></td>
<td width="*" class="z-lh60 z-px18 z-text-center">${operator.getOperatorName()}${operator.getOperatorCode()})的&nbsp;[<span class="z-samp zi-px18">${year}</span>年<span class="z-samp zi-px18">${month}</span>月]&nbsp;计划和总结</td>
<td width="200"><button class="z-button z-xlarge z-relative-right ${zmr_color_class}" onclick="Z.L.href('?next=true&year=${year}&month=${month}&operatorCode='+encodeURIComponent('${operatorCode}'));">下个月</button></td>
</tr>
</table>
<table id="table" class="z-table z-bordered z-bg-white z-pd6">
<#for item : weekList>
<tr class="z-text-center z-bg-gray z-h40">
<td width="125">日期</td>
<td width="84">名称</td>
<td width="*">计划总结项</td>
<td width="86">计划状态</td>
</tr>
<!-- 周信息(含第一个计划) -->
<tr class="z-bordered z-h40" bgcolor="${zmr_tr_even_bgcolor}">
<td class="z-text-center" rowspan="${item.getRowSize()}" >
<span class="z-samp zi-px16">${item.getWeekBegin()}</span><br><br>至<br><br><span class="z-samp zi-px16">${item.getWeekEnd()}</span>
</td>
<td class="z-text-center">
<span class="z-round z-gray z-px12">1</span>
</td>
<td><textarea name="plan_${item.getKey().getBeginDate()}" class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" style="${item.getFirstPlan().getColor()}" ${on_textarea("本周计划", 1)}>${item.getFirstPlan().getContent()}</textarea></td>
<td class="z-text-center">
<#if item.getFirstPlan().getStatus() == 0>正常</#if>
<#if item.getFirstPlan().getStatus() == 1><span class="z-color-green">新增</span></#if>
<#if item.getFirstPlan().getStatus() == 2><span class="z-color-red">延误</span></#if>
<#if item.getFirstPlan().getStatus() == 3><span class="z-color-333">取消</span></#if>
</select>
</td>
</tr>
<!-- 周计划(除第一个计划) -->
<#for model : item.getPlanList()>
<#if model_index gt 0>
<tr class="z-bordered z-h40">
<td class="z-text-center zi-bd-l"><span class="z-round z-gray z-px12">${model_index+1}</span></td>
<td><textarea name="plan_${item.getKey().getBeginDate()}" class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" style="${model.getColor()}" ${on_textarea("本周计划", 1)}>${model.getContent()}</textarea></td>
<td class="z-text-center">
<#if model.getStatus() == 0>正常</#if>
<#if model.getStatus() == 1><span class="z-color-green">新增</span></#if>
<#if model.getStatus() == 2><span class="z-color-red">延误</span></#if>
<#if model.getStatus() == 3><span class="z-color-333">取消</span></#if>
</td>
</tr>
</#if>
</#for>
<!-- 日总结 -->
<#for model : item.getDayList()>
<tr class="z-bordered z-h40" bgcolor="${eventColor}">
<td class="z-text-center zi-bd-l">${model.getWeekString()}</td>
<td colspan="2"><textarea class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" ${on_textarea("每日总结", 1)}>${model.getContent()}</textarea></td>
</tr>
</#for>
<!-- 周总结 -->
<tr class="z-bordered" bgcolor="${zmr_tr_even_color}">
<td class="z-text-center zi-bd-l">周总结</td>
<td colspan="2"><textarea class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" ${on_textarea("本周总结", 5)}>${item.getWeek().getContent()}</textarea></td>
</tr>
</#for>
<!-- 月总结 -->
<tr class="z-h120" bgcolor="${zmr_tr_even_color}">
<td class="z-text-center"><span class="z-samp zi-px18">${year}-${Strings.prefixZero(month, 2)}</span><br><br>月总结</td>
<td colspan="3"><textarea class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" ${on_textarea("本月总结", 7)}>${monthModel.getContent()}</textarea></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,72 @@
<script>
function doDelete(readerCode)
{//删除设置的汇报对象
var ajax = new Z.Ajax();
ajax.setClassName("ZpmPersonPresenter");
ajax.setMethodName("doDeleteReader");
ajax.addParam(readerCode);
ajax.setFailureAlert();
ajax.setSuccess(function(){Z.L.reload();});
ajax.execute();
}
function doSelectorDialog()
{
var dialog = new Z.Dialog();
dialog.title = "增加汇报对象";
dialog.url = "personSettingSelector.htm";
dialog.width = 392;
dialog.height = 423;
dialog.execute();
}
function doSelectorCallback(operatorCodes)
{
var ajax = new Z.Ajax();
ajax.setClassName("ZpmPersonPresenter");
ajax.setMethodName("doAddReaders");
ajax.addParam(operatorCodes);
ajax.setFailureAlert();
ajax.setSuccess(function(){Z.alert("增加成功",function(){Z.L.reload();});});
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb ("我的汇报设置")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li class="z-active">我的汇报设置</li>
<li onclick="Z.L.href('personReader.htm');">向我汇报的成员</li>
<li onclick="Z.L.href('personMonth.htm');">我的计划总结</li>
</ul>
<div class="z-text-right z-mg-t10 z-mg-r5">
<button class="z-button ${zmr_color_class}" onclick="doSelectorDialog()" ><i class="z-font z-add"></i>增加汇报对象</button>
</nav>
</div>
<#-- 列表 -->
<table class="z-table z-bordered z-pd5 z-bg-white z-text-center">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="20%">操作员头像</td>
<td width="20%">操作员编码</td>
<td width="*">操作员名称</td>
<td width="120">操作</td>
</tr>
<#if list.isEmpty()>
${zhiqim_manager_no_record(4, "暂未设置汇报对象")}
</#if>
<#for item : list>
<tr ${zhiqim_manager_tr_onmouse()}>
<td><img src="${sessionUser.getAvatarUrl(item.getReaderAvatar(), 50)}" class="z-w50 z-h50 z-bd-rd50p"></td>
<td>${item.getReaderCode()}</td>
<td>${item.getReaderName()}</td>
<td><button class="z-button z-h25 z-xsmall z-font z-delete z-red" title="删除" onclick="doDelete('${item.getReaderCode()}');"></button></td>
</tr>
</#for>
</table>
${zhiqim_manager_list(list.size())}
${zhiqim_manager_content_end()}
@@ -0,0 +1,47 @@
<script>
Z.onload(function()
{
Z(document.forms[0].operatorKey).focusEnd();
});
function doSelector()
{
var operatorCodes = Z.FM.getCheckeds("operatorCode");
parent.doSelectorCallback(operatorCodes);
}
</script>
<#-- 查询 -->
<div class="z-fixed z-t0 z-l0 z-w100p z-pd10 z-bg-gray">
<form method="post">
<input name="operatorKey" class="z-float-left z-input z-w300 zi-h35 zi-bd-r-none" placeholder="操作员编码或名称" value="${operatorKey}" maxlength="20">
<button type="submit" class="z-float-left z-button z-w70 z-h35 zi-bd-rd0 ${zmr_color_class}"><i class="z-font z-query"></i></button>
</form>
</div>
<#-- 列表 -->
<div class="z-w100p z-pd10 z-overflow-auto" style="margin-top:55px;height:306px;">
<table class="z-table z-bordered z-pd5 z-text-center">
<tr class="z-h40 z-bg-gray">
<td width="50"><input type="checkbox" data-role="z-checkbox" data-class="z-blue" onclick="Z.FM.doSelectCheckBox('operatorCode')"></td>
<td width="90">操作员头像</td>
<td width="110">操作员编码</td>
<td width="*">操作员姓名</td>
</tr>
${zhiqim_manager_tr_no_record(operatorList, 4, "没有可选择的操作员")}
<#for item : operatorList>
<tr class="z-pointer" ${zhiqim_manager_tr_onmouse()} ${zhiqim_manager_tr_click_checkbox()}>
<td><input name="operatorCode" type="checkbox" data-role="z-checkbox" data-class="z-blue" value="${item.getOperatorCode()}"></td>
<td><img src="${sessionUser.getAvatarUrl(item.getOperatorAvatar(), 50)}" class="z-w50 z-h50 z-bd-rd50p"></td>
<td>${item.getOperatorCode()}</td>
<td>${item.getOperatorName()}</td>
</tr>
</#for>
</table>
</div>
<#-- 操作 -->
<div class="z-fixed z-b0 z-l0 z-w100p z-h60 z-pd10 z-bg-gray z-text-center">
<button class="z-button z-large z-w150 ${zmr_color_class}" onclick="doSelector();">确定</button>
<button class="z-button z-large z-w70 z-mg-l10" onclick="parent.Z.Dialog.close(location.hash);">取消</button>
</div>
@@ -0,0 +1,196 @@
<#function on_textarea(planTypeName, planRows)>
onpropertychange="resize(this)" onkeyup="resize(this)" oninput="resize(this)" ontextinput="resize(this)" placeholder="按下写${planTypeName},按回车键换行" data-rows="${planRows}" maxlength="512" spellcheck="false"
</#function>
<script>
Z.onload(function()
{
Z("textarea").each(function(textarea){
resize(textarea);
});
});
function resize(textarea)
{
var $textarea = Z(textarea);
var width = $textarea.offsetWidth();
var initNum = $textarea.attr("data-rows");
var lineNum = Z.textLineNum($textarea.val(), width, 14);
var currNum = (lineNum < initNum)?initNum:lineNum;
$textarea.css("height", 25 * currNum);
}
function doUpdateProjectSummary(type, date, content)
{//修改项目总结
var ajax = new Z.Ajax();
ajax.setClassName("ZpmProjectPresenter");
ajax.setMethodName("doUpdateProjectSummary");
ajax.addParam(type);
ajax.addParam(date);
ajax.addParam(content);
ajax.setFailureAlert();
//ajax.setSuccess(function(){Z.tips("保存成功");});
ajax.execute();
}
function doAddProjectPlan(date)
{//增加计划空项
var hasEmpty = false;
var $textareas = Z("textarea[name=plan_"+date+"]");
$textareas.each(function(textarea)
{
if (Z.V.isEmptyBlank(textarea.value))
{
hasEmpty = true;
return true;
}
});
if (hasEmpty)
{
Z.alert("请先把未填写的计划项填写完成再新增计划");
return;
}
var ajax = new Z.Ajax();
ajax.setClassName("ZpmProjectPresenter");
ajax.setMethodName("doAddProjectPlan");
ajax.addParam(0);
ajax.addParam(date);
ajax.addParam("planContent");
ajax.addParam("");
ajax.setFailureAlert();
ajax.setSuccess(function(){Z.L.reload();});
ajax.execute();
}
function doUpdateProjectPlan(id, date, type, value)
{//修改项目总结
if (type == "planProgress")
{
if (!Z.V.isIntegerValue(value, 0, 100))
{
Z.alert("输入不正确,进度值在0-100之间");
return;
}
}
var ajax = new Z.Ajax();
ajax.setClassName("ZpmProjectPresenter");
ajax.setMethodName("doUpdateProjectPlan");
ajax.addParam(id);
ajax.addParam(date);
ajax.addParam(type);
ajax.addParam(value);
ajax.setFailureAlert();
//ajax.setSuccess(function(){Z.tips("保存成功");});
ajax.execute();
}
function doUpdateProjectPlanStatus(elem, id, date, status)
{//修改项目计划状态
var ajax = new Z.Ajax();
ajax.setClassName("ZpmProjectPresenter");
ajax.setMethodName("doUpdateProjectPlanStatus");
ajax.addParam(id);
ajax.addParam(date);
ajax.addParam(status);
ajax.setFailureAlert();
ajax.setSuccess(function()
{
var color = status==0?"#333":status==1?"green":status==2?"red":"gray";
Z(elem).parent().parent().siblings("td > textarea").css("color", color);
});
ajax.execute();
}
function doDeleteProjectPlan(id, date)
{//删除计划项
if (Z("textarea[name=plan_"+date+"]").length <= 1)
{
Z.alert("工作计划最后一项不能删除");
return;
}
var ajax = new Z.Ajax();
ajax.setClassName("ZpmProjectPresenter");
ajax.setMethodName("doDeleteProjectPlan");
ajax.addParam(id);
ajax.setFailureAlert();
ajax.setSuccess(function(){Z.L.reload();});
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb ("项目月度计划总结")}
${zhiqim_manager_content()}
<#-- 导航 -->
<div class="z-tabnav-main z-mg-b20 ${zmr_color_class}">
<nav>
<ul>
<li class="z-active">项目月度计划总结</li>
</ul>
</nav>
</div>
<table id="table" class="z-table zi-bd zi-bd-b-none z-bg-white z-pd6">
<tr class="z-h60">
<td width="200"><button class="z-button z-xlarge z-relative-left ${zmr_color_class}" onclick="Z.L.href('?prev=true&year=${year}&month=${month}');">上个月</button></td>
<td width="*" class="z-lh60 z-px18 z-text-center">${project.getProjectName()}&nbsp;[<span class="z-samp zi-px18">${year}</span>年<span class="z-samp zi-px18">${month}</span>月]&nbsp;计划总结</td>
<td width="200"><button class="z-button z-xlarge z-relative-right ${zmr_color_class}" onclick="Z.L.href('?next=true&year=${year}&month=${month}');">下个月</button></td>
</tr>
</table>
<table id="table" class="z-table z-bordered z-bg-white z-pd5">
<#for item : weekList>
<tr class="z-text-center z-bg-gray z-h40">
<td width="110">日期</td>
<td width="70">名称</td>
<td width="*">计划</td>
<td width="90">计划开始</td>
<td width="90">计划完成</td>
<td width="90">实际开始</td>
<td width="90">实际完成</td>
<td width="170">责任人</td>
<td width="76">完成进度</td>
<td width="86">计划状态</td>
<td width="50"><button class="z-button z-h25 z-xsmall z-font z-add ${zmr_color_class}" onclick="doAddProjectPlan(${item.getKey().getBeginDate()});"></button></td>
</tr>
<!-- 周信息&周目标 -->
<tr class="z-bordered z-h40" bgcolor="${zmr_tr_even_bgcolor}">
<td class="z-text-center z-lh150p" rowspan="${item.getRowSize()}"><span class="z-samp">${item.getWeekName()}</span><br>计划&总结</td>
<td class="z-text-center z-bg-purple">周目标</td>
<td colspan="9" class="z-bg-purple"><textarea class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25 z-bg-purple" ${on_textarea("本周目标", 1)} onchange="doUpdateProjectSummary(1, ${item.getWeekAim().getDate()}, this.value);">${item.getWeekAim().getContent()}</textarea></td>
</tr>
<!-- 周计划 -->
<#for model : item.getPlanList()>
<tr class="z-bordered z-h40">
<td class="z-text-center zi-bd-l"><span class="z-round z-gray z-px12">${model_index+1}</span></td>
<td><textarea name="plan_${item.getKey().getBeginDate()}" class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" style="${model.getColor()}" ${on_textarea("本周计划", 1)} onchange="doUpdateProjectPlan(${model.getId()}, ${item.getKey().getBeginDate()}, 'planContent', this.value);">${model.getContent()}</textarea></td>
<td><input class="z-w100p z-bd-none zi-pd0 zi-h30 zi-lh30 z-samp" maxlength="10" data-options="type:Date;paste:true;" value="${model.getPlanBeginDate()}" onchange="doUpdateProjectPlan(${model.getId()}, ${item.getKey().getBeginDate()}, 'planBeginDate', this.value);"></td>
<td><input class="z-w100p z-bd-none zi-pd0 zi-h30 zi-lh30 z-samp" maxlength="10" data-options="type:Date;paste:true;" value="${model.getPlanEndDate()}" onchange="doUpdateProjectPlan(${model.getId()}, ${item.getKey().getBeginDate()}, 'planEndDate', this.value);"></td>
<td><input class="z-w100p z-bd-none zi-pd0 zi-h30 zi-lh30 z-samp" maxlength="10" data-options="type:Date;paste:true;" value="${model.getActualBeginDate()}" onchange="doUpdateProjectPlan(${model.getId()}, ${item.getKey().getBeginDate()}, 'actualBeginDate', this.value);"></td>
<td><input class="z-w100p z-bd-none zi-pd0 zi-h30 zi-lh30 z-samp" maxlength="10" data-options="type:Date;paste:true;" value="${model.getActualEndDate()}" onchange="doUpdateProjectPlan(${model.getId()}, ${item.getKey().getBeginDate()}, 'actualEndDate', this.value);"></td>
<td><input class="z-w100p z-bd-none zi-pd0 zi-h30 zi-lh30" maxlength="15" value="${model.getPlanManager()}" onchange="doUpdateProjectPlan(${model.getId()}, ${item.getKey().getBeginDate()}, 'planManager', this.value);"></td>
<td><input class="z-w50 z-bd-none z-pd-r4 zi-h30 zi-lh30 z-samp z-text-right" data-options="type:Integer;paste:true;" value="${model.getPlanProgress()}" maxlength="3" onchange="doUpdateProjectPlan(${model.getId()}, ${item.getKey().getBeginDate()}, 'planProgress', this.value);">%</td>
<td class="z-text-center">
<select class="z-select z-w80" data-role="z-select" data-class="${zmr_color_class}" onchange="doUpdateProjectPlanStatus(this, ${model.getId()}, ${item.getKey().getBeginDate()}, this.value);">
<option value="0" <#if model.getPlanStatus() == 0>selected</#if>>正常</option>
<option value="1" <#if model.getPlanStatus() == 1>selected</#if>>新增</option>
<option value="2" <#if model.getPlanStatus() == 2>selected</#if>>延误</option>
<option value="3" <#if model.getPlanStatus() == 3>selected</#if>>取消</option>
</select>
</td>
<td class="z-text-center"><button class="z-button z-h25 z-xsmall z-font z-delete z-red" onclick="doDeleteProjectPlan(${model.getId()}, ${item.getKey().getBeginDate()});"></button></td>
</tr>
</#for>
<!-- 周总结 -->
<tr class="z-bordered" bgcolor="${zmr_tr_even_color}">
<td class="z-text-center zi-bd-l">周总结</td>
<td colspan="9"><textarea class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" ${on_textarea("本周总结", 3)} onchange="doUpdateProjectSummary(2, ${item.getWeekSummary().getDate()}, this.value);">${item.getWeekSummary().getContent()}</textarea></td>
</tr>
</#for>
<!-- 月总结 -->
<tr class="z-h120" bgcolor="${zmr_tr_even_color}">
<td class="z-text-center"><span class="z-samp zi-px18">${year}-${Strings.prefixZero(month, 2)}</span><br><br>月总结</td>
<td colspan="10"><textarea class="z-w100p z-bd-none zi-pd0 z-overflow-hidden z-lh25" ${on_textarea("本月总结", 6)} onchange="doUpdateProjectSummary(3, ${monthModel.getDate()}, this.value);">${monthModel.getContent()}</textarea></td>
</tr>
</table>
${zhiqim_manager_content_end()}