기타근무자 관련 코드 수정

This commit is contained in:
ChiKyun Kim
2025-07-17 14:56:39 +09:00
parent 2806fb76ba
commit afbac3248e
26 changed files with 6166 additions and 4259 deletions

46
Project/Dialog/fCommon.Designer.cs generated Normal file
View File

@@ -0,0 +1,46 @@
namespace Project.Dialog
{
partial class fCommon
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// fHolyday
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1063, 567);
this.Name = "fHolyday";
this.Text = "근태입력";
this.ResumeLayout(false);
}
#endregion
}
}

86
Project/Dialog/fCommon.cs Normal file
View File

@@ -0,0 +1,86 @@
using FCM0000.Mail;
using FCOMMON;
using Microsoft.Web.WebView2.Core;
using Microsoft.Web.WebView2.WinForms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Project.Dialog
{
public partial class fCommon : fBase
{
private WebView2 webView21;
public fCommon()
{
InitializeComponent();
InitializeWebView2();
}
private void InitializeWebView2()
{
// 수동으로 WebView2 컨트롤 생성
this.webView21 = new WebView2();
// 기본 속성 설정
this.webView21.CreationProperties = null;
this.webView21.DefaultBackgroundColor = Color.White;
this.webView21.Dock = DockStyle.Fill;
this.webView21.Location = new Point(0, 0);
this.webView21.Name = "webView21";
this.webView21.Size = new Size(800, 600);
this.webView21.TabIndex = 0;
this.webView21.ZoomFactor = 1D;
// 폼에 추가
this.Controls.Add(this.webView21);
// 비동기 초기화
InitializeAsync();
}
private async void InitializeAsync()
{
try
{
// Fixed Version 경로 설정
string runtimePath = Path.Combine(Application.StartupPath, "WebView2Runtime");
if (Directory.Exists(runtimePath))
{
var env = await CoreWebView2Environment.CreateAsync(runtimePath);
await this.webView21.EnsureCoreWebView2Async(env);
}
else
{
// 시스템에 설치된 WebView2 사용
await this.webView21.EnsureCoreWebView2Async();
}
// OWIN 서버의 DashBoard 페이지로 연결
webView21.Source = new Uri($"{Pub.setting.WebServiceURL}/Common");
}
catch (Exception ex)
{
MessageBox.Show($"WebView2 초기화 실패: {ex.Message}");
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
EnsureVisibleAndUsableSize();
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}

120
Project/Dialog/fCommon.resx Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -254,10 +254,10 @@ namespace Project.Dialog
AddLoginInfo();
//210221
MakeAutoJobReportbyLogin();
Pub.MakeAutoJobReportbyLogin();
//210613
MakeAutoJobReportByAuto();
Pub.MakeAutoJobReportByAuto();
DialogResult = DialogResult.OK;
FCOMMON.info.Login.loginusetime = (DateTime.Now - dt).TotalMilliseconds;
@@ -269,137 +269,6 @@ namespace Project.Dialog
}
}
/// <summary>
/// 무조건 업무일지를 자동으로 작성하는 경우
/// </summary>
void MakeAutoJobReportByAuto()
{
//누군가가 로그인하면 당일 자동 생성되어야할 유저의 데이터를 기록한다.
var dbAI = new dsMSSQLTableAdapters.EETGW_JobReport_AutoInputTableAdapter();// EEEntitiesMain();
var dbGU = new dsMSSQLTableAdapters.vGroupUserTableAdapter();// EEEntitiesMain();
var dbHL = new dsMSSQLTableAdapters.HolidayLIstTableAdapter();
var dbJR = new dsMSSQLTableAdapters.JobReportTableAdapter();
var taQuery = new DSQueryTableAdapters.QueriesTableAdapter();
var nd = DateTime.Now.ToShortDateString();
//이 날짜가 휴일인지 체크한다.
var Holyinfo = dbHL.GetData(nd).FirstOrDefault();// db.HolidayLIst.Where(t => t.pdate == nd).FirstOrDefault();
if (Holyinfo != null && Holyinfo.IsfreeNull() == false && Holyinfo.free == true) return;
//토,일은 처리하지 않음
if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday) return;
// db.EETGW_JobReport_AutoInput.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.enable == true && t.autoinput == "A" && t.pdate.CompareTo(nd) <= 0 && (string.IsNullOrEmpty(t.edate) == true || t.edate.CompareTo(nd) > 0));
var rows = dbAI.GetActiveList(info.Login.gcode, "A", "%", nd);
foreach (var dr in rows)
{
//퇴사자 확인
var userdata = dbGU.GetByID(FCOMMON.info.Login.gcode, dr.uid).FirstOrDefault();// db.vGroupUser.Where(t => t.id == dr.uid).FirstOrDefault();
if (userdata != null && userdata.IsoutdateNull() == false) continue;
//오늘자 자동생성된 데이터가 있다면 처리하지 않는다
if (taQuery.ExistAutoInputData(info.Login.gcode, dr.uid, nd) > 0) continue; //db.JobReport.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.pdate == nd && t.uid == dr.uid && t.autoinput == true).Any())
//이데이터를 그대로 생성해준다.
var dtjr = new dsMSSQL.JobReportDataTable();
var newdr = dtjr.NewJobReportRow();
newdr.gcode = FCOMMON.info.Login.gcode;
newdr.wuid = dr.uid;// FCOMMON.info.Login.no;
newdr.wdate = DateTime.Now;
newdr.pdate = nd;
newdr.import = false;
newdr.hrs = dr.hrs;
newdr.type = dr.type;//210305 누락분 추가
newdr.ot = dr.ot;
newdr.process = dr.process;
newdr.projectName = dr.projectName;
newdr.pidx = dr.pidx;
newdr.package = dr.package;
newdr.autoinput = true;
newdr.description = dr.description;
newdr.description2 = dr.description2;
newdr.remark = dr.remark;
newdr.requestpart = dr.requestpart;
newdr.status = dr.status;
newdr.tag = dr.tag;
newdr.uid = dr.uid;
dtjr.AddJobReportRow(newdr);
dbJR.Update(dtjr);
}
dbAI.Dispose();
dbGU.Dispose();
dbHL.Dispose();
dbJR.Dispose();
taQuery.Dispose();
}
/// <summary>
/// 로그인으로 업무일지를 작성하는 경우
/// </summary>
void MakeAutoJobReportbyLogin()
{
//자동로그인 업무일지 기록 기능 추가 = 210220
//select* from EETGW_JobReport_AutoInput where gcode = 'EET1P' and pdate <= '2021-02-20' and(edate is null or edate > '2021-02-20') and autoinput = 'L'
var nd = DateTime.Now.ToShortDateString();
var taQ = new DSQueryTableAdapters.QueriesTableAdapter();
var exist = taQ.ExistAutoInputData(info.Login.gcode, info.Login.no, nd) > 0;
//var db = new EEEntitiesMain();
if (exist == false)
{
var taM = new dsMSSQLTableAdapters.EETGW_JobReport_AutoInputTableAdapter();
var rows = taM.GetActiveList(info.Login.gcode, "L", info.Login.no, nd);
//var rows = db.EETGW_JobReport_AutoInput.Where(t => t.gcode == FCOMMON.info.Login.gcode &&
//t.enable == true &&
//t.autoinput == "L" &&
//t.uid == FCOMMON.info.Login.no &&
//t.pdate.CompareTo(nd) <= 0 && (string.IsNullOrEmpty(t.edate) == true || t.edate.CompareTo(nd) > 0));
var newjob = new dsMSSQL.JobReportDataTable();
foreach (var dr in rows)
{
//이데이터를 그대로 생성해준다.
var newdr = newjob.NewJobReportRow();
newdr.gcode = FCOMMON.info.Login.gcode;
newdr.wuid = FCOMMON.info.Login.no;
newdr.wdate = DateTime.Now;
newdr.pdate = nd;
newdr.import = false;
if (dr.IshrsNull() == false) newdr.hrs = dr.hrs;
if (dr.IstypeNull() == false) newdr.type = dr.type;//210305 누락분 추가
if (dr.IsotNull() == false) newdr.ot = dr.ot;
if (dr.IsprocessNull() == false) newdr.process = dr.process;
if (dr.IsprojectNameNull() == false) newdr.projectName = dr.projectName;
if (dr.IspidxNull() == false) newdr.pidx = dr.pidx;
if (dr.IspackageNull() == false) newdr.package = dr.package;
newdr.autoinput = true;
if (dr.IsdescriptionNull() == false) newdr.description = dr.description;
if (dr.Isdescription2Null() == false) newdr.description2 = dr.description2;
if (dr.IsremarkNull() == false) newdr.remark = dr.remark;
if (dr.IsrequestpartNull() == false) newdr.requestpart = dr.requestpart;
if (dr.IsstatusNull() == false) newdr.status = dr.status;
if (dr.IstagNull() == false) newdr.tag = dr.tag;
if (dr.IsuidNull() == false) newdr.uid = dr.uid;
newjob.AddJobReportRow(newdr);
}
if (newjob.Count() > 0)
{
var taJ = new dsMSSQLTableAdapters.JobReportTableAdapter();
var cnt = taJ.Update(newjob);
//db.SaveChanges();
Util.MsgI($"{cnt} 건의 업무일지가 자동 생성 되었습니다\n업무일지는 로그인시 최초 1회 자동 등록됩니다\n" +
"자동입력을 해제하려면 '업무일지-자동입력' 화면에서 내역을 변경하거나 종료일자를 설정하시기 바랍니다");
}
}
}
void AddLoginInfo()
{
string ip = string.Empty;

View File

@@ -129,10 +129,10 @@ namespace Project.Dialog
AddLoginInfo();
//210221
MakeAutoJobReportbyLogin();
Pub.MakeAutoJobReportbyLogin();
//210613
MakeAutoJobReportByAuto();
Pub.MakeAutoJobReportByAuto();
DialogResult = DialogResult.OK;
FCOMMON.info.Login.loginusetime = (DateTime.Now - dt).TotalMilliseconds;
@@ -373,10 +373,10 @@ namespace Project.Dialog
AddLoginInfo();
//210221
MakeAutoJobReportbyLogin();
Pub.MakeAutoJobReportbyLogin();
//210613
MakeAutoJobReportByAuto();
Pub.MakeAutoJobReportByAuto();
DialogResult = DialogResult.OK;
FCOMMON.info.Login.loginusetime = (DateTime.Now - dt).TotalMilliseconds;
@@ -388,136 +388,7 @@ namespace Project.Dialog
}
}
/// <summary>
/// 무조건 업무일지를 자동으로 작성하는 경우
/// </summary>
void MakeAutoJobReportByAuto()
{
//누군가가 로그인하면 당일 자동 생성되어야할 유저의 데이터를 기록한다.
var dbAI = new dsMSSQLTableAdapters.EETGW_JobReport_AutoInputTableAdapter();// EEEntitiesMain();
var dbGU = new dsMSSQLTableAdapters.vGroupUserTableAdapter();// EEEntitiesMain();
var dbHL = new dsMSSQLTableAdapters.HolidayLIstTableAdapter();
var dbJR = new dsMSSQLTableAdapters.JobReportTableAdapter();
var taQuery = new DSQueryTableAdapters.QueriesTableAdapter();
var nd = DateTime.Now.ToShortDateString();
//이 날짜가 휴일인지 체크한다.
var Holyinfo = dbHL.GetData(nd).FirstOrDefault();// db.HolidayLIst.Where(t => t.pdate == nd).FirstOrDefault();
if (Holyinfo != null && Holyinfo.IsfreeNull() == false && Holyinfo.free == true) return;
//토,일은 처리하지 않음
if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday) return;
// db.EETGW_JobReport_AutoInput.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.enable == true && t.autoinput == "A" && t.pdate.CompareTo(nd) <= 0 && (string.IsNullOrEmpty(t.edate) == true || t.edate.CompareTo(nd) > 0));
var rows = dbAI.GetActiveList(info.Login.gcode, "A", "%", nd);
foreach (var dr in rows)
{
//퇴사자 확인
var userdata = dbGU.GetByID(FCOMMON.info.Login.gcode, dr.uid).FirstOrDefault();// db.vGroupUser.Where(t => t.id == dr.uid).FirstOrDefault();
if (userdata != null && userdata.IsoutdateNull() == false) continue;
//오늘자 자동생성된 데이터가 있다면 처리하지 않는다
if (taQuery.ExistAutoInputData(info.Login.gcode, dr.uid, nd) > 0) continue; //db.JobReport.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.pdate == nd && t.uid == dr.uid && t.autoinput == true).Any())
//이데이터를 그대로 생성해준다.
var dtjr = new dsMSSQL.JobReportDataTable();
var newdr = dtjr.NewJobReportRow();
newdr.gcode = FCOMMON.info.Login.gcode;
newdr.wuid = dr.uid;// FCOMMON.info.Login.no;
newdr.wdate = DateTime.Now;
newdr.pdate = nd;
newdr.import = false;
newdr.hrs = dr.hrs;
newdr.type = dr.type;//210305 누락분 추가
newdr.ot = dr.ot;
newdr.process = dr.process;
newdr.projectName = dr.projectName;
newdr.pidx = dr.pidx;
newdr.package = dr.package;
newdr.autoinput = true;
newdr.description = dr.description;
newdr.description2 = dr.description2;
newdr.remark = dr.remark;
newdr.requestpart = dr.requestpart;
newdr.status = dr.status;
newdr.tag = dr.tag;
newdr.uid = dr.uid;
dtjr.AddJobReportRow(newdr);
dbJR.Update(dtjr);
}
dbAI.Dispose();
dbGU.Dispose();
dbHL.Dispose();
dbJR.Dispose();
taQuery.Dispose();
}
/// <summary>
/// 로그인으로 업무일지를 작성하는 경우
/// </summary>
void MakeAutoJobReportbyLogin()
{
//자동로그인 업무일지 기록 기능 추가 = 210220
//select* from EETGW_JobReport_AutoInput where gcode = 'EET1P' and pdate <= '2021-02-20' and(edate is null or edate > '2021-02-20') and autoinput = 'L'
var nd = DateTime.Now.ToShortDateString();
var taQ = new DSQueryTableAdapters.QueriesTableAdapter();
var exist = taQ.ExistAutoInputData(info.Login.gcode, info.Login.no, nd) > 0;
//var db = new EEEntitiesMain();
if (exist == false)
{
var taM = new dsMSSQLTableAdapters.EETGW_JobReport_AutoInputTableAdapter();
var rows = taM.GetActiveList(info.Login.gcode, "L", info.Login.no, nd);
//var rows = db.EETGW_JobReport_AutoInput.Where(t => t.gcode == FCOMMON.info.Login.gcode &&
//t.enable == true &&
//t.autoinput == "L" &&
//t.uid == FCOMMON.info.Login.no &&
//t.pdate.CompareTo(nd) <= 0 && (string.IsNullOrEmpty(t.edate) == true || t.edate.CompareTo(nd) > 0));
var newjob = new dsMSSQL.JobReportDataTable();
foreach (var dr in rows)
{
//이데이터를 그대로 생성해준다.
var newdr = newjob.NewJobReportRow();
newdr.gcode = FCOMMON.info.Login.gcode;
newdr.wuid = FCOMMON.info.Login.no;
newdr.wdate = DateTime.Now;
newdr.pdate = nd;
newdr.import = false;
if (dr.IshrsNull() == false) newdr.hrs = dr.hrs;
if (dr.IstypeNull() == false) newdr.type = dr.type;//210305 누락분 추가
if (dr.IsotNull() == false) newdr.ot = dr.ot;
if (dr.IsprocessNull() == false) newdr.process = dr.process;
if (dr.IsprojectNameNull() == false) newdr.projectName = dr.projectName;
if (dr.IspidxNull() == false) newdr.pidx = dr.pidx;
if (dr.IspackageNull() == false) newdr.package = dr.package;
newdr.autoinput = true;
if (dr.IsdescriptionNull() == false) newdr.description = dr.description;
if (dr.Isdescription2Null() == false) newdr.description2 = dr.description2;
if (dr.IsremarkNull() == false) newdr.remark = dr.remark;
if (dr.IsrequestpartNull() == false) newdr.requestpart = dr.requestpart;
if (dr.IsstatusNull() == false) newdr.status = dr.status;
if (dr.IstagNull() == false) newdr.tag = dr.tag;
if (dr.IsuidNull() == false) newdr.uid = dr.uid;
newjob.AddJobReportRow(newdr);
}
if (newjob.Count() > 0)
{
var taJ = new dsMSSQLTableAdapters.JobReportTableAdapter();
var cnt = taJ.Update(newjob);
//db.SaveChanges();
Util.MsgI($"{cnt} 건의 업무일지가 자동 생성 되었습니다\n업무일지는 로그인시 최초 1회 자동 등록됩니다\n" +
"자동입력을 해제하려면 '업무일지-자동입력' 화면에서 내역을 변경하거나 종료일자를 설정하시기 바랍니다");
}
}
}
void AddLoginInfo()
{

View File

@@ -259,6 +259,12 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Dialog\fCommon.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Dialog\fCommon.Designer.cs">
<DependentUpon>fCommon.cs</DependentUpon>
</Compile>
<Compile Include="Dialog\fHolyday.cs">
<SubType>Form</SubType>
</Compile>
@@ -286,6 +292,7 @@
<Compile Include="Web\Controller\BaseController.cs" />
<Compile Include="Web\Controller\APIController.cs" />
<Compile Include="Web\Controller\DashBoardController.cs" />
<Compile Include="Web\Controller\CommonController.cs" />
<Compile Include="Web\Controller\KuntaeController.cs" />
<Compile Include="Web\Controller\ManualController.cs" />
<Compile Include="Web\Controller\ProjectController.cs" />
@@ -481,6 +488,9 @@
<EmbeddedResource Include="Dev\fDisableItem.resx">
<DependentUpon>fDisableItem.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fCommon.resx">
<DependentUpon>fCommon.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Dialog\fHolyday.resx">
<DependentUpon>fHolyday.cs</DependentUpon>
</EmbeddedResource>
@@ -663,6 +673,9 @@
<Content Include="Web\wwwroot\DashBoard\index.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="Web\wwwroot\Common.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<Content Include="Web\wwwroot\Jobreport\index.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

View File

@@ -30,6 +30,141 @@ namespace Project
public static CResult Result = new CResult();
public static DatabaseConnectionString.DatabaseInfo dbinfo = null;
/// <summary>
/// 무조건 업무일지를 자동으로 작성하는 경우
/// </summary>
public static void MakeAutoJobReportByAuto()
{
//누군가가 로그인하면 당일 자동 생성되어야할 유저의 데이터를 기록한다.
var dbAI = new dsMSSQLTableAdapters.EETGW_JobReport_AutoInputTableAdapter();// EEEntitiesMain();
var dbGU = new dsMSSQLTableAdapters.vGroupUserTableAdapter();// EEEntitiesMain();
var dbHL = new dsMSSQLTableAdapters.HolidayLIstTableAdapter();
var dbJR = new dsMSSQLTableAdapters.JobReportTableAdapter();
var taQuery = new DSQueryTableAdapters.QueriesTableAdapter();
var nd = DateTime.Now.ToShortDateString();
//이 날짜가 휴일인지 체크한다.
var Holyinfo = dbHL.GetData(nd).FirstOrDefault();// db.HolidayLIst.Where(t => t.pdate == nd).FirstOrDefault();
if (Holyinfo != null && Holyinfo.IsfreeNull() == false && Holyinfo.free == true) return;
//토,일은 처리하지 않음
if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday) return;
// db.EETGW_JobReport_AutoInput.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.enable == true && t.autoinput == "A" && t.pdate.CompareTo(nd) <= 0 && (string.IsNullOrEmpty(t.edate) == true || t.edate.CompareTo(nd) > 0));
var rows = dbAI.GetActiveList(FCOMMON.info.Login.gcode, "A", "%", nd);
foreach (var dr in rows)
{
//퇴사자 확인
var userdata = dbGU.GetByID(FCOMMON.info.Login.gcode, dr.uid).FirstOrDefault();// db.vGroupUser.Where(t => t.id == dr.uid).FirstOrDefault();
if (userdata != null && userdata.IsoutdateNull() == false) continue;
//오늘자 자동생성된 데이터가 있다면 처리하지 않는다
if (taQuery.ExistAutoInputData(FCOMMON.info.Login.gcode, dr.uid, nd) > 0) continue; //db.JobReport.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.pdate == nd && t.uid == dr.uid && t.autoinput == true).Any())
//이데이터를 그대로 생성해준다.
var dtjr = new dsMSSQL.JobReportDataTable();
var newdr = dtjr.NewJobReportRow();
newdr.gcode = FCOMMON.info.Login.gcode;
newdr.wuid = dr.uid;// FCOMMON.info.Login.no;
newdr.wdate = DateTime.Now;
newdr.pdate = nd;
newdr.import = false;
newdr.hrs = dr.hrs;
newdr.type = dr.type;//210305 누락분 추가
newdr.ot = dr.ot;
newdr.process = dr.process;
newdr.projectName = dr.projectName;
newdr.pidx = dr.pidx;
newdr.package = dr.package;
newdr.autoinput = true;
newdr.description = dr.description;
newdr.description2 = dr.description2;
newdr.remark = dr.remark;
newdr.requestpart = dr.requestpart;
newdr.status = "진행 완료";
newdr.tag = dr.tag;
newdr.uid = dr.uid;
dtjr.AddJobReportRow(newdr);
dbJR.Update(dtjr);
}
dbAI.Dispose();
dbGU.Dispose();
dbHL.Dispose();
dbJR.Dispose();
taQuery.Dispose();
}
/// <summary>
/// 로그인으로 업무일지를 작성하는 경우
/// </summary>
public static void MakeAutoJobReportbyLogin()
{
//자동로그인 업무일지 기록 기능 추가 = 210220
//select* from EETGW_JobReport_AutoInput where gcode = 'EET1P' and pdate <= '2021-02-20' and(edate is null or edate > '2021-02-20') and autoinput = 'L'
var nd = DateTime.Now.ToShortDateString();
var taQ = new DSQueryTableAdapters.QueriesTableAdapter();
var exist = taQ.ExistAutoInputData(FCOMMON.info.Login.gcode, FCOMMON.info.Login.no, nd) > 0;
//var db = new EEEntitiesMain();
if (exist == false)
{
var taM = new dsMSSQLTableAdapters.EETGW_JobReport_AutoInputTableAdapter();
var rows = taM.GetActiveList(FCOMMON.info.Login.gcode, "L", FCOMMON.info.Login.no, nd);
//var rows = db.EETGW_JobReport_AutoInput.Where(t => t.gcode == FCOMMON.info.Login.gcode &&
//t.enable == true &&
//t.autoinput == "L" &&
//t.uid == FCOMMON.info.Login.no &&
//t.pdate.CompareTo(nd) <= 0 && (string.IsNullOrEmpty(t.edate) == true || t.edate.CompareTo(nd) > 0));
var newjob = new dsMSSQL.JobReportDataTable();
foreach (var dr in rows)
{
//이데이터를 그대로 생성해준다.
var newdr = newjob.NewJobReportRow();
newdr.gcode = FCOMMON.info.Login.gcode;
newdr.wuid = FCOMMON.info.Login.no;
newdr.wdate = DateTime.Now;
newdr.pdate = nd;
newdr.import = false;
if (dr.IshrsNull() == false) newdr.hrs = dr.hrs;
if (dr.IstypeNull() == false) newdr.type = dr.type;//210305 누락분 추가
if (dr.IsotNull() == false) newdr.ot = dr.ot;
if (dr.IsprocessNull() == false) newdr.process = dr.process;
if (dr.IsprojectNameNull() == false) newdr.projectName = dr.projectName;
if (dr.IspidxNull() == false) newdr.pidx = dr.pidx;
if (dr.IspackageNull() == false) newdr.package = dr.package;
newdr.autoinput = true;
if (dr.IsdescriptionNull() == false) newdr.description = dr.description;
if (dr.Isdescription2Null() == false) newdr.description2 = dr.description2;
if (dr.IsremarkNull() == false) newdr.remark = dr.remark;
if (dr.IsrequestpartNull() == false) newdr.requestpart = dr.requestpart;
if (dr.IsstatusNull() == false) newdr.status = dr.status;
if (dr.IstagNull() == false) newdr.tag = dr.tag;
if (dr.IsuidNull() == false) newdr.uid = dr.uid;
newjob.AddJobReportRow(newdr);
}
if (newjob.Count() > 0)
{
var taJ = new dsMSSQLTableAdapters.JobReportTableAdapter();
var cnt = taJ.Update(newjob);
//db.SaveChanges();
Util.MsgI($"{cnt} 건의 업무일지가 자동 생성 되었습니다\n업무일지는 로그인시 최초 1회 자동 등록됩니다\n" +
"자동입력을 해제하려면 '업무일지-자동입력' 화면에서 내역을 변경하거나 종료일자를 설정하시기 바랍니다");
}
}
}
public static void init()
{
FCOMMON.info.Path = Util.CurrentPath;
@@ -76,7 +211,7 @@ namespace Project
webView21.ZoomFactor = 1D;
// 비동기 초기화
InitializeAsync();
InitializeAsync();
}
async private static void InitializeAsync()
{
@@ -99,7 +234,7 @@ namespace Project
InitWebView = 1;
}
catch
catch
{
InitWebView = 2;
}

View File

@@ -0,0 +1,108 @@
using FCM0000;
using Microsoft.Owin;
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Net.Http;
using System.Web;
using System.Web.Http;
namespace Project.Web.Controllers
{
public class CommonController : BaseController
{
[HttpGet]
public HttpResponseMessage GetList(string grp=null)
{
var sql = string.Empty;
sql = "select *" +
" from common" +
" where gcode = @gcode" +
" and grp = @grp" +
" order by code,svalue";
var cs = Properties.Settings.Default.gwcs;// "Data Source=K4FASQL.kr.ds.amkor.com,50150;Initial Catalog=EE;Persist Security Info=True;User ID=eeadm;Password=uJnU8a8q&DJ+ug-D!";
var cn = new System.Data.SqlClient.SqlConnection(cs);
var cmd = new System.Data.SqlClient.SqlCommand(sql, cn);
cmd.Parameters.AddWithValue("gcode", FCOMMON.info.Login.gcode);
// 날짜 파라미터가 없으면 기본값 사용 (현재 월)
var grpCode = !string.IsNullOrEmpty(grp) ? grp : "99";
cmd.Parameters.AddWithValue("grp", grpCode);
var da = new System.Data.SqlClient.SqlDataAdapter(cmd);
var dt = new System.Data.DataTable();
da.Fill(dt);
da.Dispose();
cmd.Dispose();
cn.Dispose();
var txtjson = JsonConvert.SerializeObject(dt, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
var resp = new HttpResponseMessage()
{
Content = new StringContent(
txtjson,
System.Text.Encoding.UTF8,
"application/json")
};
return resp;
}
[HttpGet]
public HttpResponseMessage Index()
{
// 직접 파일을 읽어서 반환
var filePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Web", "wwwroot", "Common.html");
var contents = string.Empty;
if (System.IO.File.Exists(filePath))
{
contents = System.IO.File.ReadAllText(filePath, System.Text.Encoding.UTF8);
}
else
{
// 파일이 없으면 404 에러 페이지 또는 기본 메시지
contents = "<html><body><h1>404 - File Not Found</h1><p>The requested file was not found: " + filePath + "</p></body></html>";
}
var resp = new HttpResponseMessage()
{
Content = new StringContent(
contents,
System.Text.Encoding.UTF8,
"text/html")
};
return resp;
}
}
public class CommonModel
{
public int idx { get; set; } // 데이터고유번호
public string gcode { get; set; } // 그룹코드(데이터 그룹간 식별)
public string grp { get; set; } // 코드그룹
public string code { get; set; } // 코드
public string svalue { get; set; } // 값(문자열)
public int ivalue { get; set; } // 값(숫자)
public float fvalue { get; set; } // 값(실수)
public string memo { get; set; } // 비고
public string svalue2 { get; set; } // 값2(문자열)
public string wuid { get; set; } // 데이터기록자 사원번호
public string wdate { get; set; } // 데이터를기록한일시
}
}

View File

@@ -31,7 +31,7 @@ namespace Project.Web.Controllers
public string TodayCountH()
{
var sql = "select count(*) from EETGW_HolydayRequest " +
var sql = "select count(*) from EETGW_HolydayRequest WITH (nolock) " +
" where gcode = @gcode and isnull(conf,0) = 1 " +
" and sdate <= convert(varchar(10),GETDATE(),120) and edate >= convert(varchar(10),GETDATE(),120)";
@@ -55,7 +55,7 @@ namespace Project.Web.Controllers
{
var cn = DBM.getCn();
var sql = "select count(*) from EETGW_HolydayRequest" +
var sql = "select count(*) from EETGW_HolydayRequest WITH (nolock) " +
" where gcode = @gcode" +
" and isnull(conf,0) = 0";
@@ -90,7 +90,7 @@ namespace Project.Web.Controllers
{
var sql = string.Empty;
sql = $" select uid,cate,sdate,edate,HolyReason,Users.name,holydays,holytimes,remark " +
$" from EETGW_HolydayRequest INNER JOIN " +
$" from EETGW_HolydayRequest WITH (nolock) INNER JOIN " +
$" Users ON EETGW_HolydayRequest.uid = Users.id " +
$" where EETGW_HolydayRequest.gcode = @gcode" +
$" and isnull(conf,0) = 0 ";
@@ -129,7 +129,7 @@ namespace Project.Web.Controllers
public HttpResponseMessage GetJobData(string startDate = "", string endDate = "")
{
var sql = string.Empty;
// 기본값 설정 (이번 달)
if (string.IsNullOrEmpty(startDate) || string.IsNullOrEmpty(endDate))
{
@@ -142,7 +142,7 @@ namespace Project.Web.Controllers
sql = $" select idx,pdate,status,projectName, uid, requestpart, package,type,process,description," +
" hrs,ot,otStart,otEnd" +
" from JobReport" +
" from JobReport WITH (nolock)" +
" where gcode = @gcode and uid = @uid" +
" and pdate between @startDate and @endDate" +
" order by pdate desc, wdate desc";
@@ -188,10 +188,12 @@ namespace Project.Web.Controllers
{
var cn = DBM.getCn();
var sql = "select count(*) " +
" from EETGW_GroupUser" +
" where gcode = @gcode" +
" and useUserState = 1 and useJobReport =1";
var sql = "select count(*) from vGroupUser WITH (nolock) " +
" where gcode = @gcode and useUserState = 1 and useJobReport = 1" +
" and id not in (select uid from vEETGW_TodayNoneWorkUser where gcode = @gcode and kunmu = 0)";
cn.Open();
@@ -276,12 +278,9 @@ namespace Project.Web.Controllers
public HttpResponseMessage GetholyUser()
{
var sql = string.Empty;
sql = $" select uid,cate,sdate,edate,HolyReason,Users.name " +
$" from EETGW_HolydayRequest INNER JOIN " +
$" Users ON EETGW_HolydayRequest.uid = Users.id " +
$" where EETGW_HolydayRequest.gcode = @gcode" +
$" and conf = 1 " +
$" and sdate <= convert(varchar(10),GETDATE(),120) and edate >= convert(varchar(10),GETDATE(),120)";
sql = $" select uid,type,cate,sdate,edate,title,dbo.getusername(uid) as name " +
$" from vEETGW_TodayNoneWorkUser WITH (nolock)" +
$" where gcode = @gcode and kunmu=0";
//sql = sql.Replace("{gcode}", FCOMMON.info.Login.gcode);
@@ -317,7 +316,9 @@ namespace Project.Web.Controllers
{
try
{
var sql = "select * from vGroupUser where gcode = @gcode and useUserState = 1 and useJobReport = 1";
var sql = "select * from vGroupUser WITH (nolock) " +
" where gcode = @gcode and useUserState = 1 and useJobReport = 1" +
" and id not in (select uid from vEETGW_TodayNoneWorkUser where gcode = @gcode and kunmu = 0)";
var cs = Properties.Settings.Default.gwcs;
var cn = new System.Data.SqlClient.SqlConnection(cs);
@@ -360,7 +361,7 @@ namespace Project.Web.Controllers
{
try
{
var sql = "select pdate, process, pumname, pumscale, pumunit, pumqtyreq, pumprice, pumamt from Purchase where gcode = @gcode and state = '---' order by pdate desc";
var sql = "select pdate, process, pumname, pumscale, pumunit, pumqtyreq, pumprice, pumamt from Purchase WITH (nolock) where gcode = @gcode and state = '---' order by pdate desc";
var cs = Properties.Settings.Default.gwcs;
var cn = new System.Data.SqlClient.SqlConnection(cs);
@@ -385,7 +386,6 @@ namespace Project.Web.Controllers
System.Text.Encoding.UTF8,
"application/json")
};
return resp;
}
catch (Exception ex)
@@ -403,7 +403,10 @@ namespace Project.Web.Controllers
{
try
{
var sql = "select pdate, process, pumname, pumscale, pumunit, pumqtyreq, pumprice, pumamt from EETGW_PurchaseCR where gcode = @gcode and state = '---' order by pdate desc";
var sql = "select pdate, process, pumname, pumscale, pumunit, pumqtyreq, pumprice, pumamt " +
" from EETGW_PurchaseCR WITH (nolock) " +
" where gcode = @gcode and state = '---'" +
" order by pdate desc";
var cs = Properties.Settings.Default.gwcs;
var cn = new System.Data.SqlClient.SqlConnection(cs);

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<title>공용코드관리</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#3B82F6',
secondary: '#6B7280',
success: '#10B981',
danger: '#EF4444',
warning: '#F59E0B'
}
}
}
}
</script>
</head>
<body class="bg-gray-50 min-h-screen">
intro file
</body>
</html>

View File

@@ -144,7 +144,7 @@
<div class="glass-effect rounded-2xl p-6 card-hover animate-slide-up cursor-pointer" onclick="showPresentUserModal()">
<div class="flex items-center justify-between">
<div>
<p class="text-white/70 text-sm font-medium">출근</p>
<p class="text-white/70 text-sm font-medium">출근(대상)</p>
<p class="text-3xl font-bold text-white" id="presentCount">0</p>
</div>
<div class="w-12 h-12 bg-success-500/20 rounded-full flex items-center justify-center">
@@ -225,7 +225,7 @@
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg>
휴가 현황
휴가/기타 현황
</h2>
</div>
<div class="overflow-x-auto">
@@ -233,7 +233,8 @@
<thead class="bg-white/10">
<tr>
<th class="px-6 py-4 text-left text-xs font-medium text-white/70 uppercase tracking-wider">이름</th>
<th class="px-6 py-4 text-left text-xs font-medium text-white/70 uppercase tracking-wider">휴가 종류</th>
<th class="px-6 py-4 text-left text-xs font-medium text-white/70 uppercase tracking-wider">형태</th>
<th class="px-6 py-4 text-left text-xs font-medium text-white/70 uppercase tracking-wider">종류</th>
<th class="px-6 py-4 text-left text-xs font-medium text-white/70 uppercase tracking-wider">시작일</th>
<th class="px-6 py-4 text-left text-xs font-medium text-white/70 uppercase tracking-wider">종료일</th>
<th class="px-6 py-4 text-left text-xs font-medium text-white/70 uppercase tracking-wider">사유</th>
@@ -483,17 +484,35 @@
let tableRows = '';
if (data && data.length > 0) {
data.forEach(item => {
// 형태에 따른 색상 결정
const typeColorClass = (item.type === '휴가') ? 'bg-green-500/20 text-green-300' : 'bg-warning-500/20 text-warning-300';
// 종류에 따른 색상 결정
let cateColorClass = 'bg-warning-500/20 text-warning-300'; // 기본값
if (item.cate === '휴가') {
cateColorClass = 'bg-warning-500/20 text-warning-300'; // 노란색 계열
} else if (item.cate === '파견') {
cateColorClass = 'bg-purple-500/20 text-purple-300'; // 보라색 계열
} else {
cateColorClass = 'bg-warning-500/20 text-warning-300'; // 기타는 주황색 계열
}
tableRows += `
<tr class="hover:bg-white/5 transition-colors">
<td class="px-6 py-4 whitespace-nowrap text-white">${item.name || '-'}(${item.uid})</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${typeColorClass}">
${item.type || '-'}
</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-warning-500/20 text-warning-300">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${cateColorClass}">
${item.cate || '-'}
</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-white/80">${item.sdate || '-'}</td>
<td class="px-6 py-4 whitespace-nowrap text-white/80">${item.edate || '-'}</td>
<td class="px-6 py-4 text-white/80">${item.HolyReason || '-'}</td>
<td class="px-6 py-4 text-white/80">${item.title || '-'}</td>
</tr>
`;
});

View File

@@ -40,6 +40,7 @@
this.sbLogin = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.sbLoginUseTime = new System.Windows.Forms.ToolStripStatusLabel();
this.sbWeb = new System.Windows.Forms.ToolStripStatusLabel();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.btSetting = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -74,8 +75,9 @@
this.ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItem18 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -151,7 +153,6 @@
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
this.sbWeb = new System.Windows.Forms.ToolStripStatusLabel();
this.cmTab.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.menuStrip1.SuspendLayout();
@@ -221,6 +222,12 @@
this.sbLoginUseTime.Size = new System.Drawing.Size(68, 17);
this.sbLoginUseTime.Text = "LOGINTIME";
//
// sbWeb
//
this.sbWeb.Name = "sbWeb";
this.sbWeb.Size = new System.Drawing.Size(31, 17);
this.sbWeb.Text = "WEB";
//
// menuStrip1
//
this.menuStrip1.Font = new System.Drawing.Font("맑은 고딕", 10F);
@@ -493,54 +500,62 @@
//
this.mn_dailyhistory.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem1,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripMenuItem2,
this.ToolStripMenuItem});
this.toolStripMenuItem18,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripMenuItem2});
this.mn_dailyhistory.Image = ((System.Drawing.Image)(resources.GetObject("mn_dailyhistory.Image")));
this.mn_dailyhistory.Name = "mn_dailyhistory";
this.mn_dailyhistory.Size = new System.Drawing.Size(203, 24);
this.mn_dailyhistory.Text = "업무일지";
this.mn_dailyhistory.Text = "업무관리";
this.mn_dailyhistory.Click += new System.EventHandler(this.ToolStripMenuItem1_Click);
//
// 목록ToolStripMenuItem1
//
this.ToolStripMenuItem1.Name = "목록ToolStripMenuItem1";
this.ToolStripMenuItem1.Size = new System.Drawing.Size(214, 24);
this.ToolStripMenuItem1.Text = "목록";
this.ToolStripMenuItem1.Size = new System.Drawing.Size(234, 24);
this.ToolStripMenuItem1.Text = "업무일지";
this.ToolStripMenuItem1.Click += new System.EventHandler(this.ToolStripMenuItem1_Click);
//
// 자동입력ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "자동입력ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(214, 24);
this.ToolStripMenuItem.Text = "자동입력";
this.ToolStripMenuItem.Size = new System.Drawing.Size(234, 24);
this.ToolStripMenuItem.Text = "기타업무(파견,출장) 등록";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 양식ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "양식ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(214, 24);
this.ToolStripMenuItem.Text = "양식";
this.ToolStripMenuItem.Size = new System.Drawing.Size(234, 24);
this.ToolStripMenuItem.Text = "업무일지 등록양식";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripMenuItem2
// toolStripMenuItem18
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(211, 6);
this.toolStripMenuItem18.Name = "toolStripMenuItem18";
this.toolStripMenuItem18.Size = new System.Drawing.Size(231, 6);
//
// 업무분류및형태설정ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "업무분류및형태설정ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(214, 24);
this.ToolStripMenuItem.Size = new System.Drawing.Size(234, 24);
this.ToolStripMenuItem.Text = "업무분류 및 형태설정";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(231, 6);
//
// 업무현황전자실ToolStripMenuItem
//
this.ToolStripMenuItem.ForeColor = System.Drawing.Color.Red;
this.ToolStripMenuItem.Name = "업무현황전자실ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(203, 24);
this.ToolStripMenuItem.Text = "업무현황(전자실)";
this.ToolStripMenuItem.Visible = false;
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 교육목록ToolStripMenuItem
@@ -1175,12 +1190,6 @@
this.toolStripButton3.ToolTipText = "휴가신청";
this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click);
//
// sbWeb
//
this.sbWeb.Name = "sbWeb";
this.sbWeb.Size = new System.Drawing.Size(31, 17);
this.sbWeb.Text = "WEB";
//
// fMain
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -1333,6 +1342,7 @@
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem17;
private System.Windows.Forms.ToolStripMenuItem webview2TestToolStripMenuItem;
private System.Windows.Forms.ToolStripStatusLabel sbWeb;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem18;
}
}

View File

@@ -1519,5 +1519,6 @@ namespace Project
using (var f = new Dialog.fWebView2Test())
f.ShowDialog();
}
}
}

View File

@@ -452,16 +452,16 @@
<data name="toolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPY4CDmcasDEu1MxmW6ixgWKbTwrBYVx0svkqL
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAICSURBVDhPY4CDmcasDEu1MxmW6ixgWKbTwrBYVx0svkqL
h2GZViHDMu15QPFWhmXqUmBxDLBUZzVQwX84Xqzzg2GJpifDMs3rKOJLtZ4ADZWA6oKCpVo2IEmBtZb/
/U7m/E+5XP8/92TF/3lzYj/UdOf/S73c8D/yXNl/1W1eUEO0+6A6oWCZzgT+NebHkq/Ufyu+1fO/5GbP
/U7m/E+5XP8/92TF/3lzYj/UdOb/S73c8D/yXNl/1W1eUEO0+6A6oWCZzgT+NebHkq/Ufyu+1fO/5GbP
/0Mzc/4/6kz7f3VS5k+QGAyb7A49wbBE5xpUJxQs1RUsvtVdB1PUcaj+//XSiP/7W+3/Xi/0+tyzrRBu
QPGtrgsg9VCdCFB8s3suTFHlpY5l5wtDDl5Odvt2MUjt/7YKp73FFzs+guQKbva8g2pBBTAXFN3sKQHx
X7RGiD8u8/x/JUPrz5NsG7XCm736QNs/F93qOQ/WgA6K7/QYF9/oOg7lMjwu9vR8VOrxH4xLvDxAYkBX
lgItagErwAaK73SLQZkMTyq8smAGPKn0zgSJ1d+v58i9NZEPrIAQeFTh2fek3Os/CD8u9+qFChMPgP7f
CPdCqccGqDBx4P/+eo4XXVGn3/TE/Qfhl52Rp0BiUGns4N+Bfs2/B3r7/h/oPXP/QO9vIP0fGUPFzoDV
7O/RgGoDatw2kR0oOP/8hPp/6JpwYZDavwd65oH0Mvzd39uLTRExGKQX6PQ+W6Bpy4ECq0jBID3/DvTZ
AgBRa6pzQEH+NwAAAABJRU5ErkJggg==
7O/RgGoDatw2kR0oOP9sX/0/dE24MEjt3wM980B6Gf7u7+3FpogYDNILdHqfLdC05UCBVaRgkJ5/B/ps
AUV3qmn514jSAAAAAElFTkSuQmCC
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">