@@ -0,0 +1,124 @@ | |||||
using Learun.Util; | |||||
using System.Data; | |||||
using Learun.Application.TwoDevelopment.PersonnelManagement; | |||||
using System.Web.Mvc; | |||||
using System.Collections.Generic; | |||||
namespace Learun.Application.Web.Areas.PersonnelManagement.Controllers | |||||
{ | |||||
/// <summary> | |||||
/// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架 | |||||
/// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
/// 创 建:超级管理员 | |||||
/// 日 期:2021-03-08 10:36 | |||||
/// 描 述:会议纪要 | |||||
/// </summary> | |||||
public class MeetingMinutesController : MvcControllerBase | |||||
{ | |||||
private MeetingMinutesIBLL meetingMinutesIBLL = new MeetingMinutesBLL(); | |||||
#region 视图功能 | |||||
/// <summary> | |||||
/// 主页面 | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
public ActionResult Index() | |||||
{ | |||||
return View(); | |||||
} | |||||
/// <summary> | |||||
/// 表单页 | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
public ActionResult Form() | |||||
{ | |||||
return View(); | |||||
} | |||||
#endregion | |||||
#region 获取数据 | |||||
/// <summary> | |||||
/// 获取页面显示列表分页数据 | |||||
/// <summary> | |||||
/// <param name="pagination">分页参数</param> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
[AjaxOnly] | |||||
public ActionResult GetPageList(string pagination, string queryJson) | |||||
{ | |||||
Pagination paginationobj = pagination.ToObject<Pagination>(); | |||||
var data = meetingMinutesIBLL.GetPageList(paginationobj, queryJson); | |||||
var jsonData = new | |||||
{ | |||||
rows = data, | |||||
total = paginationobj.total, | |||||
page = paginationobj.page, | |||||
records = paginationobj.records | |||||
}; | |||||
return Success(jsonData); | |||||
} | |||||
/// <summary> | |||||
/// 获取页面显示列表数据 | |||||
/// <summary> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
[AjaxOnly] | |||||
public ActionResult GetList(string queryJson) | |||||
{ | |||||
var data = meetingMinutesIBLL.GetList(queryJson); | |||||
return Success(data); | |||||
} | |||||
/// <summary> | |||||
/// 获取表单数据 | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
[AjaxOnly] | |||||
public ActionResult GetFormData(string keyValue) | |||||
{ | |||||
var MeetingMinutesData = meetingMinutesIBLL.GetMeetingMinutesEntity( keyValue ); | |||||
var jsonData = new { | |||||
MeetingMinutes = MeetingMinutesData, | |||||
}; | |||||
return Success(jsonData); | |||||
} | |||||
#endregion | |||||
#region 提交数据 | |||||
/// <summary> | |||||
/// 删除实体数据 | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
[HttpPost] | |||||
[AjaxOnly] | |||||
public ActionResult DeleteForm(string keyValue) | |||||
{ | |||||
meetingMinutesIBLL.DeleteEntity(keyValue); | |||||
return Success("删除成功!"); | |||||
} | |||||
/// <summary> | |||||
/// 保存实体数据(新增、修改) | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
[HttpPost] | |||||
[ValidateAntiForgeryToken] | |||||
[AjaxOnly] | |||||
public ActionResult SaveForm(string keyValue, string strEntity) | |||||
{ | |||||
UserInfo userInfo = LoginUserInfo.Get(); MeetingMinutesEntity entity = strEntity.ToObject<MeetingMinutesEntity>(); | |||||
meetingMinutesIBLL.SaveEntity(userInfo,keyValue,entity); | |||||
return Success("保存成功!"); | |||||
} | |||||
#endregion | |||||
} | |||||
} |
@@ -0,0 +1,23 @@ | |||||
@{ | |||||
ViewBag.Title = "会议纪要"; | |||||
Layout = "~/Views/Shared/_Form.cshtml"; | |||||
} | |||||
<div class="lr-form-wrap"> | |||||
<div class="col-xs-12 lr-form-item" data-table="MeetingMinutes" > | |||||
<div class="lr-form-item-title">会议名称</div> | |||||
<input id="MeetID" type="text" class="form-control" /> | |||||
</div> | |||||
<div class="col-xs-12 lr-form-item" data-table="MeetingMinutes" > | |||||
<div class="lr-form-item-title">纪要标题</div> | |||||
<input id="Title" type="text" class="form-control" /> | |||||
</div> | |||||
<div class="col-xs-12 lr-form-item" data-table="MeetingMinutes" > | |||||
<div class="lr-form-item-title">内容</div> | |||||
<div id="Content" style="height:200px;"></div> | |||||
</div> | |||||
<div class="col-xs-12 lr-form-item" data-table="MeetingMinutes" > | |||||
<div class="lr-form-item-title">附件上传</div> | |||||
<div id="Files" ></div> | |||||
</div> | |||||
</div> | |||||
@Html.AppendJsFile("/Areas/PersonnelManagement/Views/MeetingMinutes/Form.js") |
@@ -0,0 +1,52 @@ | |||||
/* * 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架(http://www.learun.cn) | |||||
* Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
* 创建人:超级管理员 | |||||
* 日 期:2021-03-08 10:36 | |||||
* 描 述:会议纪要 | |||||
*/ | |||||
var acceptClick; | |||||
var keyValue = request('keyValue'); | |||||
var bootstrap = function ($, learun) { | |||||
"use strict"; | |||||
var page = { | |||||
init: function () { | |||||
$('.lr-form-wrap').lrscroll(); | |||||
page.bind(); | |||||
page.initData(); | |||||
}, | |||||
bind: function () { | |||||
var ContentUE = UE.getEditor('Content'); | |||||
$('#Content')[0].ue = ContentUE; $('#Files').lrUploader(); | |||||
}, | |||||
initData: function () { | |||||
if (!!keyValue) { | |||||
$.lrSetForm(top.$.rootUrl + '/PersonnelManagement/MeetingMinutes/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]); | |||||
} | |||||
} | |||||
}); | |||||
} | |||||
} | |||||
}; | |||||
// 保存数据 | |||||
acceptClick = function (callBack) { | |||||
if (!$('body').lrValidform()) { | |||||
return false; | |||||
} | |||||
var postData = { | |||||
strEntity: JSON.stringify($('body').lrGetFormData()) | |||||
}; | |||||
$.lrSaveForm(top.$.rootUrl + '/PersonnelManagement/MeetingMinutes/SaveForm?keyValue=' + keyValue, postData, function (res) { | |||||
// 保存成功后才回调 | |||||
if (!!callBack) { | |||||
callBack(); | |||||
} | |||||
}); | |||||
}; | |||||
page.init(); | |||||
} |
@@ -0,0 +1,41 @@ | |||||
@{ | |||||
ViewBag.Title = "会议纪要"; | |||||
Layout = "~/Views/Shared/_Index.cshtml"; | |||||
} | |||||
<div class="lr-layout " > | |||||
<div class="lr-layout-center"> | |||||
<div class="lr-layout-wrap lr-layout-wrap-notitle "> | |||||
<div class="lr-layout-tool"> | |||||
<div class="lr-layout-tool-left"> | |||||
<div class="lr-layout-tool-item"> | |||||
<div id="multiple_condition_query"> | |||||
<div class="lr-query-formcontent"> | |||||
<div class="col-xs-12 lr-form-item"> | |||||
<div class="lr-form-item-title">会议名称</div> | |||||
<input id="MeetID" type="text" class="form-control" /> | |||||
</div> | |||||
<div class="col-xs-12 lr-form-item"> | |||||
<div class="lr-form-item-title">纪要标题</div> | |||||
<input id="Title" type="text" class="form-control" /> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="lr-layout-tool-right"> | |||||
<div class=" btn-group btn-group-sm"> | |||||
<a id="lr_refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a> | |||||
</div> | |||||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | |||||
<a id="lr_add" class="btn btn-default"><i class="fa fa-plus"></i> 新增</a> | |||||
<a id="lr_edit" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 编辑</a> | |||||
<a id="lr_delete" class="btn btn-default"><i class="fa fa-trash-o"></i> 删除</a> | |||||
<a id="lr_print" class="btn btn-default"><i class="fa fa-print"></i> 打印</a> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="lr-layout-body" id="gridtable"></div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
@Html.AppendJsFile("/Areas/PersonnelManagement/Views/MeetingMinutes/Index.js") |
@@ -0,0 +1,94 @@ | |||||
/* * 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架(http://www.learun.cn) | |||||
* Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
* 创建人:超级管理员 | |||||
* 日 期:2021-03-08 10:36 | |||||
* 描 述:会议纪要 | |||||
*/ | |||||
var refreshGirdData; | |||||
var bootstrap = function ($, learun) { | |||||
"use strict"; | |||||
var page = { | |||||
init: function () { | |||||
page.initGird(); | |||||
page.bind(); | |||||
}, | |||||
bind: function () { | |||||
$('#multiple_condition_query').lrMultipleQuery(function (queryJson) { | |||||
page.search(queryJson); | |||||
}, 220, 400); | |||||
// 刷新 | |||||
$('#lr_refresh').on('click', function () { | |||||
location.reload(); | |||||
}); | |||||
// 新增 | |||||
$('#lr_add').on('click', function () { | |||||
learun.layerForm({ | |||||
id: 'form', | |||||
title: '新增', | |||||
url: top.$.rootUrl + '/PersonnelManagement/MeetingMinutes/Form', | |||||
width: 600, | |||||
height: 400, | |||||
callBack: function (id) { | |||||
return top[id].acceptClick(refreshGirdData); | |||||
} | |||||
}); | |||||
}); | |||||
// 编辑 | |||||
$('#lr_edit').on('click', function () { | |||||
var keyValue = $('#gridtable').jfGridValue('ID'); | |||||
if (learun.checkrow(keyValue)) { | |||||
learun.layerForm({ | |||||
id: 'form', | |||||
title: '编辑', | |||||
url: top.$.rootUrl + '/PersonnelManagement/MeetingMinutes/Form?keyValue=' + keyValue, | |||||
width: 600, | |||||
height: 400, | |||||
callBack: function (id) { | |||||
return top[id].acceptClick(refreshGirdData); | |||||
} | |||||
}); | |||||
} | |||||
}); | |||||
// 删除 | |||||
$('#lr_delete').on('click', function () { | |||||
var keyValue = $('#gridtable').jfGridValue('ID'); | |||||
if (learun.checkrow(keyValue)) { | |||||
learun.layerConfirm('是否确认删除该项!', function (res) { | |||||
if (res) { | |||||
learun.deleteForm(top.$.rootUrl + '/PersonnelManagement/MeetingMinutes/DeleteForm', { keyValue: keyValue}, function () { | |||||
refreshGirdData(); | |||||
}); | |||||
} | |||||
}); | |||||
} | |||||
}); | |||||
// 打印 | |||||
$('#lr_print').on('click', function () { | |||||
$('#gridtable').jqprintTable(); | |||||
}); | |||||
}, | |||||
// 初始化列表 | |||||
initGird: function () { | |||||
$('#gridtable').lrAuthorizeJfGrid({ | |||||
url: top.$.rootUrl + '/PersonnelManagement/MeetingMinutes/GetPageList', | |||||
headData: [ | |||||
{ label: "会议名称", name: "MeetID", width: 100, align: "left"}, | |||||
{ label: "纪要标题", name: "Title", width: 100, align: "left"}, | |||||
{ label: "内容", name: "Content", width: 100, align: "left"}, | |||||
{ label: "附件上传", name: "Files", width: 100, align: "left"}, | |||||
], | |||||
mainId:'ID', | |||||
isPage: true | |||||
}); | |||||
page.search(); | |||||
}, | |||||
search: function (param) { | |||||
param = param || {}; | |||||
$('#gridtable').jfGridSet('reload',{ queryJson: JSON.stringify(param) }); | |||||
} | |||||
}; | |||||
refreshGirdData = function () { | |||||
$('#gridtable').jfGridSet('reload'); | |||||
}; | |||||
page.init(); | |||||
} |
@@ -794,6 +794,7 @@ | |||||
<Compile Include="Areas\EducationalAdministration\Controllers\EATalentTrainController.cs" /> | <Compile Include="Areas\EducationalAdministration\Controllers\EATalentTrainController.cs" /> | ||||
<Compile Include="Areas\EducationalAdministration\Controllers\Sys_DefaultPwdConfigController.cs" /> | <Compile Include="Areas\EducationalAdministration\Controllers\Sys_DefaultPwdConfigController.cs" /> | ||||
<Compile Include="Areas\PersonnelManagement\Controllers\MeetingSignInRecordController.cs" /> | <Compile Include="Areas\PersonnelManagement\Controllers\MeetingSignInRecordController.cs" /> | ||||
<Compile Include="Areas\PersonnelManagement\Controllers\MeetingMinutesController.cs" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<Content Include="Areas\AdmissionsPlatform\Views\AP_OnlineUserInfo\DropOutIndex.js" /> | <Content Include="Areas\AdmissionsPlatform\Views\AP_OnlineUserInfo\DropOutIndex.js" /> | ||||
@@ -6136,6 +6137,10 @@ | |||||
<Content Include="Areas\PersonnelManagement\Views\MeetingSignInRecord\Index.js" /> | <Content Include="Areas\PersonnelManagement\Views\MeetingSignInRecord\Index.js" /> | ||||
<Content Include="Areas\PersonnelManagement\Views\MeetingSignInRecord\Form.cshtml" /> | <Content Include="Areas\PersonnelManagement\Views\MeetingSignInRecord\Form.cshtml" /> | ||||
<Content Include="Areas\PersonnelManagement\Views\MeetingSignInRecord\Form.js" /> | <Content Include="Areas\PersonnelManagement\Views\MeetingSignInRecord\Form.js" /> | ||||
<Content Include="Areas\PersonnelManagement\Views\MeetingMinutes\Index.cshtml" /> | |||||
<Content Include="Areas\PersonnelManagement\Views\MeetingMinutes\Index.js" /> | |||||
<Content Include="Areas\PersonnelManagement\Views\MeetingMinutes\Form.cshtml" /> | |||||
<Content Include="Areas\PersonnelManagement\Views\MeetingMinutes\Form.js" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<Folder Include="Areas\LR_Desktop\Models\" /> | <Folder Include="Areas\LR_Desktop\Models\" /> | ||||
@@ -274,6 +274,7 @@ | |||||
<Compile Include="Modules\LogisticsManagement\ADR_RecordApi.cs" /> | <Compile Include="Modules\LogisticsManagement\ADR_RecordApi.cs" /> | ||||
<Compile Include="Modules\PersonnelManagement\MeetingManagementApi.cs" /> | <Compile Include="Modules\PersonnelManagement\MeetingManagementApi.cs" /> | ||||
<Compile Include="Modules\PersonnelManagement\MeetingSignInRecordApi.cs" /> | <Compile Include="Modules\PersonnelManagement\MeetingSignInRecordApi.cs" /> | ||||
<Compile Include="Modules\PersonnelManagement\MeetingMinutesApi.cs" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\Learun.Application.Organization\Learun.Application.Organization.csproj"> | <ProjectReference Include="..\Learun.Application.Organization\Learun.Application.Organization.csproj"> | ||||
@@ -0,0 +1,116 @@ | |||||
using Nancy; | |||||
using Learun.Util; | |||||
using System.Collections.Generic; | |||||
using Learun.Application.TwoDevelopment.PersonnelManagement; | |||||
namespace Learun.Application.WebApi | |||||
{ | |||||
/// <summary> | |||||
/// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架 | |||||
/// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
/// 创 建:超级管理员 | |||||
/// 日 期:2021-03-08 10:36 | |||||
/// 描 述:会议纪要 | |||||
/// </summary> | |||||
public class MeetingMinutesApi : BaseApi | |||||
{ | |||||
private MeetingMinutesIBLL meetingMinutesIBLL = new MeetingMinutesBLL(); | |||||
/// <summary> | |||||
/// 注册接口 | |||||
/// <summary> | |||||
public MeetingMinutesApi() | |||||
: base("/Learun/adms/PersonnelManagement/MeetingMinutes") | |||||
{ | |||||
Get["/pagelist"] = GetPageList; | |||||
Get["/list"] = GetList; | |||||
Get["/form"] = GetForm; | |||||
Post["/delete"] = DeleteForm; | |||||
Post["/save"] = SaveForm; | |||||
} | |||||
#region 获取数据 | |||||
/// <summary> | |||||
/// 获取页面显示列表分页数据 | |||||
/// <summary> | |||||
/// <param name="_"></param> | |||||
/// <returns></returns> | |||||
public Response GetPageList(dynamic _) | |||||
{ | |||||
ReqPageParam parameter = this.GetReqData<ReqPageParam>(); | |||||
var data = meetingMinutesIBLL.GetPageList(parameter.pagination, parameter.queryJson); | |||||
var jsonData = new | |||||
{ | |||||
rows = data, | |||||
total = parameter.pagination.total, | |||||
page = parameter.pagination.page, | |||||
records = parameter.pagination.records | |||||
}; | |||||
return Success(jsonData); | |||||
} | |||||
/// <summary> | |||||
/// 获取页面显示列表数据 | |||||
/// <summary> | |||||
/// <param name="_"></param> | |||||
/// <returns></returns> | |||||
public Response GetList(dynamic _) | |||||
{ | |||||
string queryJson = this.GetReqData(); | |||||
var data = meetingMinutesIBLL.GetList(queryJson); | |||||
return Success(data); | |||||
} | |||||
/// <summary> | |||||
/// 获取表单数据 | |||||
/// <summary> | |||||
/// <param name="_"></param> | |||||
/// <returns></returns> | |||||
public Response GetForm(dynamic _) | |||||
{ | |||||
string keyValue = this.GetReqData(); | |||||
var MeetingMinutesData = meetingMinutesIBLL.GetMeetingMinutesEntity( keyValue ); | |||||
var jsonData = new { | |||||
MeetingMinutes = MeetingMinutesData, | |||||
}; | |||||
return Success(jsonData); | |||||
} | |||||
#endregion | |||||
#region 提交数据 | |||||
/// <summary> | |||||
/// 删除实体数据 | |||||
/// <param name="_"></param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
public Response DeleteForm(dynamic _) | |||||
{ | |||||
string keyValue = this.GetReqData(); | |||||
meetingMinutesIBLL.DeleteEntity(keyValue); | |||||
return Success("删除成功!"); | |||||
} | |||||
/// <summary> | |||||
/// 保存实体数据(新增、修改) | |||||
/// <param name="_"></param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
public Response SaveForm(dynamic _) | |||||
{ | |||||
ReqFormEntity parameter = this.GetReqData<ReqFormEntity>(); | |||||
MeetingMinutesEntity entity = parameter.strEntity.ToObject<MeetingMinutesEntity>(); | |||||
meetingMinutesIBLL.SaveEntity(this.userInfo,parameter.keyValue,entity); | |||||
return Success("保存成功!"); | |||||
} | |||||
#endregion | |||||
#region 私有类 | |||||
/// <summary> | |||||
/// 表单实体类 | |||||
/// <summary> | |||||
private class ReqFormEntity { | |||||
public string keyValue { get; set; } | |||||
public string strEntity{ get; set; } | |||||
} | |||||
#endregion | |||||
} | |||||
} |
@@ -26,6 +26,7 @@ namespace Learun.Application.WebApi | |||||
Get["/form"] = GetForm; | Get["/form"] = GetForm; | ||||
Post["/delete"] = DeleteForm; | Post["/delete"] = DeleteForm; | ||||
Post["/save"] = SaveForm; | Post["/save"] = SaveForm; | ||||
Get["/scan"] = Scan; | |||||
} | } | ||||
#region 获取数据 | #region 获取数据 | ||||
@@ -86,6 +87,18 @@ namespace Learun.Application.WebApi | |||||
string keyValue = this.GetReqData(); | string keyValue = this.GetReqData(); | ||||
meetingSignInRecordIBLL.DeleteEntity(keyValue); | meetingSignInRecordIBLL.DeleteEntity(keyValue); | ||||
return Success("删除成功!"); | return Success("删除成功!"); | ||||
} | |||||
/// <summary> | |||||
/// 会议扫码签到 | |||||
/// <param name="_"></param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
public Response Scan(dynamic _) | |||||
{ | |||||
ScanParam scanParam = this.GetReqData<ScanParam>(); | |||||
var result= meetingSignInRecordIBLL.Scan(scanParam.userid,scanParam.meetid)?"签到成功":"签到失败"; | |||||
return Success(new {result}); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 保存实体数据(新增、修改) | /// 保存实体数据(新增、修改) | ||||
@@ -110,6 +123,12 @@ namespace Learun.Application.WebApi | |||||
public string keyValue { get; set; } | public string keyValue { get; set; } | ||||
public string strEntity{ get; set; } | public string strEntity{ get; set; } | ||||
} | } | ||||
private class ScanParam | |||||
{ | |||||
public string userid { get; set; } | |||||
public string meetid { get; set; } | |||||
} | |||||
#endregion | #endregion | ||||
} | } | ||||
@@ -2969,7 +2969,7 @@ namespace Learun.Application.Base.CodeGeneratorModule | |||||
sb.Append(" /// 注册接口\r\n"); | sb.Append(" /// 注册接口\r\n"); | ||||
sb.Append(" /// <summary>\r\n"); | sb.Append(" /// <summary>\r\n"); | ||||
sb.Append(" public " + baseInfo.name + "Api()\r\n"); | sb.Append(" public " + baseInfo.name + "Api()\r\n"); | ||||
sb.Append(" : base(\"/learun/adms/" + baseInfo.outputArea + "/" + baseInfo.name + "\")\r\n"); | |||||
sb.Append(" : base(\"/" + baseInfo.outputArea + "/" + baseInfo.name + "\")\r\n"); | |||||
sb.Append(" {\r\n"); | sb.Append(" {\r\n"); | ||||
sb.Append(" Get[\"/pagelist\"] = GetPageList;\r\n"); | sb.Append(" Get[\"/pagelist\"] = GetPageList;\r\n"); | ||||
sb.Append(" Get[\"/list\"] = GetList;\r\n"); | sb.Append(" Get[\"/list\"] = GetList;\r\n"); | ||||
@@ -546,6 +546,7 @@ | |||||
<Compile Include="EducationalAdministration\EATalentTrainMap.cs" /> | <Compile Include="EducationalAdministration\EATalentTrainMap.cs" /> | ||||
<Compile Include="EducationalAdministration\Sys_DefaultPwdConfigMap.cs" /> | <Compile Include="EducationalAdministration\Sys_DefaultPwdConfigMap.cs" /> | ||||
<Compile Include="PersonnelManagement\MeetingSignInRecordMap.cs" /> | <Compile Include="PersonnelManagement\MeetingSignInRecordMap.cs" /> | ||||
<Compile Include="PersonnelManagement\MeetingMinutesMap.cs" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\..\..\Learun.Application.Organization\Learun.Application.Organization.csproj"> | <ProjectReference Include="..\..\..\Learun.Application.Organization\Learun.Application.Organization.csproj"> | ||||
@@ -0,0 +1,29 @@ | |||||
using Learun.Application.TwoDevelopment.PersonnelManagement; | |||||
using System.Data.Entity.ModelConfiguration; | |||||
namespace Learun.Application.Mapping | |||||
{ | |||||
/// <summary> | |||||
/// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架 | |||||
/// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
/// 创 建:超级管理员 | |||||
/// 日 期:2021-03-08 10:36 | |||||
/// 描 述:会议纪要 | |||||
/// </summary> | |||||
public class MeetingMinutesMap : EntityTypeConfiguration<MeetingMinutesEntity> | |||||
{ | |||||
public MeetingMinutesMap() | |||||
{ | |||||
#region 表、主键 | |||||
//表 | |||||
this.ToTable("MEETINGMINUTES"); | |||||
//主键 | |||||
this.HasKey(t => t.ID); | |||||
#endregion | |||||
#region 配置关系 | |||||
#endregion | |||||
} | |||||
} | |||||
} | |||||
@@ -1605,6 +1605,10 @@ | |||||
<Compile Include="PersonnelManagement\MeetingSignInRecord\MeetingSignInRecordService.cs" /> | <Compile Include="PersonnelManagement\MeetingSignInRecord\MeetingSignInRecordService.cs" /> | ||||
<Compile Include="PersonnelManagement\MeetingSignInRecord\MeetingSignInRecordBLL.cs" /> | <Compile Include="PersonnelManagement\MeetingSignInRecord\MeetingSignInRecordBLL.cs" /> | ||||
<Compile Include="PersonnelManagement\MeetingSignInRecord\MeetingSignInRecordIBLL.cs" /> | <Compile Include="PersonnelManagement\MeetingSignInRecord\MeetingSignInRecordIBLL.cs" /> | ||||
<Compile Include="PersonnelManagement\MeetingMinutes\MeetingMinutesEntity.cs" /> | |||||
<Compile Include="PersonnelManagement\MeetingMinutes\MeetingMinutesService.cs" /> | |||||
<Compile Include="PersonnelManagement\MeetingMinutes\MeetingMinutesBLL.cs" /> | |||||
<Compile Include="PersonnelManagement\MeetingMinutes\MeetingMinutesIBLL.cs" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\..\..\Learun.Application.Organization\Learun.Application.Organization.csproj"> | <ProjectReference Include="..\..\..\Learun.Application.Organization\Learun.Application.Organization.csproj"> | ||||
@@ -0,0 +1,149 @@ | |||||
using Learun.Util; | |||||
using System; | |||||
using System.Data; | |||||
using System.Collections.Generic; | |||||
namespace Learun.Application.TwoDevelopment.PersonnelManagement | |||||
{ | |||||
/// <summary> | |||||
/// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架 | |||||
/// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
/// 创 建:超级管理员 | |||||
/// 日 期:2021-03-08 10:36 | |||||
/// 描 述:会议纪要 | |||||
/// </summary> | |||||
public class MeetingMinutesBLL : MeetingMinutesIBLL | |||||
{ | |||||
private MeetingMinutesService meetingMinutesService = new MeetingMinutesService(); | |||||
#region 获取数据 | |||||
/// <summary> | |||||
/// 获取页面显示列表分页数据 | |||||
/// <summary> | |||||
/// <param name="pagination">分页参数</param> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
public IEnumerable<MeetingMinutesEntity> GetPageList(Pagination pagination, string queryJson) | |||||
{ | |||||
try | |||||
{ | |||||
return meetingMinutesService.GetPageList(pagination, queryJson); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowBusinessException(ex); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 获取页面显示列表数据 | |||||
/// <summary> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
public IEnumerable<MeetingMinutesEntity> GetList(string queryJson) | |||||
{ | |||||
try | |||||
{ | |||||
return meetingMinutesService.GetList(queryJson); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowBusinessException(ex); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 获取MeetingMinutes表实体数据 | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
public MeetingMinutesEntity GetMeetingMinutesEntity(string keyValue) | |||||
{ | |||||
try | |||||
{ | |||||
return meetingMinutesService.GetMeetingMinutesEntity(keyValue); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowBusinessException(ex); | |||||
} | |||||
} | |||||
} | |||||
#endregion | |||||
#region 提交数据 | |||||
/// <summary> | |||||
/// 删除实体数据 | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
public void DeleteEntity(string keyValue) | |||||
{ | |||||
try | |||||
{ | |||||
meetingMinutesService.DeleteEntity(keyValue); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowBusinessException(ex); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 保存实体数据(新增、修改) | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
public void SaveEntity(UserInfo userInfo, string keyValue, MeetingMinutesEntity entity) | |||||
{ | |||||
try | |||||
{ | |||||
meetingMinutesService.SaveEntity(userInfo, keyValue, entity); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowBusinessException(ex); | |||||
} | |||||
} | |||||
} | |||||
#endregion | |||||
} | |||||
} |
@@ -0,0 +1,79 @@ | |||||
using Learun.Util; | |||||
using System; | |||||
using System.ComponentModel.DataAnnotations.Schema; | |||||
namespace Learun.Application.TwoDevelopment.PersonnelManagement | |||||
{ | |||||
/// <summary> | |||||
/// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架 | |||||
/// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
/// 创 建:超级管理员 | |||||
/// 日 期:2021-03-08 10:36 | |||||
/// 描 述:会议纪要 | |||||
/// </summary> | |||||
public class MeetingMinutesEntity | |||||
{ | |||||
#region 实体成员 | |||||
/// <summary> | |||||
/// 编号 | |||||
/// </summary> | |||||
[Column("ID")] | |||||
public string ID { get; set; } | |||||
/// <summary> | |||||
/// 会议id | |||||
/// </summary> | |||||
[Column("MEETID")] | |||||
public string MeetID { get; set; } | |||||
/// <summary> | |||||
/// 纪要标题 | |||||
/// </summary> | |||||
[Column("TITLE")] | |||||
public string Title { get; set; } | |||||
/// <summary> | |||||
/// 纪要内容 | |||||
/// </summary> | |||||
[Column("CONTENT")] | |||||
public string Content { get; set; } | |||||
/// <summary> | |||||
/// 附件 | |||||
/// </summary> | |||||
[Column("FILES")] | |||||
public string Files { get; set; } | |||||
/// <summary> | |||||
/// 创建时间 | |||||
/// </summary> | |||||
[Column("CREATETIME")] | |||||
public DateTime? CreateTime { get; set; } | |||||
/// <summary> | |||||
/// 创建人 | |||||
/// </summary> | |||||
[Column("CREATEUSER")] | |||||
public string CreateUser { get; set; } | |||||
#endregion | |||||
#region 扩展操作 | |||||
/// <summary> | |||||
/// 新增调用 | |||||
/// </summary> | |||||
public void Create(UserInfo userInfo) | |||||
{ | |||||
this.ID = Guid.NewGuid().ToString(); | |||||
} | |||||
/// <summary> | |||||
/// 编辑调用 | |||||
/// </summary> | |||||
/// <param name="keyValue"></param> | |||||
public void Modify(string keyValue, UserInfo userInfo) | |||||
{ | |||||
this.ID = keyValue; | |||||
} | |||||
#endregion | |||||
#region 扩展字段 | |||||
[NotMapped] | |||||
[Column("MEETINGTITLE")] | |||||
public string MeetingTitle { get; set; } | |||||
#endregion | |||||
} | |||||
} | |||||
@@ -0,0 +1,56 @@ | |||||
using Learun.Util; | |||||
using System.Data; | |||||
using System.Collections.Generic; | |||||
namespace Learun.Application.TwoDevelopment.PersonnelManagement | |||||
{ | |||||
/// <summary> | |||||
/// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架 | |||||
/// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
/// 创 建:超级管理员 | |||||
/// 日 期:2021-03-08 10:36 | |||||
/// 描 述:会议纪要 | |||||
/// </summary> | |||||
public interface MeetingMinutesIBLL | |||||
{ | |||||
#region 获取数据 | |||||
/// <summary> | |||||
/// 获取页面显示列表分页数据 | |||||
/// <summary> | |||||
/// <param name="pagination">查询参数</param> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
IEnumerable<MeetingMinutesEntity> GetPageList(Pagination pagination, string queryJson); | |||||
/// <summary> | |||||
/// 获取页面显示列表数据 | |||||
/// <summary> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
IEnumerable<MeetingMinutesEntity> GetList(string queryJson); | |||||
/// <summary> | |||||
/// 获取MeetingMinutes表实体数据 | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
MeetingMinutesEntity GetMeetingMinutesEntity(string keyValue); | |||||
#endregion | |||||
#region 提交数据 | |||||
/// <summary> | |||||
/// 删除实体数据 | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
void DeleteEntity(string keyValue); | |||||
/// <summary> | |||||
/// 保存实体数据(新增、修改) | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
void SaveEntity(UserInfo userInfo, string keyValue, MeetingMinutesEntity entity); | |||||
#endregion | |||||
} | |||||
} |
@@ -0,0 +1,212 @@ | |||||
using Dapper; | |||||
using Learun.DataBase.Repository; | |||||
using Learun.Util; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Data; | |||||
using System.Text; | |||||
namespace Learun.Application.TwoDevelopment.PersonnelManagement | |||||
{ | |||||
/// <summary> | |||||
/// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架 | |||||
/// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||||
/// 创 建:超级管理员 | |||||
/// 日 期:2021-03-08 10:36 | |||||
/// 描 述:会议纪要 | |||||
/// </summary> | |||||
public class MeetingMinutesService : RepositoryFactory | |||||
{ | |||||
#region 获取数据 | |||||
/// <summary> | |||||
/// 获取页面显示列表分页数据 | |||||
/// <summary> | |||||
/// <param name="pagination">分页参数</param> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
public IEnumerable<MeetingMinutesEntity> GetPageList(Pagination pagination, string queryJson) | |||||
{ | |||||
try | |||||
{ | |||||
var strSql = new StringBuilder(); | |||||
strSql.Append("SELECT "); | |||||
strSql.Append(@" | |||||
t.ID, | |||||
t.MeetID, | |||||
t.Title, | |||||
t.Content, | |||||
t.Files,m.MeetingTitle | |||||
"); | |||||
strSql.Append(" FROM MeetingMinutes t left join MeetingManagement m on t.MeetID=m.Id "); | |||||
strSql.Append(" WHERE 1=1 "); | |||||
var queryParam = queryJson.ToJObject(); | |||||
// 虚拟参数 | |||||
var dp = new DynamicParameters(new { }); | |||||
if (!queryParam["MeetID"].IsEmpty()) | |||||
{ | |||||
dp.Add("MeetID", queryParam["MeetID"].ToString(), DbType.String); | |||||
strSql.Append(" AND t.MeetID = @MeetID "); | |||||
} | |||||
if (!queryParam["MeetingTitle"].IsEmpty()) | |||||
{ | |||||
dp.Add("MeetingTitle", "%" + queryParam["MeetingTitle"].ToString() + "%", DbType.String); | |||||
strSql.Append(" AND m.MeetingTitle Like @MeetingTitle "); | |||||
} | |||||
if (!queryParam["Title"].IsEmpty()) | |||||
{ | |||||
dp.Add("Title", "%" + queryParam["Title"].ToString() + "%", DbType.String); | |||||
strSql.Append(" AND t.Title Like @Title "); | |||||
} | |||||
return this.BaseRepository("CollegeMIS").FindList<MeetingMinutesEntity>(strSql.ToString(),dp, pagination); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowServiceException(ex); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 获取页面显示列表数据 | |||||
/// <summary> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
public IEnumerable<MeetingMinutesEntity> GetList(string queryJson) | |||||
{ | |||||
try | |||||
{ | |||||
var strSql = new StringBuilder(); | |||||
strSql.Append("SELECT "); | |||||
strSql.Append(@" | |||||
t.ID, | |||||
t.MeetID, | |||||
t.Title, | |||||
t.Content, | |||||
t.Files | |||||
"); | |||||
strSql.Append(" FROM MeetingMinutes t "); | |||||
strSql.Append(" WHERE 1=1 "); | |||||
var queryParam = queryJson.ToJObject(); | |||||
// 虚拟参数 | |||||
var dp = new DynamicParameters(new { }); | |||||
if (!queryParam["MeetID"].IsEmpty()) | |||||
{ | |||||
dp.Add("MeetID", "%" + queryParam["MeetID"].ToString() + "%", DbType.String); | |||||
strSql.Append(" AND t.MeetID Like @MeetID "); | |||||
} | |||||
if (!queryParam["Title"].IsEmpty()) | |||||
{ | |||||
dp.Add("Title", "%" + queryParam["Title"].ToString() + "%", DbType.String); | |||||
strSql.Append(" AND t.Title Like @Title "); | |||||
} | |||||
return this.BaseRepository("CollegeMIS").FindList<MeetingMinutesEntity>(strSql.ToString(),dp); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowServiceException(ex); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 获取MeetingMinutes表实体数据 | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
public MeetingMinutesEntity GetMeetingMinutesEntity(string keyValue) | |||||
{ | |||||
try | |||||
{ | |||||
return this.BaseRepository("CollegeMIS").FindEntity<MeetingMinutesEntity>(keyValue); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowServiceException(ex); | |||||
} | |||||
} | |||||
} | |||||
#endregion | |||||
#region 提交数据 | |||||
/// <summary> | |||||
/// 删除实体数据 | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
public void DeleteEntity(string keyValue) | |||||
{ | |||||
try | |||||
{ | |||||
this.BaseRepository("CollegeMIS").Delete<MeetingMinutesEntity>(t=>t.ID == keyValue); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowServiceException(ex); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 保存实体数据(新增、修改) | |||||
/// <param name="keyValue">主键</param> | |||||
/// <summary> | |||||
/// <returns></returns> | |||||
public void SaveEntity( UserInfo userInfo, string keyValue, MeetingMinutesEntity entity) | |||||
{ | |||||
try | |||||
{ | |||||
if (!string.IsNullOrEmpty(keyValue)) | |||||
{ | |||||
entity.Modify(keyValue,userInfo); | |||||
this.BaseRepository("CollegeMIS").Update(entity); | |||||
} | |||||
else | |||||
{ | |||||
entity.Create(userInfo); | |||||
this.BaseRepository("CollegeMIS").Insert(entity); | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowServiceException(ex); | |||||
} | |||||
} | |||||
} | |||||
#endregion | |||||
} | |||||
} |
@@ -167,6 +167,25 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement | |||||
} | } | ||||
} | } | ||||
public bool Scan(string scanParamUserid, string scanParamMeetid) | |||||
{ | |||||
try | |||||
{ | |||||
return meetingSignInRecordService.Scan(scanParamUserid, scanParamMeetid); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowBusinessException(ex); | |||||
} | |||||
} | |||||
} | |||||
#endregion | #endregion | ||||
} | } | ||||
@@ -59,5 +59,6 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement | |||||
void DoSignIn(string keyValue, bool isSignIn); | void DoSignIn(string keyValue, bool isSignIn); | ||||
#endregion | #endregion | ||||
bool Scan(string scanParamUserid, string scanParamMeetid); | |||||
} | } | ||||
} | } |
@@ -72,8 +72,8 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement | |||||
try | try | ||||
{ | { | ||||
var strSql = new StringBuilder(); | var strSql = new StringBuilder(); | ||||
strSql.Append("SELECT t.* "); | |||||
strSql.Append(" FROM MeetingSignInRecord t "); | |||||
strSql.Append("SELECT t.*,m.MeetingTitle "); | |||||
strSql.Append(" FROM MeetingSignInRecord t left join MeetingManagement m on t.MeetID=m.Id "); | |||||
strSql.Append(" WHERE 1=1 "); | strSql.Append(" WHERE 1=1 "); | ||||
var queryParam = queryJson.ToJObject(); | var queryParam = queryJson.ToJObject(); | ||||
// 虚拟参数 | // 虚拟参数 | ||||
@@ -211,5 +211,35 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement | |||||
#endregion | #endregion | ||||
public bool Scan(string scanParamUserid, string scanParamMeetid) | |||||
{ | |||||
try | |||||
{ | |||||
var result = false; | |||||
var meetEntity = this.BaseRepository("CollegeMIS") | |||||
.FindEntity<MeetingSignInRecordEntity>(a => | |||||
a.MeetID == scanParamMeetid && a.ParticipantID == scanParamUserid); | |||||
if (meetEntity != null) | |||||
{ | |||||
meetEntity.IsSignIn = true; | |||||
this.BaseRepository("CollegeMIS").Update(meetEntity); | |||||
result = true; | |||||
} | |||||
return result; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowServiceException(ex); | |||||
} | |||||
} | |||||
} | |||||
} | } | ||||
} | } |
@@ -6,14 +6,17 @@ export default { | |||||
// 是否允许用户注册 | // 是否允许用户注册 | ||||
"enableSignUp": true, | "enableSignUp": true, | ||||
//请求数据的接口地址;可以配置多个,开发环境下登录页会出现选择菜单供您选择 | //请求数据的接口地址;可以配置多个,开发环境下登录页会出现选择菜单供您选择 | ||||
"apiHost": [ | |||||
"http://123.57.209.16:31173/" | |||||
], | |||||
// "apiHost": [ | |||||
// "http://123.57.209.16:31173/" | |||||
// ], | |||||
// "apiHost": [ | // "apiHost": [ | ||||
// "http://123.57.209.16:31174/learun/adms" | // "http://123.57.209.16:31174/learun/adms" | ||||
// ], | // ], | ||||
// "apiHost": [ | |||||
// "http://localhost:8088/" | |||||
// ], | |||||
"apiHost": [ | "apiHost": [ | ||||
"http://localhost:8088/" | |||||
"http://192.168.2.98:8088/" | |||||
], | ], | ||||
// 开发环境下自动填充登录账号密码,与接口地址一一对应,只在开发环境下显示 | // 开发环境下自动填充登录账号密码,与接口地址一一对应,只在开发环境下显示 | ||||
"devAccount": [ | "devAccount": [ | ||||
@@ -954,6 +954,38 @@ | |||||
"style": { | "style": { | ||||
"navigationBarTitleText": "详情" | "navigationBarTitleText": "详情" | ||||
} | } | ||||
}, | |||||
//会议纪要 | |||||
{ | |||||
"path": "pages/PersonnelManagement/MeetingMinutes/list", | |||||
"style": { | |||||
"navigationBarTitleText": "会议纪要" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "pages/PersonnelManagement/MeetingMinutes/single", | |||||
"style": { | |||||
"navigationBarTitleText": "详情" | |||||
} | |||||
}, | |||||
//会议签到记录 | |||||
{ | |||||
"path": "pages/PersonnelManagement/MeetingSignInRecord/list", | |||||
"style": { | |||||
"navigationBarTitleText": "会议签到记录" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "pages/PersonnelManagement/MeetingSignInRecord/single", | |||||
"style": { | |||||
"navigationBarTitleText": "详情" | |||||
} | |||||
}, | |||||
{ | |||||
"path": "pages/PersonnelManagement/MeetingSignInScan/list", | |||||
"style": { | |||||
"navigationBarTitleText": "会议扫码签到" | |||||
} | |||||
} | } | ||||
@@ -1,102 +1,124 @@ | |||||
<template> | <template> | ||||
<view class="page"> | <view class="page"> | ||||
<!-- 主列表页 --> | <!-- 主列表页 --> | ||||
<view :class="sideOpen ? 'show' : ''" class="mainpage" style="padding-top: 80rpx;"> | |||||
<view | |||||
:class="sideOpen ? 'show' : ''" | |||||
class="mainpage" | |||||
style="padding-top: 80rpx" | |||||
> | |||||
<!-- 顶部条目/分页信息栏 --> | <!-- 顶部条目/分页信息栏 --> | ||||
<l-customlist-banner @buttonClick="sideOpen = true">{{ tips }}</l-customlist-banner> | |||||
<l-customlist-banner @buttonClick="sideOpen = true">{{ | |||||
tips | |||||
}}</l-customlist-banner> | |||||
<!-- 滚动列表,跨端支持上拉/下拉 --> | <!-- 滚动列表,跨端支持上拉/下拉 --> | ||||
<l-scroll-list v-if="ready" @pullDown="pullDown" @toBottom="fetchList()" ref="list"> | |||||
<l-scroll-list | |||||
v-if="ready" | |||||
@pullDown="pullDown" | |||||
@toBottom="fetchList()" | |||||
ref="list" | |||||
> | |||||
<l-customlist :tips="loadState" showTips> | <l-customlist :tips="loadState" showTips> | ||||
<!-- 单条记录 --> | <!-- 单条记录 --> | ||||
<view class="customlist-item" v-for="item of list" :key="item.Id"> | <view class="customlist-item" v-for="item of list" :key="item.Id"> | ||||
<view class="customlist-item-field"> | <view class="customlist-item-field"> | ||||
<text class="customlist-item-field-title">会议主题:</text> | <text class="customlist-item-field-title">会议主题:</text> | ||||
{{ displayListItem(item, 'MeetingTitle') }} | |||||
{{ displayListItem(item, "MeetingTitle") }} | |||||
</view> | </view> | ||||
<view class="customlist-item-field"> | <view class="customlist-item-field"> | ||||
<text class="customlist-item-field-title">会议地点:</text> | <text class="customlist-item-field-title">会议地点:</text> | ||||
{{ displayListItem(item, 'MeetingPlace') }} | |||||
{{ displayListItem(item, "MeetingPlace") }} | |||||
</view> | </view> | ||||
<view class="customlist-item-field"> | <view class="customlist-item-field"> | ||||
<text class="customlist-item-field-title">开始时间:</text> | <text class="customlist-item-field-title">开始时间:</text> | ||||
{{ displayListItem(item, 'BeginTime') }} | |||||
{{ displayListItem(item, "BeginTime") }} | |||||
</view> | </view> | ||||
<view class="customlist-item-field"> | <view class="customlist-item-field"> | ||||
<text class="customlist-item-field-title">结束时间:</text> | <text class="customlist-item-field-title">结束时间:</text> | ||||
{{ displayListItem(item, 'EndTime') }} | |||||
{{ displayListItem(item, "EndTime") }} | |||||
</view> | </view> | ||||
<view class="customlist-item-field"> | <view class="customlist-item-field"> | ||||
<text class="customlist-item-field-title">申请人:</text> | <text class="customlist-item-field-title">申请人:</text> | ||||
{{ displayListItem(item, 'CreateUser') }} | |||||
{{ displayListItem(item, "CreateUser") }} | |||||
</view> | </view> | ||||
<view class="customlist-item-field"> | <view class="customlist-item-field"> | ||||
<text class="customlist-item-field-title">会议记录者:</text> | <text class="customlist-item-field-title">会议记录者:</text> | ||||
{{ displayListItem(item, 'RecordPerson') }} | |||||
{{ displayListItem(item, "RecordPerson") }} | |||||
</view> | </view> | ||||
<view class="customlist-item-field"> | <view class="customlist-item-field"> | ||||
<text class="customlist-item-field-title">会议内容:</text> | <text class="customlist-item-field-title">会议内容:</text> | ||||
{{ displayListItem(item, 'Content') }} | |||||
{{ displayListItem(item, "Content") }} | |||||
</view> | </view> | ||||
<view class="customlist-item-field"> | <view class="customlist-item-field"> | ||||
<text class="customlist-item-field-title">附件上传:</text> | <text class="customlist-item-field-title">附件上传:</text> | ||||
{{ displayListItem(item, 'Files') }} | |||||
{{ displayListItem(item, "Files") }} | |||||
</view> | </view> | ||||
<l-customlist-action showEdit @edit="action('edit', item.Id)" showDelete @delete="action('delete', item.Id)" @view="action('view', item.Id)" /> | |||||
<l-customlist-action | |||||
showButton | |||||
buttonText="会议纪要" | |||||
@join="action('join', item.Id)" | |||||
showEdit | |||||
@edit="action('edit', item.Id)" | |||||
showDelete | |||||
@delete="action('delete', item.Id)" | |||||
@view="action('view', item.Id)" | |||||
/> | |||||
</view> | </view> | ||||
</l-customlist> | </l-customlist> | ||||
</l-scroll-list> | </l-scroll-list> | ||||
</view> | </view> | ||||
<!-- 关闭侧边抽屉按钮 --> | <!-- 关闭侧边抽屉按钮 --> | ||||
<view @click="sideOpen = false" :class="sideOpen ? 'show' : ''" class="sideclose"> | |||||
<view | |||||
@click="sideOpen = false" | |||||
:class="sideOpen ? 'show' : ''" | |||||
class="sideclose" | |||||
> | |||||
<l-icon type="pullright" color="blue" /> | <l-icon type="pullright" color="blue" /> | ||||
</view> | </view> | ||||
<!-- 侧边栏,用于设置查询条件 --> | <!-- 侧边栏,用于设置查询条件 --> | ||||
<scroll-view :class="sideOpen ? 'show' : ''" class="sidepage" scroll-y> | <scroll-view :class="sideOpen ? 'show' : ''" class="sidepage" scroll-y> | ||||
<view v-if="ready" class="padding"> | <view v-if="ready" class="padding"> | ||||
<l-input | <l-input | ||||
v-model="queryData.MeetingTitle" | v-model="queryData.MeetingTitle" | ||||
@change="searchChange" | @change="searchChange" | ||||
title ="会议主题" | |||||
title="会议主题" | |||||
placeholder="按会议主题查询" | placeholder="按会议主题查询" | ||||
/> | /> | ||||
<l-select | <l-select | ||||
v-model="queryData.MeetingPlace" | v-model="queryData.MeetingPlace" | ||||
@change="searchChange" | @change="searchChange" | ||||
:range="dataSource.MeetingPlace" | :range="dataSource.MeetingPlace" | ||||
title ="会议地点" | |||||
title="会议地点" | |||||
placeholder="按会议地点查询" | placeholder="按会议地点查询" | ||||
/> | /> | ||||
<l-organize-picker | <l-organize-picker | ||||
v-model="queryData.CreateUser" | v-model="queryData.CreateUser" | ||||
@change="searchChange" | @change="searchChange" | ||||
type="user" | type="user" | ||||
title ="申请人" | |||||
title="申请人" | |||||
placeholder="按申请人查询" | placeholder="按申请人查询" | ||||
/> | /> | ||||
<!-- 重置查询条件按钮 --> | <!-- 重置查询条件按钮 --> | ||||
<view class="padding-tb"> | <view class="padding-tb"> | ||||
<l-button @click="reset" line="orange" class="block" block>重置查询条件</l-button> | |||||
<l-button @click="reset" line="orange" class="block" block | |||||
>重置查询条件</l-button | |||||
> | |||||
</view> | </view> | ||||
</view> | </view> | ||||
</scroll-view> | </scroll-view> | ||||
<l-customlist-add v-if="!sideOpen" @click="action('add')" /> | <l-customlist-add v-if="!sideOpen" @click="action('add')" /> | ||||
</view> | </view> | ||||
</template> | </template> | ||||
@@ -114,38 +136,38 @@ | |||||
* 本段代码由移动端代码生成器输出,移动端须 2.2.0 版本及以上可以使用 | * 本段代码由移动端代码生成器输出,移动端须 2.2.0 版本及以上可以使用 | ||||
* 请在移动端 /pages.json 中的 pages 字段中添加一条记录: | * 请在移动端 /pages.json 中的 pages 字段中添加一条记录: | ||||
* { "path": "pages/PersonnelManagement/MeetingManagement/list", "style": { "navigationBarTitleText": "表单列表页" } } | * { "path": "pages/PersonnelManagement/MeetingManagement/list", "style": { "navigationBarTitleText": "表单列表页" } } | ||||
* | |||||
* | |||||
* (navigationBarTitleText 字段为本页面的标题文本,可以修改) | * (navigationBarTitleText 字段为本页面的标题文本,可以修改) | ||||
* (必须自行操作该步骤,力软代码生成器不会自动帮您修改 /pages.json 文件) | * (必须自行操作该步骤,力软代码生成器不会自动帮您修改 /pages.json 文件) | ||||
*/ | */ | ||||
import moment from 'moment' | |||||
import get from 'lodash/get' | |||||
import set from 'lodash/set' | |||||
import pickBy from 'lodash/pickBy' | |||||
import mapValues from 'lodash/mapValues' | |||||
import moment from "moment"; | |||||
import get from "lodash/get"; | |||||
import set from "lodash/set"; | |||||
import pickBy from "lodash/pickBy"; | |||||
import mapValues from "lodash/mapValues"; | |||||
export default { | export default { | ||||
data() { | data() { | ||||
return { | return { | ||||
// 数据项的数据类型、结构 | // 数据项的数据类型、结构 | ||||
scheme: { | scheme: { | ||||
MeetingTitle: { type: 'text' }, | |||||
MeetingPlace: { type: 'select', dataSource: '0' }, | |||||
BeginTime: { type: 'datetime', dateformat: '0' }, | |||||
EndTime: { type: 'datetime', dateformat: '0' }, | |||||
RecordPerson: { type: 'organize', dataType: 'user' }, | |||||
Content: { type: 'texteditor' }, | |||||
Files: { type: 'upload' }, | |||||
CreateUser: { type: 'organize', dataType: 'user' }, | |||||
MeetingTitle: { type: "text" }, | |||||
MeetingPlace: { type: "select", dataSource: "0" }, | |||||
BeginTime: { type: "datetime", dateformat: "0" }, | |||||
EndTime: { type: "datetime", dateformat: "0" }, | |||||
RecordPerson: { type: "organize", dataType: "user" }, | |||||
Content: { type: "texteditor" }, | |||||
Files: { type: "upload" }, | |||||
CreateUser: { type: "organize", dataType: "user" }, | |||||
}, | }, | ||||
// 查询条件 | // 查询条件 | ||||
searchData: {}, | searchData: {}, | ||||
defaultQueryData: {}, | defaultQueryData: {}, | ||||
queryData: { | queryData: { | ||||
MeetingTitle: '', | |||||
MeetingPlace: '', | |||||
CreateUser: '', | |||||
MeetingTitle: "", | |||||
MeetingPlace: "", | |||||
CreateUser: "", | |||||
}, | }, | ||||
// 数据源 | // 数据源 | ||||
@@ -155,166 +177,202 @@ export default { | |||||
// 页面相关参数 | // 页面相关参数 | ||||
ready: false, | ready: false, | ||||
tips: '加载中...', | |||||
loadState: '向下翻以加载更多', | |||||
tips: "加载中...", | |||||
loadState: "向下翻以加载更多", | |||||
sideOpen: false, | sideOpen: false, | ||||
// 列表与分页信息 | // 列表与分页信息 | ||||
page: 1, | page: 1, | ||||
total: 2, | total: 2, | ||||
list: [] | |||||
} | |||||
list: [], | |||||
}; | |||||
}, | }, | ||||
async onLoad() { | async onLoad() { | ||||
await this.init() | |||||
await this.init(); | |||||
}, | }, | ||||
onUnload() { | onUnload() { | ||||
this.OFF('PersonnelManagementMeetingManagement-list-change') | |||||
this.OFF("PersonnelManagementMeetingManagement-list-change"); | |||||
}, | }, | ||||
methods: { | methods: { | ||||
// 页面初始化 | // 页面初始化 | ||||
async init() { | async init() { | ||||
this.ON('PersonnelManagementMeetingManagement-list-change', this.refreshList) | |||||
this.ON( | |||||
"PersonnelManagementMeetingManagement-list-change", | |||||
this.refreshList | |||||
); | |||||
// 拉取加载列表和数据源 | // 拉取加载列表和数据源 | ||||
await Promise.all([ | |||||
() => {} | |||||
]) | |||||
await this.fetchList() | |||||
await Promise.all([() => {}]); | |||||
await this.fetchList(); | |||||
// 初始化查询条件 | // 初始化查询条件 | ||||
this.defaultQueryData = this.COPY(this.queryData) | |||||
this.ready = true | |||||
this.defaultQueryData = this.COPY(this.queryData); | |||||
this.ready = true; | |||||
}, | }, | ||||
// 拉取列表 | // 拉取列表 | ||||
async fetchList() { | async fetchList() { | ||||
if (this.page > this.total) { return } | |||||
if (this.page > this.total) { | |||||
return; | |||||
} | |||||
const result = await this.HTTP_GET( | const result = await this.HTTP_GET( | ||||
'learun/adms/PersonnelManagement/MeetingManagement/pagelist', | |||||
"learun/adms/PersonnelManagement/MeetingManagement/pagelist", | |||||
{ | { | ||||
// 这里 sidx 表示排序字段,sord 表示排序方式(DESC=降序,ASC=升序) | // 这里 sidx 表示排序字段,sord 表示排序方式(DESC=降序,ASC=升序) | ||||
// 代码生成器生成时默认按照主键排序,您可以修改成按创建时间的字段降序 | // 代码生成器生成时默认按照主键排序,您可以修改成按创建时间的字段降序 | ||||
pagination: { rows: 10, page: this.page, sidx: 'Id', sord: 'DESC' }, | |||||
queryJson: JSON.stringify(this.searchData) | |||||
pagination: { rows: 10, page: this.page, sidx: "Id", sord: "DESC" }, | |||||
queryJson: JSON.stringify(this.searchData), | |||||
}, | }, | ||||
'加载数据时出错' | |||||
) | |||||
"加载数据时出错" | |||||
); | |||||
if (!result) { return } | |||||
if (!result) { | |||||
return; | |||||
} | |||||
this.total = result.total | |||||
this.page = result.page + 1 | |||||
this.list = this.list.concat(result.rows) | |||||
this.total = result.total; | |||||
this.page = result.page + 1; | |||||
this.list = this.list.concat(result.rows); | |||||
this.tips = `已加载 ${Math.min(result.page, result.total)} / ${result.total} 页,共 ${result.records} 项` | |||||
this.loadState = result.page >= result.total ? '已加载所有项目' : '向下翻以加载更多' | |||||
this.tips = `已加载 ${Math.min(result.page, result.total)} / ${ | |||||
result.total | |||||
} 页,共 ${result.records} 项`; | |||||
this.loadState = | |||||
result.page >= result.total ? "已加载所有项目" : "向下翻以加载更多"; | |||||
}, | }, | ||||
// 刷新清空列表 | // 刷新清空列表 | ||||
async refreshList() { | async refreshList() { | ||||
this.page = 1 | |||||
this.total = 2 | |||||
this.list = [] | |||||
this.page = 1; | |||||
this.total = 2; | |||||
this.list = []; | |||||
await this.fetchList() | |||||
await this.fetchList(); | |||||
}, | }, | ||||
// 列表下拉 | // 列表下拉 | ||||
pullDown() { | pullDown() { | ||||
this.refreshList().then(() => { | this.refreshList().then(() => { | ||||
this.$refs.list.stopPullDown() | |||||
}) | |||||
this.$refs.list.stopPullDown(); | |||||
}); | |||||
}, | }, | ||||
// 设置搜索条件 | // 设置搜索条件 | ||||
async searchChange() { | async searchChange() { | ||||
const result = {} | |||||
const result = {}; | |||||
// 将其他查询项添加到查询 JSON 中 | // 将其他查询项添加到查询 JSON 中 | ||||
const queryObj = pickBy(this.queryData, t => (Array.isArray(t) ? t.length > 0 : t)) | |||||
Object.assign(result, mapValues(queryObj, t => (Array.isArray(t) ? t.join(',') : t))) | |||||
this.searchData = result | |||||
await this.refreshList() | |||||
const queryObj = pickBy(this.queryData, (t) => | |||||
Array.isArray(t) ? t.length > 0 : t | |||||
); | |||||
Object.assign( | |||||
result, | |||||
mapValues(queryObj, (t) => (Array.isArray(t) ? t.join(",") : t)) | |||||
); | |||||
this.searchData = result; | |||||
await this.refreshList(); | |||||
}, | }, | ||||
// 点击「清空查询条件」按钮 | // 点击「清空查询条件」按钮 | ||||
reset() { | reset() { | ||||
this.queryData = this.COPY(this.defaultQueryData) | |||||
this.searchChange() | |||||
this.queryData = this.COPY(this.defaultQueryData); | |||||
this.searchChange(); | |||||
}, | }, | ||||
// 点击「编辑」、「查看」、「添加」、「删除」按钮 | // 点击「编辑」、「查看」、「添加」、「删除」按钮 | ||||
async action(type, id = '') { | |||||
async action(type, id = "") { | |||||
switch (type) { | switch (type) { | ||||
case 'view': | |||||
this.NAV_TO(`./single?type=view&id=${id}`) | |||||
return | |||||
case 'add': | |||||
this.NAV_TO('./single?type=create') | |||||
return | |||||
case 'edit': | |||||
this.NAV_TO(`./single?type=edit&id=${id}`) | |||||
return | |||||
case 'delete': | |||||
if (!(await this.CONFIRM('删除项目', '确定要删除该项吗?', true))) { | |||||
return | |||||
case "view": | |||||
this.NAV_TO(`./single?type=view&id=${id}`); | |||||
return; | |||||
case "add": | |||||
this.NAV_TO("./single?type=create"); | |||||
return; | |||||
case "edit": | |||||
this.NAV_TO(`./single?type=edit&id=${id}`); | |||||
return; | |||||
case "join": | |||||
console.log(123); | |||||
this.NAV_TO(`/pages/PersonnelManagement/MeetingMinutes/list?meetId=${id}`); | |||||
return; | |||||
case "delete": | |||||
if (!(await this.CONFIRM("删除项目", "确定要删除该项吗?", true))) { | |||||
return; | |||||
} | } | ||||
this.HTTP_POST('learun/adms/PersonnelManagement/MeetingManagement/delete', id, '删除失败').then(success => { | |||||
if(!success) { return } | |||||
this.TOAST('删除成功', 'success') | |||||
this.refreshList() | |||||
}) | |||||
return | |||||
this.HTTP_POST( | |||||
"learun/adms/PersonnelManagement/MeetingManagement/delete", | |||||
id, | |||||
"删除失败" | |||||
).then((success) => { | |||||
if (!success) { | |||||
return; | |||||
} | |||||
this.TOAST("删除成功", "success"); | |||||
this.refreshList(); | |||||
}); | |||||
return; | |||||
default: | default: | ||||
return | |||||
return; | |||||
} | } | ||||
}, | }, | ||||
// 显示列表中的标题项 | // 显示列表中的标题项 | ||||
displayListItem(item, field) { | displayListItem(item, field) { | ||||
const fieldItem = this.scheme[field] | |||||
const value = item[field] | |||||
const fieldItem = this.scheme[field]; | |||||
const value = item[field]; | |||||
switch (fieldItem.type) { | switch (fieldItem.type) { | ||||
case 'currentInfo': | |||||
case 'organize': | |||||
return fieldItem.dataType === 'time' ? value : get(this.GET_GLOBAL(fieldItem.dataType), `${value}.name`, '') | |||||
case 'radio': | |||||
case 'select': | |||||
const selectItem = this.dataSource[field].find(t => t.value === String(value)) | |||||
return get(selectItem, 'text', '') | |||||
case 'checkbox': | |||||
if (!value || value.split(',').length <= 0) { return '' } | |||||
const checkboxItems = value.split(',') | |||||
return this.dataSource[field].filter(t => checkboxItems.includes(t.value)).map(t => t.text).join(',') | |||||
case 'datetime': | |||||
if (!value) { return '' } | |||||
return moment(value).format(Number(fieldItem.dateformat) === 0 ? 'YYYY年 M月 D日' : 'YYYY-MM-DD HH:mm') | |||||
case "currentInfo": | |||||
case "organize": | |||||
return fieldItem.dataType === "time" | |||||
? value | |||||
: get(this.GET_GLOBAL(fieldItem.dataType), `${value}.name`, ""); | |||||
case "radio": | |||||
case "select": | |||||
const selectItem = this.dataSource[field].find( | |||||
(t) => t.value === String(value) | |||||
); | |||||
return get(selectItem, "text", ""); | |||||
case "checkbox": | |||||
if (!value || value.split(",").length <= 0) { | |||||
return ""; | |||||
} | |||||
const checkboxItems = value.split(","); | |||||
return this.dataSource[field] | |||||
.filter((t) => checkboxItems.includes(t.value)) | |||||
.map((t) => t.text) | |||||
.join(","); | |||||
case "datetime": | |||||
if (!value) { | |||||
return ""; | |||||
} | |||||
return moment(value).format( | |||||
Number(fieldItem.dateformat) === 0 | |||||
? "YYYY年 M月 D日" | |||||
: "YYYY-MM-DD HH:mm" | |||||
); | |||||
default: return value === null || value === undefined ? '' : value | |||||
default: | |||||
return value === null || value === undefined ? "" : value; | |||||
} | } | ||||
} | |||||
} | |||||
} | |||||
}, | |||||
}, | |||||
}; | |||||
</script> | </script> | ||||
<style lang="less" scoped> | <style lang="less" scoped> | ||||
@import '~@/common/css/sidepage.less'; | |||||
@import '~@/common/css/customlist.less'; | |||||
@import "~@/common/css/sidepage.less"; | |||||
@import "~@/common/css/customlist.less"; | |||||
</style> | </style> |
@@ -0,0 +1,338 @@ | |||||
<template> | |||||
<view class="page"> | |||||
<!-- 主列表页 --> | |||||
<view | |||||
:class="sideOpen ? 'show' : ''" | |||||
class="mainpage" | |||||
style="padding-top: 80rpx" | |||||
> | |||||
<!-- 顶部条目/分页信息栏 --> | |||||
<l-customlist-banner @buttonClick="sideOpen = true">{{ | |||||
tips | |||||
}}</l-customlist-banner> | |||||
<!-- 滚动列表,跨端支持上拉/下拉 --> | |||||
<l-scroll-list | |||||
v-if="ready" | |||||
@pullDown="pullDown" | |||||
@toBottom="fetchList()" | |||||
ref="list" | |||||
> | |||||
<l-customlist :tips="loadState" showTips> | |||||
<!-- 单条记录 --> | |||||
<view class="customlist-item" v-for="item of list" :key="item.ID"> | |||||
<view class="customlist-item-field"> | |||||
<text class="customlist-item-field-title">会议名称:</text> | |||||
{{ displayListItem(item, "MeetingTitle") }} | |||||
</view> | |||||
<view class="customlist-item-field"> | |||||
<text class="customlist-item-field-title">纪要标题:</text> | |||||
{{ displayListItem(item, "Title") }} | |||||
</view> | |||||
<view class="customlist-item-field"> | |||||
<text class="customlist-item-field-title">内容:</text> | |||||
{{ displayListItem(item, "Content") }} | |||||
</view> | |||||
<view class="customlist-item-field"> | |||||
<text class="customlist-item-field-title">附件上传:</text> | |||||
{{ displayListItem(item, "Files") }} | |||||
</view> | |||||
<l-customlist-action | |||||
showEdit | |||||
@edit="action('edit', item.ID)" | |||||
showDelete | |||||
@delete="action('delete', item.ID)" | |||||
@view="action('view', item.ID)" | |||||
/> | |||||
</view> | |||||
</l-customlist> | |||||
</l-scroll-list> | |||||
</view> | |||||
<!-- 关闭侧边抽屉按钮 --> | |||||
<view | |||||
@click="sideOpen = false" | |||||
:class="sideOpen ? 'show' : ''" | |||||
class="sideclose" | |||||
> | |||||
<l-icon type="pullright" color="blue" /> | |||||
</view> | |||||
<!-- 侧边栏,用于设置查询条件 --> | |||||
<scroll-view :class="sideOpen ? 'show' : ''" class="sidepage" scroll-y> | |||||
<view v-if="ready" class="padding"> | |||||
<l-input | |||||
v-model="queryData.MeetID" | |||||
@change="searchChange" | |||||
title="会议名称" | |||||
placeholder="按会议名称查询" | |||||
/> | |||||
<l-input | |||||
v-model="queryData.Title" | |||||
@change="searchChange" | |||||
title="纪要标题" | |||||
placeholder="按纪要标题查询" | |||||
/> | |||||
<!-- 重置查询条件按钮 --> | |||||
<view class="padding-tb"> | |||||
<l-button @click="reset" line="orange" class="block" block | |||||
>重置查询条件</l-button | |||||
> | |||||
</view> | |||||
</view> | |||||
</scroll-view> | |||||
<l-customlist-add v-if="!sideOpen" @click="action('add')" /> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
/* | |||||
* 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn) | |||||
* Copyright (c) 2013-2021 上海力软信息技术有限公司 | |||||
* 创建人:超级管理员 | |||||
* 日 期:2021-03-08 10:36 | |||||
* 描 述:会议纪要 | |||||
*/ | |||||
/** | |||||
* 本段代码由移动端代码生成器输出,移动端须 2.2.0 版本及以上可以使用 | |||||
* 请在移动端 /pages.json 中的 pages 字段中添加一条记录: | |||||
* { "path": "pages/PersonnelManagement/MeetingMinutes/list", "style": { "navigationBarTitleText": "表单列表页" } } | |||||
* | |||||
* (navigationBarTitleText 字段为本页面的标题文本,可以修改) | |||||
* (必须自行操作该步骤,力软代码生成器不会自动帮您修改 /pages.json 文件) | |||||
*/ | |||||
import moment from "moment"; | |||||
import get from "lodash/get"; | |||||
import set from "lodash/set"; | |||||
import pickBy from "lodash/pickBy"; | |||||
import mapValues from "lodash/mapValues"; | |||||
export default { | |||||
data() { | |||||
return { | |||||
// 数据项的数据类型、结构 | |||||
scheme: { | |||||
MeetingTitle: { type: "text" }, | |||||
Title: { type: "text" }, | |||||
Content: { type: "texteditor" }, | |||||
Files: { type: "upload" }, | |||||
}, | |||||
// 查询条件 | |||||
searchData: {}, | |||||
defaultQueryData: {}, | |||||
queryData: { | |||||
MeetID: "", | |||||
Title: "", | |||||
}, | |||||
// 数据源 | |||||
dataSource: {}, | |||||
// 页面相关参数 | |||||
meetId: "", | |||||
ready: false, | |||||
tips: "加载中...", | |||||
loadState: "向下翻以加载更多", | |||||
sideOpen: false, | |||||
// 列表与分页信息 | |||||
page: 1, | |||||
total: 2, | |||||
list: [], | |||||
}; | |||||
}, | |||||
async onLoad(meetId) { | |||||
await this.init(meetId); | |||||
}, | |||||
onUnload() { | |||||
this.OFF("PersonnelManagementMeetingMinutes-list-change"); | |||||
}, | |||||
methods: { | |||||
// 页面初始化 | |||||
async init(meetId) { | |||||
console.log(meetId); | |||||
this.meetId = meetId.meetId; | |||||
this.ON( | |||||
"PersonnelManagementMeetingMinutes-list-change", | |||||
this.refreshList | |||||
); | |||||
// 拉取加载列表和数据源 | |||||
await Promise.all([() => {}]); | |||||
await this.fetchList(); | |||||
// 初始化查询条件 | |||||
this.defaultQueryData = this.COPY(this.queryData); | |||||
this.ready = true; | |||||
}, | |||||
// 拉取列表 | |||||
async fetchList() { | |||||
if (this.page > this.total) { | |||||
return; | |||||
} | |||||
this.searchData.MeetID=this.meetId; | |||||
const result = await this.HTTP_GET( | |||||
"learun/adms/PersonnelManagement/MeetingMinutes/pagelist", | |||||
{ | |||||
// 这里 sidx 表示排序字段,sord 表示排序方式(DESC=降序,ASC=升序) | |||||
// 代码生成器生成时默认按照主键排序,您可以修改成按创建时间的字段降序 | |||||
pagination: { rows: 10, page: this.page, sidx: "ID", sord: "DESC" }, | |||||
queryJson: JSON.stringify(this.searchData), | |||||
}, | |||||
"加载数据时出错" | |||||
); | |||||
if (!result) { | |||||
return; | |||||
} | |||||
this.total = result.total; | |||||
this.page = result.page + 1; | |||||
this.list = this.list.concat(result.rows); | |||||
this.tips = `已加载 ${Math.min(result.page, result.total)} / ${ | |||||
result.total | |||||
} 页,共 ${result.records} 项`; | |||||
this.loadState = | |||||
result.page >= result.total ? "已加载所有项目" : "向下翻以加载更多"; | |||||
}, | |||||
// 刷新清空列表 | |||||
async refreshList() { | |||||
this.page = 1; | |||||
this.total = 2; | |||||
this.list = []; | |||||
await this.fetchList(); | |||||
}, | |||||
// 列表下拉 | |||||
pullDown() { | |||||
this.refreshList().then(() => { | |||||
this.$refs.list.stopPullDown(); | |||||
}); | |||||
}, | |||||
// 设置搜索条件 | |||||
async searchChange() { | |||||
const result = {}; | |||||
// 将其他查询项添加到查询 JSON 中 | |||||
const queryObj = pickBy(this.queryData, (t) => | |||||
Array.isArray(t) ? t.length > 0 : t | |||||
); | |||||
Object.assign( | |||||
result, | |||||
mapValues(queryObj, (t) => (Array.isArray(t) ? t.join(",") : t)) | |||||
); | |||||
this.searchData = result; | |||||
await this.refreshList(); | |||||
}, | |||||
// 点击「清空查询条件」按钮 | |||||
reset() { | |||||
this.queryData = this.COPY(this.defaultQueryData); | |||||
this.searchChange(); | |||||
}, | |||||
// 点击「编辑」、「查看」、「添加」、「删除」按钮 | |||||
async action(type, id = "") { | |||||
switch (type) { | |||||
case "view": | |||||
this.NAV_TO(`./single?type=view&id=${id}`); | |||||
return; | |||||
case "add": | |||||
this.NAV_TO("./single?type=create&meetId="+this.meetId); | |||||
return; | |||||
case "edit": | |||||
this.NAV_TO(`./single?type=edit&id=${id}`); | |||||
return; | |||||
case "delete": | |||||
if (!(await this.CONFIRM("删除项目", "确定要删除该项吗?", true))) { | |||||
return; | |||||
} | |||||
this.HTTP_POST( | |||||
"learun/adms/PersonnelManagement/MeetingMinutes/delete", | |||||
id, | |||||
"删除失败" | |||||
).then((success) => { | |||||
if (!success) { | |||||
return; | |||||
} | |||||
this.TOAST("删除成功", "success"); | |||||
this.refreshList(); | |||||
}); | |||||
return; | |||||
default: | |||||
return; | |||||
} | |||||
}, | |||||
// 显示列表中的标题项 | |||||
displayListItem(item, field) { | |||||
const fieldItem = this.scheme[field]; | |||||
const value = item[field]; | |||||
switch (fieldItem.type) { | |||||
case "currentInfo": | |||||
case "organize": | |||||
return fieldItem.dataType === "time" | |||||
? value | |||||
: get(this.GET_GLOBAL(fieldItem.dataType), `${value}.name`, ""); | |||||
case "radio": | |||||
case "select": | |||||
const selectItem = this.dataSource[field].find( | |||||
(t) => t.value === String(value) | |||||
); | |||||
return get(selectItem, "text", ""); | |||||
case "checkbox": | |||||
if (!value || value.split(",").length <= 0) { | |||||
return ""; | |||||
} | |||||
const checkboxItems = value.split(","); | |||||
return this.dataSource[field] | |||||
.filter((t) => checkboxItems.includes(t.value)) | |||||
.map((t) => t.text) | |||||
.join(","); | |||||
case "datetime": | |||||
if (!value) { | |||||
return ""; | |||||
} | |||||
return moment(value).format( | |||||
Number(fieldItem.dateformat) === 0 | |||||
? "YYYY年 M月 D日" | |||||
: "YYYY-MM-DD HH:mm" | |||||
); | |||||
default: | |||||
return value === null || value === undefined ? "" : value; | |||||
} | |||||
}, | |||||
}, | |||||
}; | |||||
</script> | |||||
<style lang="less" scoped> | |||||
@import "~@/common/css/sidepage.less"; | |||||
@import "~@/common/css/customlist.less"; | |||||
</style> |
@@ -0,0 +1,259 @@ | |||||
<template> | |||||
<view class="page"> | |||||
<view v-if="ready"> | |||||
<l-input | |||||
@input="setValue('MeetingMinutes.Title', $event)" | |||||
:value="getValue('MeetingMinutes.Title')" | |||||
:disabled="!edit" | |||||
title="纪要标题" | |||||
/> | |||||
<l-textarea | |||||
@input="setValue('MeetingMinutes.Content', $event)" | |||||
:value="getValue('MeetingMinutes.Content')" | |||||
:readonly="!edit" | |||||
title="内容" | |||||
/> | |||||
<l-upload-file | |||||
@input="setValue('MeetingMinutes.Files', $event)" | |||||
:value="getValue('MeetingMinutes.Files')" | |||||
:readonly="!edit" | |||||
:number="9" | |||||
title="附件上传" | |||||
/> | |||||
</view> | |||||
<view | |||||
v-if="ready" | |||||
class="bg-white margin-tb padding" | |||||
style="padding-top: 0; overflow: hidden" | |||||
> | |||||
<l-button | |||||
v-if="edit" | |||||
@click="action('save')" | |||||
size="lg" | |||||
color="green" | |||||
class="block margin-top" | |||||
block | |||||
> | |||||
提交保存 | |||||
</l-button> | |||||
<l-button | |||||
v-if="!edit && mode !== 'create'" | |||||
@click="action('edit')" | |||||
size="lg" | |||||
line="orange" | |||||
class="block margin-top" | |||||
block | |||||
> | |||||
编辑本页 | |||||
</l-button> | |||||
<l-button | |||||
v-if="edit && mode !== 'create'" | |||||
@click="action('reset')" | |||||
size="lg" | |||||
line="red" | |||||
class="block margin-top" | |||||
block | |||||
> | |||||
取消编辑 | |||||
</l-button> | |||||
<l-button | |||||
v-if="!edit && mode !== 'create'" | |||||
@click="action('delete')" | |||||
size="lg" | |||||
line="red" | |||||
class="block margin-top" | |||||
block | |||||
> | |||||
删除 | |||||
</l-button> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
/* | |||||
* 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn) | |||||
* Copyright (c) 2013-2021 上海力软信息技术有限公司 | |||||
* 创建人:超级管理员 | |||||
* 日 期:2021-03-08 10:36 | |||||
* 描 述:会议纪要 | |||||
*/ | |||||
/** | |||||
* 本段代码由移动端代码生成器输出,移动端须 2.2.0 版本及以上可以使用 | |||||
* 请在移动端 /pages.json 中的 pages 字段中添加一条记录: | |||||
* { "path": "pages/PersonnelManagement/MeetingMinutes/single", "style": { "navigationBarTitleText": "表单详情页" } } | |||||
* | |||||
* (navigationBarTitleText 字段为本页面的标题文本,可以修改) | |||||
* (必须自行操作该步骤,力软代码生成器不会自动帮您修改 /pages.json 文件) | |||||
*/ | |||||
import get from "lodash/get"; | |||||
import set from "lodash/set"; | |||||
import moment from "moment"; | |||||
import customPageMixins from "@/common/custompage.js"; | |||||
export default { | |||||
mixins: [customPageMixins], | |||||
data() { | |||||
return { | |||||
// 页面相关参数 | |||||
meetId: null, | |||||
id: null, | |||||
mode: null, | |||||
edit: null, | |||||
ready: false, | |||||
// 表单数据 | |||||
current: {}, | |||||
origin: {}, | |||||
// 表单项数据结构 | |||||
scheme: { | |||||
MeetingMinutes: { | |||||
MeetID: { type: "text", title: "会议名称" }, | |||||
Title: { type: "text", title: "纪要标题" }, | |||||
Content: { type: "texteditor", title: "内容" }, | |||||
Files: { type: "upload", title: "附件上传" }, | |||||
}, | |||||
}, | |||||
// 数据源 | |||||
dataSource: { | |||||
MeetingMinutes: {}, | |||||
}, | |||||
}; | |||||
}, | |||||
async onLoad({ type, id, meetId }) { | |||||
await this.init(type, id, meetId); | |||||
}, | |||||
methods: { | |||||
// 页面初始化 | |||||
async init(type, id, meetId) { | |||||
this.LOADING("加载数据中..."); | |||||
this.meetId = meetId; | |||||
this.id = id; | |||||
this.mode = type; | |||||
this.edit = ["create", "edit"].includes(this.mode); | |||||
// 拉取表单数据,同时拉取所有来自数据源的选单数据 | |||||
await Promise.all([() => {}]); | |||||
await this.fetchForm(); | |||||
this.ready = true; | |||||
this.HIDE_LOADING(); | |||||
}, | |||||
// 加载表单数据 | |||||
async fetchForm() { | |||||
if (this.mode === "create") { | |||||
this.origin = await this.getDefaultForm(); | |||||
} else { | |||||
const result = await this.HTTP_GET( | |||||
"learun/adms/PersonnelManagement/MeetingMinutes/form", | |||||
this.id | |||||
); | |||||
this.origin = await this.formatFormData(result); | |||||
} | |||||
this.current = this.COPY(this.origin); | |||||
}, | |||||
// 点击 「编辑」、「重置」、「保存」、「删除」 按钮 | |||||
async action(type) { | |||||
switch (type) { | |||||
case "edit": | |||||
this.edit = true; | |||||
break; | |||||
case "reset": | |||||
this.current = this.COPY(this.origin); | |||||
this.edit = false; | |||||
break; | |||||
case "save": | |||||
const verifyResult = this.verifyForm(); | |||||
if (verifyResult.length > 0) { | |||||
this.CONFIRM("表单验证失败", verifyResult.join("\n")); | |||||
return; | |||||
} | |||||
if ( | |||||
!(await this.CONFIRM( | |||||
"提交确认", | |||||
"确定要提交本页表单内容吗?", | |||||
true | |||||
)) | |||||
) { | |||||
return; | |||||
} | |||||
this.LOADING("正在提交..."); | |||||
this.scheme.MeetingMinutes.MeetID = this.meetId; | |||||
const postData = await this.getPostData(this.id); | |||||
var aa = JSON.parse(postData.strEntity); | |||||
aa.MeetID = this.meetId; | |||||
postData.strEntity = JSON.stringify(aa); | |||||
console.log(postData); | |||||
this.HTTP_POST( | |||||
"learun/adms/PersonnelManagement/MeetingMinutes/save", | |||||
postData, | |||||
"表单提交保存失败" | |||||
).then((success) => { | |||||
this.HIDE_LOADING(); | |||||
if (!success) { | |||||
return; | |||||
} | |||||
this.EMIT("PersonnelManagementMeetingMinutes-list-change"); | |||||
this.NAV_BACK(); | |||||
this.TOAST("提交保存成功"); | |||||
}); | |||||
break; | |||||
case "delete": | |||||
if (!(await this.CONFIRM("删除项目", "确定要删除本项吗?", true))) { | |||||
return; | |||||
} | |||||
this.LOADING("提交删除中..."); | |||||
this.HTTP_POST( | |||||
"learun/adms/PersonnelManagement/MeetingMinutes/delete", | |||||
this.id, | |||||
"删除失败" | |||||
).then((success) => { | |||||
this.HIDE_LOADING(); | |||||
if (!success) { | |||||
return; | |||||
} | |||||
this.EMIT("PersonnelManagementMeetingMinutes-list-change"); | |||||
this.NAV_BACK(); | |||||
this.this.TOAST("删除成功", "success"); | |||||
}); | |||||
break; | |||||
default: | |||||
break; | |||||
} | |||||
}, | |||||
// 获取表单值 | |||||
getValue(path) { | |||||
return get(this.current, path); | |||||
}, | |||||
// 设置表单值 | |||||
setValue(path, val) { | |||||
set(this.current, path, val); | |||||
}, | |||||
}, | |||||
}; | |||||
</script> | |||||
@@ -155,7 +155,7 @@ export default { | |||||
if (this.page > this.total) { return } | if (this.page > this.total) { return } | ||||
const result = await this.HTTP_GET( | const result = await this.HTTP_GET( | ||||
'/PersonnelManagement/MeetingSignInRecord/pagelist', | |||||
'learun/adms/PersonnelManagement/MeetingSignInRecord/pagelist', | |||||
{ | { | ||||
// 这里 sidx 表示排序字段,sord 表示排序方式(DESC=降序,ASC=升序) | // 这里 sidx 表示排序字段,sord 表示排序方式(DESC=降序,ASC=升序) | ||||
// 代码生成器生成时默认按照主键排序,您可以修改成按创建时间的字段降序 | // 代码生成器生成时默认按照主键排序,您可以修改成按创建时间的字段降序 | ||||
@@ -0,0 +1,45 @@ | |||||
<template> | |||||
<view class="page"> | |||||
<view class="btn" @click="tapScan"> 扫码 </view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
import scanCodeFun from "@/common/js/scanCodeFun.js"; | |||||
export default { | |||||
data() { | |||||
return {}; | |||||
}, | |||||
methods: { | |||||
init() { | |||||
let _this = this; | |||||
scanCodeFun.scanCodeFun().then((res) => { | |||||
if (!res) return; | |||||
var userInfo = this.GET_GLOBAL("loginUser"); | |||||
var result = this.HTTP_GET( | |||||
"learun/adms/PersonnelManagement/MeetingSignInRecord/scan", | |||||
{ | |||||
userid: userInfo.userId, | |||||
meetid: res.result, | |||||
}, | |||||
"签到时出错" | |||||
).then(res1=>{this.TOAST(res1.result )}) | |||||
}); | |||||
}, | |||||
tapScan() { | |||||
this.init(); | |||||
}, | |||||
}, | |||||
mounted() { | |||||
let _this = this; | |||||
setTimeout(function () { | |||||
_this.init(); | |||||
}, 100); | |||||
}, | |||||
}; | |||||
</script> | |||||
<style lang="less" scoped> | |||||
@import "~@/common/css/sidepage.less"; | |||||
@import "~@/common/css/customlist.less"; | |||||
</style> |
@@ -16,7 +16,6 @@ export default { | |||||
init() { | init() { | ||||
let _this = this; | let _this = this; | ||||
scanCodeFun.scanCodeFun().then(res => { | scanCodeFun.scanCodeFun().then(res => { | ||||
console.log(res); | |||||
if(!res) return; | if(!res) return; | ||||
this.NAV_TO('./from', { StuNo: res.result }, true); | this.NAV_TO('./from', { StuNo: res.result }, true); | ||||
}) | }) | ||||