You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

229 lines
6.4 KiB
Go

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)
}