package main import ( "flx/DAL" "flx/Model" "image/color" "fyne.io/fyne/v2" "fyne.io/fyne/v2/canvas" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/widget" log "github.com/sirupsen/logrus" ) func SetCardWindowControl() { defer func() { if r := recover(); r != nil { log.Error("SetCardWindowControl:", r) } }() CardWindow = NAPP.NewWindow("参会人员卡号设置") ALLStaffinfo = DAL.GetAllStaffInfoAllCPCS() Smainview = container.NewMax() Smainview.Add(SCDefaultLayout()) CardWindow.SetContent(Smainview) // MainWindow.Maxwindow() // CardWindow.Resize(fyne.NewSize(1600, 800), 100, 100) CardWindow.Resize(fyne.NewSize(1920*BigPara, 800*BigPara)) // MainWindow.SetMasterf() CardWindow.SetPadded(false) CardWindow.Show() } var ALLStaffinfo []Model.T_Staff // 人员列表 var GdPersonlist *widget.Table // 当前选择cellID var CurrentSCID widget.TableCellID func SCDefaultLayout() fyne.CanvasObject { defer func() { if r := recover(); r != nil { log.Error("SCDefaultLayout:", r) } }() btnStart := widget.NewButton("开始发卡", func() { var NextID widget.TableCellID = widget.TableCellID{Row: 0, Col: 4} GdPersonlist.Select(NextID) // IsStartCard = true OpenDevice() }) btnStart.Resize(fyne.NewSize(200*BigPara, 50*BigPara)) btnStart.Move(fyne.NewPos(1100*BigPara, 250*BigPara)) btnEnd := widget.NewButton("结束发卡", func() { IsStartCard = false CloseDevice() }) btnEnd.Resize(fyne.NewSize(200*BigPara, 50*BigPara)) btnEnd.Move(fyne.NewPos(1350*BigPara, 250*BigPara)) btnReset := widget.NewButton("重置卡号", func() { ALLStaffinfo[CurrentSCID.Row].St_ViceCardNum = "" DAL.UpdateStaffInfo(&(ALLStaffinfo[CurrentSCID.Row])) GdPersonlist.Refresh() GdPersonlist.ScrollTo(CurrentSCID) }) btnReset.Resize(fyne.NewSize(200*BigPara, 50*BigPara)) btnReset.Move(fyne.NewPos(1100*BigPara, 350*BigPara)) btnClear := widget.NewButton("清除卡号", func() { for i := 0; i < len(ALLStaffinfo); i++ { ALLStaffinfo[i].St_ViceCardNum = "" DAL.UpdateStaffInfo(&(ALLStaffinfo[i])) } GdPersonlist.Refresh() GdPersonlist.ScrollTo(CurrentSCID) }) btnClear.Resize(fyne.NewSize(200*BigPara, 50*BigPara)) btnClear.Move(fyne.NewPos(1350*BigPara, 350*BigPara)) btnUp := widget.NewButton("选择上移", func() { if 0 < CurrentSCID.Row { var NextID widget.TableCellID = widget.TableCellID{Row: CurrentSCID.Row - 1, Col: 4} GdPersonlist.Select(NextID) } }) btnUp.Resize(fyne.NewSize(200*BigPara, 50*BigPara)) btnUp.Move(fyne.NewPos(1100*BigPara, 450*BigPara)) btnDown := widget.NewButton("选择下移", func() { if len(ALLStaffinfo) > CurrentSCID.Row { var NextID widget.TableCellID = widget.TableCellID{Row: CurrentSCID.Row + 1, Col: 4} GdPersonlist.Select(NextID) } }) btnDown.Resize(fyne.NewSize(200*BigPara, 50*BigPara)) btnDown.Move(fyne.NewPos(1350*BigPara, 450*BigPara)) GdPersonlist = widget.NewTable( func() (int, int) { return len(ALLStaffinfo), 7 }, func() fyne.CanvasObject { return widget.NewLabel("") }, func(id widget.TableCellID, cell fyne.CanvasObject) { label := cell.(*widget.Label) switch id.Col { case 0: label.SetText(ALLStaffinfo[id.Row].St_Num) label.TextStyle.Bold = false case 1: label.SetText(ALLStaffinfo[id.Row].St_Name) label.TextStyle.Bold = true case 2: label.SetText(ALLStaffinfo[id.Row].Ca_Name) case 3: label.SetText(ALLStaffinfo[id.Row].Gr_Name) case 4: label.SetText(ALLStaffinfo[id.Row].St_ViceCardNum) case 5: label.SetText(ALLStaffinfo[id.Row].St_ViceCardNumA) case 6: label.SetText(ALLStaffinfo[id.Row].St_ViceCardNumB) } }) GdPersonlist.OnSelected = func(id widget.TableCellID) { CurrentSCID = id } GdPersonlist.SetColumnWidth(0, 140*BigPara) GdPersonlist.SetColumnWidth(1, 140*BigPara) GdPersonlist.SetColumnWidth(2, 140*BigPara) GdPersonlist.SetColumnWidth(3, 140*BigPara) GdPersonlist.SetColumnWidth(4, 140*BigPara) GdPersonlist.SetColumnWidth(5, 140*BigPara) GdPersonlist.SetColumnWidth(6, 150*BigPara) GdPersonlist.Resize(fyne.NewSize(1000*BigPara, 700*BigPara)) GdPersonlist.Move(fyne.NewPos(50*BigPara, 100*BigPara)) lblNume := canvas.NewText("编号", color.Black) lblNume.Resize(fyne.NewSize(140*BigPara, 50*BigPara)) lblNume.Move(fyne.NewPos(50*BigPara, 50*BigPara)) lblNume.Alignment = fyne.TextAlignCenter lblNume.TextSize = 24 * BigPara lblName := canvas.NewText("姓名", color.Black) lblName.Resize(fyne.NewSize(140*BigPara, 50*BigPara)) lblName.Move(fyne.NewPos(190*BigPara, 50*BigPara)) lblName.Alignment = fyne.TextAlignCenter lblName.TextSize = 24 * BigPara lblType := canvas.NewText("类别", color.Black) lblType.Resize(fyne.NewSize(140*BigPara, 50*BigPara)) lblType.Move(fyne.NewPos(330*BigPara, 50*BigPara)) lblType.Alignment = fyne.TextAlignCenter lblType.TextSize = 24 * BigPara lblGroup := canvas.NewText("分组", color.Black) lblGroup.Resize(fyne.NewSize(140*BigPara, 50*BigPara)) lblGroup.Move(fyne.NewPos(470*BigPara, 50*BigPara)) lblGroup.Alignment = fyne.TextAlignCenter lblGroup.TextSize = 24 * BigPara lblCardNum := canvas.NewText("卡号", color.Black) lblCardNum.Resize(fyne.NewSize(140*BigPara, 50*BigPara)) lblCardNum.Move(fyne.NewPos(610*BigPara, 50*BigPara)) lblCardNum.Alignment = fyne.TextAlignCenter lblCardNum.TextSize = 24 * BigPara lblMCardNum := canvas.NewText("主卡", color.Black) lblMCardNum.Resize(fyne.NewSize(140*BigPara, 50*BigPara)) lblMCardNum.Move(fyne.NewPos(750*BigPara, 50*BigPara)) lblMCardNum.Alignment = fyne.TextAlignCenter lblMCardNum.TextSize = 24 * BigPara lblSCardNum := canvas.NewText("备卡", color.Black) lblSCardNum.Resize(fyne.NewSize(140*BigPara, 50*BigPara)) lblSCardNum.Move(fyne.NewPos(890*BigPara, 50*BigPara)) lblSCardNum.Alignment = fyne.TextAlignCenter lblSCardNum.TextSize = 24 * BigPara content := container.NewWithoutLayout( lblNume, lblName, lblType, lblGroup, lblCardNum, lblMCardNum, lblSCardNum, btnStart, btnEnd, btnReset, btnClear, btnUp, btnDown, GdPersonlist, ) return content } func UpdatePersonCardNum(cardnum string) { defer func() { if r := recover(); r != nil { log.Error("UpdatePersonCardNum:", r) } }() ALLStaffinfo[CurrentSCID.Row].St_ViceCardNum = cardnum DAL.UpdateStaffInfo(&ALLStaffinfo[CurrentSCID.Row]) GdPersonlist.Refresh() if len(ALLStaffinfo) > CurrentSCID.Row { var NextID widget.TableCellID = widget.TableCellID{Row: CurrentSCID.Row + 1, Col: 4} GdPersonlist.Select(NextID) } GdPersonlist.ScrollTo(CurrentSCID) }