2、流程审批中审批人加签后加签人如没有做审批动作,审批人可以撤销审核 3、流程中撤销审核按键在后面的审批人操作以后不在作显示中职版本
@@ -44,6 +44,15 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 指定接收人表单页 | |||
/// </summary> | |||
/// <returns></returns> | |||
[HttpGet] | |||
public ActionResult SpecifyReceiverForm() | |||
{ | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 主页面【党政公文查阅】 | |||
/// </summary> | |||
/// <returns></returns> | |||
@@ -211,6 +220,22 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
sys_ReceiveFileIBLL.SaveEntity(keyValue, entity); | |||
return Success("保存成功!"); | |||
} | |||
/// <summary> | |||
/// 保存实体数据(新增、修改) | |||
/// <param name="keyValue">主键</param> | |||
/// <summary> | |||
/// <returns></returns> | |||
[HttpPost] | |||
[ValidateAntiForgeryToken] | |||
[AjaxOnly] | |||
public ActionResult Issue(string strEntity) | |||
{ | |||
Sys_IssueEntity entity = strEntity.ToObject<Sys_IssueEntity>(); | |||
sys_ReceiveFileIBLL.Issue(entity); | |||
return Success("保存成功!"); | |||
} | |||
/// <summary> | |||
/// 查看实体数据 | |||
/// <param name="keyValue">主键</param> | |||
@@ -30,12 +30,22 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
[HttpGet] | |||
public ActionResult Index() | |||
{ | |||
return View(); | |||
return View(); | |||
} | |||
[HttpGet] | |||
public ActionResult IndexDocument() | |||
{ | |||
return View(); | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 公文下发表单页 | |||
/// </summary> | |||
/// <returns></returns> | |||
[HttpGet] | |||
public ActionResult IssueForm() | |||
{ | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 主页面【党政公文下发】 | |||
@@ -49,7 +59,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
[HttpGet] | |||
public ActionResult FormDocument() | |||
{ | |||
return View(); | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 表单页 | |||
@@ -58,7 +68,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
[HttpGet] | |||
public ActionResult Form() | |||
{ | |||
return View(); | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 表单页【党政公文下发】 | |||
@@ -73,13 +83,13 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
[HttpGet] | |||
public ActionResult FormView() | |||
{ | |||
return View(); | |||
return View(); | |||
} | |||
[HttpGet] | |||
public ActionResult FormDocumentView() | |||
{ | |||
return View(); | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 【党政公文下发】 | |||
@@ -93,7 +103,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
[HttpGet] | |||
public ActionResult ReadList() | |||
{ | |||
return View(); | |||
return View(); | |||
} | |||
[HttpGet] | |||
@@ -124,7 +134,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
public ActionResult GetPageList(string pagination, string queryJson) | |||
{ | |||
Pagination paginationobj = pagination.ToObject<Pagination>(); | |||
var data = sys_SendFileIBLL.GetPageList(paginationobj, queryJson).Where(m=>m.STypeId==1); | |||
var data = sys_SendFileIBLL.GetPageList(paginationobj, queryJson).Where(m => m.STypeId == 1); | |||
var jsonData = new | |||
{ | |||
rows = data, | |||
@@ -172,9 +182,10 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
[AjaxOnly] | |||
public ActionResult GetFormData(string keyValue) | |||
{ | |||
var Sys_SendFileData = sys_SendFileIBLL.GetSys_SendFileEntity( keyValue ); | |||
var Sys_SendFileData = sys_SendFileIBLL.GetSys_SendFileEntity(keyValue); | |||
Sys_SendFileData.Contents = HttpUtility.HtmlDecode(Sys_SendFileData.Contents); | |||
var jsonData = new { | |||
var jsonData = new | |||
{ | |||
Sys_SendFile = Sys_SendFileData, | |||
}; | |||
return Success(jsonData); | |||
@@ -199,8 +210,9 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
[AjaxOnly] | |||
public ActionResult GetFormDataByProcessId(string processId) | |||
{ | |||
var Sys_SendFileData = sys_SendFileIBLL.GetEntityByProcessId( processId ); | |||
var jsonData = new { | |||
var Sys_SendFileData = sys_SendFileIBLL.GetEntityByProcessId(processId); | |||
var jsonData = new | |||
{ | |||
Sys_SendFile = Sys_SendFileData, | |||
}; | |||
return Success(jsonData); | |||
@@ -233,12 +245,11 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
public ActionResult SaveForm(string keyValue, string strEntity) | |||
{ | |||
Sys_SendFileEntity entity = strEntity.ToObject<Sys_SendFileEntity>(); | |||
entity.DelFlag = false; | |||
entity.SendFlag = 0; | |||
entity.SenderId = LoginUserInfo.Get().userId; | |||
entity.Sender = LoginUserInfo.Get().realName; | |||
entity.STypeId = 1; | |||
sys_SendFileIBLL.SaveEntity(keyValue,entity); | |||
if (string.IsNullOrEmpty(keyValue)) | |||
{ | |||
entity.STypeId = 1; | |||
} | |||
sys_SendFileIBLL.SaveEntity(keyValue, entity); | |||
return Success("保存成功!"); | |||
} | |||
@@ -249,12 +260,11 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
public ActionResult SaveFormDocument(string keyValue, string strEntity) | |||
{ | |||
Sys_SendFileEntity entity = strEntity.ToObject<Sys_SendFileEntity>(); | |||
entity.DelFlag = false; | |||
entity.SendFlag = 0; | |||
entity.SenderId = LoginUserInfo.Get().userId; | |||
entity.Sender = LoginUserInfo.Get().realName; | |||
entity.STypeId = 2; | |||
sys_SendFileIBLL.SaveEntity(keyValue,entity); | |||
if (string.IsNullOrEmpty(keyValue)) | |||
{ | |||
entity.STypeId = 2; | |||
} | |||
sys_SendFileIBLL.SaveEntity(keyValue, entity); | |||
return Success("保存成功!"); | |||
} | |||
@@ -265,11 +275,10 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
public ActionResult SaveFormParty(string keyValue, string strEntity) | |||
{ | |||
Sys_SendFileEntity entity = strEntity.ToObject<Sys_SendFileEntity>(); | |||
entity.DelFlag = false; | |||
entity.SendFlag = 0; | |||
entity.SenderId = LoginUserInfo.Get().userId; | |||
entity.Sender = LoginUserInfo.Get().realName; | |||
entity.STypeId = 3; | |||
if (string.IsNullOrEmpty(keyValue)) | |||
{ | |||
entity.STypeId = 3; | |||
} | |||
sys_SendFileIBLL.SaveEntity(keyValue, entity); | |||
return Success("保存成功!"); | |||
} | |||
@@ -291,9 +300,22 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
{ | |||
string guid = Guid.NewGuid().ToString(); | |||
sys_SendFileIBLL.ChangeStatusById(keyValue, 2, guid); | |||
sys_SendFileIBLL.ChangeStatusByProcessId(guid,2); | |||
sys_SendFileIBLL.ChangeStatusByProcessId(guid, 2); | |||
return Success("操作成功!"); | |||
} | |||
/// <summary> | |||
/// 结束下发 | |||
/// </summary> | |||
/// <param name="keyValue"></param> | |||
/// <returns></returns> | |||
[HttpPost] | |||
[AjaxOnly] | |||
public ActionResult OverIssue(string keyValue) | |||
{ | |||
string guid = Guid.NewGuid().ToString(); | |||
sys_SendFileIBLL.OverIssue(keyValue); | |||
return Success("下发成功!"); | |||
} | |||
#endregion | |||
} | |||
@@ -27,6 +27,7 @@ | |||
</div> | |||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | |||
<a id="lr_Read" class="btn btn-default"><i class="fa fa-plus"></i> 查阅</a> | |||
<a id="lr_SpecifyReceiver" class="btn btn-default"><i class="fa fa-plus"></i> 指定接收人</a> | |||
<a id="lr_delete" class="btn btn-default"><i class="fa fa-trash-o"></i> 删除</a> | |||
</div> | |||
</div> | |||
@@ -79,6 +79,22 @@ var bootstrap = function ($, learun) { | |||
}); | |||
} | |||
}); | |||
// 指定接收人 | |||
$('#lr_SpecifyReceiver').on('click', function () { | |||
var keyValue = $('#gridtable').jfGridValue('RFileId'); | |||
if (learun.checkrow(keyValue)) { | |||
learun.layerForm({ | |||
id: 'formSys_ReceiveFile', | |||
title: '指定接收人', | |||
url: top.$.rootUrl + '/EducationalAdministration/Sys_ReceiveFile/SpecifyReceiverForm?keyValue=' + keyValue, | |||
width: 600, | |||
height: 400, | |||
callBack: function (id) { | |||
return top[id].acceptClick(refreshGirdData); | |||
} | |||
}); | |||
} | |||
}); | |||
// 删除 | |||
$('#lr_delete').on('click', function () { | |||
var keyValue = $('#gridtable').jfGridValue('RFileId'); | |||
@@ -152,6 +168,30 @@ var bootstrap = function ($, learun) { | |||
}); | |||
} | |||
}, | |||
{ | |||
label: "指定接收人", name: "SpecifyReceiver", width: 150, align: "left", formatterAsync: | |||
function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('user', | |||
{ | |||
key: value, | |||
callback: function (_data) { | |||
if (_data.length > 0) { | |||
var text = ''; | |||
$.each(_data, | |||
function (i, item) { | |||
if (item) { | |||
text += item.name + ','; | |||
} | |||
}); | |||
text = text.substring(0, text.lastIndexOf(',')); | |||
callback(text); | |||
} else { | |||
callback(_data.name); | |||
} | |||
} | |||
}); | |||
} | |||
}, | |||
{ | |||
label: "状态", name: "ReadFlag", width: 100, align: "left", | |||
formatter: function (cellvalue, row) { | |||
@@ -0,0 +1,11 @@ | |||
@{ | |||
ViewBag.Title = "公文收发"; | |||
Layout = "~/Views/Shared/_Form.cshtml"; | |||
} | |||
<div class="lr-form-wrap"> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_ReceiveFile"> | |||
<div class="lr-form-item-title">发送人</div> | |||
<div id="SpecifyReceiver" class="form-control"></div> | |||
</div> | |||
</div> | |||
@Html.AppendJsFile("/Areas/EducationalAdministration/Views/Sys_ReceiveFile/SpecifyReceiverForm.js") |
@@ -0,0 +1,54 @@ | |||
/* * 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园(http://www.learun.cn) | |||
* Copyright (c) 2013-2018 北京泉江科技有限公司 | |||
* 创建人:超级管理员 | |||
* 日 期:2019-04-11 10:08 | |||
* 描 述:公文收发 | |||
*/ | |||
var acceptClick; | |||
var keyValue = request('keyValue'); | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var selectedRow = learun.frameTab.currentIframe().selectedRow; | |||
var page = { | |||
init: function () { | |||
$('.lr-form-wrap').lrscroll(); | |||
page.bind(); | |||
page.initData(); | |||
}, | |||
bind: function () { | |||
$('#SpecifyReceiver').lrUserSelect({ type: '1' }); | |||
}, | |||
initData: function () { | |||
if (!!keyValue) { | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/Sys_ReceiveFile/GetFormData?keyValue=' + keyValue, function (data) { | |||
for (var id in data) { | |||
if (!!data[id].length && data[id].length > 0) { | |||
$('#' + id).jfGridSet('refreshdata', data[id]); | |||
} | |||
else { | |||
$('[data-table="' + id + '"]').lrSetFormData(data[id]); | |||
$('#Contents').html(data[id].Contents); | |||
} | |||
} | |||
$("#lrUploader_uploadBtn_Url").hide(); | |||
}); | |||
} | |||
} | |||
}; | |||
// 保存数据 | |||
acceptClick = function (callBack) { | |||
if (!$('body').lrValidform()) { | |||
return false; | |||
} | |||
var postData = { | |||
strEntity: JSON.stringify($('body').lrGetFormData()) | |||
}; | |||
$.lrSaveForm(top.$.rootUrl + '/EducationalAdministration/Sys_ReceiveFile/SaveForm?keyValue=' + keyValue, postData, function (res) { | |||
// 保存成功后才回调 | |||
if (!!callBack) { | |||
callBack(); | |||
} | |||
}); | |||
}; | |||
page.init(); | |||
} |
@@ -7,26 +7,14 @@ | |||
<div class="lr-form-item-title">主题<font face="宋体">*</font></div> | |||
<input id="Title" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" > | |||
<div class="lr-form-item-title">接收对象<font face="宋体">*</font></div> | |||
<div id="SendType" isvalid="yes" checkexpession="NotNull" ></div> | |||
@*<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" id="ReceiverIddiv"> | |||
<div class="lr-form-item-title">已接收人<font face="宋体">*</font></div> | |||
<div id="ReceiverId" ></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" id="ReceiverIddiv"> | |||
<div class="lr-form-item-title">接收人<font face="宋体">*</font></div> | |||
<div id="ReceiverUserId" ></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" id="DeptIddiv"> | |||
<div class="lr-form-item-title">接收部门<font face="宋体">*</font></div> | |||
<div id="DeptId" ></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" id="PostIddiv"> | |||
<div class="lr-form-item-title">接收岗位<font face="宋体">*</font></div> | |||
<div id="PostId" ></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" id="CompanyIddiv"> | |||
<div class="lr-form-item-title">接收校区<font face="宋体">*</font></div> | |||
<div id="CompanyId" ></div> | |||
</div> | |||
<div class="lr-form-item-title">未接收人<font face="宋体">*</font></div> | |||
<div id="NoReceiver" ></div> | |||
</div>*@ | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" > | |||
<div class="lr-form-item-title">文件</div> | |||
<div id="Url" ></div> | |||
@@ -26,70 +26,8 @@ var bootstrap = function ($, learun) { | |||
page.initData(); | |||
}, | |||
bind: function () { | |||
$('#CompanyId').lrCompanySelect({ type: 'multiple' }); | |||
$('#DeptId').lrDepartmentSelect({ type: 'treemultiple' }); | |||
$('#PostId').lrPostSelect({ type: 'treemultiple' }); | |||
$('#ReceiverUserId').lrUserSelect({ type: '1' }); | |||
$('#SendType').lrDataItemSelect({ | |||
code: 'FileSendType', select: function (item) { | |||
if (item != null && item != undefined) { | |||
if (item.id === 1 || item.id === "1") { | |||
$("#CompanyIddiv").show(); | |||
$("#CompanyId").attr("isvalid", "yes"); | |||
$("#CompanyId").attr("checkexpession", "NotNull"); | |||
$("#DeptIddiv").hide(); | |||
$("#DeptId").removeAttr("isvalid"); | |||
$("#DeptId").removeAttr("NotNull"); | |||
$("#ReceiverIddiv").hide(); | |||
$("#ReceiverUserId").removeAttr("isvalid"); | |||
$("#ReceiverUserId").removeAttr("NotNull"); | |||
$("#PostIddiv").hide(); | |||
$("#PostId").removeAttr("isvalid"); | |||
$("#PostId").removeAttr("NotNull"); | |||
} else if (item.id === 2 || item.id === "2") { | |||
$("#CompanyIddiv").hide(); | |||
$("#CompanyId").removeAttr("isvalid"); | |||
$("#CompanyId").removeAttr("NotNull"); | |||
$("#DeptIddiv").show(); | |||
$("#DeptId").attr("isvalid", "yes"); | |||
$("#DeptId").attr("checkexpession", "NotNull"); | |||
$("#ReceiverIddiv").hide(); | |||
$("#ReceiverUserId").removeAttr("isvalid"); | |||
$("#ReceiverUserId").removeAttr("NotNull"); | |||
$("#PostIddiv").hide(); | |||
$("#PostId").removeAttr("isvalid"); | |||
$("#PostId").removeAttr("NotNull"); | |||
} else if (item.id === 3 || item.id === "3") { | |||
$("#CompanyIddiv").hide(); | |||
$("#CompanyId").removeAttr("isvalid"); | |||
$("#CompanyId").removeAttr("NotNull"); | |||
$("#DeptIddiv").hide(); | |||
$("#DeptId").removeAttr("isvalid"); | |||
$("#DeptId").removeAttr("NotNull"); | |||
$("#ReceiverIddiv").hide(); | |||
$("#ReceiverUserId").removeAttr("isvalid"); | |||
$("#ReceiverUserId").removeAttr("NotNull"); | |||
$("#PostIddiv").show(); | |||
$("#PostId").attr("isvalid", "yes"); | |||
$("#PostId").attr("checkexpession", "NotNull"); | |||
} else { | |||
$("#CompanyIddiv").hide(); | |||
$("#CompanyId").removeAttr("isvalid"); | |||
$("#CompanyId").removeAttr("NotNull"); | |||
$("#DeptIddiv").hide(); | |||
$("#DeptId").removeAttr("isvalid"); | |||
$("#DeptId").removeAttr("NotNull"); | |||
$("#ReceiverIddiv").show(); | |||
$("#ReceiverUserId").attr("isvalid", "yes"); | |||
$("#ReceiverUserId").attr("checkexpession", "NotNull"); | |||
$("#PostIddiv").hide(); | |||
$("#PostId").removeAttr("isvalid"); | |||
$("#PostId").removeAttr("NotNull"); | |||
} | |||
} | |||
} | |||
}); | |||
$('#SendType').lrselectSet("1"); | |||
//$('#ReceiverId').lrUserSelect({ type: '1' }); | |||
//$('#NoReceiver').lrUserSelect({ type: '1' }); | |||
$('#Url').lrUploader(); | |||
var ContentsUE = UE.getEditor('Contents'); | |||
$('#Contents')[0].ue = ContentsUE; | |||
@@ -103,63 +41,6 @@ var bootstrap = function ($, learun) { | |||
} | |||
else { | |||
$('[data-table="' + id + '"]').lrSetFormData(data[id]); | |||
if (data[id].SendType === 1 || data[id].SendType == "1") { | |||
$("#CompanyIddiv").show(); | |||
$("#CompanyId").attr("isvalid", "yes"); | |||
$("#CompanyId").attr("checkexpession", "NotNull"); | |||
$("#DeptIddiv").hide(); | |||
$("#DeptId").removeAttr("isvalid"); | |||
$("#DeptId").removeAttr("NotNull"); | |||
$("#ReceiverIddiv").hide(); | |||
$("#ReceiverUserId").removeAttr("isvalid"); | |||
$("#ReceiverUserId").removeAttr("NotNull"); | |||
$("#PostIddiv").hide(); | |||
$("#PostId").removeAttr("isvalid"); | |||
$("#PostId").removeAttr("NotNull"); | |||
$("#CompanyId").lrselectSet(data[id].ReceiverId); | |||
} else if (data[id].SendType === 2 || data[id].SendType == "2") { | |||
$("#CompanyIddiv").hide(); | |||
$("#CompanyId").removeAttr("isvalid"); | |||
$("#CompanyId").removeAttr("NotNull"); | |||
$("#DeptIddiv").show(); | |||
$("#DeptId").attr("isvalid", "yes"); | |||
$("#DeptId").attr("checkexpession", "NotNull"); | |||
$("#ReceiverIddiv").hide(); | |||
$("#ReceiverUserId").removeAttr("isvalid"); | |||
$("#ReceiverUserId").removeAttr("NotNull"); | |||
$("#PostIddiv").hide(); | |||
$("#PostId").removeAttr("isvalid"); | |||
$("#PostId").removeAttr("NotNull"); | |||
$("#DeptId").lrselectSet(data[id].ReceiverId); | |||
} else if (data[id].SendType === 3 || data[id].SendType === "3") { | |||
$("#CompanyIddiv").hide(); | |||
$("#CompanyId").removeAttr("isvalid"); | |||
$("#CompanyId").removeAttr("NotNull"); | |||
$("#DeptIddiv").hide(); | |||
$("#DeptId").removeAttr("isvalid"); | |||
$("#DeptId").removeAttr("NotNull"); | |||
$("#ReceiverIddiv").hide(); | |||
$("#ReceiverUserId").removeAttr("isvalid"); | |||
$("#ReceiverUserId").removeAttr("NotNull"); | |||
$("#PostIddiv").show(); | |||
$("#PostId").attr("isvalid", "yes"); | |||
$("#PostId").attr("checkexpession", "NotNull"); | |||
$("#PostId").lrselectSet(data[id].ReceiverId); | |||
} else { | |||
$("#CompanyIddiv").hide(); | |||
$("#CompanyId").removeAttr("isvalid"); | |||
$("#CompanyId").removeAttr("NotNull"); | |||
$("#DeptIddiv").hide(); | |||
$("#DeptId").removeAttr("isvalid"); | |||
$("#DeptId").removeAttr("NotNull"); | |||
$("#ReceiverIddiv").show(); | |||
$("#ReceiverUserId").attr("isvalid", "yes"); | |||
$("#ReceiverUserId").attr("checkexpession", "NotNull"); | |||
$("#PostIddiv").hide(); | |||
$("#PostId").removeAttr("isvalid"); | |||
$("#PostId").removeAttr("NotNull"); | |||
$("#ReceiverUserId").lrformselectSet(data[id].ReceiverId); | |||
} | |||
} | |||
} | |||
@@ -180,63 +61,6 @@ var bootstrap = function ($, learun) { | |||
keyValue = data[id].SFileId; | |||
} | |||
$('[data-table="' + id + '"]').lrSetFormData(data[id]); | |||
if (data[id].SendType === 1 || data[id].SendType == "1") { | |||
$("#CompanyIddiv").show(); | |||
$("#CompanyId").attr("isvalid", "yes"); | |||
$("#CompanyId").attr("checkexpession", "NotNull"); | |||
$("#DeptIddiv").hide(); | |||
$("#DeptId").removeAttr("isvalid"); | |||
$("#DeptId").removeAttr("NotNull"); | |||
$("#ReceiverIddiv").hide(); | |||
$("#ReceiverUserId").removeAttr("isvalid"); | |||
$("#ReceiverUserId").removeAttr("NotNull"); | |||
$("#PostIddiv").hide(); | |||
$("#PostId").removeAttr("isvalid"); | |||
$("#PostId").removeAttr("NotNull"); | |||
$("#CompanyId").lrselectSet(data[id].ReceiverId); | |||
} else if (data[id].SendType === 2 || data[id].SendType == "2") { | |||
$("#CompanyIddiv").hide(); | |||
$("#CompanyId").removeAttr("isvalid"); | |||
$("#CompanyId").removeAttr("NotNull"); | |||
$("#DeptIddiv").show(); | |||
$("#DeptId").attr("isvalid", "yes"); | |||
$("#DeptId").attr("checkexpession", "NotNull"); | |||
$("#ReceiverIddiv").hide(); | |||
$("#ReceiverUserId").removeAttr("isvalid"); | |||
$("#ReceiverUserId").removeAttr("NotNull"); | |||
$("#PostIddiv").hide(); | |||
$("#PostId").removeAttr("isvalid"); | |||
$("#PostId").removeAttr("NotNull"); | |||
$("#DeptId").lrselectSet(data[id].ReceiverId); | |||
} else if (data[id].SendType === 3 || data[id].SendType === "3") { | |||
$("#CompanyIddiv").hide(); | |||
$("#CompanyId").removeAttr("isvalid"); | |||
$("#CompanyId").removeAttr("NotNull"); | |||
$("#DeptIddiv").hide(); | |||
$("#DeptId").removeAttr("isvalid"); | |||
$("#DeptId").removeAttr("NotNull"); | |||
$("#ReceiverIddiv").hide(); | |||
$("#ReceiverUserId").removeAttr("isvalid"); | |||
$("#ReceiverUserId").removeAttr("NotNull"); | |||
$("#PostIddiv").show(); | |||
$("#PostId").attr("isvalid", "yes"); | |||
$("#PostId").attr("checkexpession", "NotNull"); | |||
$("#PostId").lrselectSet(data[id].ReceiverId); | |||
} else { | |||
$("#CompanyIddiv").hide(); | |||
$("#CompanyId").removeAttr("isvalid"); | |||
$("#CompanyId").removeAttr("NotNull"); | |||
$("#DeptIddiv").hide(); | |||
$("#DeptId").removeAttr("isvalid"); | |||
$("#DeptId").removeAttr("NotNull"); | |||
$("#ReceiverIddiv").show(); | |||
$("#ReceiverUserId").attr("isvalid", "yes"); | |||
$("#ReceiverUserId").attr("checkexpession", "NotNull"); | |||
$("#PostIddiv").hide(); | |||
$("#PostId").removeAttr("isvalid"); | |||
$("#PostId").removeAttr("NotNull"); | |||
$("#ReceiverUserId").lrformselectSet(data[id].ReceiverId); | |||
} | |||
} | |||
} | |||
}); | |||
@@ -252,20 +76,6 @@ var bootstrap = function ($, learun) { | |||
// 保存数据 | |||
save = function (processId, callBack, i) { | |||
var formData = $('body').lrGetFormData(); | |||
var sendtype = $('#SendType').lrselectGet(); | |||
if (sendtype == "1") { | |||
formData.ReceiverId = $("#CompanyId").lrselectGet(); | |||
formData.Receiver = $("#CompanyId").find(".lr-select-placeholder").text(); | |||
} else if (sendtype == "2") { | |||
formData.ReceiverId = $("#DeptId").lrselectGet(); | |||
formData.Receiver = $("#DeptId").find(".lr-select-placeholder").text(); | |||
} else if (sendtype == "3") { | |||
formData.ReceiverId = $("#PostId").lrselectGet(); | |||
formData.Receiver = $("#PostId").find(".lr-select-placeholder").text(); | |||
} else { | |||
formData.ReceiverId = $("#ReceiverUserId").lrformselectGet(); | |||
formData.Receiver = $("#ReceiverUserId").find("span").text(); | |||
} | |||
if (!!processId) { | |||
formData.SProcessId = processId; | |||
} | |||
@@ -3,23 +3,19 @@ | |||
Layout = "~/Views/Shared/_Form.cshtml"; | |||
} | |||
<div class="lr-form-wrap" id="form"> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" > | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile"> | |||
<div class="lr-form-item-title">主题<font face="宋体">*</font></div> | |||
<input id="Title" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" readonly="readonly" /> | |||
<input id="Title" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" > | |||
<div class="lr-form-item-title">接收对象<font face="宋体">*</font></div> | |||
<div id="SendType" isvalid="yes" checkexpession="NotNull" readonly="readonly" ></div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" id="ReceiverIddiv"> | |||
<div class="lr-form-item-title">指定接收人<font face="宋体">*</font></div> | |||
<div id="SpecifyReceiver" isvalid="yes" checkexpession="NotNull"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" id="ReceiverIddiv"> | |||
<div class="lr-form-item-title">接收人<font face="宋体">*</font></div> | |||
<input id="Receiver" type="text" class="form-control" readonly="readonly" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" > | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile"> | |||
<div class="lr-form-item-title">文件</div> | |||
<div id="Url" readonly="readonly" style="padding-right: 60px;"></div> | |||
<div id="Url" readonly="readonly" style="padding-right: 60px;"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" > | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile"> | |||
<div class="lr-form-item-title">正文</div> | |||
<div id="Contents" style="height:300px; margin-top: 6px;"></div> | |||
</div> | |||
@@ -27,9 +27,7 @@ var bootstrap = function ($, learun) { | |||
page.initData(); | |||
}, | |||
bind: function () { | |||
$('#SendType').lrDataItemSelect({ | |||
code: 'FileSendType' | |||
}); | |||
$('#SpecifyReceiver').lrUserSelect({ type: '1' }); | |||
$('#Url').lrUploader(); | |||
var ContentsUE = UE.getEditor('Contents'); | |||
$('#Contents')[0].ue = ContentsUE; | |||
@@ -44,7 +42,7 @@ var bootstrap = function ($, learun) { | |||
else { | |||
$('[data-table="' + id + '"]').lrSetFormData(data[id]); | |||
$("#lrUploader_uploadBtn_Url").hide(); | |||
// $('#Contents').html(data[id].Contents); | |||
// $('#Contents').html(data[id].Contents); | |||
} | |||
} | |||
}); | |||
@@ -52,7 +50,7 @@ var bootstrap = function ($, learun) { | |||
} | |||
}; | |||
// 设置表单数据 | |||
setFormData = function (processId,param,callback) { | |||
setFormData = function (processId, param, callback) { | |||
if (!!processId) { | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/Sys_SendFile/GetFormDataByProcessId?processId=' + processId, function (data) { | |||
for (var id in data) { | |||
@@ -70,7 +68,7 @@ var bootstrap = function ($, learun) { | |||
} | |||
}); | |||
} | |||
callback && callback(); | |||
callback && callback(); | |||
} | |||
// 验证数据是否填写完整 | |||
validForm = function () { | |||
@@ -81,13 +79,21 @@ var bootstrap = function ($, learun) { | |||
}; | |||
// 保存数据 | |||
save = function (processId, callBack, i) { | |||
var formData = {}; | |||
var res = {}; | |||
res.code = 200; | |||
if (!!processId) { | |||
formData.SProcessId = processId; | |||
} | |||
callBack(res, i); | |||
var formData = $('body').lrGetFormData(); | |||
var postData = { | |||
strEntity: JSON.stringify(formData) | |||
}; | |||
$.lrSaveForm(top.$.rootUrl + '/EducationalAdministration/Sys_SendFile/SaveForm?keyValue=' + keyValue, postData, function (res) { | |||
// 保存成功后才回调 | |||
if (!!callBack) { | |||
callBack(res, i); | |||
} | |||
}); | |||
}; | |||
page.init(); | |||
} |
@@ -30,6 +30,8 @@ | |||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | |||
<a id="lr_submit" class="btn btn-default"><i class="fa fa-plus"></i> 提交</a> | |||
<a id="lr_view" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 查看</a> | |||
<a id="lr_IssueSpecifyReceiver" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 下发审批指定接收人</a> | |||
<a id="lr_OverIssue" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 结束下发</a> | |||
<a id="lr_read" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 查阅情况</a> | |||
</div> | |||
</div> | |||
@@ -138,6 +138,52 @@ var bootstrap = function ($, learun) { | |||
}); | |||
} | |||
}); | |||
// 下发审批指定接收人 | |||
$('#lr_IssueSpecifyReceiver').on('click', function () { | |||
var keyValue = $('#gridtable').jfGridValue('SFileId'); | |||
var specifyReceiver = $('#gridtable').jfGridValue('SpecifyReceiver'); | |||
if (learun.checkrow(keyValue)) { | |||
learun.layerForm({ | |||
id: 'form', | |||
title: '下发审批指定接收人', | |||
url: top.$.rootUrl + '/EducationalAdministration/Sys_SendFile/IssueForm?keyValue=' + keyValue + '&specifyReceiver=' + specifyReceiver, | |||
width: 800, | |||
height: 200, | |||
callBack: function (id) { | |||
var res = false; | |||
// 验证数据 | |||
res = top[id].validForm(); | |||
// 保存数据 | |||
if (res) { | |||
res = top[id].save('', function () { | |||
page.search(); | |||
}); | |||
} | |||
return res; | |||
} | |||
}); | |||
} | |||
}); | |||
// 结束 | |||
$('#lr_OverIssue').on('click', function () { | |||
var keyValue = $('#gridtable').jfGridValue('SFileId'); | |||
if (learun.checkrow(keyValue)) { | |||
var SendFlag = $('#gridtable').jfGridValue('SendFlag'); | |||
if (SendFlag !== 2) { | |||
learun.alert.warning("当前公文未审批通过,请耐心等待审批!"); | |||
return; | |||
} | |||
learun.layerConfirm('是否结束下发!', function (res) { | |||
if (res) { | |||
processId = learun.newGuid(); | |||
learun.postForm(top.$.rootUrl + '/EducationalAdministration/Sys_SendFile/OverIssue', { keyValue: keyValue, }, function (res) { | |||
refreshGirdData(res, {}); | |||
}); | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
// 初始化列表 | |||
initGird: function () { | |||
@@ -146,19 +192,31 @@ var bootstrap = function ($, learun) { | |||
headData: [ | |||
{ label: "主题", name: "Title", width: 300, align: "left" }, | |||
{ | |||
label: "接收对象", name: "SendType", width: 100, align: "left", | |||
formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('dataItem', { | |||
key: value, | |||
code: 'FileSendType', | |||
callback: function (_data) { | |||
callback(_data.text); | |||
} | |||
}); | |||
} | |||
label: "已接收", name: "Receiver", width: 300, align: "left" | |||
}, | |||
{ | |||
label: "接收人", name: "Receiver", width: 300, align: "left" | |||
label: "审批指定接收人", name: "SpecifyReceiver", width: 150, align: "left", formatterAsync: | |||
function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('user', | |||
{ | |||
key: value, | |||
callback: function (_data) { | |||
if (_data.length > 0) { | |||
var text = ''; | |||
$.each(_data, | |||
function (i, item) { | |||
if (item) { | |||
text += item.name + ','; | |||
} | |||
}); | |||
text = text.substring(0, text.lastIndexOf(',')); | |||
callback(text); | |||
} else { | |||
callback(_data.name); | |||
} | |||
} | |||
}); | |||
} | |||
}, | |||
{ | |||
label: "下发人", name: "Sender", width: 100, align: "left" | |||
@@ -172,7 +230,11 @@ var bootstrap = function ($, learun) { | |||
if (cellvalue === 1) { | |||
return '<span class=\"label label-warning\">审批中</span>'; | |||
} else if (cellvalue === 2) { | |||
return '<span class=\"label label-success\">已下发</span>'; | |||
return '<span class=\"label label-info\">审批通过</span>'; | |||
} else if (cellvalue === 3) { | |||
return '<span class=\"label label-danger\" >审批失败</span>'; | |||
} else if (cellvalue === 4) { | |||
return '<span class=\"label label-success\" >下发完毕</span>'; | |||
} else { | |||
return '<span class=\"label label-default\" >草稿</span>'; | |||
} | |||
@@ -0,0 +1,11 @@ | |||
@{ | |||
ViewBag.Title = "公文发送"; | |||
Layout = "~/Views/Shared/_Form.cshtml"; | |||
} | |||
<div class="lr-form-wrap" id="form"> | |||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" id="ReceiverIddiv"> | |||
<div class="lr-form-item-title">接收人<font face="宋体">*</font></div> | |||
<div id="SpecifyReceiver" isvalid="yes" checkexpession="NotNull" ></div> | |||
</div> | |||
</div> | |||
@Html.AppendJsFile("/Areas/EducationalAdministration/Views/Sys_SendFile/IssueForm.js") |
@@ -0,0 +1,96 @@ | |||
/* * 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园(http://www.learun.cn) | |||
* Copyright (c) 2013-2018 北京泉江科技有限公司 | |||
* 创建人:超级管理员 | |||
* 日 期:2019-04-11 10:31 | |||
* 描 述:公文发送 | |||
*/ | |||
var acceptClick; | |||
var keyValue = request('keyValue'); | |||
var rFileId = request('rFileId'); | |||
var specifyReceiver = request('specifyReceiver'); | |||
// 设置权限 | |||
var setAuthorize; | |||
// 设置表单数据 | |||
var setFormData; | |||
// 验证数据是否填写完整 | |||
var validForm; | |||
// 保存数据 | |||
var save; | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
// 设置权限 | |||
setAuthorize = function (data) { | |||
}; | |||
var page = { | |||
init: function () { | |||
$('.lr-form-wrap').lrscroll(); | |||
page.bind(); | |||
page.initData(); | |||
}, | |||
bind: function () { | |||
$('#SpecifyReceiver').lrUserSelect({ type: '1' }); | |||
}, | |||
initData: function () { | |||
if (!!keyValue) { | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/Sys_SendFile/GetFormData?keyValue=' + keyValue, function (data) { | |||
for (var id in data) { | |||
if (!!data[id].length && data[id].length > 0) { | |||
$('#' + id).jfGridSet('refreshdata', data[id]); | |||
} | |||
else { | |||
if (rFileId) { | |||
$('#SpecifyReceiver').lrformselectSet(specifyReceiver); | |||
} else { | |||
$('[data-table="' + id + '"]').lrSetFormData(data[id]); | |||
} | |||
} | |||
} | |||
}); | |||
} | |||
} | |||
}; | |||
// 设置表单数据 | |||
setFormData = function (processId) { | |||
if (!!processId) { | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/Sys_SendFile/GetFormDataByProcessId?processId=' + processId, function (data) { | |||
for (var id in data) { | |||
if (!!data[id] && data[id].length > 0) { | |||
$('#' + id).jfGridSet('refreshdata', data[id]); | |||
} | |||
else { | |||
if (id == 'Sys_SendFile') { | |||
keyValue = data[id].SFileId; | |||
} | |||
$('[data-table="' + id + '"]').lrSetFormData(data[id]); | |||
} | |||
} | |||
}); | |||
} | |||
} | |||
// 验证数据是否填写完整 | |||
validForm = function () { | |||
if (!$('#form').lrValidform()) { | |||
return false; | |||
} | |||
return true; | |||
}; | |||
// 保存数据 | |||
save = function (processId, callBack, i) { | |||
var formData = $('body').lrGetFormData(); | |||
formData.RFileId = rFileId; | |||
formData.SFileId = keyValue; | |||
var postData = { | |||
strEntity: JSON.stringify(formData) | |||
}; | |||
$.lrSaveForm(top.$.rootUrl + '/EducationalAdministration/Sys_ReceiveFile/Issue', postData, function (res) { | |||
// 保存成功后才回调 | |||
if (!!callBack) { | |||
callBack(res, formData, i); | |||
} | |||
}); | |||
}; | |||
page.init(); | |||
} |
@@ -17,6 +17,7 @@ | |||
<div class="lr-layout-tool-right"> | |||
<div class=" btn-group btn-group-sm"> | |||
<a id="lr_refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a> | |||
<a id="lr_Issue" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 下发</a> | |||
</div> | |||
</div> | |||
@@ -24,6 +24,40 @@ var bootstrap = function ($, learun) { | |||
$('#lr_refresh').on('click', function () { | |||
location.reload(); | |||
}); | |||
$('#lr_Issue').on('click', | |||
function () { | |||
var keyValue = $('#gridtable').jfGridValue('SFileId'); | |||
var rFileId = $('#gridtable').jfGridValue('RFileId'); | |||
var specifyReceiver = $('#gridtable').jfGridValue('SpecifyReceiver'); | |||
if (learun.checkrow(rFileId)) { | |||
var SendStatus = $('#gridtable').jfGridValue('SendStatus'); | |||
if (SendStatus) { | |||
learun.alert.warning("已下发!"); | |||
return; | |||
} | |||
learun.layerForm({ | |||
id: 'formIssue', | |||
title: '下发', | |||
url: top.$.rootUrl + '/EducationalAdministration/Sys_SendFile/IssueForm?keyValue=' + keyValue + '&rFileId=' + rFileId + '&specifyReceiver=' + specifyReceiver, | |||
width: 500, | |||
height: 500, | |||
callBack: function (id) { | |||
var res = false; | |||
// 验证数据 | |||
res = top[id].validForm(); | |||
// 保存数据 | |||
if (res) { | |||
res = top[id].save('', function () { | |||
page.search(); | |||
}); | |||
} | |||
return res; | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
// 初始化列表 | |||
initGird: function () { | |||
@@ -36,6 +70,30 @@ var bootstrap = function ($, learun) { | |||
{ | |||
label: "查阅时间", name: "ReadTime", width: 150, align: "left" | |||
}, | |||
{ | |||
label: "指定接收人", name: "SpecifyReceiver", width: 150, align: "left", formatterAsync: | |||
function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('user', | |||
{ | |||
key: value, | |||
callback: function (_data) { | |||
if (_data.length > 0) { | |||
var text = ''; | |||
$.each(_data, | |||
function (i, item) { | |||
if (item) { | |||
text += item.name + ','; | |||
} | |||
}); | |||
text = text.substring(0, text.lastIndexOf(',')); | |||
callback(text); | |||
} else { | |||
callback(_data.name); | |||
} | |||
} | |||
}); | |||
} | |||
}, | |||
{ | |||
label: "状态", name: "ReadFlag", width: 100, align: "left", | |||
formatter: function (cellvalue, row) { | |||
@@ -45,6 +103,16 @@ var bootstrap = function ($, learun) { | |||
return '<span class=\"label label-warning\">未读</span>'; | |||
} | |||
} | |||
}, | |||
{ | |||
label: "下发状态", name: "SendStatus", width: 100, align: "left", | |||
formatter: function (cellvalue, row) { | |||
if (cellvalue === true) { | |||
return '<span class=\"label label-success\">已下发</span>'; | |||
} else { | |||
return '<span class=\"label label-warning\">未下发</span>'; | |||
} | |||
} | |||
} | |||
], | |||
mainId: 'RFileId', | |||
@@ -9,7 +9,7 @@ | |||
<ul class="lr-left-list" id="lr_left_list"> | |||
<li data-value="2" class="lrlg active">待办任务</li> | |||
<li data-value="3" class="lrlg">已办任务</li> | |||
<li class="lrlg" data-value="1">我的流程</li> | |||
<li data-value="1" class="lrlg">我的流程</li> | |||
</ul> | |||
</div> | |||
</div> | |||
@@ -252,7 +252,7 @@ var bootstrap = function ($, learun) { | |||
} | |||
if (categoryId == '3' && row.F_TaskType == 1 && row.F_IsFinished == 0) {// 已完成任务,添加一个撤销按钮 | |||
if (categoryId == '3' && row.F_TaskType == 1 && row.F_IsFinished == 0 && !row.NextNodeIsAudited) {// 已完成任务,添加一个撤销按钮 | |||
cellvalue = '<span class="label label-warning revoke2" style="margin-left:5px;margin-right:5px;" title="撤销审核" >撤销审核</span>' + cellvalue; | |||
$cell.on('click', '.revoke2', function () {// 删除 | |||
@@ -324,12 +324,17 @@ var bootstrap = function ($, learun) { | |||
return "<span class=\"label label-success\">运行中</span>"; | |||
} else if (cellvalue == 2) { | |||
return "<span class=\"label label-primary\">草稿</span>"; | |||
} else { | |||
} | |||
else { | |||
return "<span class=\"label label-danger\">作废</span>"; | |||
} | |||
} | |||
else { | |||
return "<span class=\"label label-warning\">结束</span>"; | |||
if (cellvalue == 4) { | |||
return "<span class=\"label label-default\">终止</span>"; | |||
} else { | |||
return "<span class=\"label label-warning\">结束</span>"; | |||
} | |||
} | |||
} | |||
@@ -7,6 +7,9 @@ | |||
*/ | |||
var dfopid = request('dfopid'); | |||
var selectValue = request('selectValue'); | |||
if (selectValue == "null") { | |||
selectValue = null; | |||
} | |||
var acceptClick; | |||
var bootstrap = function ($, learun) { | |||
@@ -45,7 +48,7 @@ var bootstrap = function ($, learun) { | |||
$warp.append($cardbox); | |||
learun.clientdata.getAsync('department', { | |||
key: item.F_DepartmentId, | |||
callback: function (_data,op) { | |||
callback: function (_data, op) { | |||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | |||
} | |||
}); | |||
@@ -82,8 +85,7 @@ var bootstrap = function ($, learun) { | |||
$('#user_list').find('[data-value="' + userid + '"]').removeClass('active'); | |||
} | |||
}); | |||
if (!!selectValue) | |||
{ | |||
if (!!selectValue) { | |||
learun.httpAsync('GET', top.$.rootUrl + '/LR_OrganizationModule/User/GetEntityListByUserIds', { keyValue: selectValue }, function (data) { | |||
if (!!data) { | |||
$.each(data, function (id, item) { | |||
@@ -100,13 +102,13 @@ var bootstrap = function ($, learun) { | |||
$warp.append($(_html)); | |||
learun.clientdata.getAsync('department', { | |||
key: item.F_DepartmentId, | |||
callback: function (_data,op) { | |||
callback: function (_data, op) { | |||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | |||
} | |||
}); | |||
learun.clientdata.getAsync('company', { | |||
key: item.F_CompanyId, | |||
callback: function (_data,op) { | |||
callback: function (_data, op) { | |||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | |||
} | |||
}); | |||
@@ -114,7 +116,7 @@ var bootstrap = function ($, learun) { | |||
} | |||
}); | |||
} | |||
}; | |||
function addUser(useritem) { | |||
var $warp = $('#selected_user_list'); | |||
@@ -126,13 +128,13 @@ var bootstrap = function ($, learun) { | |||
$warp.append(_html); | |||
learun.clientdata.getAsync('department', { | |||
key: useritem.F_DepartmentId, | |||
callback: function (_data,op) { | |||
callback: function (_data, op) { | |||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | |||
} | |||
}); | |||
learun.clientdata.getAsync('company', { | |||
key: useritem.F_CompanyId, | |||
callback: function (_data,op) { | |||
callback: function (_data, op) { | |||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | |||
} | |||
}); | |||
@@ -172,7 +174,7 @@ var bootstrap = function ($, learun) { | |||
$('#department_tree').lrtreeSet('refresh', { | |||
url: top.$.rootUrl + '/LR_OrganizationModule/Department/GetTree', | |||
// 访问数据接口参数 | |||
param: { companyId: companyId}, | |||
param: { companyId: companyId }, | |||
}); | |||
}); | |||
@@ -198,7 +200,7 @@ var bootstrap = function ($, learun) { | |||
} | |||
} | |||
}) | |||
// 滚动条 | |||
$('#user_list_warp').lrscroll(); | |||
@@ -229,7 +231,9 @@ var bootstrap = function ($, learun) { | |||
if (postitem.text != "") { | |||
postitem.text += ","; | |||
} | |||
postitem.text += userlistselectedobj[userlistselected[i]].F_RealName; | |||
if (userlistselected[i] != 'null') { | |||
postitem.text += userlistselectedobj[userlistselected[i]].F_RealName; | |||
} | |||
} | |||
callBack(postitem, dfopid); | |||
return true; | |||
@@ -0,0 +1,447 @@ | |||
<?xml version="1.0" encoding="utf-8" standalone="yes"?> | |||
<StiSerializer version="1.02" type="Net" application="StiReport"> | |||
<Dictionary Ref="1" type="Dictionary" isKey="true"> | |||
<BusinessObjects isList="true" count="0" /> | |||
<Databases isList="true" count="0" /> | |||
<DataSources isList="true" count="1"> | |||
<数据源1 Ref="2" type="DataTableSource" isKey="true"> | |||
<Alias>数据源1</Alias> | |||
<Columns isList="true" count="7"> | |||
<value>UserName,System.String</value> | |||
<value>Department,System.String</value> | |||
<value>ADType,System.String</value> | |||
<value>ADTime,System.DateTime</value> | |||
<value>ClockTime,System.DateTime</value> | |||
<value>ClockStatus,System.String</value> | |||
<value>ClockPlace,System.String</value> | |||
</Columns> | |||
<Dictionary isRef="1" /> | |||
<Key>7291a4d177ac43eeba3521446487f520</Key> | |||
<Name>数据源1</Name> | |||
<NameInSource>ADR_Record</NameInSource> | |||
</数据源1> | |||
</DataSources> | |||
<Relations isList="true" count="0" /> | |||
<Report isRef="0" /> | |||
<Resources isList="true" count="0" /> | |||
<Variables isList="true" count="1"> | |||
<value>,Monday,Monday,Monday,System.String,,True,False,False,False</value> | |||
</Variables> | |||
</Dictionary> | |||
<EngineVersion>EngineV2</EngineVersion> | |||
<GlobalizationStrings isList="true" count="0" /> | |||
<Key>60b550cbd9f1400a90a18ac579ad7cd0</Key> | |||
<MetaTags isList="true" count="0" /> | |||
<Pages isList="true" count="1"> | |||
<Page1 Ref="3" type="Page" isKey="true"> | |||
<Border>None;Black;2;Solid;False;4;Black</Border> | |||
<Brush>Transparent</Brush> | |||
<Components isList="true" count="10"> | |||
<PageHeaderBand1 Ref="4" type="PageHeaderBand" isKey="true"> | |||
<Border>All;Black;1;Solid;False;4;Black</Border> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>0,0.4,19,2</ClientRectangle> | |||
<Components isList="true" count="23"> | |||
<Shape3 Ref="5" type="Shape" isKey="true"> | |||
<BorderColor>Black</BorderColor> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>2.8,0,2.2,2</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>Shape3</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ShapeType Ref="6" type="Stimulsoft.Report.Components.ShapeTypes.StiDiagonalDownLineShapeType" isKey="true" /> | |||
</Shape3> | |||
<Text4 Ref="7" type="Text" isKey="true"> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>3.8,0.2,1,1</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Font>Arial,10</Font> | |||
<Margins>0,0,0,0</Margins> | |||
<Name>Text4</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<Text>日 期</Text> | |||
<TextBrush>Black</TextBrush> | |||
<TextOptions>,,,,,Angle=-50</TextOptions> | |||
<Type>Expression</Type> | |||
</Text4> | |||
<Text3 Ref="8" type="Text" isKey="true"> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>1.8,0.2,2.2,1</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Font>Arial,10</Font> | |||
<Margins>0,0,0,0</Margins> | |||
<Name>Text3</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<Text>打卡结果</Text> | |||
<TextBrush>Black</TextBrush> | |||
<TextOptions>,,,,,Angle=-30</TextOptions> | |||
<Type>Expression</Type> | |||
</Text3> | |||
<Text1 Ref="9" type="Text" isKey="true"> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>0.6,1.55,1.6,0.4</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Font>Arial,10</Font> | |||
<Margins>0,0,0,0</Margins> | |||
<Name>Text1</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<Text>人 员</Text> | |||
<TextBrush>Black</TextBrush> | |||
<Type>Expression</Type> | |||
</Text1> | |||
<Shape2 Ref="10" type="Shape" isKey="true"> | |||
<BorderColor>Black</BorderColor> | |||
<Brush>EmptyBrush</Brush> | |||
<ClientRectangle>0.2,0,4.8,2</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>Shape2</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ShapeType Ref="11" type="Stimulsoft.Report.Components.ShapeTypes.StiDiagonalDownLineShapeType" isKey="true" /> | |||
</Shape2> | |||
<Shape1 Ref="12" type="Shape" isKey="true"> | |||
<BorderColor>Black</BorderColor> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>2.2,1,2.8,1</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>Shape1</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ShapeType Ref="13" type="Stimulsoft.Report.Components.ShapeTypes.StiDiagonalDownLineShapeType" isKey="true" /> | |||
</Shape1> | |||
<Text2 Ref="14" type="Text" isKey="true"> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>0.56,0.07,1.2,0.8</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Font>Arial,10</Font> | |||
<Margins>0,0,0,0</Margins> | |||
<Name>Text2</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<Text>考勤类型</Text> | |||
<TextBrush>Black</TextBrush> | |||
<TextOptions>,,,,,Angle=-28</TextOptions> | |||
<Type>Expression</Type> | |||
</Text2> | |||
<StartPointPrimitive1 Ref="15" type="Stimulsoft.Report.Components.StiStartPointPrimitive" isKey="true"> | |||
<ClientRectangle>5,0,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>StartPointPrimitive1</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>6f1bc255e6204946825c21d6e7a14efa</ReferenceToGuid> | |||
</StartPointPrimitive1> | |||
<EndPointPrimitive1 Ref="16" type="Stimulsoft.Report.Components.StiEndPointPrimitive" isKey="true"> | |||
<ClientRectangle>5,2,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>EndPointPrimitive1</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>6f1bc255e6204946825c21d6e7a14efa</ReferenceToGuid> | |||
</EndPointPrimitive1> | |||
<StartPointPrimitive8 Ref="17" type="Stimulsoft.Report.Components.StiStartPointPrimitive" isKey="true"> | |||
<ClientRectangle>17,0,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>StartPointPrimitive8</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>ef3e0b0ec7af4e37bfe8a43076b7cd30</ReferenceToGuid> | |||
</StartPointPrimitive8> | |||
<EndPointPrimitive8 Ref="18" type="Stimulsoft.Report.Components.StiEndPointPrimitive" isKey="true"> | |||
<ClientRectangle>19,2,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>EndPointPrimitive8</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>ef3e0b0ec7af4e37bfe8a43076b7cd30</ReferenceToGuid> | |||
</EndPointPrimitive8> | |||
<StartPointPrimitive7 Ref="19" type="Stimulsoft.Report.Components.StiStartPointPrimitive" isKey="true"> | |||
<ClientRectangle>15,0,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>StartPointPrimitive7</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>2d746f4748134ce0a58f133581ce35de</ReferenceToGuid> | |||
</StartPointPrimitive7> | |||
<EndPointPrimitive7 Ref="20" type="Stimulsoft.Report.Components.StiEndPointPrimitive" isKey="true"> | |||
<ClientRectangle>17,2,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>EndPointPrimitive7</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>2d746f4748134ce0a58f133581ce35de</ReferenceToGuid> | |||
</EndPointPrimitive7> | |||
<StartPointPrimitive6 Ref="21" type="Stimulsoft.Report.Components.StiStartPointPrimitive" isKey="true"> | |||
<ClientRectangle>13,0,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>StartPointPrimitive6</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>3ea18cee2e5845f2bffa9729b80e5f29</ReferenceToGuid> | |||
</StartPointPrimitive6> | |||
<EndPointPrimitive6 Ref="22" type="Stimulsoft.Report.Components.StiEndPointPrimitive" isKey="true"> | |||
<ClientRectangle>15,2,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>EndPointPrimitive6</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>3ea18cee2e5845f2bffa9729b80e5f29</ReferenceToGuid> | |||
</EndPointPrimitive6> | |||
<StartPointPrimitive5 Ref="23" type="Stimulsoft.Report.Components.StiStartPointPrimitive" isKey="true"> | |||
<ClientRectangle>11,0,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>StartPointPrimitive5</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>d1cab23d65cb4cbf87889dc2f5fb4900</ReferenceToGuid> | |||
</StartPointPrimitive5> | |||
<EndPointPrimitive5 Ref="24" type="Stimulsoft.Report.Components.StiEndPointPrimitive" isKey="true"> | |||
<ClientRectangle>13,2,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>EndPointPrimitive5</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>d1cab23d65cb4cbf87889dc2f5fb4900</ReferenceToGuid> | |||
</EndPointPrimitive5> | |||
<StartPointPrimitive4 Ref="25" type="Stimulsoft.Report.Components.StiStartPointPrimitive" isKey="true"> | |||
<ClientRectangle>9,0,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>StartPointPrimitive4</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>82a36abe322c4390958d192e59591218</ReferenceToGuid> | |||
</StartPointPrimitive4> | |||
<EndPointPrimitive4 Ref="26" type="Stimulsoft.Report.Components.StiEndPointPrimitive" isKey="true"> | |||
<ClientRectangle>11,2,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>EndPointPrimitive4</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>82a36abe322c4390958d192e59591218</ReferenceToGuid> | |||
</EndPointPrimitive4> | |||
<StartPointPrimitive3 Ref="27" type="Stimulsoft.Report.Components.StiStartPointPrimitive" isKey="true"> | |||
<ClientRectangle>7,0,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>StartPointPrimitive3</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>3b9fa7de8f11436484b1a16553af09c9</ReferenceToGuid> | |||
</StartPointPrimitive3> | |||
<EndPointPrimitive3 Ref="28" type="Stimulsoft.Report.Components.StiEndPointPrimitive" isKey="true"> | |||
<ClientRectangle>9,2,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>EndPointPrimitive3</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>3b9fa7de8f11436484b1a16553af09c9</ReferenceToGuid> | |||
</EndPointPrimitive3> | |||
<StartPointPrimitive2 Ref="29" type="Stimulsoft.Report.Components.StiStartPointPrimitive" isKey="true"> | |||
<ClientRectangle>5,0,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>StartPointPrimitive2</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>85559f8f8dd547cf9f94f6bcba15184e</ReferenceToGuid> | |||
</StartPointPrimitive2> | |||
<EndPointPrimitive2 Ref="30" type="Stimulsoft.Report.Components.StiEndPointPrimitive" isKey="true"> | |||
<ClientRectangle>7,2,0,0</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Name>EndPointPrimitive2</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="4" /> | |||
<ReferenceToGuid>85559f8f8dd547cf9f94f6bcba15184e</ReferenceToGuid> | |||
</EndPointPrimitive2> | |||
</Components> | |||
<Conditions isList="true" count="0" /> | |||
<Name>PageHeaderBand1</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
</PageHeaderBand1> | |||
<DataBand1 Ref="31" type="DataBand" isKey="true"> | |||
<Brush>Transparent</Brush> | |||
<BusinessObjectGuid isNull="true" /> | |||
<ClientRectangle>0,3.2,19,0.8</ClientRectangle> | |||
<Components isList="true" count="3"> | |||
<Text5 Ref="32" type="Text" isKey="true"> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>0,0,1.6,0.6</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Font>Arial,8</Font> | |||
<Margins>0,0,0,0</Margins> | |||
<Name>Text5</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="31" /> | |||
<Text>{数据源1.UserName}</Text> | |||
<TextBrush>Black</TextBrush> | |||
</Text5> | |||
<Text6 Ref="33" type="Text" isKey="true"> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>1.8,0,1.6,0.6</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Font>Arial,8</Font> | |||
<Margins>0,0,0,0</Margins> | |||
<Name>Text6</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="31" /> | |||
<Text>{数据源1.Department}</Text> | |||
<TextBrush>Black</TextBrush> | |||
</Text6> | |||
<Text7 Ref="34" type="Text" isKey="true"> | |||
<Brush>Transparent</Brush> | |||
<ClientRectangle>3.6,0,1.6,0.6</ClientRectangle> | |||
<Conditions isList="true" count="0" /> | |||
<Font>Arial,8</Font> | |||
<Margins>0,0,0,0</Margins> | |||
<Name>Text7</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="31" /> | |||
<Text>{数据源1.ADType}</Text> | |||
<TextBrush>Black</TextBrush> | |||
</Text7> | |||
</Components> | |||
<Conditions isList="true" count="0" /> | |||
<DataRelationName isNull="true" /> | |||
<DataSourceName>数据源1</DataSourceName> | |||
<Filters isList="true" count="0" /> | |||
<Name>DataBand1</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
<Sort isList="true" count="0" /> | |||
</DataBand1> | |||
<VerticalLinePrimitive1 Ref="35" type="VerticalLinePrimitive" isKey="true"> | |||
<ClientRectangle>5,0.4,0.0254,2</ClientRectangle> | |||
<Color>Black</Color> | |||
<Conditions isList="true" count="0" /> | |||
<EndCap Ref="36" type="Cap" isKey="true"> | |||
<Color>Black</Color> | |||
</EndCap> | |||
<Guid>6f1bc255e6204946825c21d6e7a14efa</Guid> | |||
<Name>VerticalLinePrimitive1</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
<StartCap Ref="37" type="Cap" isKey="true"> | |||
<Color>Black</Color> | |||
</StartCap> | |||
</VerticalLinePrimitive1> | |||
<RectanglePrimitive7 Ref="38" type="RectanglePrimitive" isKey="true"> | |||
<ClientRectangle>17,0.4,2,2</ClientRectangle> | |||
<Color>Black</Color> | |||
<Conditions isList="true" count="0" /> | |||
<Guid>ef3e0b0ec7af4e37bfe8a43076b7cd30</Guid> | |||
<Name>RectanglePrimitive7</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
</RectanglePrimitive7> | |||
<RectanglePrimitive6 Ref="39" type="RectanglePrimitive" isKey="true"> | |||
<ClientRectangle>15,0.4,2,2</ClientRectangle> | |||
<Color>Black</Color> | |||
<Conditions isList="true" count="0" /> | |||
<Guid>2d746f4748134ce0a58f133581ce35de</Guid> | |||
<Name>RectanglePrimitive6</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
</RectanglePrimitive6> | |||
<RectanglePrimitive5 Ref="40" type="RectanglePrimitive" isKey="true"> | |||
<ClientRectangle>13,0.4,2,2</ClientRectangle> | |||
<Color>Black</Color> | |||
<Conditions isList="true" count="0" /> | |||
<Guid>3ea18cee2e5845f2bffa9729b80e5f29</Guid> | |||
<Name>RectanglePrimitive5</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
</RectanglePrimitive5> | |||
<RectanglePrimitive4 Ref="41" type="RectanglePrimitive" isKey="true"> | |||
<ClientRectangle>11,0.4,2,2</ClientRectangle> | |||
<Color>Black</Color> | |||
<Conditions isList="true" count="0" /> | |||
<Guid>d1cab23d65cb4cbf87889dc2f5fb4900</Guid> | |||
<Name>RectanglePrimitive4</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
</RectanglePrimitive4> | |||
<RectanglePrimitive3 Ref="42" type="RectanglePrimitive" isKey="true"> | |||
<ClientRectangle>9,0.4,2,2</ClientRectangle> | |||
<Color>Black</Color> | |||
<Conditions isList="true" count="0" /> | |||
<Guid>82a36abe322c4390958d192e59591218</Guid> | |||
<Name>RectanglePrimitive3</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
</RectanglePrimitive3> | |||
<RectanglePrimitive2 Ref="43" type="RectanglePrimitive" isKey="true"> | |||
<ClientRectangle>7,0.4,2,2</ClientRectangle> | |||
<Color>Black</Color> | |||
<Conditions isList="true" count="0" /> | |||
<Guid>3b9fa7de8f11436484b1a16553af09c9</Guid> | |||
<Name>RectanglePrimitive2</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
</RectanglePrimitive2> | |||
<RectanglePrimitive1 Ref="44" type="RectanglePrimitive" isKey="true"> | |||
<ClientRectangle>5,0.4,2,2</ClientRectangle> | |||
<Color>Black</Color> | |||
<Conditions isList="true" count="0" /> | |||
<Guid>85559f8f8dd547cf9f94f6bcba15184e</Guid> | |||
<Name>RectanglePrimitive1</Name> | |||
<Page isRef="3" /> | |||
<Parent isRef="3" /> | |||
</RectanglePrimitive1> | |||
</Components> | |||
<Conditions isList="true" count="0" /> | |||
<Guid>403b1f2049dd4a979599f69c93987a2d</Guid> | |||
<Margins>1,1,1,1</Margins> | |||
<Name>Page1</Name> | |||
<PageHeight>29.7</PageHeight> | |||
<PageWidth>21</PageWidth> | |||
<PaperSize>A4</PaperSize> | |||
<Report isRef="0" /> | |||
</Page1> | |||
</Pages> | |||
<ReferencedAssemblies isList="true" count="8"> | |||
<value>System.Dll</value> | |||
<value>System.Drawing.Dll</value> | |||
<value>System.Windows.Forms.Dll</value> | |||
<value>System.Data.Dll</value> | |||
<value>System.Xml.Dll</value> | |||
<value>Stimulsoft.Controls.Dll</value> | |||
<value>Stimulsoft.Base.Dll</value> | |||
<value>Stimulsoft.Report.Dll</value> | |||
</ReferencedAssemblies> | |||
<ReportAlias>Report</ReportAlias> | |||
<ReportChanged>9/16/2020 12:03:28 PM</ReportChanged> | |||
<ReportCreated>9/15/2020 2:53:21 PM</ReportCreated> | |||
<ReportFile>D:\gitLocalRepositories\DigitalScholl\Learun.Framework.Ultimate V7\Learun.Application.Web\Areas\LogisticsManagement\Views\ADR_Record\Report.mrt</ReportFile> | |||
<ReportGuid>2f0af1b2cf104a0dbe8b6b7c1a035f6a</ReportGuid> | |||
<ReportName>Report</ReportName> | |||
<ReportUnit>Centimeters</ReportUnit> | |||
<ReportVersion>2020.2.1.0</ReportVersion> | |||
<Script>using System; | |||
using System.Drawing; | |||
using System.Windows.Forms; | |||
using System.Data; | |||
using Stimulsoft.Controls; | |||
using Stimulsoft.Base.Drawing; | |||
using Stimulsoft.Report; | |||
using Stimulsoft.Report.Dialogs; | |||
using Stimulsoft.Report.Components; | |||
namespace Reports | |||
{ | |||
public class Report : Stimulsoft.Report.StiReport | |||
{ | |||
public Report() { | |||
this.InitializeComponent(); | |||
} | |||
#region StiReport Designer generated code - do not modify | |||
#endregion StiReport Designer generated code - do not modify | |||
} | |||
} | |||
</Script> | |||
<ScriptLanguage>CSharp</ScriptLanguage> | |||
<Styles isList="true" count="0" /> | |||
</StiSerializer> |
@@ -120,6 +120,11 @@ | |||
var dfop = $self[0]._lrformselect.dfop; | |||
return dfop._itemValue ? dfop._itemValue.value : ""; | |||
}; | |||
$.fn.lrformselectGetText = function () { | |||
var $self = $(this); | |||
var dfop = $self[0]._lrformselect.dfop; | |||
return dfop._itemValue ? dfop._itemValue.text : ""; | |||
}; | |||
$.fn.lrformselectSet = function (value) { | |||
var $self = $(this); | |||
var dfop = $self[0]._lrformselect.dfop; | |||
@@ -610,6 +610,44 @@ | |||
} | |||
return value; | |||
}; | |||
$.fn.lrselectGetText = function () { | |||
var $this = $(this); | |||
if ($this.length == 0) { | |||
return $this; | |||
} | |||
var dfop = $this[0]._lrselect.dfop; | |||
var value = ''; | |||
switch (dfop.type) { | |||
case 'default': | |||
if (dfop.data[dfop._index]) { | |||
value = dfop.data[dfop._index][dfop.text]; | |||
} | |||
break; | |||
case 'tree': | |||
if (dfop.currtentItem) { | |||
value = dfop.currtentItem[dfop.text]; | |||
} | |||
break; | |||
case 'treemultiple': | |||
if (dfop.currtentItems) { | |||
for (var i = 0, l = dfop.currtentItems.length; i < l; i++) { | |||
if (value != "") { | |||
value += ","; | |||
} | |||
value += dfop.currtentItems[i][dfop.text]; | |||
} | |||
} | |||
break; | |||
case 'gird': | |||
break; | |||
case 'multiple': | |||
dfop.multipleValue = dfop.multipleValue || []; | |||
return String(dfop.multipleValue); | |||
default: | |||
break; | |||
} | |||
return value; | |||
}; | |||
$.fn.lrselectSet = function (value) { | |||
// 设置数据的值 | |||
@@ -297,7 +297,20 @@ | |||
} | |||
else { | |||
var data = storage.get("userData").data || {}; | |||
op.callback(data[op.key] || {}, op); | |||
var keys = op.key.split(','); | |||
var array=new Array(); | |||
if (keys.length > 0) { | |||
$.each(keys, | |||
function (i, item) { | |||
array.push(data[item]); | |||
}) | |||
op.callback(array || {}, op); | |||
} else { | |||
op.callback(data[op.key] || {}, op); | |||
} | |||
} | |||
}, | |||
getAll: function (op) { | |||
@@ -0,0 +1,22 @@ | |||
using Learun.Util; | |||
using System; | |||
using System.ComponentModel.DataAnnotations.Schema; | |||
namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
{ | |||
/// <summary> | |||
/// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园 | |||
/// Copyright (c) 2013-2018 北京泉江科技有限公司 | |||
/// 创 建:超级管理员 | |||
/// 日 期:2019-04-11 10:08 | |||
/// 描 述:公文收发 | |||
/// </summary> | |||
public class Sys_IssueEntity | |||
{ | |||
public string RFileId { get; set; } | |||
public string SFileId { get; set; } | |||
public string SpecifyReceiver { get; set; } | |||
} | |||
} | |||
@@ -239,6 +239,25 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
} | |||
} | |||
public void Issue(Sys_IssueEntity entity) | |||
{ | |||
try | |||
{ | |||
sys_ReceiveFileService.Issue(entity); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
#endregion | |||
} | |||
@@ -45,6 +45,16 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
[Column("RECEIVER")] | |||
public string Receiver { get; set; } | |||
/// <summary> | |||
/// 指定接收人 | |||
/// </summary> | |||
[Column("SPECIFYRECEIVER")] | |||
public string SpecifyReceiver { get; set; } | |||
/// <summary> | |||
/// 指定接收人的下发状态 | |||
/// </summary> | |||
[Column("SENDSTATUS")] | |||
public bool? SendStatus { get; set; } | |||
/// <summary> | |||
/// 标题 | |||
/// </summary> | |||
[Column("TITLE")] | |||
@@ -77,5 +77,6 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
#endregion | |||
void Issue(Sys_IssueEntity entity); | |||
} | |||
} |
@@ -3,8 +3,16 @@ using Learun.DataBase.Repository; | |||
using Learun.Util; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Configuration; | |||
using System.Data; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
using System.Web; | |||
using Learun.Application.Organization; | |||
using Learun.Application.TwoDevelopment.LR_Desktop; | |||
using Microsoft.AspNet.SignalR.Client; | |||
using Newtonsoft.Json; | |||
namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
{ | |||
@@ -226,7 +234,8 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
var oldentity = GetSys_ReceiveFileEntity(keyValue); | |||
oldentity.RUrl = entity.RUrl; | |||
oldentity.ReplyFlag = true; | |||
oldentity.ReplyTime=DateTime.Now; | |||
oldentity.ReplyTime = DateTime.Now; | |||
oldentity.SpecifyReceiver = entity.SpecifyReceiver; | |||
this.BaseRepository().Update(oldentity); | |||
} | |||
else | |||
@@ -330,5 +339,142 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
#endregion | |||
public void Issue(Sys_IssueEntity entity) | |||
{ | |||
var db = this.BaseRepository().BeginTrans(); | |||
try | |||
{ | |||
//从‘查阅情况’ 列表中跳转 将发送情况改变 | |||
if (!string.IsNullOrEmpty(entity.RFileId)) | |||
{ | |||
var rEntity = db.FindEntity<Sys_ReceiveFileEntity>(a => a.RFileId == entity.RFileId); | |||
rEntity.SendStatus = true; | |||
db.Update(rEntity); | |||
} | |||
var Sys_SendFile = db.FindEntity<Sys_SendFileEntity>(a => a.SFileId == entity.SFileId); | |||
var teacherlist = db.FindList<UserEntity>(a => entity.SpecifyReceiver.Contains(a.F_UserId)).ToList(); | |||
foreach (var tEntity in teacherlist) | |||
{ | |||
Sys_ReceiveFileEntity receiveFile = new Sys_ReceiveFileEntity(); | |||
receiveFile.Create(); | |||
receiveFile.SFileId = Sys_SendFile.SFileId; | |||
receiveFile.SenderId = Sys_SendFile.SenderId; | |||
receiveFile.Sender = Sys_SendFile.Sender; | |||
receiveFile.ReceiverId = tEntity.F_UserId; | |||
receiveFile.Receiver = tEntity.F_RealName; | |||
receiveFile.Title = Sys_SendFile.Title; | |||
receiveFile.Contents = Sys_SendFile.Contents; | |||
receiveFile.Url = Sys_SendFile.Url; | |||
receiveFile.ReadFlag = false; | |||
receiveFile.SendTime = DateTime.Now; | |||
receiveFile.SendType = Sys_SendFile.SendType; | |||
receiveFile.DelFlag = false; | |||
receiveFile.STypeId = Sys_SendFile.STypeId; | |||
receiveFile.ReplyFlag = false; | |||
receiveFile.SLastDate = Sys_SendFile.SLastDate; | |||
receiveFile.RUrl = Guid.NewGuid().ToString(); | |||
db.Insert(receiveFile); | |||
} | |||
Sys_SendFile.SendTime = DateTime.Now; | |||
var listReceive = Sys_SendFile.ReceiverId?.Split(',').ToList(); | |||
if (listReceive == null) | |||
{ | |||
listReceive = new List<string>(); | |||
} | |||
foreach (var item in teacherlist) | |||
{ | |||
if (listReceive?.Contains(item.F_Account) != true) | |||
{ | |||
listReceive.Add(item.F_Account); | |||
Sys_SendFile.Receiver += "," + item.F_RealName; | |||
} | |||
} | |||
Sys_SendFile.Receiver = Sys_SendFile.Receiver.TrimStart(','); | |||
StringBuilder stringBuilder = new StringBuilder(); | |||
foreach (var item in listReceive) | |||
{ | |||
stringBuilder.Append(item + ","); | |||
} | |||
Sys_SendFile.ReceiverId = stringBuilder.ToString().TrimEnd(','); | |||
db.Update(Sys_SendFile); | |||
db.Commit(); | |||
//微信推送 | |||
try | |||
{ | |||
PushWeixin(teacherlist, Sys_SendFile.Title); | |||
} | |||
catch (Exception e) | |||
{ | |||
} | |||
//飞星推送 | |||
Task.Run(async () => | |||
{ | |||
using (var hubConnection = new HubConnection(ConfigurationManager.AppSettings["CommunicationServeraddress"])) | |||
{ | |||
var hubProxy = hubConnection.CreateHubProxy("SignalRHub"); | |||
await hubConnection.Start(); | |||
await hubProxy.Invoke("PushAnnouncement", Sys_SendFile.SenderId, Sys_SendFile.Title, Util.Str.ReplaceHtml(HttpUtility.HtmlDecode(Sys_SendFile.Contents)).Length < 20 ? Util.Str.ReplaceHtml(HttpUtility.HtmlDecode(Sys_SendFile.Contents)) : Util.Str.ReplaceHtml(HttpUtility.HtmlDecode(Sys_SendFile.Contents)).Substring(0, 20), "sendfile", string.Join(",", teacherlist.Select(m => m.F_UserId)), ""); | |||
} | |||
}); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
} | |||
} | |||
} | |||
public void PushWeixin(List<UserEntity> needpostuserlist, string title) | |||
{ | |||
var WeChatConfigentity = BaseRepository().FindEntity<WeChatConfigEntity>(m => m.IsEnable == true); | |||
string appid = WeChatConfigentity.APPId; | |||
string secret = WeChatConfigentity.secret; | |||
var wechatemplete = BaseRepository() | |||
.FindEntity<WeChatTemplateEntity>(m => m.WeID == WeChatConfigentity.ID && m.TCode == "task"); | |||
string weixintaskurl = wechatemplete.TUrl; | |||
string weixintasktempid = wechatemplete.TempId; | |||
var responsejson = Util.HttpMethods.HttpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret); | |||
foreach (UserEntity userinfo in needpostuserlist) | |||
{ | |||
if (userinfo != null && !string.IsNullOrEmpty(userinfo.OpenIdForWeixin)) | |||
{ | |||
//执行推送任务 | |||
if (!string.IsNullOrEmpty(appid) && !string.IsNullOrEmpty(secret) && !string.IsNullOrEmpty(weixintaskurl) && !string.IsNullOrEmpty(weixintasktempid)) | |||
{ | |||
if (!string.IsNullOrEmpty(responsejson)) | |||
{ | |||
var weixintokenobj = JsonConvert.DeserializeObject<dynamic>(responsejson); | |||
if (string.IsNullOrEmpty(weixintokenobj.errcode)) | |||
{ | |||
string access_token = weixintokenobj.access_token; | |||
string jsondata = "{\"touser\":\"" + userinfo.OpenIdForWeixin + "\"," + | |||
"\"template_id\":\"" + weixintasktempid + "\"," + | |||
"\"url\":\"" + weixintaskurl + "\"," + | |||
"\"data\":{" + | |||
"\"first\": {\"value\":\"您有新的公文需要查阅\",\"color\":\"#173177\"}," + | |||
"\"keyword1\":{\"value\":\"公文下发\",\"color\":\"#173177\"}," + | |||
"\"keyword2\": {\"value\":\"" + title + "\",\"color\":\"#173177\"}," + | |||
"\"keyword3\": {\"value\":\"待查阅\",\"color\":\"#173177\"}," + | |||
"\"keyword4\": {\"value\":\"您有新的公文需要查阅【" + title + "】\",\"color\":\"#173177\"}" + | |||
"}" + | |||
"}"; | |||
string pushresult = Util.HttpMethods.HttpPost("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token, jsondata); | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -204,6 +204,25 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
} | |||
} | |||
public void OverIssue(string keyValue) | |||
{ | |||
try | |||
{ | |||
sys_SendFileService.OverIssue(keyValue); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
#endregion | |||
} | |||
@@ -11,7 +11,7 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
/// 日 期:2019-04-11 10:31 | |||
/// 描 述:公文发送 | |||
/// </summary> | |||
public class Sys_SendFileEntity | |||
public class Sys_SendFileEntity | |||
{ | |||
#region 实体成员 | |||
/// <summary> | |||
@@ -35,6 +35,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
[Column("RECEIVERID")] | |||
public string ReceiverId { get; set; } | |||
/// <summary> | |||
/// 流程审批指定接收人 | |||
/// </summary> | |||
[Column("SPECIFYRECEIVER")] | |||
public string SpecifyReceiver { get; set; } | |||
/// <summary> | |||
/// Receiver | |||
/// </summary> | |||
[Column("RECEIVER")] | |||
@@ -88,6 +93,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
public void Create() | |||
{ | |||
this.SFileId = Guid.NewGuid().ToString(); | |||
this.DelFlag = false; | |||
this.SendFlag = 0; | |||
this.SenderId = LoginUserInfo.Get().userId; | |||
this.Sender = LoginUserInfo.Get().realName; | |||
} | |||
/// <summary> | |||
/// 编辑调用 | |||
@@ -58,5 +58,6 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
#endregion | |||
void OverIssue(string keyValue); | |||
} | |||
} |
@@ -228,163 +228,22 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
/// <param name="status"></param> | |||
public void ChangeStatusByProcessId(string processId, int status) | |||
{ | |||
if (status == 2) | |||
var db = BaseRepository().BeginTrans(); | |||
try | |||
{ | |||
var db = BaseRepository().BeginTrans(); | |||
try | |||
var Sys_SendFile = db.FindEntity<Sys_SendFileEntity>(m => m.SProcessId == processId); | |||
Sys_SendFile.SendFlag = status; | |||
if (status == 2) | |||
{ | |||
var needpostuserlist = new List<UserEntity>(); | |||
var Sys_SendFile = db.FindEntity<Sys_SendFileEntity>(m => m.SProcessId == processId); | |||
if (Sys_SendFile.SendType == "1") | |||
{ | |||
var teacherlist = db.FindList<UserEntity>(m => | |||
m.F_DeleteMark != 1 && m.F_EnabledMark == 1 && m.F_Description == "教师" && | |||
m.F_CompanyId == Sys_SendFile.ReceiverId); | |||
needpostuserlist = teacherlist.ToList(); | |||
foreach (var tEntity in teacherlist) | |||
{ | |||
Sys_ReceiveFileEntity receiveFile = new Sys_ReceiveFileEntity(); | |||
receiveFile.Create(); | |||
receiveFile.SFileId = Sys_SendFile.SFileId; | |||
receiveFile.SenderId = Sys_SendFile.SenderId; | |||
receiveFile.Sender = Sys_SendFile.Sender; | |||
receiveFile.ReceiverId = tEntity.F_UserId; | |||
receiveFile.Receiver = tEntity.F_RealName; | |||
receiveFile.Title = Sys_SendFile.Title; | |||
receiveFile.Contents = Sys_SendFile.Contents; | |||
receiveFile.Url = Sys_SendFile.Url; | |||
receiveFile.ReadFlag = false; | |||
receiveFile.SendTime = DateTime.Now; | |||
receiveFile.SendType = Sys_SendFile.SendType; | |||
receiveFile.DelFlag = false; | |||
receiveFile.STypeId = Sys_SendFile.STypeId; | |||
receiveFile.ReplyFlag = false; | |||
receiveFile.SLastDate = Sys_SendFile.SLastDate; | |||
receiveFile.RUrl = Guid.NewGuid().ToString(); | |||
db.Insert(receiveFile); | |||
} | |||
} | |||
else if (Sys_SendFile.SendType == "2") | |||
{ | |||
var teacherlist = db.FindList<UserEntity>(m => | |||
m.F_DeleteMark != 1 && m.F_EnabledMark == 1 && m.F_Description == "教师" && | |||
Sys_SendFile.ReceiverId.Contains(m.F_DepartmentId)); | |||
needpostuserlist = teacherlist.ToList(); | |||
foreach (var tEntity in teacherlist) | |||
{ | |||
Sys_ReceiveFileEntity receiveFile = new Sys_ReceiveFileEntity(); | |||
receiveFile.Create(); | |||
receiveFile.SFileId = Sys_SendFile.SFileId; | |||
receiveFile.SenderId = Sys_SendFile.SenderId; | |||
receiveFile.Sender = Sys_SendFile.Sender; | |||
receiveFile.ReceiverId = tEntity.F_UserId; | |||
receiveFile.Receiver = tEntity.F_RealName; | |||
receiveFile.Title = Sys_SendFile.Title; | |||
receiveFile.Contents = Sys_SendFile.Contents; | |||
receiveFile.Url = Sys_SendFile.Url; | |||
receiveFile.ReadFlag = false; | |||
receiveFile.SendTime = DateTime.Now; | |||
receiveFile.SendType = Sys_SendFile.SendType; | |||
receiveFile.DelFlag = false; | |||
receiveFile.STypeId = Sys_SendFile.STypeId; | |||
receiveFile.ReplyFlag = false; | |||
receiveFile.SLastDate = Sys_SendFile.SLastDate; | |||
receiveFile.RUrl = Guid.NewGuid().ToString(); | |||
db.Insert(receiveFile); | |||
} | |||
} | |||
else if (Sys_SendFile.SendType == "3") | |||
{ | |||
List<string> ppostid = Sys_SendFile.ReceiverId.Split(',').ToList(); | |||
for (int i = 0; i < ppostid.Count; i++) | |||
{ | |||
ppostid[i] = "'" + ppostid[i] + "'"; | |||
} | |||
var teacherlist = db.FindList<UserEntity>( | |||
@"select distinct a.* from [dbo].[LR_Base_User] a left join [dbo].[LR_Base_UserRelation] b | |||
on a.F_UserId=b.F_UserId where b.F_ObjectId in(" + string.Join(",", ppostid) + | |||
") and a.F_DeleteMark<>1 and a.F_EnabledMark=1 and a.F_Description='教师'"); | |||
needpostuserlist = teacherlist.ToList(); | |||
foreach (var tEntity in teacherlist) | |||
{ | |||
Sys_ReceiveFileEntity receiveFile = new Sys_ReceiveFileEntity(); | |||
receiveFile.Create(); | |||
receiveFile.SFileId = Sys_SendFile.SFileId; | |||
receiveFile.SenderId = Sys_SendFile.SenderId; | |||
receiveFile.Sender = Sys_SendFile.Sender; | |||
receiveFile.ReceiverId = tEntity.F_UserId; | |||
receiveFile.Receiver = tEntity.F_RealName; | |||
receiveFile.Title = Sys_SendFile.Title; | |||
receiveFile.Contents = Sys_SendFile.Contents; | |||
receiveFile.Url = Sys_SendFile.Url; | |||
receiveFile.ReadFlag = false; | |||
receiveFile.SendTime = DateTime.Now; | |||
receiveFile.SendType = Sys_SendFile.SendType; | |||
receiveFile.DelFlag = false; | |||
receiveFile.STypeId = Sys_SendFile.STypeId; | |||
receiveFile.ReplyFlag = false; | |||
receiveFile.SLastDate = Sys_SendFile.SLastDate; | |||
receiveFile.RUrl = Guid.NewGuid().ToString(); | |||
db.Insert(receiveFile); | |||
} | |||
} | |||
else | |||
{ | |||
var teacherlist = db.FindList<UserEntity>(m => | |||
m.F_DeleteMark != 1 && m.F_EnabledMark == 1 && m.F_Description == "教师" && | |||
Sys_SendFile.ReceiverId.Contains(m.F_UserId)); | |||
needpostuserlist = teacherlist.ToList(); | |||
foreach (var tEntity in teacherlist) | |||
{ | |||
Sys_ReceiveFileEntity receiveFile = new Sys_ReceiveFileEntity(); | |||
receiveFile.Create(); | |||
receiveFile.SFileId = Sys_SendFile.SFileId; | |||
receiveFile.SenderId = Sys_SendFile.SenderId; | |||
receiveFile.Sender = Sys_SendFile.Sender; | |||
receiveFile.ReceiverId = tEntity.F_UserId; | |||
receiveFile.Receiver = tEntity.F_RealName; | |||
receiveFile.Title = Sys_SendFile.Title; | |||
receiveFile.Contents = Sys_SendFile.Contents; | |||
receiveFile.Url = Sys_SendFile.Url; | |||
receiveFile.ReadFlag = false; | |||
receiveFile.SendTime = DateTime.Now; | |||
receiveFile.SendType = Sys_SendFile.SendType; | |||
receiveFile.DelFlag = false; | |||
receiveFile.STypeId = Sys_SendFile.STypeId; | |||
receiveFile.ReplyFlag = false; | |||
receiveFile.SLastDate = Sys_SendFile.SLastDate; | |||
receiveFile.RUrl = Guid.NewGuid().ToString(); | |||
db.Insert(receiveFile); | |||
} | |||
} | |||
Sys_SendFile.SendFlag = 2; | |||
Sys_SendFile.SendTime = DateTime.Now; | |||
db.Update(Sys_SendFile); | |||
db.Commit(); | |||
//微信推送 | |||
try | |||
{ | |||
PushWeixin(needpostuserlist, Sys_SendFile.Title); | |||
} | |||
catch (Exception e) | |||
{ | |||
} | |||
//飞星推送 | |||
Task.Run(async () => | |||
{ | |||
using (var hubConnection = new HubConnection(ConfigurationManager.AppSettings["CommunicationServeraddress"])) | |||
{ | |||
var hubProxy = hubConnection.CreateHubProxy("SignalRHub"); | |||
await hubConnection.Start(); | |||
await hubProxy.Invoke("PushAnnouncement", Sys_SendFile.SenderId, Sys_SendFile.Title, Util.Str.ReplaceHtml(HttpUtility.HtmlDecode(Sys_SendFile.Contents)).Length < 20 ? Util.Str.ReplaceHtml(HttpUtility.HtmlDecode(Sys_SendFile.Contents)) : Util.Str.ReplaceHtml(HttpUtility.HtmlDecode(Sys_SendFile.Contents)).Substring(0, 20), "sendfile", string.Join(",", needpostuserlist.Select(m => m.F_UserId)), ""); | |||
} | |||
}); | |||
} | |||
catch (Exception ex) | |||
{ | |||
db.Rollback(); | |||
} | |||
db.Update(Sys_SendFile); | |||
db.Commit(); | |||
} | |||
catch (Exception ex) | |||
{ | |||
db.Rollback(); | |||
} | |||
} | |||
@@ -429,6 +288,31 @@ on a.F_UserId=b.F_UserId where b.F_ObjectId in(" + string.Join(",", ppostid) + | |||
} | |||
} | |||
} | |||
public void OverIssue(string keyValue) | |||
{ | |||
try | |||
{ | |||
var entity = this.BaseRepository().FindEntity<Sys_SendFileEntity>(a => a.SFileId == keyValue); | |||
if (null != entity) | |||
{ | |||
entity.SendFlag = 4; | |||
} | |||
this.BaseRepository().Update(entity); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
} | |||
} | |||
} | |||
} | |||
#endregion | |||
} |
@@ -196,6 +196,7 @@ | |||
<Compile Include="EducationalAdministration\Sys_ReceiveDocument\Sys_ReceiveDocumentIBLL.cs" /> | |||
<Compile Include="EducationalAdministration\Sys_ReceiveDocument\Sys_ReceiveDocumentService.cs" /> | |||
<Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_ReceiveFileBLL.cs" /> | |||
<Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_IssueEntity.cs" /> | |||
<Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_ReceiveFileEntity.cs" /> | |||
<Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_ReceiveFileIBLL.cs" /> | |||
<Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_ReceiveFileService.cs" /> | |||
@@ -2013,6 +2013,9 @@ namespace Learun.Application.WorkFlow | |||
NWFEngineParamConfig nWFEngineParamConfig = nWFIEngine.GetConfig(); | |||
nWFEngineParamConfig.Auditers = auditors; | |||
//overFW 任一审核者不同意 即流程任务结束 | |||
bool overFW = false; | |||
// 获取任务实体 | |||
var taskEntiy = nWFTaskIBLL.GetEntity(taskId); | |||
if (taskEntiy == null) | |||
@@ -2181,6 +2184,7 @@ namespace Learun.Application.WorkFlow | |||
else if (operationCode == "disagree") | |||
{ | |||
nWFTaskRelationEntity.F_Result = 2; | |||
overFW = true; | |||
} | |||
else | |||
{ | |||
@@ -2190,7 +2194,7 @@ namespace Learun.Application.WorkFlow | |||
// 获取下一节点信息 | |||
List<NWFLineInfo> lineList = new List<NWFLineInfo>(); | |||
List<NWFNodeInfo> list = nWFIEngine.GetNextTaskNode(nodeInfo, operationCode, false, lineList); | |||
List<NWFNodeInfo> list = nWFIEngine.GetNextTaskNode(nodeInfo, operationCode, false, lineList, overFW); | |||
// 会签处理 | |||
int state = 0; | |||
@@ -2221,6 +2225,12 @@ namespace Learun.Application.WorkFlow | |||
nWFProcessEntity.F_IsFinished = 1; | |||
} | |||
// 如果任一审核者不同意,即流程结束(终止) | |||
if (overFW) | |||
{ | |||
nWFProcessEntity.F_EnabledMark = 4;//终止 | |||
} | |||
List<NWFLineInfo> pLineList = new List<NWFLineInfo>(); | |||
List<NWFTaskEntity> pTaskList = new List<NWFTaskEntity>(); | |||
List<NWFTaskMsgEntity> pTaskMsgList = new List<NWFTaskMsgEntity>(); | |||
@@ -50,7 +50,7 @@ namespace Learun.Application.WorkFlow | |||
[Column("F_LEVEL")] | |||
public int? F_Level { get; set; } | |||
/// <summary> | |||
/// 流程进程有效标志 1正常2草稿3作废 | |||
/// 流程进程有效标志 1正常2草稿3作废4终止 | |||
/// </summary> | |||
/// <returns></returns> | |||
[Column("F_ENABLEDMARK")] | |||
@@ -157,6 +157,17 @@ namespace Learun.Application.WorkFlow | |||
[NotMapped] | |||
public int? F_TaskType { get; set; } | |||
/// <summary> | |||
/// 当前任务NodeID | |||
/// </summary> | |||
[NotMapped] | |||
public string F_NodeId { get; set; } | |||
/// <summary> | |||
/// 下一任务节点是否审核 | |||
/// </summary> | |||
[NotMapped] | |||
public bool? NextNodeIsAudited { get; set; } | |||
/// <summary> | |||
/// 是否被催办 1 被催办了 | |||
/// </summary> | |||
@@ -537,7 +537,8 @@ namespace Learun.Application.WorkFlow | |||
p.F_ParentProcessId, | |||
p.F_CreateUserId, | |||
p.F_CreateUserName, | |||
p.F_IsStart | |||
p.F_IsStart, | |||
t.F_NodeId | |||
FROM | |||
LR_NWF_Task t | |||
LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id | |||
@@ -567,7 +568,18 @@ namespace Learun.Application.WorkFlow | |||
strSql.Append(" AND p.F_SchemeCode = @schemeCode "); | |||
} | |||
return this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userInfo.userId, startTime, endTime, keyword, schemeCode }, pagination); | |||
var data = this.BaseRepository().FindList<NWFProcessEntity>(strSql.ToString(), new { userInfo.userId, startTime, endTime, keyword, schemeCode }, pagination); | |||
foreach (var item in data) | |||
{ | |||
var nextNode = this.BaseRepository().FindEntity<NWFTaskLogEntity>(a => | |||
a.F_ProcessId == item.F_Id && a.F_PrevNodeId == item.F_NodeId); | |||
if (null != nextNode) | |||
{ | |||
item.NextNodeIsAudited = true; | |||
} | |||
} | |||
return data; | |||
} | |||
catch (Exception ex) | |||
{ | |||
@@ -2,6 +2,7 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Data; | |||
using System.Linq; | |||
namespace Learun.Workflow.Engine | |||
{ | |||
@@ -32,6 +33,11 @@ namespace Learun.Workflow.Engine | |||
{ | |||
startNode = node; | |||
} | |||
if (node.type == "endround") | |||
{ | |||
endNode = node; | |||
} | |||
} | |||
} | |||
#endregion | |||
@@ -41,6 +47,7 @@ namespace Learun.Workflow.Engine | |||
private NWFScheme wfScheme = null; | |||
private Dictionary<string, NWFNodeInfo> nodesMap = null; | |||
private NWFNodeInfo startNode = null; | |||
private NWFNodeInfo endNode = null; | |||
#endregion | |||
#region 私有方法 | |||
@@ -49,7 +56,8 @@ namespace Learun.Workflow.Engine | |||
/// </summary> | |||
/// <param name="node">节点信息</param> | |||
/// <returns></returns> | |||
private bool CalcCondition(NWFNodeInfo node) { | |||
private bool CalcCondition(NWFNodeInfo node) | |||
{ | |||
bool res = true; | |||
if (node.conditions.Count > 0) | |||
{ | |||
@@ -63,7 +71,8 @@ namespace Learun.Workflow.Engine | |||
if (dataTable.Rows.Count > 0) | |||
{ | |||
string value = dataTable.Rows[0][0].ToString(); | |||
if (string.IsNullOrEmpty(value)) { | |||
if (string.IsNullOrEmpty(value)) | |||
{ | |||
return false; | |||
} | |||
@@ -131,11 +140,13 @@ namespace Learun.Workflow.Engine | |||
break; | |||
} | |||
} | |||
else { | |||
else | |||
{ | |||
res = false; | |||
} | |||
} | |||
if (!res) { | |||
if (!res) | |||
{ | |||
break; | |||
} | |||
} | |||
@@ -151,7 +162,8 @@ namespace Learun.Workflow.Engine | |||
conditionSql = conditionSql.Replace("{companyId}", "@companyId"); | |||
conditionSql = conditionSql.Replace("{departmentId}", "@departmentId"); | |||
var param = new { | |||
var param = new | |||
{ | |||
processId = config.ParamConfig.ProcessId, | |||
userId = config.ParamConfig.CreateUser.Id, | |||
userAccount = config.ParamConfig.CreateUser.Account, | |||
@@ -234,7 +246,8 @@ namespace Learun.Workflow.Engine | |||
/// 获取流程模板 | |||
/// </summary> | |||
/// <returns></returns> | |||
public string GetScheme() { | |||
public string GetScheme() | |||
{ | |||
return config.ParamConfig.Scheme; | |||
} | |||
/// <summary> | |||
@@ -264,10 +277,11 @@ namespace Learun.Workflow.Engine | |||
{ | |||
return nodesMap[nodeId]; | |||
} | |||
else { | |||
else | |||
{ | |||
return null; | |||
} | |||
} | |||
/// <summary> | |||
/// 获取下一节点 | |||
@@ -275,60 +289,82 @@ namespace Learun.Workflow.Engine | |||
/// <param name="nodeId">当前节点Id</param> | |||
/// <param name="code">节点操作码 agree 同意 disagree 不同意 lrtimeout 超时</param> | |||
/// <returns>节点信息列表</returns> | |||
public List<NWFNodeInfo> GetNextNodes(string nodeId, string code, List<NWFLineInfo> lineList) | |||
public List<NWFNodeInfo> GetNextNodes(string nodeId, string code, List<NWFLineInfo> lineList, bool overFW = false) | |||
{ | |||
List<NWFNodeInfo> nextNodes = new List<NWFNodeInfo>(); | |||
// 找到与当前节点相连的线条 | |||
foreach (var line in wfScheme.lines) | |||
NWFLineInfo line = null; | |||
//如果lastNode 不为空,直接执行最后一条线的绑定方法 并终止任务 | |||
if (overFW) | |||
{ | |||
if (line.from == nodeId) | |||
line = wfScheme.lines.Last(); | |||
} | |||
else | |||
{ | |||
line = wfScheme.lines.FirstOrDefault(a => a.from == nodeId); | |||
} | |||
bool isOk = false; | |||
if (string.IsNullOrEmpty(line.strategy) || line.strategy == "1") | |||
{ | |||
isOk = true; | |||
} | |||
else | |||
{ | |||
var codeList = line.agreeList.Split(','); | |||
foreach (string _code in codeList) | |||
{ | |||
bool isOk = false; | |||
if (string.IsNullOrEmpty(line.strategy) || line.strategy == "1") | |||
if (_code == code) | |||
{ | |||
isOk = true; | |||
break; | |||
} | |||
else { | |||
var codeList = line.agreeList.Split(','); | |||
foreach (string _code in codeList) { | |||
if (_code == code) { | |||
isOk = true; | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
if (isOk) | |||
{ | |||
if (nodesMap.ContainsKey(line.to)) | |||
{ | |||
//如果lastNode 不为空,直接执行最后一条线的绑定方法 并终止任务 | |||
if (overFW) | |||
{ | |||
nextNodes.Add(endNode); | |||
} | |||
if (isOk) | |||
else | |||
{ | |||
if (nodesMap.ContainsKey(line.to)) | |||
{ | |||
nextNodes.Add(nodesMap[line.to]); | |||
nextNodes.Add(nodesMap[line.to]); | |||
} | |||
switch (line.operationType) {// 绑定的操作类型 | |||
case "sql": // sql 语句 | |||
if (!string.IsNullOrEmpty(line.dbId) && !string.IsNullOrEmpty(line.strSql)) | |||
{ | |||
lineList.Add(line); | |||
} | |||
break; | |||
case "interface": // interface 接口 | |||
if (!string.IsNullOrEmpty(line.strInterface)) | |||
{ | |||
lineList.Add(line); | |||
} | |||
break; | |||
case "ioc": // 依赖注入 | |||
if (!string.IsNullOrEmpty(line.iocName)) | |||
{ | |||
lineList.Add(line); | |||
} | |||
break; | |||
switch (line.operationType) | |||
{// 绑定的操作类型 | |||
case "sql": // sql 语句 | |||
if (!string.IsNullOrEmpty(line.dbId) && !string.IsNullOrEmpty(line.strSql)) | |||
{ | |||
lineList.Add(line); | |||
} | |||
} | |||
break; | |||
case "interface": // interface 接口 | |||
if (!string.IsNullOrEmpty(line.strInterface)) | |||
{ | |||
lineList.Add(line); | |||
} | |||
break; | |||
case "ioc": // 依赖注入 | |||
if (!string.IsNullOrEmpty(line.iocName)) | |||
{ | |||
lineList.Add(line); | |||
} | |||
break; | |||
} | |||
} | |||
} | |||
return nextNodes; | |||
} | |||
/// <summary> | |||
/// 获取上一节点列表 | |||
@@ -392,7 +428,8 @@ namespace Learun.Workflow.Engine | |||
/// 获取配置参数信息 | |||
/// </summary> | |||
/// <returns></returns> | |||
public NWFEngineParamConfig GetConfig() { | |||
public NWFEngineParamConfig GetConfig() | |||
{ | |||
return config.ParamConfig; | |||
} | |||
/// <summary> | |||
@@ -403,9 +440,12 @@ namespace Learun.Workflow.Engine | |||
/// <param name="isGetAuditors">是否获取下一节点审核人</param> | |||
/// <param name="lineList">经过的线段需要执行操作的</param> | |||
/// <returns></returns> | |||
public List<NWFNodeInfo> GetNextTaskNode(NWFNodeInfo beginNode,string code,bool isGetAuditors, List<NWFLineInfo> lineList) { | |||
public List<NWFNodeInfo> GetNextTaskNode(NWFNodeInfo beginNode, string code, bool isGetAuditors, List<NWFLineInfo> lineList, bool overWF = false) | |||
{ | |||
List<NWFNodeInfo> list = new List<NWFNodeInfo>(); | |||
List<NWFNodeInfo> nextNodeList = GetNextNodes(beginNode.id, code, lineList); | |||
List<NWFNodeInfo> nextNodeList = new List<NWFNodeInfo>(); | |||
nextNodeList = GetNextNodes(beginNode.id, code, lineList, overWF); | |||
Dictionary<string, string> auditers = null; | |||
if (!string.IsNullOrEmpty(config.ParamConfig.Auditers)) | |||
@@ -419,13 +459,15 @@ namespace Learun.Workflow.Engine | |||
if (auditers != null && auditers.ContainsKey(node.id)) | |||
{ | |||
node.auditors = new List<NWFAuditor>(); | |||
node.auditors.Add(new NWFAuditor() { | |||
node.auditors.Add(new NWFAuditor() | |||
{ | |||
type = 3, | |||
auditorId = auditers[node.id] | |||
}); | |||
} | |||
switch (node.type) { | |||
switch (node.type) | |||
{ | |||
case "conditionnode": // 条件节点 | |||
if (!isGetAuditors) | |||
{ | |||
@@ -438,13 +480,15 @@ namespace Learun.Workflow.Engine | |||
list.AddRange(GetNextTaskNode(node, "disagree", isGetAuditors, lineList)); | |||
} | |||
} | |||
else { | |||
else | |||
{ | |||
list.AddRange(GetNextTaskNode(node, "agree", isGetAuditors, lineList)); | |||
list.AddRange(GetNextTaskNode(node, "disagree", isGetAuditors, lineList)); | |||
} | |||
break; | |||
case "confluencenode":// 会签节点 | |||
if (!isGetAuditors) { | |||
if (!isGetAuditors) | |||
{ | |||
int confluenceRes; | |||
if (code == "agree") | |||
{ | |||
@@ -471,8 +515,9 @@ namespace Learun.Workflow.Engine | |||
break; | |||
case "childwfnode":// 子流程节点 | |||
list.Add(node); | |||
if (node.childType == "2") { // 异步的情况下直接往下走 | |||
list.AddRange(GetNextTaskNode(node, "agree", isGetAuditors,lineList)); | |||
if (node.childType == "2") | |||
{ // 异步的情况下直接往下走 | |||
list.AddRange(GetNextTaskNode(node, "agree", isGetAuditors, lineList)); | |||
} | |||
break; | |||
case "startround":// 开始节点 需要重新审核 | |||
@@ -39,7 +39,7 @@ namespace Learun.Workflow.Engine | |||
/// <param name="nodeId">当前节点Id</param> | |||
/// <param name="code">节点操作码 agree 同意 disagree 不同意 lrtimeout 超时</param> | |||
/// <returns>节点信息列表</returns> | |||
List<NWFNodeInfo> GetNextNodes(string nodeId, string code, List<NWFLineInfo> lineList); | |||
List<NWFNodeInfo> GetNextNodes(string nodeId, string code, List<NWFLineInfo> lineList, bool overFW = false); | |||
/// <summary> | |||
/// 获取上一节点列表 | |||
/// </summary> | |||
@@ -69,7 +69,7 @@ namespace Learun.Workflow.Engine | |||
/// <param name="isGetAuditors">是否获取下一节点审核人</param> | |||
/// <param name="lineList">经过的线段需要执行操作的</param> | |||
/// <returns></returns> | |||
List<NWFNodeInfo> GetNextTaskNode(NWFNodeInfo beginNode, string code, bool isGetAuditors, List<NWFLineInfo> lineList); | |||
List<NWFNodeInfo> GetNextTaskNode(NWFNodeInfo beginNode, string code, bool isGetAuditors, List<NWFLineInfo> lineList, bool overWF = false); | |||
#endregion | |||
} | |||
} |
@@ -7,7 +7,7 @@ export default { | |||
"enableSignUp": true, | |||
// 请求数据的接口地址;可以配置多个,开发环境下登录页会出现选择菜单供您选择 | |||
"apiHost": [ | |||
"http://123.57.209.16:31173/learun/adms" | |||
"https://oa.bjquanjiang.com/learun/adms" | |||
], | |||
// "apiHost": [ | |||
// "http://192.168.2.94:31173/learun/adms" | |||
@@ -13,13 +13,13 @@ | |||
<view mode="aspectFit" class="logo"></view> | |||
<!-- 【仅生产环境】使用账号的原因,无此项则微信审核通不过 --> | |||
<view v-if="DEV" class="intro"> | |||
<!-- <view v-if="!DEV" class="intro"> | |||
<view class="intro">注册登录智慧校园账号后,您将可以体验力软框架产品中的所有功能与业务</view> | |||
<view class="intro">OA · 进销存 · 工作流审批 · 数据可视化</view> | |||
<view class="intro text-gray" style="font-size: 0.9em;"> | |||
如果您之前已在智慧校园 PC 端中注册过体验账号,可以直接使用原账号登录,无需另行注册 | |||
</view> | |||
</view> | |||
</view> --> | |||
</view> | |||
<!-- 账户密码表单 --> | |||
@@ -30,9 +30,9 @@ | |||
<l-icon slot="title" type="lock" /> | |||
</l-input> | |||
<l-button @click="login(null)" size="lg" color="blue" class="margin-top-sm block" block>登 录</l-button> | |||
<l-button v-if="enableSignUp" @click="signUp" size="lg" line="blue" class="margin-top-sm block" block> | |||
<!-- <l-button v-if="enableSignUp" @click="signUp" size="lg" line="blue" class="margin-top-sm block" block> | |||
教师注册 | |||
</l-button> | |||
</l-button> --> | |||
<!-- 【仅小程序】一键登录按钮 --> | |||
<!-- #ifdef MP --> | |||