Przeglądaj źródła

feat: #3改造计划#

SongZihuan 4 miesięcy temu
rodzic
commit
49c79cdbe7

+ 2 - 21
src/excelio/writerfile.go

@@ -5,7 +5,6 @@ import (
 	"github.com/SuperH-0630/hdangan/src/model"
 	"github.com/SuperH-0630/hdangan/src/model"
 	"github.com/SuperH-0630/hdangan/src/runtime"
 	"github.com/SuperH-0630/hdangan/src/runtime"
 	"github.com/xuri/excelize/v2"
 	"github.com/xuri/excelize/v2"
-	"reflect"
 	"strings"
 	"strings"
 )
 )
 
 
@@ -75,30 +74,12 @@ func OutputFile(rt runtime.RunTime, fst model.FileSetType, savepath string, file
 			return fmt.Errorf("file set type not found")
 			return fmt.Errorf("file set type not found")
 		}
 		}
 
 
-		tptr := reflect.TypeOf(maker())
-		if tptr.Kind() != reflect.Ptr {
-			return fmt.Errorf("file set type not found")
-		}
-
-		t := tptr.Elem()
-		if t.Kind() != reflect.Struct {
-			return fmt.Errorf("file set type not found")
-		}
-
-		if strings.HasPrefix(t.Name(), "File") {
-			return fmt.Errorf("file set type not found")
-		}
-
-		resValue := reflect.MakeSlice(reflect.SliceOf(t), 0, 20)
-		res := resValue.Interface()
-
-		err = model.GetAllFile(rt, fst, s, res)
+		res, err := model.GetAllFile(rt, fst, s, maker())
 		if err != nil {
 		if err != nil {
 			return err
 			return err
 		}
 		}
 
 
-		for i := 0; i < resValue.Len(); i++ {
-			file := resValue.Index(i).Interface().(model.File)
+		for i, file := range res {
 			res, err := fileToStringLst(rt, file)
 			res, err := fileToStringLst(rt, file)
 			if err != nil {
 			if err != nil {
 				continue
 				continue

+ 15 - 12
src/model/action_file.go

@@ -72,20 +72,21 @@ func SetWhere(tx *gorm.DB, s *SearchWhere, fst FileSetType) *gorm.DB {
 	return tx
 	return tx
 }
 }
 
 
-func GetAllFile(rt runtime.RunTime, fst FileSetType, s *SearchWhere, res interface{}) error {
+func GetAllFile[F File](rt runtime.RunTime, fst FileSetType, s *SearchWhere, model F) ([]F, error) {
 	db, err := GetDB(rt)
 	db, err := GetDB(rt)
 	if err != nil {
 	if err != nil {
-		return err
+		return nil, err
 	}
 	}
 
 
-	err = SetWhere(db.Model(&FileAbs{}), s, fst).Order(FileOrder).Find(&res).Error
+	var res = make([]F, 0, 20)
+	err = SetWhere(db.Model(model), s, fst).Order(FileOrder).Find(&res).Error
 	if errors.Is(err, gorm.ErrRecordNotFound) {
 	if errors.Is(err, gorm.ErrRecordNotFound) {
-		return nil
+		return nil, err
 	} else if err != nil {
 	} else if err != nil {
-		return err
+		return nil, err
 	}
 	}
 
 
-	return nil
+	return res, nil
 }
 }
 
 
 func GetNewFileID(rt runtime.RunTime, fst FileSetType, sameAbove bool) (fs *FileSet, lst File, unionID int64, fileID int64, groupID int64, err error) {
 func GetNewFileID(rt runtime.RunTime, fst FileSetType, sameAbove bool) (fs *FileSet, lst File, unionID int64, fileID int64, groupID int64, err error) {
@@ -165,25 +166,27 @@ func PageChoiceOffset(rt runtime.RunTime, fileSetType FileSetType, pageItemCount
 	return (page - 1) * int64(pageItemCount), pageItemCount, pageMax, nil
 	return (page - 1) * int64(pageItemCount), pageItemCount, pageMax, nil
 }
 }
 
 
-func GetPageData(rt runtime.RunTime, fst FileSetType, pageItemCount int, page int64, s *SearchWhere, res interface{}) (int64, error) {
+func GetPageData[F File](rt runtime.RunTime, fst FileSetType, pageItemCount int, page int64, s *SearchWhere, model F) ([]F, int64, error) {
 	if pageItemCount <= 0 {
 	if pageItemCount <= 0 {
 		pageItemCount = DefaultPageItemCount
 		pageItemCount = DefaultPageItemCount
 	}
 	}
 
 
 	db, err := GetDB(rt)
 	db, err := GetDB(rt)
 	if err != nil {
 	if err != nil {
-		return 0, err
+		return nil, 0, err
 	}
 	}
 
 
 	offset, limit, pageMax, err := PageChoiceOffset(rt, fst, pageItemCount, page, s)
 	offset, limit, pageMax, err := PageChoiceOffset(rt, fst, pageItemCount, page, s)
-	err = SetWhere(db.Model(FileAbs{}), s, fst).Limit(limit).Offset(int(offset)).Order(FileOrder).Find(res).Error
+
+	var res = make([]F, 0, limit)
+	err = SetWhere(db.Model(model), s, fst).Limit(limit).Offset(int(offset)).Order(FileOrder).Find(&res).Error
 	if errors.Is(err, gorm.ErrRecordNotFound) {
 	if errors.Is(err, gorm.ErrRecordNotFound) {
-		return 0, nil
+		return nil, 0, nil
 	} else if err != nil {
 	} else if err != nil {
-		return 0, err
+		return nil, 0, err
 	}
 	}
 
 
-	return pageMax, nil
+	return res, pageMax, nil
 }
 }
 
 
 func DeleteFile(rt runtime.RunTime, f File) error {
 func DeleteFile(rt runtime.RunTime, f File) error {

+ 21 - 15
src/v1main/ctrl.go

@@ -3,28 +3,35 @@ package v1main
 import (
 import (
 	"fyne.io/fyne/v2"
 	"fyne.io/fyne/v2"
 	"fyne.io/fyne/v2/container"
 	"fyne.io/fyne/v2/container"
+	"github.com/SuperH-0630/hdangan/src/model"
 	"github.com/SuperH-0630/hdangan/src/runtime"
 	"github.com/SuperH-0630/hdangan/src/runtime"
 	"time"
 	"time"
 )
 )
 
 
 type CtrlWindow struct {
 type CtrlWindow struct {
-	window   fyne.Window
-	lastUse  time.Time
-	killTime time.Duration
-	rt       runtime.RunTime
-	menu     *MainMenu
-	table    *MainTable
+	window      fyne.Window
+	lastUse     time.Time
+	killTime    time.Duration
+	rt          runtime.RunTime
+	menu        *MainMenu
+	table       *MainTable
+	fileSetType model.FileSetType
+	nowpage     int64
+	maxpage     int64
 }
 }
 
 
 var ctrlWindow *CtrlWindow
 var ctrlWindow *CtrlWindow
 
 
-func newCtrlWindow(rt runtime.RunTime, title string, killSecond time.Duration) *CtrlWindow {
+func newCtrlWindow(rt runtime.RunTime, killSecond time.Duration) *CtrlWindow {
 	ks := killSecond * time.Second
 	ks := killSecond * time.Second
 	cw := &CtrlWindow{
 	cw := &CtrlWindow{
-		window:   rt.App().NewWindow(title),
-		lastUse:  time.Now(),
-		killTime: ks,
-		rt:       rt,
+		window:      rt.App().NewWindow(""),
+		lastUse:     time.Now(),
+		killTime:    ks,
+		rt:          rt,
+		fileSetType: model.QianRu,
+		nowpage:     1,
+		maxpage:     1,
 	}
 	}
 
 
 	rt.SetDBConnectErrorWindow(cw.window)
 	rt.SetDBConnectErrorWindow(cw.window)
@@ -33,12 +40,11 @@ func newCtrlWindow(rt runtime.RunTime, title string, killSecond time.Duration) *
 	})
 	})
 
 
 	cw.menu = getMainMenu(rt, cw, func(rt runtime.RunTime) {
 	cw.menu = getMainMenu(rt, cw, func(rt runtime.RunTime) {
-		cw.table.UpdateTable(rt, cw.table.fileSetType, 0, cw.menu.NowPage)
+		cw.table.UpdateTable(rt, cw.fileSetType, 0, cw.nowpage)
 	})
 	})
-	cw.window.SetMainMenu(cw.menu.Main)
+	cw.window.SetMainMenu(cw.menu.menu)
 
 
 	cw.table = CreateInfoTable(rt, cw)
 	cw.table = CreateInfoTable(rt, cw)
-
 	return cw
 	return cw
 }
 }
 
 
@@ -87,7 +93,7 @@ func createCtrlWindow(rt runtime.RunTime) error {
 		return nil
 		return nil
 	}
 	}
 
 
-	ctrlWindow = newCtrlWindow(rt, "桓档案-控制中心", 15*60)
+	ctrlWindow = newCtrlWindow(rt, 15*60)
 
 
 	ctrlWindow.window.SetOnClosed(func() {
 	ctrlWindow.window.SetOnClosed(func() {
 		ctrlWindow = nil
 		ctrlWindow = nil

+ 32 - 32
src/v1main/ctrlmainmenu.go

@@ -13,11 +13,10 @@ import (
 )
 )
 
 
 type MainMenu struct {
 type MainMenu struct {
-	Window  *CtrlWindow
-	Main    *fyne.MainMenu
-	Page    *fyne.Menu
-	FileSet *fyne.Menu
-	NowPage int64
+	window *CtrlWindow
+	menu   *fyne.MainMenu
+	page   *fyne.Menu
+	fst    *fyne.Menu
 }
 }
 
 
 func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunTime)) *MainMenu {
 func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunTime)) *MainMenu {
@@ -32,13 +31,12 @@ func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunT
 	})
 	})
 
 
 	wm := &MainMenu{
 	wm := &MainMenu{
-		Window:  w,
-		NowPage: 1,
+		window: w,
 	}
 	}
 
 
 	search := fyne.NewMenuItem("搜索条件", func() {
 	search := fyne.NewMenuItem("搜索条件", func() {
 		rt.Action()
 		rt.Action()
-		ShowWhereWindow(rt, &wm.Window.table.whereInfo, refresh)
+		ShowWhereWindow(rt, &wm.window.table.whereInfo, refresh)
 	})
 	})
 
 
 	initFile := fyne.NewMenuItem("导入配置文件", func() {
 	initFile := fyne.NewMenuItem("导入配置文件", func() {
@@ -146,7 +144,7 @@ func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunT
 				dialog.ShowError(fmt.Errorf("文件名必须以.xlsx结尾"), w.window)
 				dialog.ShowError(fmt.Errorf("文件名必须以.xlsx结尾"), w.window)
 			}
 			}
 
 
-			err = excelio.OutputFile(rt, w.table.fileSetType, savepath, nil, nil)
+			err = excelio.OutputFile(rt, w.fileSetType, savepath, nil, nil)
 			if err != nil {
 			if err != nil {
 				dialog.ShowError(fmt.Errorf("生成数据库遇到错误:%s", err), w.window)
 				dialog.ShowError(fmt.Errorf("生成数据库遇到错误:%s", err), w.window)
 			} else {
 			} else {
@@ -178,7 +176,7 @@ func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunT
 				dialog.ShowError(fmt.Errorf("文件名必须以.xlsx结尾"), w.window)
 				dialog.ShowError(fmt.Errorf("文件名必须以.xlsx结尾"), w.window)
 			}
 			}
 
 
-			err = excelio.OutputFile(rt, w.table.fileSetType, savepath, nil, &wm.Window.table.whereInfo)
+			err = excelio.OutputFile(rt, w.fileSetType, savepath, nil, &wm.window.table.whereInfo)
 			if err != nil {
 			if err != nil {
 				dialog.ShowError(fmt.Errorf("生成数据库遇到错误:%s", err), w.window)
 				dialog.ShowError(fmt.Errorf("生成数据库遇到错误:%s", err), w.window)
 			} else {
 			} else {
@@ -190,7 +188,7 @@ func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunT
 		dlg.Show()
 		dlg.Show()
 	})
 	})
 
 
-	outputNow := fyne.NewMenuItem("保存当前表格", func() {
+	outputNow := fyne.NewMenuItem("保存当前视图的数据", func() {
 		rt.Action()
 		rt.Action()
 		dlg := dialog.NewFileSave(func(writer fyne.URIWriteCloser, err error) {
 		dlg := dialog.NewFileSave(func(writer fyne.URIWriteCloser, err error) {
 			if writer == nil {
 			if writer == nil {
@@ -210,7 +208,7 @@ func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunT
 				dialog.ShowError(fmt.Errorf("文件名必须以.xlsx结尾"), w.window)
 				dialog.ShowError(fmt.Errorf("文件名必须以.xlsx结尾"), w.window)
 			}
 			}
 
 
-			err = excelio.OutputFile(rt, w.table.fileSetType, savepath, wm.Window.table.InfoFile, nil)
+			err = excelio.OutputFile(rt, w.fileSetType, savepath, wm.window.table.InfoFile, nil)
 			if err != nil {
 			if err != nil {
 				dialog.ShowError(fmt.Errorf("生成数据库遇到错误:%s", err), w.window)
 				dialog.ShowError(fmt.Errorf("生成数据库遇到错误:%s", err), w.window)
 			} else {
 			} else {
@@ -222,7 +220,7 @@ func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunT
 		dlg.Show()
 		dlg.Show()
 	})
 	})
 
 
-	outputAllEveryOne := fyne.NewMenuItem("导出所有档案全部迁移数据", func() {
+	outputAllEveryOne := fyne.NewMenuItem("导出所有档案全部借出数据", func() {
 		rt.Action()
 		rt.Action()
 		dlg := dialog.NewFileSave(func(writer fyne.URIWriteCloser, err error) {
 		dlg := dialog.NewFileSave(func(writer fyne.URIWriteCloser, err error) {
 			if writer == nil {
 			if writer == nil {
@@ -254,7 +252,7 @@ func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunT
 		dlg.Show()
 		dlg.Show()
 	})
 	})
 
 
-	outputAllWthSearchEveryOne := fyne.NewMenuItem("导出所有档案全部迁移数据(过滤后)", func() {
+	outputAllWthSearchEveryOne := fyne.NewMenuItem("导出所有档案借出数据(过滤后)", func() {
 		rt.Action()
 		rt.Action()
 		ww := NewSaveWhereWindow(rt, func(rt runtime.RunTime, s *SaveWhereWindow) {
 		ww := NewSaveWhereWindow(rt, func(rt runtime.RunTime, s *SaveWhereWindow) {
 			dlg := dialog.NewFileSave(func(writer fyne.URIWriteCloser, err error) {
 			dlg := dialog.NewFileSave(func(writer fyne.URIWriteCloser, err error) {
@@ -290,14 +288,14 @@ func getMainMenu(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunT
 	})
 	})
 
 
 	xitong := fyne.NewMenu("系统", newFile, exclFile, exclRecordFile, template, aboutMe, quit)
 	xitong := fyne.NewMenu("系统", newFile, exclFile, exclRecordFile, template, aboutMe, quit)
-	wm.FileSet = fyne.NewMenu("档案类型")
+	wm.fst = fyne.NewMenu("档案类型")
 	peizhi := fyne.NewMenu("配置", initFile, openFile, saveFile, copyFile)
 	peizhi := fyne.NewMenu("配置", initFile, openFile, saveFile, copyFile)
 	sousuo := fyne.NewMenu("搜索", search)
 	sousuo := fyne.NewMenu("搜索", search)
-	wm.Page = fyne.NewMenu("分页")
+	wm.page = fyne.NewMenu("分页")
 	tongji := fyne.NewMenu("统计", tj, outputAll, outputAllWthSearch, outputNow, outputAllEveryOne, outputAllWthSearchEveryOne)
 	tongji := fyne.NewMenu("统计", tj, outputAll, outputAllWthSearch, outputNow, outputAllEveryOne, outputAllWthSearchEveryOne)
 	caidan := fyne.NewMenu("彩蛋", lucky)
 	caidan := fyne.NewMenu("彩蛋", lucky)
 
 
-	wm.Main = fyne.NewMainMenu(xitong, peizhi, sousuo, wm.Page, tongji, caidan)
+	wm.menu = fyne.NewMainMenu(xitong, peizhi, sousuo, wm.fst, wm.page, tongji, caidan)
 	return wm
 	return wm
 }
 }
 
 
@@ -310,7 +308,7 @@ func (m *MainMenu) ChangeFileSetModelItem(rt runtime.RunTime, pageItemCount int,
 			continue
 			continue
 		}
 		}
 
 
-		if t == m.Window.table.fileSetType {
+		if t == m.window.fileSetType {
 			name += "(当前)"
 			name += "(当前)"
 			setFileList = append(setFileList, fyne.NewMenuItem(name, func() {
 			setFileList = append(setFileList, fyne.NewMenuItem(name, func() {
 				dialog.ShowConfirm("是否需要重载?", message, func(b bool) {
 				dialog.ShowConfirm("是否需要重载?", message, func(b bool) {
@@ -318,20 +316,20 @@ func (m *MainMenu) ChangeFileSetModelItem(rt runtime.RunTime, pageItemCount int,
 					if !b {
 					if !b {
 						return
 						return
 					}
 					}
-					m.Window.table.UpdateTable(rt, t, pageItemCount, m.NowPage)
-				}, m.Window.window)
+					m.window.table.UpdateTable(rt, t, pageItemCount, m.window.nowpage)
+				}, m.window.window)
 			}))
 			}))
 		} else {
 		} else {
 			setFileList = append(setFileList, fyne.NewMenuItem(name, func() {
 			setFileList = append(setFileList, fyne.NewMenuItem(name, func() {
 				rt.Action()
 				rt.Action()
-				m.Window.table.UpdateTable(rt, t, pageItemCount, 1)
+				m.window.table.UpdateTable(rt, t, pageItemCount, 1)
 			}))
 			}))
 		}
 		}
 	}
 	}
 
 
-	m.FileSet.Items = setFileList
-	m.FileSet.Refresh()
-	m.Main.Refresh()
+	m.fst.Items = setFileList
+	m.fst.Refresh()
+	m.menu.Refresh()
 }
 }
 
 
 func (m *MainMenu) ChangePageMenuItem(rt runtime.RunTime, pageItemCount int, p int64, pageMax int64, message string) {
 func (m *MainMenu) ChangePageMenuItem(rt runtime.RunTime, pageItemCount int, p int64, pageMax int64, message string) {
@@ -340,12 +338,14 @@ func (m *MainMenu) ChangePageMenuItem(rt runtime.RunTime, pageItemCount int, p i
 		pageList = append(pageList, fyne.NewMenuItem("暂无数据", func() {
 		pageList = append(pageList, fyne.NewMenuItem("暂无数据", func() {
 			rt.Action()
 			rt.Action()
 		}))
 		}))
-		m.NowPage = 0
+		m.window.nowpage = 0
+		m.window.maxpage = 0
 	} else {
 	} else {
 		if p > pageMax {
 		if p > pageMax {
 			p = pageMax
 			p = pageMax
 		}
 		}
-		m.NowPage = p
+		m.window.nowpage = p
+		m.window.maxpage = pageMax
 		for k := int64(1); k <= pageMax; k++ {
 		for k := int64(1); k <= pageMax; k++ {
 			i := k
 			i := k
 			if i == p {
 			if i == p {
@@ -356,20 +356,20 @@ func (m *MainMenu) ChangePageMenuItem(rt runtime.RunTime, pageItemCount int, p i
 						if !b {
 						if !b {
 							return
 							return
 						}
 						}
-						m.Window.table.UpdateTable(rt, m.Window.table.fileSetType, pageItemCount, i)
-					}, m.Window.window)
+						m.window.table.UpdateTable(rt, m.window.fileSetType, pageItemCount, i)
+					}, m.window.window)
 				})
 				})
 				pageList = append(pageList, m)
 				pageList = append(pageList, m)
 			} else {
 			} else {
 				pageList = append(pageList, fyne.NewMenuItem(fmt.Sprintf("第%d页", i), func() {
 				pageList = append(pageList, fyne.NewMenuItem(fmt.Sprintf("第%d页", i), func() {
 					rt.Action()
 					rt.Action()
-					m.Window.table.UpdateTable(rt, m.Window.table.fileSetType, pageItemCount, i)
+					m.window.table.UpdateTable(rt, m.window.fileSetType, pageItemCount, i)
 				}))
 				}))
 			}
 			}
 		}
 		}
 	}
 	}
 
 
-	m.Page.Items = pageList
-	m.Page.Refresh()
-	m.Main.Refresh()
+	m.page.Items = pageList
+	m.page.Refresh()
+	m.menu.Refresh()
 }
 }

+ 2 - 2
src/v1main/fromfile.go

@@ -29,7 +29,7 @@ func AddFromFile(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunT
 			return
 			return
 		}
 		}
 
 
-		sa, su, fu, err := excelio.ReadFile(rt, w.table.fileSetType, reader)
+		sa, su, fu, err := excelio.ReadFile(rt, w.fileSetType, reader)
 		if errors.Is(err, excelio.BadTitle) {
 		if errors.Is(err, excelio.BadTitle) {
 			dialog.ShowError(fmt.Errorf("表格首行(表头)对应错误"), w.window)
 			dialog.ShowError(fmt.Errorf("表格首行(表头)对应错误"), w.window)
 			return
 			return
@@ -64,7 +64,7 @@ func AddRecordFromFile(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtim
 			return
 			return
 		}
 		}
 
 
-		sa, su, fu, err := excelio.ReadRecord(rt, w.table.fileSetType, reader)
+		sa, su, fu, err := excelio.ReadRecord(rt, w.fileSetType, reader)
 		if errors.Is(err, excelio.BadTitle) {
 		if errors.Is(err, excelio.BadTitle) {
 			dialog.ShowError(fmt.Errorf("表格首行(表头)对应错误"), w.window)
 			dialog.ShowError(fmt.Errorf("表格首行(表头)对应错误"), w.window)
 			return
 			return

+ 0 - 2
src/v1main/hello.go

@@ -27,7 +27,6 @@ func startBtnClick(rt runtime.RunTime) error {
 }
 }
 
 
 func createHelloWindow(rt runtime.RunTime) {
 func createHelloWindow(rt runtime.RunTime) {
-	fmt.Println("TAG A")
 	if helloWindow != nil {
 	if helloWindow != nil {
 		return
 		return
 	}
 	}
@@ -84,7 +83,6 @@ func createHelloWindow(rt runtime.RunTime) {
 		helloWindow.Close()
 		helloWindow.Close()
 		rt.App().Quit()
 		rt.App().Quit()
 	})
 	})
-	fmt.Println("TAG B")
 }
 }
 
 
 func ShowHelloWindow(rt runtime.RunTime) {
 func ShowHelloWindow(rt runtime.RunTime) {

+ 20 - 39
src/v1main/infotable.go

@@ -8,8 +8,6 @@ import (
 	"fyne.io/fyne/v2/widget"
 	"fyne.io/fyne/v2/widget"
 	"github.com/SuperH-0630/hdangan/src/model"
 	"github.com/SuperH-0630/hdangan/src/model"
 	"github.com/SuperH-0630/hdangan/src/runtime"
 	"github.com/SuperH-0630/hdangan/src/runtime"
-	"reflect"
-	"strings"
 )
 )
 
 
 var TopHeaderData = []string{"卷宗号", "卷宗类型", "文件联合编号", "文件编号", "文件组内编号", "姓名", "曾用名", "身份证", "性别", "出生日期", "备注", "详情"}
 var TopHeaderData = []string{"卷宗号", "卷宗类型", "文件联合编号", "文件编号", "文件组内编号", "姓名", "曾用名", "身份证", "性别", "出生日期", "备注", "详情"}
@@ -28,12 +26,11 @@ func init() {
 }
 }
 
 
 type MainTable struct {
 type MainTable struct {
-	fileTable   *widget.Table
-	window      *CtrlWindow
-	InfoFile    []model.File
-	InfoData    [][]string
-	whereInfo   model.SearchWhere
-	fileSetType model.FileSetType
+	fileTable *widget.Table
+	window    *CtrlWindow
+	InfoFile  []model.File
+	InfoData  [][]string
+	whereInfo model.SearchWhere
 }
 }
 
 
 func CreateInfoTable(rt runtime.RunTime, window *CtrlWindow) *MainTable {
 func CreateInfoTable(rt runtime.RunTime, window *CtrlWindow) *MainTable {
@@ -51,9 +48,8 @@ func CreateInfoTable(rt runtime.RunTime, window *CtrlWindow) *MainTable {
 		})
 		})
 
 
 	m := &MainTable{
 	m := &MainTable{
-		fileTable:   fileTable,
-		window:      ctrlWindow,
-		fileSetType: model.QianRu,
+		fileTable: fileTable,
+		window:    window,
 	}
 	}
 
 
 	fileTable.Length = func() (rows int, cols int) {
 	fileTable.Length = func() (rows int, cols int) {
@@ -95,7 +91,7 @@ func CreateInfoTable(rt runtime.RunTime, window *CtrlWindow) *MainTable {
 			if id.Row >= 0 && id.Row < len(m.InfoData) {
 			if id.Row >= 0 && id.Row < len(m.InfoData) {
 				file := m.InfoFile[id.Row]
 				file := m.InfoFile[id.Row]
 				ShowInfo(rt, file, func(rt runtime.RunTime) {
 				ShowInfo(rt, file, func(rt runtime.RunTime) {
-					m.UpdateTable(rt, m.fileSetType, 0, window.menu.NowPage)
+					m.UpdateTable(rt, m.window.fileSetType, 0, m.window.nowpage)
 				})
 				})
 			}
 			}
 		}
 		}
@@ -106,7 +102,7 @@ func CreateInfoTable(rt runtime.RunTime, window *CtrlWindow) *MainTable {
 		rt.Action()
 		rt.Action()
 	}
 	}
 
 
-	m.UpdateTable(rt, m.fileSetType, 0, window.menu.NowPage)
+	m.UpdateTable(rt, m.window.fileSetType, 0, m.window.nowpage)
 	return m
 	return m
 }
 }
 
 
@@ -135,7 +131,7 @@ func (m *MainTable) UpdateTableInfo(rt runtime.RunTime) {
 		}
 		}
 
 
 		res[i][0] = fmt.Sprintf("%03d", f.FileSetID)
 		res[i][0] = fmt.Sprintf("%03d", f.FileSetID)
-		res[i][1] = fmt.Sprintf("%s", model.FileSetTypeName[m.fileSetType])
+		res[i][1] = fmt.Sprintf("%s", model.FileSetTypeName[m.window.fileSetType])
 		res[i][2] = fmt.Sprintf("%03d", f.FileUnionID)
 		res[i][2] = fmt.Sprintf("%03d", f.FileUnionID)
 		res[i][3] = fmt.Sprintf("%03d", f.FileID)
 		res[i][3] = fmt.Sprintf("%03d", f.FileID)
 		res[i][4] = fmt.Sprintf("%03d", f.FileGroupID)
 		res[i][4] = fmt.Sprintf("%03d", f.FileGroupID)
@@ -161,42 +157,27 @@ func (m *MainTable) UpdateTable(rt runtime.RunTime, fileSetType model.FileSetTyp
 		return
 		return
 	}
 	}
 
 
-	tptr := reflect.TypeOf(maker())
-	if tptr.Kind() != reflect.Ptr {
-		return
-	}
-
-	t := tptr.Elem()
-	if t.Kind() != reflect.Struct {
-		return
-	}
-
-	if strings.HasPrefix(t.Name(), "File") {
-		return
-	}
-
-	resValue := reflect.MakeSlice(reflect.SliceOf(t), 0, pageItemCount)
-	res := resValue.Interface()
-	pageMax, err := model.GetPageData(rt, fileSetType, pageItemCount, p, &m.whereInfo, &res)
+	res, pageMax, err := model.GetPageData(rt, fileSetType, pageItemCount, p, &m.whereInfo, maker())
 	if err != nil {
 	if err != nil {
 		dialog.ShowError(fmt.Errorf("获取数据库档案信息错误。"), m.window.window)
 		dialog.ShowError(fmt.Errorf("获取数据库档案信息错误。"), m.window.window)
 		return
 		return
 	}
 	}
 
 
 	m.InfoFile = make([]model.File, 0, pageItemCount)
 	m.InfoFile = make([]model.File, 0, pageItemCount)
-	for i := 0; i < resValue.Len(); i++ {
-		elem := resValue.Index(i)
-		etype := elem.Type()
-		if !etype.Implements(reflect.TypeOf((*model.File)(nil)).Elem()) {
-			continue
-		}
-
-		m.InfoFile = append(m.InfoFile, elem.Interface().(model.File))
+	for _, f := range res {
+		m.InfoFile = append(m.InfoFile, f)
 	}
 	}
 
 
 	m.UpdateTableInfo(rt)
 	m.UpdateTableInfo(rt)
 	m.window.menu.ChangePageMenuItem(rt, pageItemCount, p, pageMax, fmt.Sprintf("本页共显示数据:%d条。", len(m.InfoFile)))
 	m.window.menu.ChangePageMenuItem(rt, pageItemCount, p, pageMax, fmt.Sprintf("本页共显示数据:%d条。", len(m.InfoFile)))
 	m.window.menu.ChangeFileSetModelItem(rt, pageItemCount, fmt.Sprintf("本页共显示数据:%d条。", len(m.InfoFile)))
 	m.window.menu.ChangeFileSetModelItem(rt, pageItemCount, fmt.Sprintf("本页共显示数据:%d条。", len(m.InfoFile)))
+
+	fstname, ok := model.FileSetTypeName[m.window.fileSetType]
+	if !ok {
+		fstname = "未知"
+	}
+	m.window.window.SetTitle(fmt.Sprintf("控制台-%s-%d/%d", fstname, m.window.nowpage, m.window.maxpage))
+
 	m.fileTable.Refresh()
 	m.fileTable.Refresh()
 }
 }
 
 

+ 0 - 4
src/v1main/main.go

@@ -15,17 +15,13 @@ import (
 
 
 func Main() {
 func Main() {
 	start()
 	start()
-	fmt.Println("TAG A")
 
 
 	a := happ.NewApp()
 	a := happ.NewApp()
-	fmt.Println("TAG B")
 
 
 	rt := runtime.NewRunTime(a)
 	rt := runtime.NewRunTime(a)
-	fmt.Println("TAG C")
 
 
 	err := model.AutoCreateModel(rt)
 	err := model.AutoCreateModel(rt)
 	if err != nil {
 	if err != nil {
-		fmt.Println("TAG D")
 		dbFail(rt, fmt.Sprintf("数据库构建失败: %s。", err.Error()), 1)
 		dbFail(rt, fmt.Sprintf("数据库构建失败: %s。", err.Error()), 1)
 		return
 		return
 	}
 	}

+ 2 - 2
src/v1main/new.go

@@ -40,7 +40,7 @@ func ShowNew(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunTime)
 		newWindow = nil
 		newWindow = nil
 	})
 	})
 
 
-	maker, ok := model.FileSetTypeMaker[w.table.fileSetType]
+	maker, ok := model.FileSetTypeMaker[w.fileSetType]
 	if !ok {
 	if !ok {
 		rt.DBConnectError(fmt.Errorf("配置文件错误,请检查配置文件状态。"))
 		rt.DBConnectError(fmt.Errorf("配置文件错误,请检查配置文件状态。"))
 		return
 		return
@@ -224,7 +224,7 @@ func ShowNew(rt runtime.RunTime, w *CtrlWindow, refresh func(rt runtime.RunTime)
 		dialog.ShowConfirm("创建?", "你确定要新增档案嘛?", func(b bool) {
 		dialog.ShowConfirm("创建?", "你确定要新增档案嘛?", func(b bool) {
 			rt.Action()
 			rt.Action()
 			if b {
 			if b {
-				err := model.CreateFile(rt, w.table.fileSetType, fm, record)
+				err := model.CreateFile(rt, w.fileSetType, fm, record)
 				if err != nil {
 				if err != nil {
 					dialog.ShowError(fmt.Errorf("数据库错误: %s", err.Error()), newWindow)
 					dialog.ShowError(fmt.Errorf("数据库错误: %s", err.Error()), newWindow)
 				}
 				}