简历预览优化

master
xiaochanghai 6 months ago
parent 6c7b9e9f52
commit 39ab0df637
  1. 24
      Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeTemplatePreviewController.cs
  2. 13
      Tiobon.Core.Api/Program.cs
  3. 647
      Tiobon.Core.Api/Views/Ghrh_ResumeTemplatePreview/Index.cshtml
  4. 107
      Tiobon.Core.Api/wwwroot/css/resume.css
  5. 11
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
  6. 2
      Tiobon.Core.Services/Tiobon.Core.Services.csproj

@ -2,6 +2,7 @@
using SqlSugar;
using System.Dynamic;
using Tiobon.Core.Common.DB.Dapper.Extensions;
using Tiobon.Core.Common.Extensions;
using Tiobon.Core.Model.ViewModels.Extend;
namespace Tiobon.Core.Api.Controllers;
@ -218,12 +219,17 @@ END";
if (o.field == "RegisteredType") o.field = "RegisteredTypeLabel";
if (o.field == "EduDegree") o.field = "EduDegreeLabel";
if (o.field == "ApplyStatus") o.field = "ApplyStatusLabel";
if (o.field == "Channel")
{
o.field = "ChannelLabel";
}
});
x.children = x.children.Where(o => o.field != "EduDegreeLabel"
&& o.field != "GenderLabel"
x.children = x.children.Where(o => o.field != "EduDegree"
&& o.field != "Gende"
&& o.field != "StaffName"
&& o.field != "ApplyStatusLabel"
&& o.field != "ApplyStatus"
&& o.field != "Channel"
&& o.field != "WorkYears"
&& o.field != "WorkYears"
&& o.field != "Age").ToList();
@ -292,11 +298,21 @@ END";
columnNames.Add("RegisteredTypeLabel");
columnNames.Add("EduDegreeLabel");
columnNames.Add("ApplyStatusLabel");
columnNames.Add("ChannelLabel");
columnNames.ForEach(x =>
{
var value = entity.GetPropertyValue(x);
dicts.Add(x, value);
if (x == "RemarkSz")
{
if (value.ToString().IsNotEmptyOrNull())
value = "<div>" + value.ToString().Replace("\n", "</br>") + "</div>";
dicts.Add(x, value);
}
else
dicts.Add(x, value);
});
ViewBag.BaseDic = dicts;
ViewBag.entity = entity;
#endregion

@ -1,6 +1,4 @@
using System.IdentityModel.Tokens.Jwt;
using System.Reflection;
using Autofac;
using Autofac;
using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Server.Kestrel.Core;
@ -9,9 +7,11 @@ using Microsoft.IdentityModel.Logging;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using Serilog;
using Tiobon.Core.Common.DB.Dapper.Extensions;
using System.IdentityModel.Tokens.Jwt;
using System.Reflection;
using Tiobon.Core;
using Tiobon.Core.Common.Core;
using Tiobon.Core.Common.DB.Dapper.Extensions;
using Tiobon.Core.Extensions;
using Tiobon.Core.Extensions.Apollo;
using Tiobon.Core.Extensions.Middlewares;
@ -19,9 +19,8 @@ using Tiobon.Core.Extensions.ServiceExtensions;
using Tiobon.Core.Filter;
using Tiobon.Core.Hubs;
using Tiobon.Core.Serilog.Utility;
using DinkToPdf.Contracts;
using DinkToPdf;
using Microsoft.Extensions.FileProviders;
using WkHtmlToPdfDotNet;
using WkHtmlToPdfDotNet.Contracts;
var builder = WebApplication.CreateBuilder(args);

@ -16,7 +16,112 @@
bool displaySignatureArea = ViewBag.DisplaySignatureArea;
}
<link rel="stylesheet" href="@ViewBag.CssUrl">
<style>
body {
color: #000000d9;
font-size: 14px;
font-family: Noto Sans SC, PingFang SC, tahoma, arial, Hiragino Sans GB, Hiragino Sans GB W3, Microsoft Yahei, STHeitiSC-Light, Helvetica-Light, sans-serif !important;
page-break-before: always;
}
.ghr-preview-staff-info .pageContainer {
background-color: #fff;
overflow-y: auto;
overflow: hidden;
padding: 10px;
}
.pageContainer .a4page.displayMode {
margin: 20px auto;
display: flex;
flex-wrap: wrap;
}
.ghr-preview-staff-resume-title {
height: 26px;
line-height: 26px;
font-size: 18px;
color: #242424;
margin: 10px 0;
border-left: 2px solid #ff9300;
padding-left: 15px;
width: 100%
}
.page-break-inside {
page-break-inside: avoid;
}
.grid-container {
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: center;
-webkit-box-pack: center;
margin: 5px 0;
min-height: 25px;
line-height: 25px;
}
.grid-item {
-webkit-box-flex: 1;
flex: 1;
width: 50%;
}
.grid-item .label {
vertical-align: top;
width: 150px;
/* -webkit-box-flex: 1; */
text-align: right;
display: inline-block;
}
.grid-item .value {
/* -webkit-box-flex: 1; */
display: inline-block;
}
.staffPhoto {
width: 100px;
height: 100px;
display: inline-block;
vertical-align: top;
position: relative;
padding: 10px;
}
.staffPhoto img {
width: 100%;
height: 100%;
-o-object-fit: contain;
object-fit: contain;
}
.staffBaseInfo {
height: 100px;
display: inline-block;
vertical-align: top;
padding-left: 25px;
}
.staffName {
font-size: 20px;
margin-top: 10px;
}
.staffEName {
font-size: 16px;
color: #5d5d5d;
}
.staffHumanResourcesMsg {
font-size: 16px;
color: #5d5d5d;
margin-top: 15px;
}
</style>
<div class="ghr-preview-staff-info">
<div class="pageContainer">
@ -26,84 +131,195 @@
{
if (item.tabKey == "Photo")
{
<div class="a4page displayMode page-break-inside" id="pageIndex-0">
<div class="ghr-preview-staff-base-info" id="info">
<div class="staffPhoto">
@if (!string.IsNullOrEmpty(entity.PhotoUrl))
{
<img src="@frontUrl@entity.PhotoUrl" alt="">
}
</div>
<div class="staffBaseInfo">
<div class="staffName">@(entity.StaffName)&nbsp;</div>
<div class="staffEName">@(entity.ApplyStatusLabel)&nbsp;</div>
<div class="staffHumanResourcesMsg">经验:@(entity.WorkYears)年工作经验&nbsp; <span><span>|</span><span>年龄:@(entity.Age)</span> &nbsp; </span><span><span>|</span><span>学历: @(entity.EduDegreeLabel)</span> &nbsp; </span></div>
</div>
<div class="grid-container">
<div class="grid-item staffPhoto">
@if (!string.IsNullOrEmpty(entity.PhotoUrl))
{
<img src="@frontUrl@entity.PhotoUrl" alt="">
}
</div>
<div class="grid-item">
<div class="staffName">@(entity.StaffName)&nbsp;</div>
<div class="staffEName">@(entity.ApplyStatusLabel)&nbsp;</div>
<div class="staffHumanResourcesMsg">经验:@(entity.WorkYears)年工作经验&nbsp; <span><span>|</span><span>年龄:@(entity.Age)</span> &nbsp; </span><span><span>|</span><span>学历: @(entity.EduDegreeLabel)</span> &nbsp; </span></div>
</div>
</div>
}
else if (item.tabKey == "Base")
{
<div class="a4page displayMode page-break-inside" id="pageIndex-0">
<div class="ghr-preview-staff-resume-title" id="Base" style="float:left;">
<div>
<div class="ghr-preview-staff-resume-title" id="@item.tabKey">
@item.tabName
</div>
@if (item.children != null && item.children.Any())
@foreach (var children in item.children)
{
for (int i = 0; i < item.children.Count; i = i + 2)
{
<div class="ghr-preview-staff-resume-block-item" id="Base-0-StaffName" style="float:left;width:@(children.label=="备注"?"100%": "50%")">
<div class="label">@(children.label):</div>
<div class="itemValue">
@{
if (BaseDic.ContainsKey(children.field))
if (item.children[i].field == "RemarkSz" || ((i + 1) < item.children.Count && item.children[i + 1].field == "RemarkSz"))
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
@if (item.children[i].field == "Birthday" || item.children[i].field == "GraduateDate" || item.children[i].field == "Indate")
{
if (children.field == "Birthday" || children.field == "GraduateDate" || children.field == "Indate")
@DateTimeHelper.ConvertToDayString(BaseDic[children.field])
<div class="value">
@DateTimeHelper.ConvertToDayString(BaseDic[item.children[i].field])
</div>
}
else
{
<div class="value">@Html.Raw(BaseDic[item.children[i].field])</div>
}
</div>
</div>
<div class="grid-container page-break-inside">
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
@if (item.children[i + 1].field == "Birthday" || item.children[i + 1].field == "GraduateDate" || item.children[i + 1].field == "Indate")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(BaseDic[item.children[i + 1].field])
</div>
}
else
@BaseDic[children.field]
{
<div class="value">@Html.Raw(BaseDic[item.children[i + 1].field])</div>
}
</div>
}
</div>
}
else
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
@if (item.children[i].field == "Birthday" || item.children[i].field == "GraduateDate" || item.children[i].field == "Indate")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(BaseDic[item.children[i].field])
</div>
}
else
{
<div class="value">@BaseDic[item.children[i].field]</div>
}
</div>
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
@if (item.children[i + 1].field == "Birthday" || item.children[i + 1].field == "GraduateDate" || item.children[i + 1].field == "Indate")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(BaseDic[item.children[i + 1].field])
</div>
}
else
{
<div class="value">@BaseDic[item.children[i + 1].field]</div>
}
</div>
}
</div>
</div>
}
}
</div>
}
</div>
}
else if (item.tabKey == "Family")
{
@if (FamilyDic.Count > 0)
{
<div class="a4page displayMode page-break-inside" id="pageIndex-0">
@if (FamilyDic.Count > 0)
{
<div class="ghr-preview-staff-resume-title" id="Base" style="float:left;">
@item.tabName
</div>
}
@for (var i = 0; i < FamilyDic.Count; i++)
<div>
<div class="ghr-preview-staff-resume-title" id="@item.tabKey">
@item.tabName
</div>
@for (var j = 0; j < FamilyDic.Count; j++)
{
@if (i > 0)
@if (j > 0)
{
<div style="margin-top:20px;width:100%;float: left;"></div>
<div style="margin-top:20px"></div>
}
@if (item.children != null && item.children.Any())
{
@foreach (var children in item.children)
for (int i = 0; i < item.children.Count; i = i + 2)
{
<div class="ghr-preview-staff-resume-block-item" id="Base-0-StaffName" style="float:left;width:@(children.label=="备注"?"100%": "50%")">
<div class="label">@(children.label):</div>
<div class="itemValue">
@{
if (FamilyDic[i].ContainsKey(children.field))
if (item.children[i].label == "备注" || ((i + 1) < item.children.Count && item.children[i + 1].label == "备注"))
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
@if (item.children[i].field == "Birth")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(FamilyDic[j][item.children[i].field])
</div>
}
else
{
if (children.field == "Birth")
@DateTimeHelper.ConvertToDayString(FamilyDic[i][children.field])
<div class="value">@FamilyDic[j][item.children[i].field]</div>
}
</div>
</div>
<div class="grid-container page-break-inside">
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
@if (item.children[i + 1].field == "Birth")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(FamilyDic[j][item.children[i + 1].field])
</div>
}
else
@FamilyDic[i][children.field]
{
<div class="value">@FamilyDic[j][item.children[i + 1].field]</div>
}
</div>
}
</div>
}
else
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
@if (item.children[i].field == "Birth")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(FamilyDic[j][item.children[i].field])
</div>
}
else
{
<div class="value">@FamilyDic[j][item.children[i].field]</div>
}
</div>
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
@if (item.children[i + 1].field == "Birth")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(FamilyDic[j][item.children[i + 1].field])
</div>
}
else
{
<div class="value">@FamilyDic[j][item.children[i + 1].field]</div>
}
</div>
}
</div>
</div>
}
}
}
}
@ -112,153 +328,283 @@
}
else if (item.tabKey == "Education")
{
<div class="a4page displayMode page-break-inside" id="pageIndex-0">
@{
if (EducationDic.Count > 0)
{
<div class="ghr-preview-staff-resume-title" id="Base" style="float:left;">
@item.tabName
</div>
}
for (var i = 0; i < EducationDic.Count; i++)
@if (EducationDic.Count > 0)
{
<div>
<div class="ghr-preview-staff-resume-title" id="@item.tabKey">
@item.tabName
</div>
@for (var j = 0; j < EducationDic.Count; j++)
{
if (i > 0)
@if (j > 0)
{
<div style="margin-top:20px;width:100%;float: left;"></div>
<div style="margin-top:20px"></div>
}
if (item.children != null && item.children.Any())
foreach (var children in item.children)
@if (item.children != null && item.children.Any())
{
for (int i = 0; i < item.children.Count; i = i + 2)
{
<div class="ghr-preview-staff-resume-block-item" id="Base-0-StaffName" style="float:left;width:@(children.label=="备注"?"100%": "50%")">
<div class="label">@(children.label):</div>
<div class="itemValue">
@{
if (EducationDic[i].ContainsKey(children.field))
if (item.children[i].label == "备注" || ((i + 1) < item.children.Count && item.children[i + 1].label == "备注"))
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
@if (item.children[i].field == "Birth")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(EducationDic[j][item.children[i].field])
</div>
}
else
{
@EducationDic[i][children.field]
<div class="value">@EducationDic[j][item.children[i].field]</div>
}
</div>
</div>
<div class="grid-container page-break-inside">
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
@if (item.children[i + 1].field == "Birth")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(EducationDic[j][item.children[i + 1].field])
</div>
}
else
{
<div class="value">@EducationDic[j][item.children[i + 1].field]</div>
}
</div>
}
</div>
</div>
}
else
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
@if (item.children[i].field == "Birth")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(EducationDic[j][item.children[i].field])
</div>
}
else
{
<div class="value">@EducationDic[j][item.children[i].field]</div>
}
</div>
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
@if (item.children[i + 1].field == "Birth")
{
<div class="value">
@DateTimeHelper.ConvertToDayString(EducationDic[j][item.children[i + 1].field])
</div>
}
else
{
<div class="value">@EducationDic[j][item.children[i + 1].field]</div>
}
</div>
}
</div>
}
}
}
}
}
</div>
</div>
}
}
else if (item.tabKey == "WorkExp")
{
<div class="a4page displayMode page-break-inside" id="pageIndex-0">
@{
if (WorkExpDic.Count > 0)
{
<div class="ghr-preview-staff-resume-title" id="Base" style="float:left;">
@item.tabName
</div>
}
for (var i = 0; i < WorkExpDic.Count; i++)
@if (WorkExpDic.Count > 0)
{
<div>
<div class="ghr-preview-staff-resume-title" id="@item.tabKey">
@item.tabName
</div>
@for (var j = 0; j < WorkExpDic.Count; j++)
{
if (i > 0)
@if (j > 0)
{
<div style="margin-top:20px;width:100%;float: left;"></div>
<div style="margin-top:20px"></div>
}
if (item.children != null && item.children.Any())
foreach (var children in item.children)
@if (item.children != null && item.children.Any())
{
for (int i = 0; i < item.children.Count; i = i + 2)
{
<div class="ghr-preview-staff-resume-block-item" id="Base-0-StaffName" style="float:left;width:@(children.label=="备注"?"100%": "50%")">
<div class="label">@(children.label):</div>
<div class="itemValue">
@{
if (WorkExpDic[i].ContainsKey(children.field))
{
@WorkExpDic[i][children.field]
}
if (item.children[i].label == "备注" || ((i + 1) < item.children.Count && item.children[i + 1].label == "备注"))
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
<div class="value">@WorkExpDic[j][item.children[i].field]</div>
</div>
</div>
@if ((i + 1) < item.children.Count)
{
<div class="grid-container page-break-inside">
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
<div class="value">@WorkExpDic[j][item.children[i + 1].field]</div>
</div>
</div>
}
}
else
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
<div class="value">@WorkExpDic[j][item.children[i].field]</div>
</div>
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
<div class="value">@WorkExpDic[j][item.children[i + 1].field]</div>
</div>
}
</div>
</div>
}
}
}
}
}
</div>
</div>
}
}
else if (item.tabKey == "Licence")
{
<div class="a4page displayMode page-break-inside" id="pageIndex-0">
@{
if (LicenceDic.Count > 0)
{
<div class="ghr-preview-staff-resume-title" id="Base" style="float:left;">
@item.tabName
</div>
}
for (var i = 0; i < LicenceDic.Count; i++)
@if (LicenceDic.Count > 0)
{
<div>
<div class="ghr-preview-staff-resume-title" id="@item.tabKey">
@item.tabName
</div>
@for (var j = 0; j < LicenceDic.Count; j++)
{
if (i > 0)
@if (j > 0)
{
<div style="margin-top:20px;width:100%;float: left;"></div>
<div style="margin-top:20px"></div>
}
if (item.children != null && item.children.Any())
foreach (var children in item.children)
@if (item.children != null && item.children.Any())
{
for (int i = 0; i < item.children.Count; i = i + 2)
{
<div class="ghr-preview-staff-resume-block-item" id="Base-0-StaffName" style="float:left;width:@(children.label=="备注"?"100%": "50%")">
<div class="label">@(children.label):</div>
<div class="itemValue">
@{
if (LicenceDic[i].ContainsKey(children.field))
{
@LicenceDic[i][children.field]
}
if (item.children[i].label == "备注" || ((i + 1) < item.children.Count && item.children[i + 1].label == "备注"))
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
<div class="value">@LicenceDic[j][item.children[i].field]</div>
</div>
</div>
@if ((i + 1) < item.children.Count)
{
<div class="grid-container page-break-inside">
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
<div class="value">@LicenceDic[j][item.children[i + 1].field]</div>
</div>
</div>
}
}
else
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
<div class="value">@LicenceDic[j][item.children[i].field]</div>
</div>
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
<div class="value">@LicenceDic[j][item.children[i + 1].field]</div>
</div>
}
</div>
</div>
}
}
}
}
}
</div>
</div>
}
}
else if (item.tabKey == "Training")
{
<div class="a4page displayMode page-break-inside" id="pageIndex-0">
@{
if (TrainingDic.Count > 0)
{
<div class="ghr-preview-staff-resume-title" id="Base" style="float:left;">
@item.tabName
</div>
}
for (var i = 0; i < TrainingDic.Count; i++)
@if (TrainingDic.Count > 0)
{
<div>
<div class="ghr-preview-staff-resume-title" id="@item.tabKey">
@item.tabName
</div>
@for (var j = 0; j < TrainingDic.Count; j++)
{
if (i > 0)
@if (j > 0)
{
<div style="margin-top:20px;width:100%;float: left;"></div>
<div style="margin-top:20px"></div>
}
if (item.children != null && item.children.Any())
foreach (var children in item.children)
@if (item.children != null && item.children.Any())
{
for (int i = 0; i < item.children.Count; i = i + 2)
{
<div class="ghr-preview-staff-resume-block-item" id="Base-0-StaffName" style="float:left;width:@(children.label=="培训说明"?"100%": "50%")">
<div class="label">@(children.label):</div>
<div class="itemValue">
@{
if (TrainingDic[i].ContainsKey(children.field))
{
@TrainingDic[i][children.field]
}
if (item.children[i].label == "培训说明" || ((i + 1) < item.children.Count && item.children[i + 1].label == "培训说明"))
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
<div class="value">@TrainingDic[j][item.children[i].field]</div>
</div>
</div>
<div class="grid-container page-break-inside">
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
<div class="value">@TrainingDic[j][item.children[i + 1].field]</div>
</div>
}
</div>
</div>
}
else
{
<div class="grid-container page-break-inside">
<div class="grid-item ">
<div class="label">@(item.children[i].label):</div>
<div class="value">@TrainingDic[j][item.children[i].field]</div>
</div>
@if ((i + 1) < item.children.Count)
{
<div class="grid-item">
<div class="label">@(item.children[i + 1].label):</div>
<div class="value">@TrainingDic[j][item.children[i + 1].field]</div>
</div>
}
</div>
}
}
}
}
}
</div>
</div>
}
}
else if (item.tabKey == "Statement")
{
<div class="a4page displayMode page-break-inside" id="pageIndex-0">
<div>
@{
var ii = 0;
if (item.children != null && item.children.Any())
{
<div class="ghr-preview-staff-resume-title" id="Base" style="float:left;">
<div class="ghr-preview-staff-resume-title" id="@item.tabKey">
@item.tabName
</div>
}
@ -266,13 +612,8 @@
if (item.children != null && item.children.Any())
foreach (var children in item.children)
{
// if (ii > 0)
// {
// <div style="margin-top:5px;width:100%;float:left;"></div>
// }
<div class="ghr-preview-staff-resume-block-item" id="Base-0-StaffName" style="display: flex;width:80%">
<div class="itemValue" style="float: left;width: 75%;">
<div class="grid-container page-break-inside">
<div class="grid-item ">
<p style="margin: 0;padding: 5px;">
@(ii + 1).&nbsp;@(children.placeholder): @{
ii++;
@ -287,11 +628,9 @@
}
</p>
</div>
<div class="label" style="float: left;width: 25%;">
</div>
</div>
}
<div class="ghr-preview-staff-resume-block-item" style="display: flex;width:90%;padding-left: 10px;">
<div class=" page-break-inside">
<p>
@Html.Raw(ViewBag.StatementRemark)
</p>
@ -301,7 +640,7 @@
}
</div>
}
</div>
}
}

@ -1,109 +1,2 @@

body {
color: #000000d9;
font-size: 14px;
font-family: Noto Sans SC, PingFang SC, tahoma, arial, Hiragino Sans GB, Hiragino Sans GB W3, Microsoft Yahei, STHeitiSC-Light, Helvetica-Light, sans-serif !important;
page-break-before: always;
}
.ghr-preview-staff-info .pageContainer {
background-color: #fff;
overflow-y: auto;
}
.ghr-preview-staff-info .pageContainer .a4page {
width: 794px;
/* padding: 40px; */
box-sizing: border-box;
/* page-break-after: always; */
}
.pageContainer .a4page.displayMode {
margin: 20px auto;
/* border: 1px #d3d3d3 solid;
box-shadow: 0 0 5px #0000001a; */
/* display: flex; */
flex-wrap: wrap;
}
.ghr-preview-staff-base-info .staffPhoto {
width: 100px;
height: 100px;
display: inline-block;
vertical-align: top;
position: relative;
}
.ghr-preview-staff-base-info .staffPhoto img {
width: 100%;
height: 100%;
-o-object-fit: contain;
object-fit: contain;
}
.ghr-preview-staff-base-info .staffBaseInfo {
height: 100px;
display: inline-block;
vertical-align: top;
padding-left: 25px;
}
.ghr-preview-staff-base-info .staffBaseInfo .staffName {
font-size: 20px;
margin-top: 10px;
}
.ghr-preview-staff-base-info .staffBaseInfo .staffEName {
font-size: 16px;
color: #5d5d5d;
}
.ghr-preview-staff-base-info .staffBaseInfo .staffHumanResourcesMsg {
font-size: 16px;
color: #5d5d5d;
margin-top: 15px;
}
.ghr-preview-staff-resume-title {
height: 26px;
line-height: 26px;
font-size: 18px;
color: #242424;
margin: 10px 0;
border-left: 2px solid #ff9300;
padding-left: 15px;
width: 100%
}
.ghr-preview-staff-resume-block-item {
width: 50%;
display: inline-block;
vertical-align: top;
min-height: 25px;
word-break: break-all;
line-height: 25px;
margin: 5px 0;
flex-flow: row wrap;
}
.ghr-preview-staff-resume-block-item .label {
width: 150px;
display: inline-block;
vertical-align: top;
height: 25px;
line-height: 25px;
text-align: right;
}
.ghr-preview-staff-resume-block-item .itemValue {
display: inline-block;
vertical-align: top;
min-height: 25px;
line-height: 25px;
}
.page-break-inside {
page-break-inside: avoid;
}

@ -1,9 +1,9 @@
using DinkToPdf;
using DinkToPdf.Contracts;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Hosting;
using System.IO.Compression;
using WkHtmlToPdfDotNet;
using WkHtmlToPdfDotNet.Contracts;
using static Tiobon.Core.Model.Consts;
namespace Tiobon.Core.Services;
@ -3071,6 +3071,7 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
#endregion
#region 简历下载
public async Task<ServiceResult<string>> Download(List<long> ids)
{
string frontUrl = AppSettings.app(["Startup", "FrontUrl"]);
@ -3103,15 +3104,15 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
GlobalSettings = globalSettings,
Objects = { objectSettings }
};
string pathHeader = "wwwroot/files/pdf_files";
var fileName = entity.StaffName + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
var fileBytes = _converter.Convert(pdf);
string pathHeader = "wwwroot/files/pdf_files";
if (!Directory.Exists(pathHeader))
Directory.CreateDirectory(pathHeader);
var ms = new MemoryStream(fileBytes);
var file = new FormFile(ms, 0, ms.Length, Path.GetFileNameWithoutExtension(pathHeader), Path.GetFileName(pathHeader));
var fileName = entity.StaffName + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
await using (var fs = System.IO.File.Create(pathHeader + "/" + fileName))
{
await file.CopyToAsync(fs);

@ -22,7 +22,7 @@
<ItemGroup>
<PackageReference Include="AgileObjects.AgileMapper" Version="1.8.1" />
<PackageReference Include="Haukcode.DinkToPdf" Version="1.1.2" />
<PackageReference Include="Haukcode.WkHtmlToPdfDotNet" Version="1.5.95" />
</ItemGroup>

Loading…
Cancel
Save