2、流程审批中审批人加签后加签人如没有做审批动作,审批人可以撤销审核 3、流程中撤销审核按键在后面的审批人操作以后不在作显示中职版本
@@ -44,6 +44,15 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
return View(); | return View(); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 指定接收人表单页 | |||||
/// </summary> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
public ActionResult SpecifyReceiverForm() | |||||
{ | |||||
return View(); | |||||
} | |||||
/// <summary> | |||||
/// 主页面【党政公文查阅】 | /// 主页面【党政公文查阅】 | ||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
@@ -211,6 +220,22 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
sys_ReceiveFileIBLL.SaveEntity(keyValue, entity); | sys_ReceiveFileIBLL.SaveEntity(keyValue, entity); | ||||
return Success("保存成功!"); | 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> | /// <summary> | ||||
/// 查看实体数据 | /// 查看实体数据 | ||||
/// <param name="keyValue">主键</param> | /// <param name="keyValue">主键</param> | ||||
@@ -30,12 +30,22 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
[HttpGet] | [HttpGet] | ||||
public ActionResult Index() | public ActionResult Index() | ||||
{ | { | ||||
return View(); | |||||
return View(); | |||||
} | } | ||||
[HttpGet] | [HttpGet] | ||||
public ActionResult IndexDocument() | public ActionResult IndexDocument() | ||||
{ | { | ||||
return View(); | |||||
return View(); | |||||
} | |||||
/// <summary> | |||||
/// 公文下发表单页 | |||||
/// </summary> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
public ActionResult IssueForm() | |||||
{ | |||||
return View(); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 主页面【党政公文下发】 | /// 主页面【党政公文下发】 | ||||
@@ -49,7 +59,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
[HttpGet] | [HttpGet] | ||||
public ActionResult FormDocument() | public ActionResult FormDocument() | ||||
{ | { | ||||
return View(); | |||||
return View(); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 表单页 | /// 表单页 | ||||
@@ -58,7 +68,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
[HttpGet] | [HttpGet] | ||||
public ActionResult Form() | public ActionResult Form() | ||||
{ | { | ||||
return View(); | |||||
return View(); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 表单页【党政公文下发】 | /// 表单页【党政公文下发】 | ||||
@@ -73,13 +83,13 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
[HttpGet] | [HttpGet] | ||||
public ActionResult FormView() | public ActionResult FormView() | ||||
{ | { | ||||
return View(); | |||||
return View(); | |||||
} | } | ||||
[HttpGet] | [HttpGet] | ||||
public ActionResult FormDocumentView() | public ActionResult FormDocumentView() | ||||
{ | { | ||||
return View(); | |||||
return View(); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 【党政公文下发】 | /// 【党政公文下发】 | ||||
@@ -93,7 +103,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
[HttpGet] | [HttpGet] | ||||
public ActionResult ReadList() | public ActionResult ReadList() | ||||
{ | { | ||||
return View(); | |||||
return View(); | |||||
} | } | ||||
[HttpGet] | [HttpGet] | ||||
@@ -124,7 +134,7 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
public ActionResult GetPageList(string pagination, string queryJson) | public ActionResult GetPageList(string pagination, string queryJson) | ||||
{ | { | ||||
Pagination paginationobj = pagination.ToObject<Pagination>(); | 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 | var jsonData = new | ||||
{ | { | ||||
rows = data, | rows = data, | ||||
@@ -172,9 +182,10 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
[AjaxOnly] | [AjaxOnly] | ||||
public ActionResult GetFormData(string keyValue) | 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); | Sys_SendFileData.Contents = HttpUtility.HtmlDecode(Sys_SendFileData.Contents); | ||||
var jsonData = new { | |||||
var jsonData = new | |||||
{ | |||||
Sys_SendFile = Sys_SendFileData, | Sys_SendFile = Sys_SendFileData, | ||||
}; | }; | ||||
return Success(jsonData); | return Success(jsonData); | ||||
@@ -199,8 +210,9 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
[AjaxOnly] | [AjaxOnly] | ||||
public ActionResult GetFormDataByProcessId(string processId) | 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, | Sys_SendFile = Sys_SendFileData, | ||||
}; | }; | ||||
return Success(jsonData); | return Success(jsonData); | ||||
@@ -233,12 +245,11 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
public ActionResult SaveForm(string keyValue, string strEntity) | public ActionResult SaveForm(string keyValue, string strEntity) | ||||
{ | { | ||||
Sys_SendFileEntity entity = strEntity.ToObject<Sys_SendFileEntity>(); | 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("保存成功!"); | return Success("保存成功!"); | ||||
} | } | ||||
@@ -249,12 +260,11 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
public ActionResult SaveFormDocument(string keyValue, string strEntity) | public ActionResult SaveFormDocument(string keyValue, string strEntity) | ||||
{ | { | ||||
Sys_SendFileEntity entity = strEntity.ToObject<Sys_SendFileEntity>(); | 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("保存成功!"); | return Success("保存成功!"); | ||||
} | } | ||||
@@ -265,11 +275,10 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
public ActionResult SaveFormParty(string keyValue, string strEntity) | public ActionResult SaveFormParty(string keyValue, string strEntity) | ||||
{ | { | ||||
Sys_SendFileEntity entity = strEntity.ToObject<Sys_SendFileEntity>(); | 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); | sys_SendFileIBLL.SaveEntity(keyValue, entity); | ||||
return Success("保存成功!"); | return Success("保存成功!"); | ||||
} | } | ||||
@@ -291,9 +300,22 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||||
{ | { | ||||
string guid = Guid.NewGuid().ToString(); | string guid = Guid.NewGuid().ToString(); | ||||
sys_SendFileIBLL.ChangeStatusById(keyValue, 2, guid); | sys_SendFileIBLL.ChangeStatusById(keyValue, 2, guid); | ||||
sys_SendFileIBLL.ChangeStatusByProcessId(guid,2); | |||||
sys_SendFileIBLL.ChangeStatusByProcessId(guid, 2); | |||||
return Success("操作成功!"); | 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 | #endregion | ||||
} | } | ||||
@@ -27,6 +27,7 @@ | |||||
</div> | </div> | ||||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | <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_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> | <a id="lr_delete" class="btn btn-default"><i class="fa fa-trash-o"></i> 删除</a> | ||||
</div> | </div> | ||||
</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 () { | $('#lr_delete').on('click', function () { | ||||
var keyValue = $('#gridtable').jfGridValue('RFileId'); | 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", | label: "状态", name: "ReadFlag", width: 100, align: "left", | ||||
formatter: function (cellvalue, row) { | 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> | <div class="lr-form-item-title">主题<font face="宋体">*</font></div> | ||||
<input id="Title" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" /> | <input id="Title" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" /> | ||||
</div> | </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> | ||||
<div class="col-xs-12 lr-form-item" data-table="Sys_SendFile" id="ReceiverIddiv"> | <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="col-xs-12 lr-form-item" data-table="Sys_SendFile" > | ||||
<div class="lr-form-item-title">文件</div> | <div class="lr-form-item-title">文件</div> | ||||
<div id="Url" ></div> | <div id="Url" ></div> | ||||
@@ -26,70 +26,8 @@ var bootstrap = function ($, learun) { | |||||
page.initData(); | page.initData(); | ||||
}, | }, | ||||
bind: function () { | 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(); | $('#Url').lrUploader(); | ||||
var ContentsUE = UE.getEditor('Contents'); | var ContentsUE = UE.getEditor('Contents'); | ||||
$('#Contents')[0].ue = ContentsUE; | $('#Contents')[0].ue = ContentsUE; | ||||
@@ -103,63 +41,6 @@ var bootstrap = function ($, learun) { | |||||
} | } | ||||
else { | else { | ||||
$('[data-table="' + id + '"]').lrSetFormData(data[id]); | $('[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; | keyValue = data[id].SFileId; | ||||
} | } | ||||
$('[data-table="' + id + '"]').lrSetFormData(data[id]); | $('[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) { | save = function (processId, callBack, i) { | ||||
var formData = $('body').lrGetFormData(); | 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) { | if (!!processId) { | ||||
formData.SProcessId = processId; | formData.SProcessId = processId; | ||||
} | } | ||||
@@ -3,23 +3,19 @@ | |||||
Layout = "~/Views/Shared/_Form.cshtml"; | Layout = "~/Views/Shared/_Form.cshtml"; | ||||
} | } | ||||
<div class="lr-form-wrap" id="form"> | <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> | <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> | ||||
<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> | ||||
<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 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> | ||||
<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 class="lr-form-item-title">正文</div> | ||||
<div id="Contents" style="height:300px; margin-top: 6px;"></div> | <div id="Contents" style="height:300px; margin-top: 6px;"></div> | ||||
</div> | </div> | ||||
@@ -27,9 +27,7 @@ var bootstrap = function ($, learun) { | |||||
page.initData(); | page.initData(); | ||||
}, | }, | ||||
bind: function () { | bind: function () { | ||||
$('#SendType').lrDataItemSelect({ | |||||
code: 'FileSendType' | |||||
}); | |||||
$('#SpecifyReceiver').lrUserSelect({ type: '1' }); | |||||
$('#Url').lrUploader(); | $('#Url').lrUploader(); | ||||
var ContentsUE = UE.getEditor('Contents'); | var ContentsUE = UE.getEditor('Contents'); | ||||
$('#Contents')[0].ue = ContentsUE; | $('#Contents')[0].ue = ContentsUE; | ||||
@@ -44,7 +42,7 @@ var bootstrap = function ($, learun) { | |||||
else { | else { | ||||
$('[data-table="' + id + '"]').lrSetFormData(data[id]); | $('[data-table="' + id + '"]').lrSetFormData(data[id]); | ||||
$("#lrUploader_uploadBtn_Url").hide(); | $("#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) { | if (!!processId) { | ||||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/Sys_SendFile/GetFormDataByProcessId?processId=' + processId, function (data) { | $.lrSetForm(top.$.rootUrl + '/EducationalAdministration/Sys_SendFile/GetFormDataByProcessId?processId=' + processId, function (data) { | ||||
for (var id in data) { | for (var id in data) { | ||||
@@ -70,7 +68,7 @@ var bootstrap = function ($, learun) { | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||
callback && callback(); | |||||
callback && callback(); | |||||
} | } | ||||
// 验证数据是否填写完整 | // 验证数据是否填写完整 | ||||
validForm = function () { | validForm = function () { | ||||
@@ -81,13 +79,21 @@ var bootstrap = function ($, learun) { | |||||
}; | }; | ||||
// 保存数据 | // 保存数据 | ||||
save = function (processId, callBack, i) { | 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(); | page.init(); | ||||
} | } |
@@ -30,6 +30,8 @@ | |||||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | <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_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_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> | <a id="lr_read" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 查阅情况</a> | ||||
</div> | </div> | ||||
</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 () { | initGird: function () { | ||||
@@ -146,19 +192,31 @@ var bootstrap = function ($, learun) { | |||||
headData: [ | headData: [ | ||||
{ label: "主题", name: "Title", width: 300, align: "left" }, | { 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" | label: "下发人", name: "Sender", width: 100, align: "left" | ||||
@@ -172,7 +230,11 @@ var bootstrap = function ($, learun) { | |||||
if (cellvalue === 1) { | if (cellvalue === 1) { | ||||
return '<span class=\"label label-warning\">审批中</span>'; | return '<span class=\"label label-warning\">审批中</span>'; | ||||
} else if (cellvalue === 2) { | } 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 { | } else { | ||||
return '<span class=\"label label-default\" >草稿</span>'; | 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="lr-layout-tool-right"> | ||||
<div class=" btn-group btn-group-sm"> | <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_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> | ||||
</div> | </div> | ||||
@@ -24,6 +24,40 @@ var bootstrap = function ($, learun) { | |||||
$('#lr_refresh').on('click', function () { | $('#lr_refresh').on('click', function () { | ||||
location.reload(); | 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 () { | initGird: function () { | ||||
@@ -36,6 +70,30 @@ var bootstrap = function ($, learun) { | |||||
{ | { | ||||
label: "查阅时间", name: "ReadTime", width: 150, align: "left" | 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", | label: "状态", name: "ReadFlag", width: 100, align: "left", | ||||
formatter: function (cellvalue, row) { | formatter: function (cellvalue, row) { | ||||
@@ -45,6 +103,16 @@ var bootstrap = function ($, learun) { | |||||
return '<span class=\"label label-warning\">未读</span>'; | 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', | mainId: 'RFileId', | ||||
@@ -9,7 +9,7 @@ | |||||
<ul class="lr-left-list" id="lr_left_list"> | <ul class="lr-left-list" id="lr_left_list"> | ||||
<li data-value="2" class="lrlg active">待办任务</li> | <li data-value="2" class="lrlg active">待办任务</li> | ||||
<li data-value="3" class="lrlg">已办任务</li> | <li data-value="3" class="lrlg">已办任务</li> | ||||
<li class="lrlg" data-value="1">我的流程</li> | |||||
<li data-value="1" class="lrlg">我的流程</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
</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; | cellvalue = '<span class="label label-warning revoke2" style="margin-left:5px;margin-right:5px;" title="撤销审核" >撤销审核</span>' + cellvalue; | ||||
$cell.on('click', '.revoke2', function () {// 删除 | $cell.on('click', '.revoke2', function () {// 删除 | ||||
@@ -324,12 +324,17 @@ var bootstrap = function ($, learun) { | |||||
return "<span class=\"label label-success\">运行中</span>"; | return "<span class=\"label label-success\">运行中</span>"; | ||||
} else if (cellvalue == 2) { | } else if (cellvalue == 2) { | ||||
return "<span class=\"label label-primary\">草稿</span>"; | return "<span class=\"label label-primary\">草稿</span>"; | ||||
} else { | |||||
} | |||||
else { | |||||
return "<span class=\"label label-danger\">作废</span>"; | return "<span class=\"label label-danger\">作废</span>"; | ||||
} | } | ||||
} | } | ||||
else { | 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 dfopid = request('dfopid'); | ||||
var selectValue = request('selectValue'); | var selectValue = request('selectValue'); | ||||
if (selectValue == "null") { | |||||
selectValue = null; | |||||
} | |||||
var acceptClick; | var acceptClick; | ||||
var bootstrap = function ($, learun) { | var bootstrap = function ($, learun) { | ||||
@@ -45,7 +48,7 @@ var bootstrap = function ($, learun) { | |||||
$warp.append($cardbox); | $warp.append($cardbox); | ||||
learun.clientdata.getAsync('department', { | learun.clientdata.getAsync('department', { | ||||
key: item.F_DepartmentId, | key: item.F_DepartmentId, | ||||
callback: function (_data,op) { | |||||
callback: function (_data, op) { | |||||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | $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'); | $('#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) { | learun.httpAsync('GET', top.$.rootUrl + '/LR_OrganizationModule/User/GetEntityListByUserIds', { keyValue: selectValue }, function (data) { | ||||
if (!!data) { | if (!!data) { | ||||
$.each(data, function (id, item) { | $.each(data, function (id, item) { | ||||
@@ -100,13 +102,13 @@ var bootstrap = function ($, learun) { | |||||
$warp.append($(_html)); | $warp.append($(_html)); | ||||
learun.clientdata.getAsync('department', { | learun.clientdata.getAsync('department', { | ||||
key: item.F_DepartmentId, | key: item.F_DepartmentId, | ||||
callback: function (_data,op) { | |||||
callback: function (_data, op) { | |||||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | $warp.find('[data-id="' + op.key + '"]').text(_data.name); | ||||
} | } | ||||
}); | }); | ||||
learun.clientdata.getAsync('company', { | learun.clientdata.getAsync('company', { | ||||
key: item.F_CompanyId, | key: item.F_CompanyId, | ||||
callback: function (_data,op) { | |||||
callback: function (_data, op) { | |||||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | $warp.find('[data-id="' + op.key + '"]').text(_data.name); | ||||
} | } | ||||
}); | }); | ||||
@@ -114,7 +116,7 @@ var bootstrap = function ($, learun) { | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||
}; | }; | ||||
function addUser(useritem) { | function addUser(useritem) { | ||||
var $warp = $('#selected_user_list'); | var $warp = $('#selected_user_list'); | ||||
@@ -126,13 +128,13 @@ var bootstrap = function ($, learun) { | |||||
$warp.append(_html); | $warp.append(_html); | ||||
learun.clientdata.getAsync('department', { | learun.clientdata.getAsync('department', { | ||||
key: useritem.F_DepartmentId, | key: useritem.F_DepartmentId, | ||||
callback: function (_data,op) { | |||||
callback: function (_data, op) { | |||||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | $warp.find('[data-id="' + op.key + '"]').text(_data.name); | ||||
} | } | ||||
}); | }); | ||||
learun.clientdata.getAsync('company', { | learun.clientdata.getAsync('company', { | ||||
key: useritem.F_CompanyId, | key: useritem.F_CompanyId, | ||||
callback: function (_data,op) { | |||||
callback: function (_data, op) { | |||||
$warp.find('[data-id="' + op.key + '"]').text(_data.name); | $warp.find('[data-id="' + op.key + '"]').text(_data.name); | ||||
} | } | ||||
}); | }); | ||||
@@ -172,7 +174,7 @@ var bootstrap = function ($, learun) { | |||||
$('#department_tree').lrtreeSet('refresh', { | $('#department_tree').lrtreeSet('refresh', { | ||||
url: top.$.rootUrl + '/LR_OrganizationModule/Department/GetTree', | 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(); | $('#user_list_warp').lrscroll(); | ||||
@@ -229,7 +231,9 @@ var bootstrap = function ($, learun) { | |||||
if (postitem.text != "") { | if (postitem.text != "") { | ||||
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); | callBack(postitem, dfopid); | ||||
return true; | 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; | var dfop = $self[0]._lrformselect.dfop; | ||||
return dfop._itemValue ? dfop._itemValue.value : ""; | 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) { | $.fn.lrformselectSet = function (value) { | ||||
var $self = $(this); | var $self = $(this); | ||||
var dfop = $self[0]._lrformselect.dfop; | var dfop = $self[0]._lrformselect.dfop; | ||||
@@ -610,6 +610,44 @@ | |||||
} | } | ||||
return value; | 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) { | $.fn.lrselectSet = function (value) { | ||||
// 设置数据的值 | // 设置数据的值 | ||||
@@ -297,7 +297,20 @@ | |||||
} | } | ||||
else { | else { | ||||
var data = storage.get("userData").data || {}; | 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) { | 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 | #endregion | ||||
} | } | ||||
@@ -45,6 +45,16 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
[Column("RECEIVER")] | [Column("RECEIVER")] | ||||
public string Receiver { get; set; } | public string Receiver { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 指定接收人 | |||||
/// </summary> | |||||
[Column("SPECIFYRECEIVER")] | |||||
public string SpecifyReceiver { get; set; } | |||||
/// <summary> | |||||
/// 指定接收人的下发状态 | |||||
/// </summary> | |||||
[Column("SENDSTATUS")] | |||||
public bool? SendStatus { get; set; } | |||||
/// <summary> | |||||
/// 标题 | /// 标题 | ||||
/// </summary> | /// </summary> | ||||
[Column("TITLE")] | [Column("TITLE")] | ||||
@@ -77,5 +77,6 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
#endregion | #endregion | ||||
void Issue(Sys_IssueEntity entity); | |||||
} | } | ||||
} | } |
@@ -3,8 +3,16 @@ using Learun.DataBase.Repository; | |||||
using Learun.Util; | using Learun.Util; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Configuration; | |||||
using System.Data; | using System.Data; | ||||
using System.Linq; | |||||
using System.Text; | 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 | namespace Learun.Application.TwoDevelopment.EducationalAdministration | ||||
{ | { | ||||
@@ -226,7 +234,8 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
var oldentity = GetSys_ReceiveFileEntity(keyValue); | var oldentity = GetSys_ReceiveFileEntity(keyValue); | ||||
oldentity.RUrl = entity.RUrl; | oldentity.RUrl = entity.RUrl; | ||||
oldentity.ReplyFlag = true; | oldentity.ReplyFlag = true; | ||||
oldentity.ReplyTime=DateTime.Now; | |||||
oldentity.ReplyTime = DateTime.Now; | |||||
oldentity.SpecifyReceiver = entity.SpecifyReceiver; | |||||
this.BaseRepository().Update(oldentity); | this.BaseRepository().Update(oldentity); | ||||
} | } | ||||
else | else | ||||
@@ -330,5 +339,142 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
#endregion | #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 | #endregion | ||||
} | } | ||||
@@ -11,7 +11,7 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
/// 日 期:2019-04-11 10:31 | /// 日 期:2019-04-11 10:31 | ||||
/// 描 述:公文发送 | /// 描 述:公文发送 | ||||
/// </summary> | /// </summary> | ||||
public class Sys_SendFileEntity | |||||
public class Sys_SendFileEntity | |||||
{ | { | ||||
#region 实体成员 | #region 实体成员 | ||||
/// <summary> | /// <summary> | ||||
@@ -35,6 +35,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
[Column("RECEIVERID")] | [Column("RECEIVERID")] | ||||
public string ReceiverId { get; set; } | public string ReceiverId { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 流程审批指定接收人 | |||||
/// </summary> | |||||
[Column("SPECIFYRECEIVER")] | |||||
public string SpecifyReceiver { get; set; } | |||||
/// <summary> | |||||
/// Receiver | /// Receiver | ||||
/// </summary> | /// </summary> | ||||
[Column("RECEIVER")] | [Column("RECEIVER")] | ||||
@@ -88,6 +93,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
public void Create() | public void Create() | ||||
{ | { | ||||
this.SFileId = Guid.NewGuid().ToString(); | this.SFileId = Guid.NewGuid().ToString(); | ||||
this.DelFlag = false; | |||||
this.SendFlag = 0; | |||||
this.SenderId = LoginUserInfo.Get().userId; | |||||
this.Sender = LoginUserInfo.Get().realName; | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 编辑调用 | /// 编辑调用 | ||||
@@ -58,5 +58,6 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
#endregion | #endregion | ||||
void OverIssue(string keyValue); | |||||
} | } | ||||
} | } |
@@ -228,163 +228,22 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||||
/// <param name="status"></param> | /// <param name="status"></param> | ||||
public void ChangeStatusByProcessId(string processId, int status) | 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; | 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 | #endregion | ||||
} | } |
@@ -196,6 +196,7 @@ | |||||
<Compile Include="EducationalAdministration\Sys_ReceiveDocument\Sys_ReceiveDocumentIBLL.cs" /> | <Compile Include="EducationalAdministration\Sys_ReceiveDocument\Sys_ReceiveDocumentIBLL.cs" /> | ||||
<Compile Include="EducationalAdministration\Sys_ReceiveDocument\Sys_ReceiveDocumentService.cs" /> | <Compile Include="EducationalAdministration\Sys_ReceiveDocument\Sys_ReceiveDocumentService.cs" /> | ||||
<Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_ReceiveFileBLL.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_ReceiveFileEntity.cs" /> | ||||
<Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_ReceiveFileIBLL.cs" /> | <Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_ReceiveFileIBLL.cs" /> | ||||
<Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_ReceiveFileService.cs" /> | <Compile Include="EducationalAdministration\Sys_ReceiveFile\Sys_ReceiveFileService.cs" /> | ||||
@@ -2013,6 +2013,9 @@ namespace Learun.Application.WorkFlow | |||||
NWFEngineParamConfig nWFEngineParamConfig = nWFIEngine.GetConfig(); | NWFEngineParamConfig nWFEngineParamConfig = nWFIEngine.GetConfig(); | ||||
nWFEngineParamConfig.Auditers = auditors; | nWFEngineParamConfig.Auditers = auditors; | ||||
//overFW 任一审核者不同意 即流程任务结束 | |||||
bool overFW = false; | |||||
// 获取任务实体 | // 获取任务实体 | ||||
var taskEntiy = nWFTaskIBLL.GetEntity(taskId); | var taskEntiy = nWFTaskIBLL.GetEntity(taskId); | ||||
if (taskEntiy == null) | if (taskEntiy == null) | ||||
@@ -2181,6 +2184,7 @@ namespace Learun.Application.WorkFlow | |||||
else if (operationCode == "disagree") | else if (operationCode == "disagree") | ||||
{ | { | ||||
nWFTaskRelationEntity.F_Result = 2; | nWFTaskRelationEntity.F_Result = 2; | ||||
overFW = true; | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -2190,7 +2194,7 @@ namespace Learun.Application.WorkFlow | |||||
// 获取下一节点信息 | // 获取下一节点信息 | ||||
List<NWFLineInfo> lineList = new List<NWFLineInfo>(); | 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; | int state = 0; | ||||
@@ -2221,6 +2225,12 @@ namespace Learun.Application.WorkFlow | |||||
nWFProcessEntity.F_IsFinished = 1; | nWFProcessEntity.F_IsFinished = 1; | ||||
} | } | ||||
// 如果任一审核者不同意,即流程结束(终止) | |||||
if (overFW) | |||||
{ | |||||
nWFProcessEntity.F_EnabledMark = 4;//终止 | |||||
} | |||||
List<NWFLineInfo> pLineList = new List<NWFLineInfo>(); | List<NWFLineInfo> pLineList = new List<NWFLineInfo>(); | ||||
List<NWFTaskEntity> pTaskList = new List<NWFTaskEntity>(); | List<NWFTaskEntity> pTaskList = new List<NWFTaskEntity>(); | ||||
List<NWFTaskMsgEntity> pTaskMsgList = new List<NWFTaskMsgEntity>(); | List<NWFTaskMsgEntity> pTaskMsgList = new List<NWFTaskMsgEntity>(); | ||||
@@ -50,7 +50,7 @@ namespace Learun.Application.WorkFlow | |||||
[Column("F_LEVEL")] | [Column("F_LEVEL")] | ||||
public int? F_Level { get; set; } | public int? F_Level { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 流程进程有效标志 1正常2草稿3作废 | |||||
/// 流程进程有效标志 1正常2草稿3作废4终止 | |||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
[Column("F_ENABLEDMARK")] | [Column("F_ENABLEDMARK")] | ||||
@@ -157,6 +157,17 @@ namespace Learun.Application.WorkFlow | |||||
[NotMapped] | [NotMapped] | ||||
public int? F_TaskType { get; set; } | 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> | /// <summary> | ||||
/// 是否被催办 1 被催办了 | /// 是否被催办 1 被催办了 | ||||
/// </summary> | /// </summary> | ||||
@@ -537,7 +537,8 @@ namespace Learun.Application.WorkFlow | |||||
p.F_ParentProcessId, | p.F_ParentProcessId, | ||||
p.F_CreateUserId, | p.F_CreateUserId, | ||||
p.F_CreateUserName, | p.F_CreateUserName, | ||||
p.F_IsStart | |||||
p.F_IsStart, | |||||
t.F_NodeId | |||||
FROM | FROM | ||||
LR_NWF_Task t | LR_NWF_Task t | ||||
LEFT JOIN LR_NWF_TaskRelation r on r.F_TaskId = t.F_Id | 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 "); | 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) | catch (Exception ex) | ||||
{ | { | ||||
@@ -2,6 +2,7 @@ | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Data; | using System.Data; | ||||
using System.Linq; | |||||
namespace Learun.Workflow.Engine | namespace Learun.Workflow.Engine | ||||
{ | { | ||||
@@ -32,6 +33,11 @@ namespace Learun.Workflow.Engine | |||||
{ | { | ||||
startNode = node; | startNode = node; | ||||
} | } | ||||
if (node.type == "endround") | |||||
{ | |||||
endNode = node; | |||||
} | |||||
} | } | ||||
} | } | ||||
#endregion | #endregion | ||||
@@ -41,6 +47,7 @@ namespace Learun.Workflow.Engine | |||||
private NWFScheme wfScheme = null; | private NWFScheme wfScheme = null; | ||||
private Dictionary<string, NWFNodeInfo> nodesMap = null; | private Dictionary<string, NWFNodeInfo> nodesMap = null; | ||||
private NWFNodeInfo startNode = null; | private NWFNodeInfo startNode = null; | ||||
private NWFNodeInfo endNode = null; | |||||
#endregion | #endregion | ||||
#region 私有方法 | #region 私有方法 | ||||
@@ -49,7 +56,8 @@ namespace Learun.Workflow.Engine | |||||
/// </summary> | /// </summary> | ||||
/// <param name="node">节点信息</param> | /// <param name="node">节点信息</param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
private bool CalcCondition(NWFNodeInfo node) { | |||||
private bool CalcCondition(NWFNodeInfo node) | |||||
{ | |||||
bool res = true; | bool res = true; | ||||
if (node.conditions.Count > 0) | if (node.conditions.Count > 0) | ||||
{ | { | ||||
@@ -63,7 +71,8 @@ namespace Learun.Workflow.Engine | |||||
if (dataTable.Rows.Count > 0) | if (dataTable.Rows.Count > 0) | ||||
{ | { | ||||
string value = dataTable.Rows[0][0].ToString(); | string value = dataTable.Rows[0][0].ToString(); | ||||
if (string.IsNullOrEmpty(value)) { | |||||
if (string.IsNullOrEmpty(value)) | |||||
{ | |||||
return false; | return false; | ||||
} | } | ||||
@@ -131,11 +140,13 @@ namespace Learun.Workflow.Engine | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
else { | |||||
else | |||||
{ | |||||
res = false; | res = false; | ||||
} | } | ||||
} | } | ||||
if (!res) { | |||||
if (!res) | |||||
{ | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
@@ -151,7 +162,8 @@ namespace Learun.Workflow.Engine | |||||
conditionSql = conditionSql.Replace("{companyId}", "@companyId"); | conditionSql = conditionSql.Replace("{companyId}", "@companyId"); | ||||
conditionSql = conditionSql.Replace("{departmentId}", "@departmentId"); | conditionSql = conditionSql.Replace("{departmentId}", "@departmentId"); | ||||
var param = new { | |||||
var param = new | |||||
{ | |||||
processId = config.ParamConfig.ProcessId, | processId = config.ParamConfig.ProcessId, | ||||
userId = config.ParamConfig.CreateUser.Id, | userId = config.ParamConfig.CreateUser.Id, | ||||
userAccount = config.ParamConfig.CreateUser.Account, | userAccount = config.ParamConfig.CreateUser.Account, | ||||
@@ -234,7 +246,8 @@ namespace Learun.Workflow.Engine | |||||
/// 获取流程模板 | /// 获取流程模板 | ||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public string GetScheme() { | |||||
public string GetScheme() | |||||
{ | |||||
return config.ParamConfig.Scheme; | return config.ParamConfig.Scheme; | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -264,10 +277,11 @@ namespace Learun.Workflow.Engine | |||||
{ | { | ||||
return nodesMap[nodeId]; | return nodesMap[nodeId]; | ||||
} | } | ||||
else { | |||||
else | |||||
{ | |||||
return null; | return null; | ||||
} | } | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 获取下一节点 | /// 获取下一节点 | ||||
@@ -275,60 +289,82 @@ namespace Learun.Workflow.Engine | |||||
/// <param name="nodeId">当前节点Id</param> | /// <param name="nodeId">当前节点Id</param> | ||||
/// <param name="code">节点操作码 agree 同意 disagree 不同意 lrtimeout 超时</param> | /// <param name="code">节点操作码 agree 同意 disagree 不同意 lrtimeout 超时</param> | ||||
/// <returns>节点信息列表</returns> | /// <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>(); | 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; | 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; | return nextNodes; | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 获取上一节点列表 | /// 获取上一节点列表 | ||||
@@ -392,7 +428,8 @@ namespace Learun.Workflow.Engine | |||||
/// 获取配置参数信息 | /// 获取配置参数信息 | ||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public NWFEngineParamConfig GetConfig() { | |||||
public NWFEngineParamConfig GetConfig() | |||||
{ | |||||
return config.ParamConfig; | return config.ParamConfig; | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -403,9 +440,12 @@ namespace Learun.Workflow.Engine | |||||
/// <param name="isGetAuditors">是否获取下一节点审核人</param> | /// <param name="isGetAuditors">是否获取下一节点审核人</param> | ||||
/// <param name="lineList">经过的线段需要执行操作的</param> | /// <param name="lineList">经过的线段需要执行操作的</param> | ||||
/// <returns></returns> | /// <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> 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; | Dictionary<string, string> auditers = null; | ||||
if (!string.IsNullOrEmpty(config.ParamConfig.Auditers)) | if (!string.IsNullOrEmpty(config.ParamConfig.Auditers)) | ||||
@@ -419,13 +459,15 @@ namespace Learun.Workflow.Engine | |||||
if (auditers != null && auditers.ContainsKey(node.id)) | if (auditers != null && auditers.ContainsKey(node.id)) | ||||
{ | { | ||||
node.auditors = new List<NWFAuditor>(); | node.auditors = new List<NWFAuditor>(); | ||||
node.auditors.Add(new NWFAuditor() { | |||||
node.auditors.Add(new NWFAuditor() | |||||
{ | |||||
type = 3, | type = 3, | ||||
auditorId = auditers[node.id] | auditorId = auditers[node.id] | ||||
}); | }); | ||||
} | } | ||||
switch (node.type) { | |||||
switch (node.type) | |||||
{ | |||||
case "conditionnode": // 条件节点 | case "conditionnode": // 条件节点 | ||||
if (!isGetAuditors) | if (!isGetAuditors) | ||||
{ | { | ||||
@@ -438,13 +480,15 @@ namespace Learun.Workflow.Engine | |||||
list.AddRange(GetNextTaskNode(node, "disagree", isGetAuditors, lineList)); | list.AddRange(GetNextTaskNode(node, "disagree", isGetAuditors, lineList)); | ||||
} | } | ||||
} | } | ||||
else { | |||||
else | |||||
{ | |||||
list.AddRange(GetNextTaskNode(node, "agree", isGetAuditors, lineList)); | list.AddRange(GetNextTaskNode(node, "agree", isGetAuditors, lineList)); | ||||
list.AddRange(GetNextTaskNode(node, "disagree", isGetAuditors, lineList)); | list.AddRange(GetNextTaskNode(node, "disagree", isGetAuditors, lineList)); | ||||
} | } | ||||
break; | break; | ||||
case "confluencenode":// 会签节点 | case "confluencenode":// 会签节点 | ||||
if (!isGetAuditors) { | |||||
if (!isGetAuditors) | |||||
{ | |||||
int confluenceRes; | int confluenceRes; | ||||
if (code == "agree") | if (code == "agree") | ||||
{ | { | ||||
@@ -471,8 +515,9 @@ namespace Learun.Workflow.Engine | |||||
break; | break; | ||||
case "childwfnode":// 子流程节点 | case "childwfnode":// 子流程节点 | ||||
list.Add(node); | 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; | break; | ||||
case "startround":// 开始节点 需要重新审核 | case "startround":// 开始节点 需要重新审核 | ||||
@@ -39,7 +39,7 @@ namespace Learun.Workflow.Engine | |||||
/// <param name="nodeId">当前节点Id</param> | /// <param name="nodeId">当前节点Id</param> | ||||
/// <param name="code">节点操作码 agree 同意 disagree 不同意 lrtimeout 超时</param> | /// <param name="code">节点操作码 agree 同意 disagree 不同意 lrtimeout 超时</param> | ||||
/// <returns>节点信息列表</returns> | /// <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> | ||||
/// 获取上一节点列表 | /// 获取上一节点列表 | ||||
/// </summary> | /// </summary> | ||||
@@ -69,7 +69,7 @@ namespace Learun.Workflow.Engine | |||||
/// <param name="isGetAuditors">是否获取下一节点审核人</param> | /// <param name="isGetAuditors">是否获取下一节点审核人</param> | ||||
/// <param name="lineList">经过的线段需要执行操作的</param> | /// <param name="lineList">经过的线段需要执行操作的</param> | ||||
/// <returns></returns> | /// <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 | #endregion | ||||
} | } | ||||
} | } |
@@ -7,7 +7,7 @@ export default { | |||||
"enableSignUp": true, | "enableSignUp": true, | ||||
// 请求数据的接口地址;可以配置多个,开发环境下登录页会出现选择菜单供您选择 | // 请求数据的接口地址;可以配置多个,开发环境下登录页会出现选择菜单供您选择 | ||||
"apiHost": [ | "apiHost": [ | ||||
"http://123.57.209.16:31173/learun/adms" | |||||
"https://oa.bjquanjiang.com/learun/adms" | |||||
], | ], | ||||
// "apiHost": [ | // "apiHost": [ | ||||
// "http://192.168.2.94:31173/learun/adms" | // "http://192.168.2.94:31173/learun/adms" | ||||
@@ -13,13 +13,13 @@ | |||||
<view mode="aspectFit" class="logo"></view> | <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">注册登录智慧校园账号后,您将可以体验力软框架产品中的所有功能与业务</view> | ||||
<view class="intro">OA · 进销存 · 工作流审批 · 数据可视化</view> | <view class="intro">OA · 进销存 · 工作流审批 · 数据可视化</view> | ||||
<view class="intro text-gray" style="font-size: 0.9em;"> | <view class="intro text-gray" style="font-size: 0.9em;"> | ||||
如果您之前已在智慧校园 PC 端中注册过体验账号,可以直接使用原账号登录,无需另行注册 | 如果您之前已在智慧校园 PC 端中注册过体验账号,可以直接使用原账号登录,无需另行注册 | ||||
</view> | </view> | ||||
</view> | |||||
</view> --> | |||||
</view> | </view> | ||||
<!-- 账户密码表单 --> | <!-- 账户密码表单 --> | ||||
@@ -30,9 +30,9 @@ | |||||
<l-icon slot="title" type="lock" /> | <l-icon slot="title" type="lock" /> | ||||
</l-input> | </l-input> | ||||
<l-button @click="login(null)" size="lg" color="blue" class="margin-top-sm block" block>登 录</l-button> | <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 --> | <!-- #ifdef MP --> | ||||