diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/WageScheduleController.cs b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/WageScheduleController.cs index 687ba14e8..60ae3adb9 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/WageScheduleController.cs +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/WageScheduleController.cs @@ -30,6 +30,15 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers return View(); } /// + /// 主页面 + /// + /// + [HttpGet] + public ActionResult IndexPrint() + { + return View(); + } + /// /// 我的工资条 /// /// diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/WageSchedule/IndexPrint.cshtml b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/WageSchedule/IndexPrint.cshtml new file mode 100644 index 000000000..9dcdd645d --- /dev/null +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/WageSchedule/IndexPrint.cshtml @@ -0,0 +1,57 @@ +@{ + ViewBag.Title = "工资条"; + Layout = "~/Views/Shared/_Index.cshtml"; +} +
+
+
+
+
+
+
+
+
+
年份
+
+
+
+
月份
+
+
+
+
人员类别
+
+
+
+
岗位等级
+
+
+
+
薪级
+
+
+
+
姓名
+ +
+
+
银行卡号
+ +
+
+
+
+
+
+
+ +
+ @*
+
*@ +
+
+
+
+
+
+@Html.AppendJsFile("/Areas/EducationalAdministration/Views/WageSchedule/IndexPrint.js") diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/WageSchedule/IndexPrint.js b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/WageSchedule/IndexPrint.js new file mode 100644 index 000000000..c05f4d4f6 --- /dev/null +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Views/WageSchedule/IndexPrint.js @@ -0,0 +1,269 @@ +/* * 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架(http://www.learun.cn) + * Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 + * 创建人:超级管理员 + * 日 期:2022-11-07 11:54 + * 描 述:工资条 + */ +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); + //年份 + $('#IssueYear').lrselect({ + allowSearch: true, + url: top.$.rootUrl + '/PersonnelManagement/MP_ManagementPlan/GetAcademicYear', + value: 'value', + text: 'text' + }); + $('#IssueMonth').lrDataItemSelect({ code: 'MPMonth' }); + $('#PeopleType').lrselect({ + placeholder: "请选择人员类别", + allowSearch: true, + url: top.$.rootUrl + '/EducationalAdministration/WageSchedule/PeopleType', + value: 'PeopleType', + text: 'PeopleType' + }); + $('#PostType').lrselect({ + placeholder: "请选择岗位等级", + allowSearch: true, + url: top.$.rootUrl + '/EducationalAdministration/WageSchedule/PostType', + value: 'PostType', + text: 'PostType' + }); + $('#PayGrade').lrselect({ + placeholder: "请选择薪级", + allowSearch: true, + url: top.$.rootUrl + '/EducationalAdministration/WageSchedule/PayGrade', + value: 'PayGrade', + text: 'PayGrade' + }); + // 刷新 + $('#lr_refresh').on('click', function () { + location.reload(); + }); + // 新增 + $('#lr_add').on('click', function () { + learun.layerForm({ + id: 'form', + title: '新增', + url: top.$.rootUrl + '/EducationalAdministration/WageSchedule/Form', + width: 800, + height: 800, + callBack: function (id) { + return top[id].acceptClick(refreshGirdData); + } + }); + }); + // 编辑 + $('#lr_edit').on('click', function () { + var keyValue = $('#gridtable').jfGridValue('Id'); + if (learun.checkrow(keyValue)) { + var CheckMark = $('#gridtable').jfGridValue('F_EnabledMark'); + if (CheckMark.indexOf('1') != -1) { + learun.alert.warning("选中记录中包含已审核项目!"); + return; + } + learun.layerForm({ + id: 'form', + title: '编辑', + url: top.$.rootUrl + '/EducationalAdministration/WageSchedule/Form?keyValue=' + keyValue, + width: 800, + height: 800, + callBack: function (id) { + return top[id].acceptClick(refreshGirdData); + } + }); + } + }); + // 删除 + $('#lr_delete').on('click', function () { + var keyValue = $('#gridtable').jfGridValue('Id'); + var CheckMark = $('#gridtable').jfGridValue('F_EnabledMark'); + if (learun.checkrow(keyValue)) { + if (CheckMark.indexOf('1') != -1) { + learun.alert.warning("选中记录中包含已审核项目!"); + return; + } + learun.layerConfirm('是否确认删除该项!', function (res) { + if (res) { + learun.deleteForm(top.$.rootUrl + '/EducationalAdministration/WageSchedule/DeleteForm', { keyValue: keyValue }, function () { + refreshGirdData(); + }); + } + }); + } + }); + //审核 + $('#lr_check').on('click', function () { + var keyValue = $('#gridtable').jfGridValue('Id'); + if (learun.checkrow(keyValue)) { + var CheckMark = $('#gridtable').jfGridValue('F_EnabledMark'); + if (CheckMark.indexOf('1') != -1) { + learun.alert.warning("选中记录中包含已审核项目!"); + return; + } + learun.layerConfirm('是否确认审核该项?', function (res) { + if (res) { + learun.postForm(top.$.rootUrl + '/EducationalAdministration/WageSchedule/CheckForm', { keyValue: keyValue, Status: '1' }, function () { + refreshGirdData(); + }); + } + }); + } + }); + //去审 + $('#lr_uncheck').on('click', function () { + var keyValue = $('#gridtable').jfGridValue('Id'); + if (learun.checkrow(keyValue)) { + var CheckMark = $('#gridtable').jfGridValue('F_EnabledMark'); + var CheckMarkArr = CheckMark.split(','); + if ($.inArray('0', CheckMarkArr) != -1 || $.inArray('', CheckMarkArr) != -1) { + learun.alert.warning("选中记录中包含未审核项目!"); + return; + } + learun.layerConfirm('是否确认取消审核该项?', function (res) { + if (res) { + learun.postForm(top.$.rootUrl + '/EducationalAdministration/WageSchedule/CheckForm', { keyValue: keyValue, Status: '2' }, function () { + refreshGirdData(); + }); + } + }); + } + }); + //审核全部 + $('#lr_checkall').on('click', function () { + learun.layerConfirm('是否确认全部审核?', function (res) { + if (res) { + learun.postForm(top.$.rootUrl + '/EducationalAdministration/WageSchedule/CheckForm', { keyValue: null, Status: '0' }, function () { + refreshGirdData(); + }); + } + }); + }); + ///上传 + $('#lr_import').on('click', + function () { + learun.layerForm({ + id: 'form', + title: '导入', + url: top.$.rootUrl + '/EducationalAdministration/WageSchedule/ImportForm', + width: 600, + height: 400, + btn: null, + callBack: function (id) { + return top[id].acceptClick(refreshGirdData); + } + }); + }); + }, + initGird: function () { + $('#gridtable').jfGrid({ + url: top.$.rootUrl + '/EducationalAdministration/WageSchedule/GetPageList', + headData: [ + { label: '序号', name: 'No', width: 70, align: "left" }, + { label: '姓名', name: 'EmpName', width: 70, align: "left" }, + { label: '工资卡号', name: 'WageCardNo', width: 130, align: "left" }, + { label: '人员类别', name: 'PeopleType', width: 70, align: "left" }, + { label: '岗位等级', name: 'PostType', width: 70, align: "left" }, + { label: '薪级', name: 'PayGrade', width: 50, align: "left" }, + { label: '应发合计', name: 'TotalGrossPay', width: 70, align: "left", statistics: true }, + //{ + // label: '基本工资', name: '基本工资', width: 130, align: "center", statistics: true, + // children: [ + { label: '岗位工资', name: 'PostWage', width: 70, align: "left", statistics: true }, + { label: '薪级工资', name: 'PayGradeWage', width: 70, align: "left", statistics: true }, + { label: '百分之十', name: 'TenPercent', width: 70, align: "left", statistics: true }, + //{ label: '小计', name: 'BasePay', width: 70, align: "left", statistics: true } + // ] + //}, + //{ + // label: '绩效工资', name: '绩效工资', width: 70, align: "center", statistics: true, + // children: [ + { label: '基础绩效', name: 'BasicsPerformance', width: 70, align: "left", statistics: true }, + { label: '奖励绩效', name: 'AwardPerformance', width: 70, align: "left", statistics: true }, + // ] + //}, + //{ + // label: '单列绩效', name: '单列绩效', width: 70, align: "center", statistics: true, + // children: [ + { label: '基础绩效', name: 'SeparateBasicsPerformance', width: 70, align: "left", statistics: true }, + { label: '奖励绩效', name: 'SeparateAwardPerformance', width: 70, align: "left", statistics: true }, + // ] + //}, + //{ + // label: '津贴补贴', name: '津贴补贴', width: 130, align: "center", statistics: true, + // children: [ + { label: '艰边津贴', name: 'RoughEdgeAllowance', width: 70, align: "left", statistics: true }, + { label: '民族津贴', name: 'NationAllowance', width: 70, align: "left", statistics: true }, + { label: '教龄补贴', name: 'TeachAllowance', width: 70, align: "left", statistics: true }, + { label: '特级教师津贴', name: 'SuperfineTeacherResearch', width: 80, align: "left", statistics: true }, + // ] + //}, + //{ + //label: '改革性补贴', name: '改革性补贴', width: 70, align: "center", statistics: true, + //children: [ + { label: '交通补贴', name: 'Transportation', width: 70, align: "left", statistics: true }, + { label: '物业补贴', name: 'RealeState', width: 70, align: "left", statistics: true }, + { label: '工改保留补贴', name: 'WorkKeep', width: 90, align: "left", statistics: true }, + // ] + //}, + { label: '女职工卫生费', name: 'GirlStaffSanitation', width: 90, align: "left", statistics: true }, + { label: '乡镇补贴', name: 'TownshipSubsidy', width: 130, align: "center", statistics: true }, + { label: '住房补贴', name: 'HousingAllowance', width: 80, align: "left", statistics: true }, + { label: '住房公积金', name: 'HousingFundAllowance', width: 80, align: "left", statistics: true }, + { label: '其他', name: 'OtherOne', width: 70, align: "left", statistics: true }, + { label: '代扣合计', name: 'DeductionsSubtotal', width: 70, align: "left", statistics: true }, + //{ + // label: '代扣代缴', name: '代扣代缴', width: 130, align: "center", statistics: true, + // children: [ + { label: '公积金', name: 'AccumulationFund', width: 70, align: "left", statistics: true }, + { label: '养老保险', name: 'EndowmentInsurance', width: 70, align: "left", statistics: true }, + { label: '职业年金', name: 'OccupationalAnnuities', width: 70, align: "left", statistics: true }, + { label: '医疗保险', name: 'MedicalInsurance', width: 70, align: "left", statistics: true }, + { label: '失业保险', name: 'UnemploymentInsurance', width: 70, align: "left", statistics: true }, + { label: '工会工费', name: 'LaborUnionWage', width: 70, align: "left", statistics: true }, + { label: '个人所得税', name: 'PersonalIncomeTax', width: 70, align: "left", statistics: true }, + { label: '其他', name: 'Other', width: 70, align: "left", statistics: true }, + // ] + //}, + //{ label: '财政直达', name: 'FiscalDirect', width: 70, align: "left", statistics: true }, + //{ label: '银行代扣', name: 'BankWithholding', width: 70, align: "left", statistics: true }, + { label: '实发合计', name: 'NetCombined', width: 70, align: "left", statistics: true }, + //{ label: '创建用户', name: 'CreateUser', width: 70, align: "left" }, + //{ label: '创建时间', name: 'CreateTime', width: 130, align: "left" }, + { label: '发放月份', name: 'IssueMonth', width: 70, align: "left" }, + { label: '发放年份', name: 'IssueYear', width: 70, align: "left" }, + { + label: "审核状态", name: "F_EnabledMark", width: 70, align: "center", + formatter: function (cellvalue) { + return cellvalue == "1" ? "已审核" : "未审核"; + } + }, + ], + mainId: 'Id', + isPage: true, + rows: 300, + sidx: 'IssueYear desc, IssueMonth desc, CreateTime desc ', + isMultiselect: true + }); + page.search(); + }, + search: function (param) { + param = param || {}; + param.Sqlparam = ""; + $('#gridtable').jfGridSet('reload', { queryJson: JSON.stringify(param) }); + } + }; + refreshGirdData = function () { + $('#gridtable').jfGridSet('reload'); + }; + page.init(); +} diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Content/excel/SalarySheetImport.xls b/Learun.Framework.Ultimate V7/Learun.Application.Web/Content/excel/SalarySheetImport.xls index fd3079009..37bff3328 100644 Binary files a/Learun.Framework.Ultimate V7/Learun.Application.Web/Content/excel/SalarySheetImport.xls and b/Learun.Framework.Ultimate V7/Learun.Application.Web/Content/excel/SalarySheetImport.xls differ diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj b/Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj index fcc8ee05a..ea3d283fd 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj @@ -1430,6 +1430,7 @@ + @@ -8023,6 +8024,7 @@ + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/WageSchedule/WageScheduleService.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/WageSchedule/WageScheduleService.cs index c53eb3602..90f6ea6d0 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/WageSchedule/WageScheduleService.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/WageSchedule/WageScheduleService.cs @@ -70,7 +70,7 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration var strSql = new StringBuilder(); strSql.Append(" SELECT t.*,u.F_Account,u.F_RealName FROM WageSchedule t "); strSql.Append($" left join {baseDataName}.dbo.LR_Base_User u on t.empname=u.F_RealName "); - strSql.Append(" where 1=1 "); + strSql.Append(" where 1=1 and u.F_Description='教师' and u.F_DeleteMark = 0"); var userInfo = LoginUserInfo.Get(); var queryParam = queryJson.ToJObject(); // 虚拟参数 @@ -354,22 +354,25 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration try { //检测是否有空值 - if (dr[1].ToString() == "" || dr[2].ToString() == "" || dr[3].ToString() == "" || dr[4].ToString() == "" || dr[5].ToString() == "" || dr[6].ToString() == "" || dr[26].ToString() == "" || dr[35].ToString() == "") + if (dr[1].ToString() == "" || dr[3].ToString() == "" || dr[4].ToString() == "" || dr[5].ToString() == "" || dr[6].ToString() == "" || dr[26].ToString() == "" || dr[35].ToString() == "") { throw (new Exception("行内必填项数据有空值,不能为空!")); } - if (dr[36].ToString() == "" || dr[37].ToString() == "") - { - throw (new Exception("发放年月不能为空")); - } if (EmpInfoEntities.Count(m => m.EmpName.ToUpper() == dr[1].ToString().ToUpper()) == 0) { throw (new Exception("【姓名】不存在,请核对!")); } - + if (dr[2].ToString() == "") + { + throw (new Exception("【工资卡号】不能为空")); + } + if (dr[36].ToString() == "" || dr[37].ToString() == "") + { + throw (new Exception("发放【年、月】不能为空")); + } if (wageScheduleEntityList.Count(x => x.IssueYear == dr[37].ToString() && x.IssueMonth == dr[36].ToInt() && x.EmpName == dr[1].ToString()) > 0) { - throw (new Exception("当月信息已重复,信息已忽略")); + throw (new Exception("导入信息已重复,信息已忽略")); } //写入要导入的数据 @@ -418,8 +421,8 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration }; wageScheduleEntityList.Add(wageScheduleEntity); - //删除表中原有姓名,月份,年的数据 - //db.Delete(x => x.EmpName == wageScheduleEntity.EmpName && x.IssueMonth == wageScheduleEntity.IssueMonth && x.IssueYear == wageScheduleEntity.IssueYear); + //删除表中旧数据 及同年同月同名同姓之人 + db.Delete(x => x.EmpName == wageScheduleEntity.EmpName && x.IssueMonth == wageScheduleEntity.IssueMonth && x.IssueYear == wageScheduleEntity.IssueYear); snum++; } catch (Exception ex) diff --git a/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages.json b/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages.json index 50095daed..f8918303f 100644 --- a/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages.json +++ b/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages.json @@ -1158,13 +1158,13 @@ { "path": "pages/Payslip/Payslip/list", "style": { - "navigationBarTitleText": "财政工资条" + "navigationBarTitleText": "我的工资" } }, { "path": "pages/Payslip/Payslip/single", "style": { - "navigationBarTitleText": "财政工资条" + "navigationBarTitleText": "我的工资" } }, // 外聘工资条 diff --git a/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/Payslip/Payslip/list.vue b/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/Payslip/Payslip/list.vue index 6192ef664..396d1ef44 100644 --- a/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/Payslip/Payslip/list.vue +++ b/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/Payslip/Payslip/list.vue @@ -25,15 +25,29 @@ + + + + 应发合计 + ¥{{list.length > 0 ? list[0].TotalGrossPay || 0 : 0}} + + + + 代扣合计 + ¥{{list.length > 0 ? list[0].DeductionsSubtotal || 0 : 0}} + + + + + - + - + 基本工资 岗位工资: @@ -66,7 +80,7 @@ 百分之十: {{ displayListItem(item, 'TenPercent') }} - + 绩效工资 基础绩效: {{ displayListItem(item, 'BasicsPerformance') }} @@ -75,7 +89,7 @@ 奖励绩效: {{ displayListItem(item, 'AwardPerformance') }} - + 单列绩效 基础绩效: {{ displayListItem(item, 'SeparateBasicsPerformance') }} @@ -84,7 +98,7 @@ 奖励绩效: {{ displayListItem(item, 'SeparateAwardPerformance') }} - + 津贴补贴 艰边津贴: {{ displayListItem(item, 'RoughEdgeAllowance') }} @@ -101,7 +115,7 @@ 特级教师津贴: {{ displayListItem(item, 'SuperfineTeacherResearch') }} - + 改革性补贴 交通补贴: {{ displayListItem(item, 'Transportation') }} @@ -171,7 +185,7 @@ 其他: {{ displayListItem(item, 'Other') }} - + - - + - + --> @@ -572,7 +585,15 @@ reset() { this.queryData = this.COPY(this.defaultQueryData) this.searchChange() - } + }, + + // 点击跳转到详情页 + GoTosingle(type){ + let _this = this + uni.navigateTo({ + url: './single?type='+type+'&item='+encodeURIComponent(JSON.stringify(_this.list)) + }); + } } } @@ -586,6 +607,8 @@ padding-left: 0; padding-right: 0; padding-top: 0; + padding-bottom: 0; + border-top: none !important; } .customlist-item-field{ padding-left: 10px; @@ -662,7 +685,16 @@ font-size: 16px; line-height: 36px; background: #f1f1f1; - margin-top: 5px; padding-left: 5px; } + .item-titlewrap{ + color: #000; + font-size: 16px; + line-height: 50px; + background: #f1f1f1; + padding:0 10px; + border-bottom: 1rpx solid #ddd; + display: flex; + justify-content: space-between; + } \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/Payslip/Payslip/single.vue b/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/Payslip/Payslip/single.vue index 7aaba5065..1010ff97f 100644 --- a/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/Payslip/Payslip/single.vue +++ b/Learun.Framework.Ultimate V7/LearunApp-2.2.0/pages/Payslip/Payslip/single.vue @@ -1,43 +1,44 @@