using System; using System.Drawing; using System.Windows.Forms; using System.IO; using IOM_cs.irisDb.model; using IOM_cs.irisDb.service; using IOM_cs.irisDb; namespace IOM_cs.insertForm { public partial class CtrlDetail : UserControl { IUserIrisService iUserIrisService = (IUserIrisService)DbService.getEntity("IUserIrisService"); public CtrlDetail() { InitializeComponent(); ////pic_det_photo.Location = new Point(690, 68); //pic_det_photo.Parent = this; //pic_det_photo.BringToFront(); ////panel_eyeImage.Location = new Point(204, 830); //panel_eyeImage.Parent = this; //panel_eyeImage.BringToFront(); resetDetail(); setDetailValue(FormMain.person, FormMain.personExt, FormMain.irisDataColl, FormMain.irisData); // 国籍 var items = new System.Collections.ArrayList(Enum.GetValues(typeof(country))).ToArray(); comboBox_edit_country.Items.Clear(); comboBox_edit_country.Items.AddRange(items); // 民族 items = new System.Collections.ArrayList(Enum.GetValues(typeof(nation))).ToArray(); comboBox_edit_nation.Items.Clear(); comboBox_edit_nation.Items.AddRange(items); // 采集原因 items = new System.Collections.ArrayList(Enum.GetValues(typeof(collReason))).ToArray(); comboBox_edit_collReason.Items.Clear(); comboBox_edit_collReason.Items.AddRange(items); // 采集地点 items = new System.Collections.ArrayList(Enum.GetValues(typeof(collPlace))).ToArray(); comboBox_edit_collPlace.Items.Clear(); comboBox_edit_collPlace.Items.AddRange(items); } #region 详情、编辑、删除 private void resetDetail() { // 基础信息 label_det_name.Text = ""; label_det_cardType.Text = ""; label_det_country.Text = ""; label_det_idCardNo.Text = ""; label_det_nation.Text = ""; label_det_cerValid.Text = ""; label_det_sex.Text = ""; label_det_cerAuth.Text = ""; label_det_age.Text = ""; label_det_addr1.Text = ""; label_det_birthday.Text = ""; label_det_addr2.Text = ""; label_det_tel1.Text = ""; label_det_tel2.Text = ""; label_det_collWay.Text = ""; label_det_isCer.Text = ""; pic_det_photo.Image = null; // 采集信息 label_det_collTime.Text = ""; label_det_collName.Text = ""; label_det_collReason.Text = ""; label_det_collPlace.Text = ""; label_det_stName.Text = ""; label_det_stType.Text = ""; label_det_flgForce.Text = ""; label_det_flgWo.Text = ""; label_det_collWay.Text = ""; // 临时关注 label39.Visible = false; label35.Visible = false; label_det_focusRemarks.Visible = false; label_det_focusEndDate.Visible = false; label_det_flgFocus.Text = ""; label_det_devType.Text = ""; label_det_devCode.Text = ""; label_det_devFirm.Text = ""; label_det_reasonCollDesc.Text = ""; label_det_collNum.Text = ""; // 生物特征 // 左眼 pic_det_imageL1.Image = null; label_det_qL.Text = ""; // 右眼 pic_det_imageR1.Image = null; label_det_qR.Text = ""; } // 给详情页赋值 private void setDetailValue(Person person, PersonExt personExt, IrisDataColl irisDataColl, IrisData irisData) { try { // 基础信息 label_det_name.Text = person.name; label_det_cardType.Text = Enum.GetName(typeof(cardType), Convert.ToInt16(person.cardType)); if (null != personExt.column1 && "" != personExt.column1) label_det_country.Text = Enum.GetName(typeof(country), Convert.ToInt16(personExt.column1)); label_det_idCardNo.Text = person.idCardNo; label_det_nation.Text = Enum.GetName(typeof(nation), Convert.ToInt16(person.nation)); label_det_cerValid.Text = personExt.column6; label_det_sex.Text = Enum.GetName(typeof(sex), Convert.ToInt16(person.sex)); label_det_cerAuth.Text = personExt.column2; label_det_age.Text = countAge(person.birthday).ToString(); label_det_addr1.Text = personExt.column3; if (null != person.birthday) label_det_birthday.Text = person.birthday.ToString("yyyy-MM-dd"); label_det_addr2.Text = personExt.column4; label_det_tel1.Text = irisDataColl.tel1; label_det_tel2.Text = irisDataColl.tel2; if (irisDataColl.collWay != null && irisDataColl.collWay != "") label_det_collWay.Text = Enum.GetName(typeof(collWay), Convert.ToInt16(irisDataColl.collWay)); if (irisDataColl.isCer == "0") label_det_isCer.Text = "无证"; else if (irisDataColl.isCer == "1") label_det_isCer.Text = "有证"; //证件照 if (personExt.column7 != null && personExt.column7 != "") { string base64 = personExt.column7.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//将base64头部信息替换 byte[] bytes = Convert.FromBase64String(base64); MemoryStream ms = new MemoryStream(bytes); Image mImage = Image.FromStream(ms); pic_det_photo.Image = Image.FromStream(ms); pic_photo_edit.Image = Image.FromStream(ms); } // 采集信息 label_det_collTime.Text = irisDataColl.collTime.ToString("yyyy-MM-dd"); label_det_collName.Text = irisDataColl.collName; label_det_collReason.Text = Enum.GetName(typeof(collReason), Convert.ToInt16(irisDataColl.collReason)); label_det_collPlace.Text = Enum.GetName(typeof(collPlace), Convert.ToInt16(irisDataColl.collPlace)); label_det_stName.Text = irisDataColl.stName; label_det_stType.Text = irisDataColl.stType; if (irisDataColl.flgForcePerson == "0") label_det_flgForce.Text = "否"; else if (irisDataColl.flgForcePerson == "1") label_det_flgForce.Text = "是"; if (irisDataColl.flgWo == "0") label_det_flgWo.Text = "否"; else if (irisDataColl.flgWo == "1") label_det_flgWo.Text = "是"; label_det_collWay.Text = Enum.GetName(typeof(collWay), Convert.ToInt16(irisDataColl.collWay)); // 临时关注 label39.Visible = false; label35.Visible = false; label_det_focusRemarks.Visible = false; label_det_focusEndDate.Visible = false; if (irisDataColl.flgFocus == "0") { label_det_flgFocus.Text = "否"; } else if (irisDataColl.flgFocus == "1") { label_det_flgFocus.Text = "是"; label39.Visible = true; label35.Visible = true; label_det_focusRemarks.Visible = true; label_det_focusEndDate.Visible = true; if (null != irisDataColl.focusEndDate) label_det_focusEndDate.Text = irisDataColl.focusEndDate.ToString("yyyy-MM-dd"); label_det_focusRemarks.Text = irisDataColl.focusRemarks; } label_det_devType.Text = "望远镜形状虹膜采集识别设备"; label_det_devCode.Text = irisDataColl.devCode; label_det_devFirm.Text = irisDataColl.devFirm; label_det_reasonCollDesc.Text = irisDataColl.reasonCollDesc; label_det_collNum.Text = irisDataColl.collNum; // 生物特征 //左眼 string base64L = irisData.imageL1Data; if (base64L != null && base64L != "") { pic_det_imageL1.Image = Base64StringToImage(base64L); pic_imageL_edit.Image = Base64StringToImage(base64L); } if (irisDataColl.qL != 0 && irisDataColl.qL.ToString() != "") { label_det_qL.Text = "质量:" + irisDataColl.qL.ToString("0.0"); label_qL_edit.Text = "质量:" + irisDataColl.qL.ToString("0.0"); } //右眼 string base64R = irisData.imageR1Data; if (base64R != null && base64R != "") { pic_det_imageR1.Image = Base64StringToImage(base64R); pic_imageR_edit.Image = Base64StringToImage(base64R); } if (irisDataColl.qR != 0 && irisDataColl.qR.ToString() != "") { label_det_qR.Text = "质量:" + irisDataColl.qR.ToString("0.0"); label_qR_edit.Text = "质量:" + irisDataColl.qR.ToString("0.0"); } } catch (Exception ex) { MessageBox.Show("获取详情失败!"+ex.Message); } } // 编辑 private void btn_edit_Click(object sender, EventArgs e) { panel_edit.Visible = true; panel_detail_labels.Visible = false; //基础信息 txt_edit_name.Text = label_det_name.Text; comboBox_edit_cardType.Text = label_det_cardType.Text; if (label_det_sex.Text == "男") radio_edit_male.Checked = true; else radio_edit_female.Checked = true; txt_edit_idCardNo.Text = label_det_idCardNo.Text; if (label_det_country.Text != "") comboBox_edit_country.SelectedItem = Enum.Parse(typeof(country), label_det_country.Text); if (FormMain.personExt.column6 != "" && FormMain.personExt.column6 != null) { txt_edit_startDate.Text = FormMain.personExt.column6.Split(',')[0]; txt_edit_endDate.Text = FormMain.personExt.column6.Split(',')[1]; } comboBox_edit_nation.SelectedItem = Enum.Parse(typeof(nation), label_det_nation.Text); txt_edit_cerAuth.Text = label_det_cerAuth.Text; txt_edit_birthday.Text = label_det_birthday.Text; txt_edit_addr1.Text = label_det_addr1.Text; txt_cardType.Text = label_det_cardType.Text; txt_country.Text = label_det_country.Text; txt_nation.Text = label_det_nation.Text; //采集信息 txt_edit_tel1.Text = label_det_tel1.Text; txt_edit_tel2.Text = label_det_tel2.Text; if (label_det_collPlace.Text != "") comboBox_edit_collPlace.SelectedItem = Enum.Parse(typeof(collPlace), label_det_collPlace.Text); if (label_det_collReason.Text != "") comboBox_edit_collReason.SelectedItem = Enum.Parse(typeof(collReason), label_det_collReason.Text); txt_edit_addr2.Text = label_det_addr2.Text; txt_edit_collRemarks.Text = label_det_reasonCollDesc.Text; if (label_det_flgForce.Text == "是") radio_edit_flgForcePersonY.Checked = true; else if (label_det_flgForce.Text == "否") radio_edit_flgForcePersonN.Checked = true; if (label_det_flgWo.Text == "是") radio_edit_flgWoY.Checked = true; else if (label_det_flgWo.Text == "否") radio_edit_flgWoN.Checked = true; if (label_det_flgFocus.Text == "是") { radio_edit_flgFocusY.Checked = true; txt_edit_focusEndDate.Text = label_det_focusEndDate.Text; txt_edit_focusRemarks.Text = label_det_focusRemarks.Text; panel_focusInfo.Visible = true; } else if (label_det_flgFocus.Text == "否") { radio_edit_flgFocusN.Checked = true; panel_focusInfo.Visible = false; } } // 取消编辑 private void btn_cancelEdit_Click(object sender, EventArgs e) { panel_edit.Visible = false; panel_detail_labels.Visible = true; } // 删除 private void btn_delete_Click(object sender, EventArgs e) { DialogResult r = MessageBox.Show("确认删除此人员信息?", "提示", MessageBoxButtons.YesNo); if (r == DialogResult.Yes) { string imageL = FormMain.irisData.imageL1; string imageR = FormMain.irisData.imageR1; int re = iUserIrisService.DeletePerson(FormMain.person.id); if (re == 0) { if (pic_det_imageL1.Image != null) pic_det_imageL1.Image.Dispose(); if (pic_det_imageR1.Image != null) pic_det_imageR1.Image.Dispose(); MessageBox.Show("删除成功!", "提示信息"); //跳转到采集列表 FormMain.insertService.setToFirst(FormMain.formMain.panel_Insert); FormMain.insertService.SetPanelControl(FormMain.formMain.panel_Insert, "collect"); } else { MessageBox.Show("删除失败!", "错误"); } } } // 保存编辑 private void btn_saveEdit_Click_1(object sender, EventArgs e) { if (comboBox_edit_collReason.Text == "") { MessageBox.Show("采集原因不能为空!"); return; } if (comboBox_edit_collPlace.Text == "") { MessageBox.Show("采集场地不能为空!"); return; } if (txt_edit_tel1.Text != "") { if (!Validation.CheckMobliePhone(txt_edit_tel1.Text)) { MessageBox.Show("请输入正确的手机号1!"); return; } } if (txt_edit_tel2.Text != "") { if (!Validation.CheckMobliePhone(txt_edit_tel2.Text)) { MessageBox.Show("请输入正确的手机号2!"); return; } } // 收集数据 // 基础信息 FormMain.person.name = txt_edit_name.Text.Trim(); if (radio_edit_male.Checked) FormMain.person.sex = ((int)sex.男).ToString(); else if (radio_edit_female.Checked) FormMain.person.sex = ((int)sex.女).ToString(); // 性别 FormMain.person.nation = comboBox_edit_nation.SelectedItem.GetHashCode().ToString(); // 民族 FormMain.person.birthday = Convert.ToDateTime(txt_edit_birthday.Text);//生日 FormMain.personExt.column1 = comboBox_edit_country.SelectedItem.GetHashCode().ToString(); // 国籍 if (txt_edit_startDate.Text != "" && txt_edit_endDate.Text != "") FormMain.personExt.column6 = txt_edit_startDate.Text + "," + txt_edit_endDate.Text; // 证件有效期 FormMain.personExt.column2 = txt_edit_cerAuth.Text.Trim();//签发机关 FormMain.personExt.column3 = txt_edit_addr1.Text.Trim();//户籍地址 FormMain.personExt.column4 = txt_edit_addr2.Text.Trim();//现住址 // 采集信息 FormMain.irisDataColl.tel1 = txt_edit_tel1.Text.Trim(); //手机号1 FormMain.irisDataColl.tel2 = txt_edit_tel2.Text.Trim(); // 手机号2 FormMain.irisDataColl.collReason = comboBox_edit_collReason.SelectedItem.GetHashCode().ToString();//采集原因 FormMain.irisDataColl.collPlace = comboBox_edit_collPlace.SelectedItem.GetHashCode().ToString();//采集地点 if (radio_edit_flgForcePersonY.Checked) FormMain.irisDataColl.flgForcePerson = "1"; else if (radio_edit_flgForcePersonN.Checked) FormMain.irisDataColl.flgForcePerson = "0"; if (radio_edit_flgFocusY.Checked) FormMain.irisDataColl.flgFocus = "1"; else if (radio_edit_flgFocusN.Checked) FormMain.irisDataColl.flgFocus = "0"; if (radio_edit_flgWoY.Checked) FormMain.irisDataColl.flgWo = "1"; else if (radio_edit_flgWoN.Checked) FormMain.irisDataColl.flgWo = "0"; if (txt_edit_focusEndDate.Text != "") FormMain.irisDataColl.focusEndDate = Convert.ToDateTime(txt_edit_focusEndDate.Text); FormMain.irisDataColl.focusRemarks = txt_edit_focusRemarks.Text.Trim(); FormMain.irisDataColl.reasonCollDesc = txt_edit_collRemarks.Text.Trim(); // 更新数据库 int re = iUserIrisService.Update(FormMain.person, FormMain.personExt, FormMain.irisDataColl); if (re == 0) { MessageBox.Show("保存成功"); // 跳转到详情页 panel_detail_labels.Visible = true; panel_edit.Visible = false; setDetailValue(FormMain.person, FormMain.personExt, FormMain.irisDataColl, FormMain.irisData); } } // 选择是否“临时关注” private void radio_edit_flgFocusY_CheckedChanged(object sender, EventArgs e) { if (radio_edit_flgFocusY.Checked) { panel_focusInfo.Visible = true; } else if (radio_edit_flgFocusN.Checked) { panel_focusInfo.Visible = false; } } private void picker_edit_focusEndDate_ValueChanged_1(object sender, EventArgs e) { txt_edit_focusEndDate.Text = picker_edit_focusEndDate.Value.ToString("yyyy-MM-dd"); } // 返回采集列表 private void btn_back_Click_1(object sender, EventArgs e) { FormMain.insertService.setToFirst(FormMain.formMain.panel_Insert); FormMain.insertService.SetPanelControl(FormMain.formMain.panel_Insert, "collect"); IOM_cs.insertForm.collection.CtrlCollectionFrom.ctrlCollectionFrom.dataGridView1.ClearSelection(); } //计算年龄 private string countAge(DateTime birthday) { string ageS = ""; if (null != birthday) { DateTime now = DateTime.Now; int age = now.Year - birthday.Year; //再考虑月、天的因素 if (now.Month < birthday.Month || (now.Month == birthday.Month && now.Day < birthday.Day)) { age--; } ageS = age.ToString(); } return ageS; } #endregion // 解决控件加载花屏问题 //protected override CreateParams CreateParams //{ // get // { // var cp = base.CreateParams; // //WS_EX_COMPOSITED // cp.ExStyle |= 0x02000000; // return cp; // } //} /// <summary> /// base64编码的文本转为图片 /// </summary> public Bitmap Base64StringToImage(string basestr) { Bitmap bitmap = null; try { String inputStr = basestr.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/bmp;base64,", "");//将base64头部信息替换 byte[] arr = Convert.FromBase64String(inputStr); MemoryStream ms = new MemoryStream(arr); Bitmap bmp = new Bitmap(ms); ms.Close(); ms.Dispose(); bitmap = bmp; } catch (Exception ex) { MessageBox.Show("Base64StringToImage 转换失败\nException:" + ex.Message); } return bitmap; } private void CtrlDetail_Load(object sender, EventArgs e) { panel1.Click += (obj, arg) => { panel1.Select(); }; InitializePanelScroll(panel1, panel1); //btn_back.Focus(); } /// <summary> /// 递归初始化Panel内部各容器和控件 /// </summary> /// <param name="container"></param> /// <param name="panelRoot"></param> private static void InitializePanelScroll(Control container, Control panelRoot) { foreach (Control control in container.Controls) { if (control is Panel) { control.Click += (obj, arg) => { panelRoot.Select(); }; InitializePanelScroll(control, panelRoot); } //else if (control is Label) //{ // control.Click += (obj, arg) => { panelRoot.Select(); }; //} } } private void btn_dropCollPlace_Click(object sender, EventArgs e) { comboBox_edit_collPlace.DroppedDown = true; } private void btn_dropCollReason_Click(object sender, EventArgs e) { comboBox_edit_collReason.DroppedDown = true; } private void comboBox_edit_collPlace_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox_edit_collPlace.SelectedIndex > -1) txt_collPlace.Text = comboBox_edit_collPlace.SelectedItem.ToString(); } private void comboBox_edit_collReason_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox_edit_collReason.SelectedIndex > -1) txt_collReason.Text = comboBox_edit_collReason.SelectedItem.ToString(); } private void btn_dropFocusEndDate_Click(object sender, EventArgs e) { picker_edit_focusEndDate.Focus(); SendKeys.Send("{F4}"); //模拟按下F4,弹出日期面板 } private void picker_edit_focusEndDate_ValueChanged(object sender, EventArgs e) { txt_edit_focusEndDate.Text = picker_edit_focusEndDate.Value.ToString("yyyy-MM-dd"); } } }