Przeglądaj źródła

添加生成器

root 8 miesięcy temu
rodzic
commit
3351d0a852
30 zmienionych plików z 709 dodań i 195 usunięć
  1. 53 0
      CRLF_lic_op_20240925164406_标准版(单机).cfg
  2. 53 0
      CRLF_lic_op_20240925164511_标准版(单机).cfg
  3. 53 0
      CRLF_lic_op_20240925165611_标准版(单机).cfg
  4. 53 0
      CRLF_lic_op_20240925165631_企业版(双机).cfg
  5. 7 7
      config.toml
  6. 4 3
      internal/module/capture/capture.go
  7. 39 9
      internal/module/license/license_generate.go
  8. 70 16
      internal/services/OALicenseInfo_services.go
  9. 11 10
      internal/utils/utils.go
  10. 53 0
      lic_op_20240925164406_标准版(单机).cfg
  11. 53 0
      lic_op_20240925164511_标准版(单机).cfg
  12. 53 0
      lic_op_20240925165611_标准版(单机).cfg
  13. 53 0
      lic_op_20240925165631_企业版(双机).cfg
  14. 1 0
      license.dat@CRLF_lic_op_20240925164406_标准版(单机).cfg
  15. 1 0
      license.dat@CRLF_lic_op_20240925164511_标准版(单机).cfg
  16. 1 0
      license.dat@CRLF_lic_op_20240925165611_标准版(单机).cfg
  17. 1 0
      license.dat@CRLF_lic_op_20240925165631_企业版(双机).cfg
  18. 25 25
      static/license_info/bakup/license_info 9.11.html
  19. 25 25
      static/license_info/bakup/license_info copy 2.html
  20. 25 25
      static/license_info/bakup/license_info copy 主行分页展示版本.html
  21. 24 24
      static/license_info/bakup/license_info copy.html
  22. 5 5
      static/license_info/license_info.js
  23. 5 5
      static/license_info/license_info_distribution.js
  24. 1 1
      static/license_info/license_info_modal.js
  25. 26 26
      static/license_info/old/old_license_info.html
  26. 2 2
      static/login/login.js
  27. 4 4
      static/role/role.js
  28. 1 1
      static/upload_xlsx/script.js
  29. 5 5
      static/user/user.js
  30. 2 2
      支持库建表语句.sql

+ 53 - 0
CRLF_lic_op_20240925164406_标准版(单机).cfg

@@ -0,0 +1,53 @@
+
+#用户项目信息
+	project_name    = 虚谷数据库V12.0
+	user_name       = 标准版(单机)
+	user_addr       = 未填写
+	serial_number   = 未填写
+#环境信息
+	cpu_sn          = 未填写
+	baseboard_sn    = 未填写
+	mac_addr        = e8:61:1f:4b:8e:d3
+	disk_id         = 未填写
+	ip_addr         = 未填写
+	#License信息
+	gen_date        = 2024-07-15
+	expire_date     = 9999-12-31
+	license_type    = 2
+	license_version = 1
+	hard_type       = 3
+#企业版                                   
+    ha              = true
+    hint            = true
+    full_text_index = true
+    function_index  = true
+    batch_mode      = true
+    pl_sql          = true
+#分布式版
+    add_node            = false
+    auto_partition      = true
+    resource_quota      = true
+    net_channel         = 0
+    data_auto_rebalance = true
+#其他组件
+    black_white_list   = true
+    mac                = true
+    col_privilege      = true
+    transmit_encrypt   = true
+    store_encrypt      = true
+    backup_encrypt     = true
+    audit_mode         = 0
+    global_binlog_node = 0
+    dblink             = true
+    json               = true
+    spatial            = true
+    max_parallel       = 0
+    stream_load        = true
+#服务能力
+    instance_num   = 0
+    table_rows     = 0
+    connect_num    = 0
+    store_capacity = 0
+    max_node_num   = 0
+    listen_channel = 0
+	

+ 53 - 0
CRLF_lic_op_20240925164511_标准版(单机).cfg

@@ -0,0 +1,53 @@
+
+#用户项目信息
+	project_name    = 虚谷数据库V12.0
+	user_name       = 标准版(单机)
+	user_addr       = 未填写
+	serial_number   = 未填写
+#环境信息
+	cpu_sn          = 未填写
+	baseboard_sn    = 未填写
+	mac_addr        = e8:61:1f:4b:8e:d3
+	disk_id         = 未填写
+	ip_addr         = 未填写
+	#License信息
+	gen_date        = 2024-07-15
+	expire_date     = 9999-12-31
+	license_type    = 2
+	license_version = 1
+	hard_type       = 3
+#企业版                                   
+    ha              = true
+    hint            = true
+    full_text_index = true
+    function_index  = true
+    batch_mode      = true
+    pl_sql          = true
+#分布式版
+    add_node            = false
+    auto_partition      = true
+    resource_quota      = true
+    net_channel         = 0
+    data_auto_rebalance = true
+#其他组件
+    black_white_list   = true
+    mac                = true
+    col_privilege      = true
+    transmit_encrypt   = true
+    store_encrypt      = true
+    backup_encrypt     = true
+    audit_mode         = 0
+    global_binlog_node = 0
+    dblink             = true
+    json               = true
+    spatial            = true
+    max_parallel       = 0
+    stream_load        = true
+#服务能力
+    instance_num   = 0
+    table_rows     = 0
+    connect_num    = 0
+    store_capacity = 0
+    max_node_num   = 0
+    listen_channel = 0
+	

+ 53 - 0
CRLF_lic_op_20240925165611_标准版(单机).cfg

@@ -0,0 +1,53 @@
+
+#用户项目信息
+	project_name    = 虚谷数据库V12.0
+	user_name       = 标准版(单机)
+	user_addr       = 未填写
+	serial_number   = 未填写
+#环境信息
+	cpu_sn          = 未填写
+	baseboard_sn    = 未填写
+	mac_addr        = abc:abc:abc:avc
+	disk_id         = 未填写
+	ip_addr         = 未填写
+	#License信息
+	gen_date        = 2024-07-15
+	expire_date     = 9999-12-31
+	license_type    = 2
+	license_version = 1
+	hard_type       = 3
+#企业版                                   
+    ha              = true
+    hint            = true
+    full_text_index = true
+    function_index  = true
+    batch_mode      = true
+    pl_sql          = true
+#分布式版
+    add_node            = false
+    auto_partition      = true
+    resource_quota      = true
+    net_channel         = 0
+    data_auto_rebalance = true
+#其他组件
+    black_white_list   = true
+    mac                = true
+    col_privilege      = true
+    transmit_encrypt   = true
+    store_encrypt      = true
+    backup_encrypt     = true
+    audit_mode         = 0
+    global_binlog_node = 0
+    dblink             = true
+    json               = true
+    spatial            = true
+    max_parallel       = 0
+    stream_load        = true
+#服务能力
+    instance_num   = 0
+    table_rows     = 0
+    connect_num    = 0
+    store_capacity = 0
+    max_node_num   = 0
+    listen_channel = 0
+	

+ 53 - 0
CRLF_lic_op_20240925165631_企业版(双机).cfg

@@ -0,0 +1,53 @@
+
+#用户项目信息
+	project_name    = 虚谷数据库V12.0
+	user_name       = 企业版(双机)
+	user_addr       = 未填写
+	serial_number   = 未填写
+#环境信息
+	cpu_sn          = 未填写
+	baseboard_sn    = 未填写
+	mac_addr        = 192.168.100.2 18:c0:09:27:8d:0d
+	disk_id         = 未填写
+	ip_addr         = 未填写
+#License信息
+	gen_date        = 2024-07-15
+	expire_date     = 9999-12-31
+	license_type    = 3
+	license_version = 1
+	hard_type       = 3
+#企业版                                   
+    ha              = true
+    hint            = true
+    full_text_index = true
+    function_index  = true
+    batch_mode      = true
+    pl_sql          = true
+#分布式版
+    add_node            = false
+    auto_partition      = true
+    resource_quota      = true
+    net_channel         = 0
+    data_auto_rebalance = true
+#其他组件
+    black_white_list   = true
+    mac                = true
+    col_privilege      = true
+    transmit_encrypt   = true
+    store_encrypt      = true
+    backup_encrypt     = true
+    audit_mode         = 0
+    global_binlog_node = 0
+    dblink             = true
+    json               = true
+    spatial            = true
+    max_parallel       = 0
+    stream_load        = true
+#服务能力
+    instance_num   = 0
+    table_rows     = 0
+    connect_num    = 0
+    store_capacity = 0
+    max_node_num   = 0
+    listen_channel = 0
+	

+ 7 - 7
config.toml

@@ -1,16 +1,16 @@
 [config]
-ip = "127.0.0.1"
+ip = "10.28.20.105"
 port = "8080"
 
 [database]
-oadb_ip = "10.28.20.233"
+oadb_ip = "192.168.2.212"
 oadb_port = "5138"
-oadb_db = "OAdb"
-oadb_user = "SYSDBA"
-oadb_password = "SYSDBA"
+oadb_db = "ECOLOGY2"
+oadb_user = "XUGU_LICENSE"
+oadb_password = "xugu@license2024"
 
-licdb_ip = "10.28.20.233"
-licdb_port = "5138"
+licdb_ip = "10.28.20.105"
+licdb_port = "5190"
 licdb_db = "license"
 licdb_user = "SYSDBA"
 licdb_password = "SYSDBA"

+ 4 - 3
internal/module/capture/capture.go

@@ -60,7 +60,7 @@ func StartCapture(sourceDB, targetDB *sql.DB) {
 			continue
 		}
 		if !checkTemp {
-			time.Sleep(15 * time.Second)
+			time.Sleep(15 * time.Minute)
 			continue
 		}
 
@@ -207,8 +207,9 @@ func insertSyncMetadata(db *sql.DB, tableName string, lastSyncTime time.Time) er
 func checkSourceOaLicTime(sourceDB *sql.DB, lastSyncTime time.Time) (bool, error) {
 	var checkCount int
 	checkTime := `SELECT count(1) FROM XUGU.WORKFLOW_REQUESTBASE WR 
-where
-TO_TIMESTAMP(wr.CREATEDATE || ' ' || wr.CREATETIME, 'YYYY-MM-DD HH24:MI:SS') > TO_TIMESTAMP(?, 'YYYY-MM-DD HH24:MI:SS');`
+	WHERE WORKFLOWID = 5026 
+	and
+	TO_TIMESTAMP(wr.CREATEDATE || ' ' || wr.CREATETIME, 'YYYY-MM-DD HH24:MI:SS') > TO_TIMESTAMP(?, 'YYYY-MM-DD HH24:MI:SS');`
 	error := sourceDB.QueryRow(checkTime, lastSyncTime).Scan(&checkCount)
 	if error != nil {
 		Logger.Println("Failed to check count:", error)

+ 39 - 9
internal/module/license/license_generate.go

@@ -424,38 +424,68 @@ func GenerateLicenseCofingFile(app LicenseApplication) (string, error) {
 		return "", err
 	}
 
+	// // 使用 bytes.Buffer 捕获模板渲染结果
+	// var buf bytes.Buffer
+
+	// // 将模板渲染到缓冲区中
+	// err = t.Execute(&buf, app)
+	// if err != nil {
+	// 	log.Fatalf("Executing template failed: %v", err)
+	// }
+
+	// // 将渲染结果转换为字符串
+	// renderedString := buf.String()
+
+	// // 打印渲染的字符串(可选)
+	// fmt.Println("renderedString", renderedString)
+
+	// fmt.Println("这该死的app:", app)
 	// 执行模板并写入文件
 	err = t.Execute(file, app)
 	if err != nil {
 		fmt.Println("Error executing template:", err)
 	}
+
 	fileNameToCRLF := fmt.Sprintf("CRLF_" + fileName)
+	//fmt.Println("这是什么玩意", fileNameToCRLF, fileName)
 	err = convertLFtoCRLF(fileName, fileNameToCRLF)
 	if err != nil {
 		fmt.Printf("转换文件时出错: %v\n", err)
 	} else {
 		fmt.Println("文件转换成功!")
 	}
-	file.Close()
+	defer file.Close()
 	//删除 fileNameToCRLF
-	err = os.Remove(fileName)
-	if err != nil {
-		fmt.Println("Error removing file:", err)
-		return "", err
-	} else {
-		fmt.Println("File successfully removed")
-	}
+	// err = os.Remove(fileName)
+	// if err != nil {
+	// 	fmt.Println("Error removing file:", err)
+	// 	return "", err
+	// } else {
+	// 	fmt.Println("File successfully removed")
+	// }
 	return fileNameToCRLF, nil
 }
 
 func ExecLicenseProgram(fileName string) {
+	cmd2 := exec.Command("pwd")
+
+	// 获取标准输出和标准错误
+	output2, err := cmd2.CombinedOutput()
+	if err != nil {
+		fmt.Printf("执行命令时出错: %v\n", err)
+		return
+	}
+
+	// 打印输出
+	fmt.Printf("PWD输出: %s\n", output2)
 	// 定义要调用的可执行程序及其参数
-	cmd := exec.Command("./pkg/lic/xugu_lic_test.exe", "-gen_license", fileName)
+	cmd := exec.Command("/home/gtong/license/lic_go/xugu_license/pkg/lic/xugu_linux_x86_64_20240920_license-test", "-gen_license", fileName)
 
 	// 获取标准输出和标准错误
 	output, err := cmd.CombinedOutput()
 	if err != nil {
 		fmt.Printf("执行命令时出错: %v\n", err)
+		return
 	}
 
 	// 打印输出

+ 70 - 16
internal/services/OALicenseInfo_services.go

@@ -9,6 +9,7 @@ import (
 	"xugu_license/internal/global"
 	"xugu_license/internal/models"
 	"xugu_license/internal/module/email"
+	"xugu_license/internal/module/license"
 	"xugu_license/internal/utils"
 
 	"github.com/pkg/errors"
@@ -352,25 +353,78 @@ func generateLicenseStrSub(UniqueID string) error {
 		return errors.Errorf("LicenseInfo数据生成失败 ,数据查询为空 ")
 	}
 
-	if (*applications)[0].LicInfo.OASecondMAC.String != "" {
-		// var licStr2 []byte
-		// ei.MacAddr = applications[0].SecondaryMasterMacAddress
-		// licStr2 = license.GenerateLicense(pj, ei, lI)
-		err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"))
-		if err != nil {
-			global.Logger.Errorln("LicenseInfo生成插入失败:  ", err.Error())
-			//	c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
-			return errors.Errorf("LicenseInfo生成插入失败:: ", err.Error())
+	pj := license.ProjectInfo{
+		ProjectName:  utils.ToString((*applications)[0].LicInfo.OAProductName),
+		UserName:     utils.ToString((*applications)[0].LicInfo.OAProductVersion),
+		UserAddr:     "未填写",
+		SerialNumber: "未填写",
+	}
+	ei := license.EnvironmentInfo{
+		CpuSN:       "未填写",
+		BaseboardSN: "未填写",
+		MacAddr:     utils.ToString((*applications)[0].LicInfo.OAMainMAC),
+		DiskID:      "未填写",
+		IPAddr:      "未填写",
+	}
+	LicType := utils.SwitchLicenseType(utils.ToString((*applications)[0].LicInfo.OAProductVersion))
+	lI := license.LicenseInfo{
+		GenDate:        "2024-07-15",
+		ExpireDate:     "9999-12-31",
+		LicenseType:    LicType,
+		LicenseVersion: 1,
+		HardType:       3,
+	}
+
+	//这里调用的是license模块中的生成license的方法
+	res := false
+	if res {
+		if (*applications)[0].LicInfo.OASecondMAC.String != "" {
+			// var licStr2 []byte
+			// ei.MacAddr = applications[0].SecondaryMasterMacAddress
+			// licStr2 = license.GenerateLicense(pj, ei, lI)
+			err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"))
+			if err != nil {
+				global.Logger.Errorln("LicenseInfo生成插入失败:  ", err.Error())
+				//	c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
+				return errors.Errorf("LicenseInfo生成插入失败:: ", err.Error())
+			}
+		} else {
+			//fmt.Println("licStr licStr2", licStr, licStr2)
+			//插入到数据库
+			err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), nil)
+			if err != nil {
+				global.Logger.Errorln("LicenseInfo2生成插入失败:  ", err.Error())
+				//	c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
+				return errors.Errorf("LicenseInfo2生成插入失败:: ", err.Error())
+			}
 		}
 	} else {
-		//fmt.Println("licStr licStr2", licStr, licStr2)
-		//插入到数据库
-		err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), []byte("b4j6z4rE2IfG1av0wIPT7YnvyGZFHxwIBikMGjgCLQILR0xsT1NHiuzoi+Dqq+bmiNDEiuPyitDVgdvlRmYbFAk+MAAGASlPTkdMbE9"), nil)
-		if err != nil {
-			global.Logger.Errorln("LicenseInfo2生成插入失败:  ", err.Error())
-			//	c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
-			return errors.Errorf("LicenseInfo2生成插入失败:: ", err.Error())
+		licStr := license.GenerateLicense(pj, ei, lI)
+
+		//生成副主节点license
+		if (*applications)[0].LicInfo.OASecondMAC.String != "" {
+			var licStr2 []byte
+			ei.MacAddr = (*applications)[0].LicInfo.OASecondMAC.String
+			licStr2 = license.GenerateLicense(pj, ei, lI)
+			err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), licStr, licStr2)
+			if err != nil {
+				global.Logger.Errorln("LicenseInfo2生成插入失败:  ", err.Error())
+				//	c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
+				return errors.Errorf("LicenseInfo2生成插入失败:: ", err.Error())
+			}
+		} else {
+			//插入到数据库
+			err = models.UpdateOALicenseStr(utils.ToString((*applications)[0].LicInfo.UniqueID), licStr, nil)
+			if err != nil {
+				global.Logger.Errorln("LicenseInfo生成插入失败:  ", err.Error())
+				//	c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("数据查询失败: ", err.Error())})
+				return errors.Errorf("LicenseInfo生成插入失败:: ", err.Error())
+			}
 		}
+
 	}
+
+	//---------------------
+
 	return nil
 }

+ 11 - 10
internal/utils/utils.go

@@ -9,7 +9,7 @@ import (
 	"io"
 	"mime/multipart"
 	"os"
-	"strings"
+	"regexp"
 	"time"
 )
 
@@ -22,21 +22,22 @@ const (
 )
 
 func SwitchLicenseType(license string) int {
-	switch {
-	case strings.Contains(license, "标准"):
+	if regexp.MustCompile("(?i)标准").MatchString(license) {
 		return std
-	case strings.Contains(license, "分布式"):
+	}
+	if regexp.MustCompile("(?i)分布式").MatchString(license) {
 		return cluster
-	case strings.Contains(license, "企业"):
+	}
+	if regexp.MustCompile("(?i)企业").MatchString(license) {
 		return ent
-	case strings.Contains(license, "敏捷"):
+	}
+	if regexp.MustCompile("(?i)敏捷").MatchString(license) {
 		return lite
-	case strings.Contains(license, "个人"):
+	}
+	if regexp.MustCompile("(?i)个人").MatchString(license) {
 		return Person
-	default:
-		return 0
 	}
-
+	return 0
 }
 
 const maxFileNameLength = 255

+ 53 - 0
lic_op_20240925164406_标准版(单机).cfg

@@ -0,0 +1,53 @@
+
+#用户项目信息
+	project_name    = 虚谷数据库V12.0
+	user_name       = 标准版(单机)
+	user_addr       = 未填写
+	serial_number   = 未填写
+#环境信息
+	cpu_sn          = 未填写
+	baseboard_sn    = 未填写
+	mac_addr        = e8:61:1f:4b:8e:d3
+	disk_id         = 未填写
+	ip_addr         = 未填写
+	#License信息
+	gen_date        = 2024-07-15
+	expire_date     = 9999-12-31
+	license_type    = 2
+	license_version = 1
+	hard_type       = 3
+#企业版                                   
+    ha              = true
+    hint            = true
+    full_text_index = true
+    function_index  = true
+    batch_mode      = true
+    pl_sql          = true
+#分布式版
+    add_node            = false
+    auto_partition      = true
+    resource_quota      = true
+    net_channel         = 0
+    data_auto_rebalance = true
+#其他组件
+    black_white_list   = true
+    mac                = true
+    col_privilege      = true
+    transmit_encrypt   = true
+    store_encrypt      = true
+    backup_encrypt     = true
+    audit_mode         = 0
+    global_binlog_node = 0
+    dblink             = true
+    json               = true
+    spatial            = true
+    max_parallel       = 0
+    stream_load        = true
+#服务能力
+    instance_num   = 0
+    table_rows     = 0
+    connect_num    = 0
+    store_capacity = 0
+    max_node_num   = 0
+    listen_channel = 0
+	

+ 53 - 0
lic_op_20240925164511_标准版(单机).cfg

@@ -0,0 +1,53 @@
+
+#用户项目信息
+	project_name    = 虚谷数据库V12.0
+	user_name       = 标准版(单机)
+	user_addr       = 未填写
+	serial_number   = 未填写
+#环境信息
+	cpu_sn          = 未填写
+	baseboard_sn    = 未填写
+	mac_addr        = e8:61:1f:4b:8e:d3
+	disk_id         = 未填写
+	ip_addr         = 未填写
+	#License信息
+	gen_date        = 2024-07-15
+	expire_date     = 9999-12-31
+	license_type    = 2
+	license_version = 1
+	hard_type       = 3
+#企业版                                   
+    ha              = true
+    hint            = true
+    full_text_index = true
+    function_index  = true
+    batch_mode      = true
+    pl_sql          = true
+#分布式版
+    add_node            = false
+    auto_partition      = true
+    resource_quota      = true
+    net_channel         = 0
+    data_auto_rebalance = true
+#其他组件
+    black_white_list   = true
+    mac                = true
+    col_privilege      = true
+    transmit_encrypt   = true
+    store_encrypt      = true
+    backup_encrypt     = true
+    audit_mode         = 0
+    global_binlog_node = 0
+    dblink             = true
+    json               = true
+    spatial            = true
+    max_parallel       = 0
+    stream_load        = true
+#服务能力
+    instance_num   = 0
+    table_rows     = 0
+    connect_num    = 0
+    store_capacity = 0
+    max_node_num   = 0
+    listen_channel = 0
+	

+ 53 - 0
lic_op_20240925165611_标准版(单机).cfg

@@ -0,0 +1,53 @@
+
+#用户项目信息
+	project_name    = 虚谷数据库V12.0
+	user_name       = 标准版(单机)
+	user_addr       = 未填写
+	serial_number   = 未填写
+#环境信息
+	cpu_sn          = 未填写
+	baseboard_sn    = 未填写
+	mac_addr        = abc:abc:abc:avc
+	disk_id         = 未填写
+	ip_addr         = 未填写
+	#License信息
+	gen_date        = 2024-07-15
+	expire_date     = 9999-12-31
+	license_type    = 2
+	license_version = 1
+	hard_type       = 3
+#企业版                                   
+    ha              = true
+    hint            = true
+    full_text_index = true
+    function_index  = true
+    batch_mode      = true
+    pl_sql          = true
+#分布式版
+    add_node            = false
+    auto_partition      = true
+    resource_quota      = true
+    net_channel         = 0
+    data_auto_rebalance = true
+#其他组件
+    black_white_list   = true
+    mac                = true
+    col_privilege      = true
+    transmit_encrypt   = true
+    store_encrypt      = true
+    backup_encrypt     = true
+    audit_mode         = 0
+    global_binlog_node = 0
+    dblink             = true
+    json               = true
+    spatial            = true
+    max_parallel       = 0
+    stream_load        = true
+#服务能力
+    instance_num   = 0
+    table_rows     = 0
+    connect_num    = 0
+    store_capacity = 0
+    max_node_num   = 0
+    listen_channel = 0
+	

+ 53 - 0
lic_op_20240925165631_企业版(双机).cfg

@@ -0,0 +1,53 @@
+
+#用户项目信息
+	project_name    = 虚谷数据库V12.0
+	user_name       = 企业版(双机)
+	user_addr       = 未填写
+	serial_number   = 未填写
+#环境信息
+	cpu_sn          = 未填写
+	baseboard_sn    = 未填写
+	mac_addr        = 192.168.100.2 18:c0:09:27:8d:0d
+	disk_id         = 未填写
+	ip_addr         = 未填写
+#License信息
+	gen_date        = 2024-07-15
+	expire_date     = 9999-12-31
+	license_type    = 3
+	license_version = 1
+	hard_type       = 3
+#企业版                                   
+    ha              = true
+    hint            = true
+    full_text_index = true
+    function_index  = true
+    batch_mode      = true
+    pl_sql          = true
+#分布式版
+    add_node            = false
+    auto_partition      = true
+    resource_quota      = true
+    net_channel         = 0
+    data_auto_rebalance = true
+#其他组件
+    black_white_list   = true
+    mac                = true
+    col_privilege      = true
+    transmit_encrypt   = true
+    store_encrypt      = true
+    backup_encrypt     = true
+    audit_mode         = 0
+    global_binlog_node = 0
+    dblink             = true
+    json               = true
+    spatial            = true
+    max_parallel       = 0
+    stream_load        = true
+#服务能力
+    instance_num   = 0
+    table_rows     = 0
+    connect_num    = 0
+    store_capacity = 0
+    max_node_num   = 0
+    listen_channel = 0
+	

+ 1 - 0
license.dat@CRLF_lic_op_20240925164406_标准版(单机).cfg

@@ -0,0 +1 @@
+QWVNgNjkiebQpe3WifziqNDPgc3jYmRuPD4ABAIvODAABiEpT05HbHFPhv7WpN/Zgdn8iePJqfb8OFZ+Yl9jbUU5HAsVEyIOAwJsbE9OR2xsUk6B7MuK6eGrxeeB28Sp4vuB0PaA0u5BRmYbFCk+MA8DKD5PTkdsbE9OWmyq88SC7eeK6P5BRmYdAj4lDgI4IjkCDAI+bE9OWmyq88SC7eeK6P5BRkyJ6eOpze2D8+2J78hBRmYNFzkTHABHbGxPTkdsbE9OWmyq88SC7eeK6P5BRmYMBj8pDQEGPigwHQlsbE9OWmyq88SC7eeK6P5BRmYDBi8TDgoDPmxPTkdsbE9OWmwpV1RRfXZeCF14LlVWAnYoXGNtRSgGHQwTJQtOR2xsT05HbGxSToHQ5orPzKnK9mNtRSUfMQYoKB1OR2xsT05HbGxSToHQ5orPzKnK9mNtRW8jBwQpIhwLg/Ptie/IQUZmCQIiEwsPEylsT05HbGxPTlpsfl9cU2F8WENWeUFlZwI0PAYcAhMoDhoCbGxPTkdxbFZXXnVhXlxKf31iZG4gJQwLCT8pMBoePClPTkdscU9cakZFAwcEKSIcCzg6KR0dDiMiT1NHfUFlZw8tPgsxEzU8Ck5HbGxPTkdxbFxjbW+o0++D9NaI5+9sbE9OR2xsT05HbGxPTkdsbE9OR2xsT05HbGxPTkdsbE9OR0FGT05HbCQOTkdsbE9OR2xsT05HbGxSThM+OQpjbWxsT04PJSIbTkdsbE9OR2xsT05HcWwbHBIpQWVOR2xsCRsLIBMbCx84EwYAAyk0T1NHOD4aC2pGbE9ORyo5AQ0TJSMBMQ4iKAoWR2xxTxoVOSliZEdsbE8MBjgvBzEKIygKTkdsbE9OWmw4HRsCQUZPTkdsPAMxFD0gT05HbGxPTkdsbFJOEz45CmNtb6nn6IL0z4rS6KvF52NtbGxPTgYoKDAACCgpT05HbGxPTkdsbE9OWmwqDgIUKUFlTkdsbA4bEyMTHw8VOCUbBwgibE9OR2xsUk4TPjkKY21sbE9OFSk/ABsVLykwHxIjOA5OR2xsT05abDgdGwJBRk9OR2wiCho4LyQOAAkpIE9OR2xsT05HbHFPXmpGbE9ORygtGw84LTkbATg+KQ0PCy0iDAtHcWwbHBIpQWVNgsn6i9Xxq/fritz6QWVOR2xsDQIGLycwGQ8lOAoxCyU/G05HbHFPGhU5KWJkR2xsTwMGL2xPTkdsbE9OR2xsT05HbGxSThM+OQpjbWxsT04EIyAwHhUlOgYCAispT05HbGxPU0c4PhoLakZsT05HOD4OABQhJRsxAiIvHRcXOGxPTlpsOB0bAkFGT05HbD8bARUpEwoABD41HxpHbGxPTkdxbBscEilBZU5HbGwNDwQnOR8xAiIvHRcXOGxPTkdscU8aFTkpYmRHbGxPDxIoJRsxCiMoCk5HbGxPTkdsbFJOV0FGT05HbCsDAQUtIDAMDiIgAAk4IiMLC0dxbF9jbWxsT04DLiAGAAxsbE9OR2xsT05HbGxPU0c4PhoLakZsT05HJj8AAEdsbE9OR2xsT05HbGxPTlpsOB0bAkFGT05HbD8fDxMlLQNOR2xsT05HbGxPTkdxbBscEilBZU5HbGwCDx8TPA4cBiAgCgJHbGxPTkdscU9eakZsT05HPzgdCwYhEwMBBihsT05HbGxPTlpsOB0bAkFGTIj7wanlz4/P8Yrk/EFGT05HbCUBHRMtIgwLOCI5Ak5HbHFPXmpGbE9ORzgtDQICEz4AGRRsbE9OR3FsX2NtbGxPTgQjIgELBDgTARsKbGxPTlpsfGJkR2xsTx0TIz4KMQQtPA4NDjg1T1NHfEFlTkdsbAIPHxMiAAoCEyIaA0dsbFJOV0FGT05HbCAGHRMpIjANDy0iAQsLbHFPXmpGRWJkzGJ6/vBjMNoGnkYYT50Aeg==

+ 1 - 0
license.dat@CRLF_lic_op_20240925164511_标准版(单机).cfg

@@ -0,0 +1 @@
+QWVNgNjkiebQpe3WifziqNDPgc3jYmRuPD4ABAIvODAABiEpT05HbHFPhv7WpN/Zgdn8iePJqfb8OFZ+Yl9jbUU5HAsVEyIOAwJsbE9OR2xsUk6B7MuK6eGrxeeB28Sp4vuB0PaA0u5BRmYbFCk+MA8DKD5PTkdsbE9OWmyq88SC7eeK6P5BRmYdAj4lDgI4IjkCDAI+bE9OWmyq88SC7eeK6P5BRkyJ6eOpze2D8+2J78hBRmYNFzkTHABHbGxPTkdsbE9OWmyq88SC7eeK6P5BRmYMBj8pDQEGPigwHQlsbE9OWmyq88SC7eeK6P5BRmYDBi8TDgoDPmxPTkdsbE9OWmwpV1RRfXZeCF14LlVWAnYoXGNtRSgGHQwTJQtOR2xsT05HbGxSToHQ5orPzKnK9mNtRSUfMQYoKB1OR2xsT05HbGxSToHQ5orPzKnK9mNtRW8jBwQpIhwLg/Ptie/IQUZmCQIiEwsPEylsT05HbGxPTlpsfl9cU2F8WENWeUFlZwI0PAYcAhMoDhoCbGxPTkdxbFZXXnVhXlxKf31iZG4gJQwLCT8pMBoePClPTkdscU9cakZFAwcEKSIcCzg6KR0dDiMiT1NHfUFlZw8tPgsxEzU8Ck5HbGxPTkdxbFxjbW+o0++D9NaI5+9sbE9OR2xsT05HbGxPTkdsbE9OR2xsT05HbGxPTkdsbE9OR0FGT05HbCQOTkdsbE9OR2xsT05HbGxSThM+OQpjbWxsT04PJSIbTkdsbE9OR2xsT05HcWwbHBIpQWVOR2xsCRsLIBMbCx84EwYAAyk0T1NHOD4aC2pGbE9ORyo5AQ0TJSMBMQ4iKAoWR2xxTxoVOSliZEdsbE8MBjgvBzEKIygKTkdsbE9OWmw4HRsCQUZPTkdsPAMxFD0gT05HbGxPTkdsbFJOEz45CmNtb6nn6IL0z4rS6KvF52NtbGxPTgYoKDAACCgpT05HbGxPTkdsbE9OWmwqDgIUKUFlTkdsbA4bEyMTHw8VOCUbBwgibE9OR2xsUk4TPjkKY21sbE9OFSk/ABsVLykwHxIjOA5OR2xsT05abDgdGwJBRk9OR2wiCho4LyQOAAkpIE9OR2xsT05HbHFPXmpGbE9ORygtGw84LTkbATg+KQ0PCy0iDAtHcWwbHBIpQWVNgsn6i9Xxq/fritz6QWVOR2xsDQIGLycwGQ8lOAoxCyU/G05HbHFPGhU5KWJkR2xsTwMGL2xPTkdsbE9OR2xsT05HbGxSThM+OQpjbWxsT04EIyAwHhUlOgYCAispT05HbGxPU0c4PhoLakZsT05HOD4OABQhJRsxAiIvHRcXOGxPTlpsOB0bAkFGT05HbD8bARUpEwoABD41HxpHbGxPTkdxbBscEilBZU5HbGwNDwQnOR8xAiIvHRcXOGxPTkdscU8aFTkpYmRHbGxPDxIoJRsxCiMoCk5HbGxPTkdsbFJOV0FGT05HbCsDAQUtIDAMDiIgAAk4IiMLC0dxbF9jbWxsT04DLiAGAAxsbE9OR2xsT05HbGxPU0c4PhoLakZsT05HJj8AAEdsbE9OR2xsT05HbGxPTlpsOB0bAkFGT05HbD8fDxMlLQNOR2xsT05HbGxPTkdxbBscEilBZU5HbGwCDx8TPA4cBiAgCgJHbGxPTkdscU9eakZsT05HPzgdCwYhEwMBBihsT05HbGxPTlpsOB0bAkFGTIj7wanlz4/P8Yrk/EFGT05HbCUBHRMtIgwLOCI5Ak5HbHFPXmpGbE9ORzgtDQICEz4AGRRsbE9OR3FsX2NtbGxPTgQjIgELBDgTARsKbGxPTlpsfGJkR2xsTx0TIz4KMQQtPA4NDjg1T1NHfEFlTkdsbAIPHxMiAAoCEyIaA0dsbFJOV0FGT05HbCAGHRMpIjANDy0iAQsLbHFPXmpGRWJkzGJ6/vBjMNoGnkYYT50Aeg==

+ 1 - 0
license.dat@CRLF_lic_op_20240925165611_标准版(单机).cfg

@@ -0,0 +1 @@
+QWVNgNjkiebQpe3WifziqNDPgc3jYmRuPD4ABAIvODAABiEpT05HbHFPhv7WpN/Zgdn8iePJqfb8OFZ+Yl9jbUU5HAsVEyIOAwJsbE9OR2xsUk6B7MuK6eGrxeeB28Sp4vuB0PaA0u5BRmYbFCk+MA8DKD5PTkdsbE9OWmyq88SC7eeK6P5BRmYdAj4lDgI4IjkCDAI+bE9OWmyq88SC7eeK6P5BRkyJ6eOpze2D8+2J78hBRmYNFzkTHABHbGxPTkdsbE9OWmyq88SC7eeK6P5BRmYMBj8pDQEGPigwHQlsbE9OWmyq88SC7eeK6P5BRmYDBi8TDgoDPmxPTkdsbE9OWmwtDQ1dLS4MVAYuL1UPES9BZWcDJT8EMQ4obE9OR2xsT05HcWyJ8s2p7cSL4dVBZWcOPBMOCgM+bE9OR2xsT05HcWyJ8s2p7cSL4dVBZWdEACUMCwk/KYvRxqrNwGNtRSsKADgoLRsLR2xsT05HbGxSTlV8fltDV3thXltqRkUKFhclPgoxAy04Ck5HbGxPU0d1dVZXSn1+Ql1WQUZmAg4vKQEdAhM4Fh4CbGxPTlpsfmJkbiAlDAsJPykwGAI+PwYBCWxxT19qRkUHDxUoExsXFylsT05HbGxPU0d/QWVNg/DNi9b9q8XnTkdsbE9OR2xsT05HbGxPTkdsbE9OR2xsT05HbGxPTkdsbE9jbWxsT04PLWxPTkdsbE9OR2xsT05HcWwbHBIpQWVOR2xsBwcJOGxPTkdsbE9OR2xsT1NHOD4aC2pGbE9ORyo5AwI4OCkXGjglIgsLH2xxTxoVOSliZEdsbE8IEiIvGwcIIhMGAAMpNE9OWmw4HRsCQUZPTkdsLg4aBCQTAgEDKWxPTkdsbFJOEz45CmNtbGxPThcgExwfC2xsT05HbGxPTkdxbBscEilBZU2CxMqK1uSp8OCJ7sRBZU5HbGwOCgMTIgAKAmxsT05HbGxPTkdsbFJOAS0gHAtqRmxPTkctORsBODwtHRoOOCUAAEdsbE9OR3FsGxwSKUFlTkdsbB0LFCM5HQ0CEz0aARMtbE9OR2xsUk4TPjkKY21sbE9OCSk4MA0PLSIBCwtsbE9OR2xsT05abHxiZEdsbE8KBjgtMA8SOCMwHAIuLQMPCS8pT1NHOD4aC2pGb4rr0aj3+YncyKjU2GpGbE9ORy4gDg0MEzsHBxMpEwMHFDhsT05abDgdGwJBRk9OR2whDg1HbGxPTkdsbE9OR2xsT05HcWwbHBIpQWVOR2xsDAELEzwdBxElIAoJAmxsT05HbHFPGhU5KWJkR2xsTxoVLSIcAw44EwoABD41HxpHbGxSThM+OQpjbWxsT04UOCMdCzgpIgwcHjw4T05HbGxPU0c4PhoLakZsT05HLi0MBRI8EwoABD41HxpHbGxPTlpsOB0bAkFGT05HbC0aCg44EwIBAylsT05HbGxPTkdxbF9jbWxsT04AICMNDwsTLgYACyMrMAAIKClPU0d8QWVOR2xsCwwLJSIETkdsbE9OR2xsT05HbHFPGhU5KWJkR2xsTwQUIyJPTkdsbE9OR2xsT05HbGxSThM+OQpjbWxsT04UPC0bBwYgbE9OR2xsT05HbGxPU0c4PhoLakZsT05HIS0XMRctPg4CCykgT05HbGxPTlpsfGJkR2xsTx0TPikOAzggIw4KR2xsT05HbGxSThM+OQpjbW+q8+OCxu2H7dqpxvRjbWxsT04OIj8bDwkvKTAAEiFsT05abHxiZEdsbE8aBi4gCjEVIzscTkdsbE9TR3xBZU5HbGwMAQkiKQwaOCI5Ak5HbGxSTldBRk9OR2w/GwEVKRMMDxctLwYaHmxxT15qRmxPTkchLRcxCSMoCjEJOSFPTkdxbF9jbWxsT04LJT8bCwkTLwcPCSIpA05abHxiZG5BRu9U/D4DoAV+LOpNxJ6f328=

+ 1 - 0
license.dat@CRLF_lic_op_20240925165631_企业版(双机).cfg

@@ -0,0 +1 @@
+QWVNgNjkiebQpe3WifziqNDPgc3jYmRuPD4ABAIvODAABiEpT05HbHFPhv7WpN/Zgdn8iePJqfb8OFZ+Yl9jbUU5HAsVEyIOAwJsbE9OR2xsUk6D8M2L1v2rxeeB28Sp4OKB0PaA0u5BRmYbFCk+MA8DKD5PTkdsbE9OWmyq88SC7eeK6P5BRmYdAj4lDgI4IjkCDAI+bE9OWmyq88SC7eeK6P5BRkyJ6eOpze2D8+2J78hBRmYNFzkTHABHbGxPTkdsbE9OWmyq88SC7eeK6P5BRmYMBj8pDQEGPigwHQlsbE9OWmyq88SC7eeK6P5BRmYDBi8TDgoDPmxPTkdsbE9OWmx9VlxJfXpXQFZ8fEFcR310VQ1XdnxWVFV7dlcKXXwoYmRuKCUcBTglKE9OR2xsT05HbHFPiPvmqc7FgsrVYmRuJTwwDwMoPk9OR2xsT05HbHFPiPvmqc7FgsrVYmREACUMCwk/KYvRxqrNwGNtRSsKADgoLRsLR2xsT05HbGxSTlV8fltDV3thXltqRkUKFhclPgoxAy04Ck5HbGxPU0d1dVZXSn1+Ql1WQUZmAg4vKQEdAhM4Fh4CbGxPTlpsf2JkbiAlDAsJPykwGAI+PwYBCWxxT19qRkUHDxUoExsXFylsT05HbGxPU0d/QWVNg/DNi9b9q8XnTkdsbE9OR2xsT05HbGxPTkdsbE9OR2xsT05HbGxPTkdsbE9jbWxsT04PLWxPTkdsbE9OR2xsT05HcWwbHBIpQWVOR2xsBwcJOGxPTkdsbE9OR2xsT1NHOD4aC2pGbE9ORyo5AwI4OCkXGjglIgsLH2xxTxoVOSliZEdsbE8IEiIvGwcIIhMGAAMpNE9OWmw4HRsCQUZPTkdsLg4aBCQTAgEDKWxPTkdsbFJOEz45CmNtbGxPThcgExwfC2xsT05HbGxPTkdxbBscEilBZU2CxMqK1uSp8OCJ7sRBZU5HbGwOCgMTIgAKAmxsT05HbGxPTkdsbFJOAS0gHAtqRmxPTkctORsBODwtHRoOOCUAAEdsbE9OR3FsGxwSKUFlTkdsbB0LFCM5HQ0CEz0aARMtbE9OR2xsUk4TPjkKY21sbE9OCSk4MA0PLSIBCwtsbE9OR2xsT05abHxiZEdsbE8KBjgtMA8SOCMwHAIuLQMPCS8pT1NHOD4aC2pGb4rr0aj3+YncyKjU2GpGbE9ORy4gDg0MEzsHBxMpEwMHFDhsT05abDgdGwJBRk9OR2whDg1HbGxPTkdsbE9OR2xsT05HcWwbHBIpQWVOR2xsDAELEzwdBxElIAoJAmxsT05HbHFPGhU5KWJkR2xsTxoVLSIcAw44EwoABD41HxpHbGxSThM+OQpjbWxsT04UOCMdCzgpIgwcHjw4T05HbGxPU0c4PhoLakZsT05HLi0MBRI8EwoABD41HxpHbGxPTlpsOB0bAkFGT05HbC0aCg44EwIBAylsT05HbGxPTkdxbF9jbWxsT04AICMNDwsTLgYACyMrMAAIKClPU0d8QWVOR2xsCwwLJSIETkdsbE9OR2xsT05HbHFPGhU5KWJkR2xsTwQUIyJPTkdsbE9OR2xsT05HbGxSThM+OQpjbWxsT04UPC0bBwYgbE9OR2xsT05HbGxPU0c4PhoLakZsT05HIS0XMRctPg4CCykgT05HbGxPTlpsfGJkR2xsTx0TPikOAzggIw4KR2xsT05HbGxSThM+OQpjbW+q8+OCxu2H7dqpxvRjbWxsT04OIj8bDwkvKTAAEiFsT05abHxiZEdsbE8aBi4gCjEVIzscTkdsbE9TR3xBZU5HbGwMAQkiKQwaOCI5Ak5HbGxSTldBRk9OR2w/GwEVKRMMDxctLwYaHmxxT15qRmxPTkchLRcxCSMoCjEJOSFPTkdxbF9jbWxsT04LJT8bCwkTLwcPCSIpA05abHxiZG5BRue5gBYMxuQB6gvgovK/ze8=

+ 25 - 25
static/license_info/bakup/license_info 9.11.html

@@ -1352,7 +1352,7 @@ async function initialize() {
 //获取license展示信息
 function fetchApplications(page, size) {
     
-    fetch(`http://127.0.0.1:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1784,7 +1784,7 @@ function confirmGenerateLicense(id, isParentRow) {
 function generateLicense(id, isParentRow) {
     const payload = isParentRow ? { oa_request_id: id } : { uniqueID: id };
     
-    fetch('http://127.0.0.1:8080/api/admin/GenerateLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/GenerateLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1829,7 +1829,7 @@ function CaptureLicenseOncefunc() {
     });
 
     // 发起 GET 请求的 Promise
-    const fetchPromise = fetch('http://127.0.0.1:8080/api/admin/GetCaptureLicenseOnce', {
+    const fetchPromise = fetch('http://10.28.20.105:8080/api/admin/GetCaptureLicenseOnce', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2006,7 +2006,7 @@ function openUserActionModal(event, data, modalId) {
 
 // 为用户管理界面的每一行添加点击和右键事件监听器
 function fetchUsers() {
-    fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+    fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2051,7 +2051,7 @@ function fetchUsers() {
 
 //查看用户lic历史
 function showUserLicenseHistory() {
-    fetch(`http://127.0.0.1:8080/api/admin/GetlicenseRecordInfoByUser`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetlicenseRecordInfoByUser`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2206,7 +2206,7 @@ function confirmDelete() {
 }
 
 function deleteRow() {
-            fetch(`http://127.0.0.1:8080/api/admin/deleteLicRow`, {
+            fetch(`http://10.28.20.105:8080/api/admin/deleteLicRow`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -2281,7 +2281,7 @@ function saveNewUser() {
         Email: email
     };
 
-    fetch('http://127.0.0.1:8080/api/register', {  // 修改为实际的API路径
+    fetch('http://10.28.20.105:8080/api/register', {  // 修改为实际的API路径
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2307,7 +2307,7 @@ function saveNewUser() {
 
 
 function deleteUser(uniqueID) {
-    fetch('http://127.0.0.1:8080/api/admin/deleteUser', {
+    fetch('http://10.28.20.105:8080/api/admin/deleteUser', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2354,7 +2354,7 @@ function showEmailModal(supportEmail, salesEmail, uniqueID,oa_request_id) {
     document.getElementById('userInputs').innerHTML = ''; // 清空用户输入
 
     // 获取用户信息并填充第一个用户输入框
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2445,7 +2445,7 @@ function addUserInput() {
         .map(select => select.value);
 
     // 获取用户列表并填充到选择框中
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2504,7 +2504,7 @@ function updateUserOptions() {
         defaultOption.textContent = '请选择用户';
         select.appendChild(defaultOption);
 
-        fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+        fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2571,7 +2571,7 @@ function saveLicenseChanges() {
         NodeCount: parseInt(form.nodeCount.value, 10), // 将 NodeCount 转换为整数
     };
     
-    fetch(`http://127.0.0.1:8080/api/admin/UpdateLicense`, {
+    fetch(`http://10.28.20.105:8080/api/admin/UpdateLicense`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2605,7 +2605,7 @@ function updateUserOptions() {
         const currentValue = select.value;  // 保留当前选择值
         select.innerHTML = ''; // 清空现有选项
         
-        fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+        fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2698,7 +2698,7 @@ function sendEmail() {
     };
     console.log('requestData:', requestData);
 
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2733,7 +2733,7 @@ function sendEmail() {
 
 
 function showDistributionHistory() {
-    fetch('http://127.0.0.1:8080/api/admin/GetlicenseRecord', {
+    fetch('http://10.28.20.105:8080/api/admin/GetlicenseRecord', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2893,7 +2893,7 @@ function showRoleManagement() {
 }
 
 function fetchRoles() {
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3235,7 +3235,7 @@ function getCheckboxOptions(selectedPermissions) {
 function fetchRoleInfo(roleName, callback) {
     console.log(`fetchRoleInfo called with roleName: ${roleName}`);
     
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3309,7 +3309,7 @@ function saveRoleChanges(roleId) {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/UpdateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/UpdateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3338,7 +3338,7 @@ function deleteRole(roleName) {
         return;
     }
 
-    fetch('http://127.0.0.1:8080/api/admin/DeleteRole', {
+    fetch('http://10.28.20.105:8080/api/admin/DeleteRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3448,7 +3448,7 @@ function createNewRole() {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/CreateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/CreateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3508,7 +3508,7 @@ function showEditUserForm() {
         form.appendChild(roleSelectDiv);
 
         // 获取角色列表并填充到选择框中
-        fetch('http://127.0.0.1:8080/api/admin/GetRoleNames', {
+        fetch('http://10.28.20.105:8080/api/admin/GetRoleNames', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -3554,7 +3554,7 @@ function saveUserChanges() {
                 Role: formData.get('role')
             };
 
-            fetch(`http://127.0.0.1:8080/api/admin/updateUser`, {
+            fetch(`http://10.28.20.105:8080/api/admin/updateUser`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -3583,7 +3583,7 @@ function toggleUserInfo() {
     const windowWidth = window.innerWidth; // 浏览器窗口的宽度
 
     if (userModal.style.display === 'none' || userModal.style.display === '') {
-        fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+        fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -3736,7 +3736,7 @@ function toggleSidebar() {
 
 
  function fetchUsername() {
-    fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+    fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3776,7 +3776,7 @@ function toggleSidebar() {
 }
 
 function fetchPermissionsByRole(role) {
-    return fetch(`http://127.0.0.1:8080/api/admin/GetSelfRoles`, {
+    return fetch(`http://10.28.20.105:8080/api/admin/GetSelfRoles`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,

+ 25 - 25
static/license_info/bakup/license_info copy 2.html

@@ -1362,7 +1362,7 @@ async function initialize() {
 //获取license展示信息
 function fetchApplications(page, size) {
     
-    fetch(`http://127.0.0.1:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1806,7 +1806,7 @@ function confirmGenerateLicense(id, isParentRow) {
 function generateLicense(id, isParentRow) {
     const payload = isParentRow ? { oa_request_id: id } : { uniqueID: id };
     
-    fetch('http://127.0.0.1:8080/api/admin/GenerateLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/GenerateLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1862,7 +1862,7 @@ function CaptureLicenseOncefunc() {
     });
 
     // 发起 GET 请求的 Promise
-    const fetchPromise = fetch('http://127.0.0.1:8080/api/admin/GetCaptureLicenseOnce', {
+    const fetchPromise = fetch('http://10.28.20.105:8080/api/admin/GetCaptureLicenseOnce', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2039,7 +2039,7 @@ function openUserActionModal(event, data, modalId) {
 
 // 为用户管理界面的每一行添加点击和右键事件监听器
 function fetchUsers() {
-    fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+    fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2084,7 +2084,7 @@ function fetchUsers() {
 
 //查看用户lic历史
 function showUserLicenseHistory() {
-    fetch(`http://127.0.0.1:8080/api/admin/GetlicenseRecordInfoByUser`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetlicenseRecordInfoByUser`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2239,7 +2239,7 @@ function confirmDelete() {
 }
 
 function deleteRow() {
-            fetch(`http://127.0.0.1:8080/api/admin/deleteLicRow`, {
+            fetch(`http://10.28.20.105:8080/api/admin/deleteLicRow`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -2314,7 +2314,7 @@ function saveNewUser() {
         Email: email
     };
 
-    fetch('http://127.0.0.1:8080/api/register', {  // 修改为实际的API路径
+    fetch('http://10.28.20.105:8080/api/register', {  // 修改为实际的API路径
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2340,7 +2340,7 @@ function saveNewUser() {
 
 
 function deleteUser(uniqueID) {
-    fetch('http://127.0.0.1:8080/api/admin/deleteUser', {
+    fetch('http://10.28.20.105:8080/api/admin/deleteUser', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2387,7 +2387,7 @@ function showEmailModal(supportEmail, salesEmail, uniqueID,oa_request_id) {
     document.getElementById('userInputs').innerHTML = ''; // 清空用户输入
 
     // 获取用户信息并填充第一个用户输入框
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2480,7 +2480,7 @@ function addUserInput() {
         .map(select => select.value);
 
     // 获取用户列表并填充到选择框中
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2539,7 +2539,7 @@ function updateUserOptions() {
         defaultOption.textContent = '请选择用户';
         select.appendChild(defaultOption);
 
-        fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+        fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2606,7 +2606,7 @@ function saveLicenseChanges() {
         NodeCount: parseInt(form.nodeCount.value, 10), // 将 NodeCount 转换为整数
     };
     
-    fetch(`http://127.0.0.1:8080/api/admin/UpdateLicense`, {
+    fetch(`http://10.28.20.105:8080/api/admin/UpdateLicense`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2640,7 +2640,7 @@ function updateUserOptions() {
         const currentValue = select.value;  // 保留当前选择值
         select.innerHTML = ''; // 清空现有选项
         
-        fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+        fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2738,7 +2738,7 @@ function sendEmail() {
     };
     console.log('requestData:', requestData);
 
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2779,7 +2779,7 @@ function sendEmail() {
 
 
 function showDistributionHistory() {
-    fetch('http://127.0.0.1:8080/api/admin/GetlicenseRecord', {
+    fetch('http://10.28.20.105:8080/api/admin/GetlicenseRecord', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2939,7 +2939,7 @@ function showRoleManagement() {
 }
 
 function fetchRoles() {
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3281,7 +3281,7 @@ function getCheckboxOptions(selectedPermissions) {
 function fetchRoleInfo(roleName, callback) {
     console.log(`fetchRoleInfo called with roleName: ${roleName}`);
     
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3355,7 +3355,7 @@ function saveRoleChanges(roleId) {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/UpdateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/UpdateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3384,7 +3384,7 @@ function deleteRole(roleName) {
         return;
     }
 
-    fetch('http://127.0.0.1:8080/api/admin/DeleteRole', {
+    fetch('http://10.28.20.105:8080/api/admin/DeleteRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3494,7 +3494,7 @@ function createNewRole() {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/CreateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/CreateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3554,7 +3554,7 @@ function showEditUserForm() {
         form.appendChild(roleSelectDiv);
 
         // 获取角色列表并填充到选择框中
-        fetch('http://127.0.0.1:8080/api/admin/GetRoleNames', {
+        fetch('http://10.28.20.105:8080/api/admin/GetRoleNames', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -3600,7 +3600,7 @@ function saveUserChanges() {
                 Role: formData.get('role')
             };
 
-            fetch(`http://127.0.0.1:8080/api/admin/updateUser`, {
+            fetch(`http://10.28.20.105:8080/api/admin/updateUser`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -3629,7 +3629,7 @@ function toggleUserInfo() {
     const windowWidth = window.innerWidth; // 浏览器窗口的宽度
 
     if (userModal.style.display === 'none' || userModal.style.display === '') {
-        fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+        fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -3782,7 +3782,7 @@ function toggleSidebar() {
 
 
  function fetchUsername() {
-    fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+    fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3822,7 +3822,7 @@ function toggleSidebar() {
 }
 
 function fetchPermissionsByRole(role) {
-    return fetch(`http://127.0.0.1:8080/api/admin/GetSelfRoles`, {
+    return fetch(`http://10.28.20.105:8080/api/admin/GetSelfRoles`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,

+ 25 - 25
static/license_info/bakup/license_info copy 主行分页展示版本.html

@@ -1352,7 +1352,7 @@ async function initialize() {
 //获取license展示信息
 function fetchApplications(page, size) {
     
-    fetch(`http://127.0.0.1:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1784,7 +1784,7 @@ function confirmGenerateLicense(id, isParentRow) {
 function generateLicense(id, isParentRow) {
     const payload = isParentRow ? { oa_request_id: id } : { uniqueID: id };
     
-    fetch('http://127.0.0.1:8080/api/admin/GenerateLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/GenerateLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1829,7 +1829,7 @@ function CaptureLicenseOncefunc() {
     });
 
     // 发起 GET 请求的 Promise
-    const fetchPromise = fetch('http://127.0.0.1:8080/api/admin/GetCaptureLicenseOnce', {
+    const fetchPromise = fetch('http://10.28.20.105:8080/api/admin/GetCaptureLicenseOnce', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2029,7 +2029,7 @@ function openUserActionModal(event, data, modalId) {
 
 // 为用户管理界面的每一行添加点击和右键事件监听器
 function fetchUsers() {
-    fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+    fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2074,7 +2074,7 @@ function fetchUsers() {
 
 //查看用户lic历史
 function showUserLicenseHistory() {
-    fetch(`http://127.0.0.1:8080/api/admin/GetlicenseRecordInfoByUser`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetlicenseRecordInfoByUser`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2229,7 +2229,7 @@ function confirmDelete() {
 }
 
 function deleteRow() {
-            fetch(`http://127.0.0.1:8080/api/admin/deleteLicRow`, {
+            fetch(`http://10.28.20.105:8080/api/admin/deleteLicRow`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -2304,7 +2304,7 @@ function saveNewUser() {
         Email: email
     };
 
-    fetch('http://127.0.0.1:8080/api/register', {  // 修改为实际的API路径
+    fetch('http://10.28.20.105:8080/api/register', {  // 修改为实际的API路径
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2330,7 +2330,7 @@ function saveNewUser() {
 
 
 function deleteUser(uniqueID) {
-    fetch('http://127.0.0.1:8080/api/admin/deleteUser', {
+    fetch('http://10.28.20.105:8080/api/admin/deleteUser', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2377,7 +2377,7 @@ function showEmailModal(supportEmail, salesEmail, uniqueID,oa_request_id) {
     document.getElementById('userInputs').innerHTML = ''; // 清空用户输入
 
     // 获取用户信息并填充第一个用户输入框
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2468,7 +2468,7 @@ function addUserInput() {
         .map(select => select.value);
 
     // 获取用户列表并填充到选择框中
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2527,7 +2527,7 @@ function updateUserOptions() {
         defaultOption.textContent = '请选择用户';
         select.appendChild(defaultOption);
 
-        fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+        fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2594,7 +2594,7 @@ function saveLicenseChanges() {
         NodeCount: parseInt(form.nodeCount.value, 10), // 将 NodeCount 转换为整数
     };
     
-    fetch(`http://127.0.0.1:8080/api/admin/UpdateLicense`, {
+    fetch(`http://10.28.20.105:8080/api/admin/UpdateLicense`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2628,7 +2628,7 @@ function updateUserOptions() {
         const currentValue = select.value;  // 保留当前选择值
         select.innerHTML = ''; // 清空现有选项
         
-        fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+        fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2721,7 +2721,7 @@ function sendEmail() {
     };
     console.log('requestData:', requestData);
 
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2756,7 +2756,7 @@ function sendEmail() {
 
 
 function showDistributionHistory() {
-    fetch('http://127.0.0.1:8080/api/admin/GetlicenseRecord', {
+    fetch('http://10.28.20.105:8080/api/admin/GetlicenseRecord', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2916,7 +2916,7 @@ function showRoleManagement() {
 }
 
 function fetchRoles() {
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3258,7 +3258,7 @@ function getCheckboxOptions(selectedPermissions) {
 function fetchRoleInfo(roleName, callback) {
     console.log(`fetchRoleInfo called with roleName: ${roleName}`);
     
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3332,7 +3332,7 @@ function saveRoleChanges(roleId) {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/UpdateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/UpdateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3361,7 +3361,7 @@ function deleteRole(roleName) {
         return;
     }
 
-    fetch('http://127.0.0.1:8080/api/admin/DeleteRole', {
+    fetch('http://10.28.20.105:8080/api/admin/DeleteRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3471,7 +3471,7 @@ function createNewRole() {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/CreateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/CreateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3531,7 +3531,7 @@ function showEditUserForm() {
         form.appendChild(roleSelectDiv);
 
         // 获取角色列表并填充到选择框中
-        fetch('http://127.0.0.1:8080/api/admin/GetRoleNames', {
+        fetch('http://10.28.20.105:8080/api/admin/GetRoleNames', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -3577,7 +3577,7 @@ function saveUserChanges() {
                 Role: formData.get('role')
             };
 
-            fetch(`http://127.0.0.1:8080/api/admin/updateUser`, {
+            fetch(`http://10.28.20.105:8080/api/admin/updateUser`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -3606,7 +3606,7 @@ function toggleUserInfo() {
     const windowWidth = window.innerWidth; // 浏览器窗口的宽度
 
     if (userModal.style.display === 'none' || userModal.style.display === '') {
-        fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+        fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -3759,7 +3759,7 @@ function toggleSidebar() {
 
 
  function fetchUsername() {
-    fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+    fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3799,7 +3799,7 @@ function toggleSidebar() {
 }
 
 function fetchPermissionsByRole(role) {
-    return fetch(`http://127.0.0.1:8080/api/admin/GetSelfRoles`, {
+    return fetch(`http://10.28.20.105:8080/api/admin/GetSelfRoles`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,

+ 24 - 24
static/license_info/bakup/license_info copy.html

@@ -1290,7 +1290,7 @@ function checkPermission(permission) {
 
 //获取license展示信息
 function fetchApplications(page, size) {
-    fetch(`http://127.0.0.1:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1650,7 +1650,7 @@ function confirmGenerateLicense(id, isParentRow) {
 function generateLicense(id, isParentRow) {
     const payload = isParentRow ? { oa_request_id: id } : { uniqueID: id };
     
-    fetch('http://127.0.0.1:8080/api/admin/GenerateLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/GenerateLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1809,7 +1809,7 @@ function openUserActionModal(event, data, modalId) {
 
 // 为用户管理界面的每一行添加点击和右键事件监听器
 function fetchUsers() {
-    fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+    fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1854,7 +1854,7 @@ function fetchUsers() {
 
 //查看用户lic历史
 function showUserLicenseHistory() {
-    fetch(`http://127.0.0.1:8080/api/admin/GetlicenseRecordInfoByUser`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetlicenseRecordInfoByUser`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2054,7 +2054,7 @@ function saveNewUser() {
         Email: email
     };
 
-    fetch('http://127.0.0.1:8080/api/register', {  // 修改为实际的API路径
+    fetch('http://10.28.20.105:8080/api/register', {  // 修改为实际的API路径
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2080,7 +2080,7 @@ function saveNewUser() {
 
 
 function deleteUser(uniqueID) {
-    fetch('http://127.0.0.1:8080/api/admin/deleteUser', {
+    fetch('http://10.28.20.105:8080/api/admin/deleteUser', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2110,7 +2110,7 @@ function confirmDeleteUser(uniqueID) {
 }
 
  function deleteRow() {
-            fetch(`http://127.0.0.1:8080/api/admin/deleteLicRow`, {
+            fetch(`http://10.28.20.105:8080/api/admin/deleteLicRow`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -2149,7 +2149,7 @@ function showEmailModal(supportEmail, salesEmail, uniqueID) {
     document.getElementById('userInputs').innerHTML = ''; // 清空用户输入
 
     // 获取用户信息并填充第一个用户输入框
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2240,7 +2240,7 @@ function addUserInput() {
         .map(select => select.value);
 
     // 获取用户列表并填充到选择框中
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2299,7 +2299,7 @@ function updateUserOptions() {
         defaultOption.textContent = '请选择用户';
         select.appendChild(defaultOption);
 
-        fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+        fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2366,7 +2366,7 @@ function saveLicenseChanges() {
         NodeCount: parseInt(form.nodeCount.value, 10), // 将 NodeCount 转换为整数
     };
     
-    fetch(`http://127.0.0.1:8080/api/admin/UpdateLicense`, {
+    fetch(`http://10.28.20.105:8080/api/admin/UpdateLicense`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2400,7 +2400,7 @@ function updateUserOptions() {
         const currentValue = select.value;  // 保留当前选择值
         select.innerHTML = ''; // 清空现有选项
         
-        fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+        fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2492,7 +2492,7 @@ function sendEmail() {
     };
     console.log('requestData:', requestData);
 
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2527,7 +2527,7 @@ function sendEmail() {
 
 
 function showDistributionHistory() {
-    fetch('http://127.0.0.1:8080/api/admin/GetlicenseRecord', {
+    fetch('http://10.28.20.105:8080/api/admin/GetlicenseRecord', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2687,7 +2687,7 @@ function showRoleManagement() {
 }
 
 function fetchRoles() {
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3029,7 +3029,7 @@ function getCheckboxOptions(selectedPermissions) {
 function fetchRoleInfo(roleName, callback) {
     console.log(`fetchRoleInfo called with roleName: ${roleName}`);
     
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3103,7 +3103,7 @@ function saveRoleChanges(roleId) {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/UpdateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/UpdateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3132,7 +3132,7 @@ function deleteRole(roleName) {
         return;
     }
 
-    fetch('http://127.0.0.1:8080/api/admin/DeleteRole', {
+    fetch('http://10.28.20.105:8080/api/admin/DeleteRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3242,7 +3242,7 @@ function createNewRole() {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/CreateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/CreateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3302,7 +3302,7 @@ function showEditUserForm() {
     extraInfoContent.appendChild(form);
 
     // 获取角色列表并填充到选择框中
-    fetch('http://127.0.0.1:8080/api/admin/GetRoleNames', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoleNames', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3336,7 +3336,7 @@ function saveUserChanges() {
                 Role: formData.get('role')
             };
 
-            fetch(`http://127.0.0.1:8080/api/admin/updateUser`, {
+            fetch(`http://10.28.20.105:8080/api/admin/updateUser`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -3365,7 +3365,7 @@ function toggleUserInfo() {
     const windowWidth = window.innerWidth; // 浏览器窗口的宽度
 
     if (userModal.style.display === 'none' || userModal.style.display === '') {
-        fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+        fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -3502,7 +3502,7 @@ function toggleSidebar() {
 
 
  function fetchUsername() {
-    fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+    fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -3538,7 +3538,7 @@ function toggleSidebar() {
 }
 
 function fetchPermissionsByRole(role) {
-    return fetch(`http://127.0.0.1:8080/api/admin/GetSelfRoles`, {
+    return fetch(`http://10.28.20.105:8080/api/admin/GetSelfRoles`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,

+ 5 - 5
static/license_info/license_info.js

@@ -130,7 +130,7 @@ function CaptureLicenseOncefunc() {
     });
 
     // 发起 GET 请求的 Promise
-    const fetchPromise = fetch('http://127.0.0.1:8080/api/admin/GetCaptureLicenseOnce', {
+    const fetchPromise = fetch('http://10.28.20.105:8080/api/admin/GetCaptureLicenseOnce', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${authToken}`, // 假设 token 已定义
@@ -287,7 +287,7 @@ roleManagementLink.addEventListener('click', function(event) {
 // 获取数据函数
 async function fetchLicenseData(page, pageSize) {
     try {
-        const response = await fetch(`http://127.0.0.1:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${pageSize}`, {
+        const response = await fetch(`http://10.28.20.105:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${pageSize}`, {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${authToken}`,
@@ -523,7 +523,7 @@ initializeScrollListeners()
 ///-----------获取登录用户信息----------------------------------------
 async function fetchUsername() {
     try {
-        const response = await fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+        const response = await fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${authToken}`,
@@ -555,7 +555,7 @@ fetchUsername();
 // 将 fetchPermissionsByRole 转换为异步函数
 async function fetchPermissionsByRole(role) {
     try {
-        const response = await fetch(`http://127.0.0.1:8080/api/admin/GetSelfRoles`, {
+        const response = await fetch(`http://10.28.20.105:8080/api/admin/GetSelfRoles`, {
             method: 'POST',
             headers: {
                 'Authorization': `Bearer ${authToken}`,
@@ -674,7 +674,7 @@ function filterContent() {
 
     console.log("requestData",requestData);
     // 发送 POST 请求到接口
-    fetch('http://127.0.0.1:8080/api/admin/GetConditionalSearch', {
+    fetch('http://10.28.20.105:8080/api/admin/GetConditionalSearch', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${authToken}`,

+ 5 - 5
static/license_info/license_info_distribution.js

@@ -7,7 +7,7 @@ function showDistributeModal(item) {
 
     let usersInfo;
     // 获取用户信息并填充第一个用户输入框
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${authToken}`, // 确保autoToken是您获取的用户授权令牌
@@ -335,7 +335,7 @@ function distributeEmails(item, emails, usersInfo) {
     console.log('即将发送的数据:', postData);
     showLoadingModal("正在分发邮箱中...");
     // 发送 POST 请求到 DistributeLicenseToEmail 接口
-    fetch('http://127.0.0.1:8080/api/admin/DistributeLicenseToEmail', {
+    fetch('http://10.28.20.105:8080/api/admin/DistributeLicenseToEmail', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${authToken}`, // 使用 authToken
@@ -380,7 +380,7 @@ function distributeUser(item, uniqueIDArray, usernameArray, accountArray) {
     console.log('Sending user data:', postData);
     showLoadingModal("正在分发用户中...");
     // 发送 POST 请求到 DistributeLicenseToUser 接口
-    fetch('http://127.0.0.1:8080/api/admin/DistributeLicenseToUser', {
+    fetch('http://10.28.20.105:8080/api/admin/DistributeLicenseToUser', {
         method: 'POST',
         headers: {
             'Content-Type': 'application/json',
@@ -417,7 +417,7 @@ function distributeUser(item, uniqueIDArray, usernameArray, accountArray) {
 
 //--------------分发历史模态框------------------------
 // function showDistributionHistory(selectedRowData) {
-//     fetch('http://127.0.0.1:8080/api/admin/GetlicenseRecord', {
+//     fetch('http://10.28.20.105:8080/api/admin/GetlicenseRecord', {
 //         method: 'POST',
 //         headers: {
 //             'Authorization': `Bearer ${authToken}`,
@@ -468,7 +468,7 @@ function distributeUser(item, uniqueIDArray, usernameArray, accountArray) {
 // }
 
 function showDistributionHistory(selectedRowData) {
-    fetch('http://127.0.0.1:8080/api/admin/GetlicenseRecord', {
+    fetch('http://10.28.20.105:8080/api/admin/GetlicenseRecord', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${authToken}`,

+ 1 - 1
static/license_info/license_info_modal.js

@@ -367,7 +367,7 @@ function generateLicense(id, isParentRow) {
    : { uniqueID: parseInt(id, 10) };  // 将 id 转换为整数
 
     console.log("generateLicense",payload ,id, isParentRow)
-    fetch('http://127.0.0.1:8080/api/admin/GenerateLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/GenerateLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${authToken}`,

+ 26 - 26
static/license_info/old/old_license_info.html

@@ -382,7 +382,7 @@ async function initialize() {
 //获取license展示信息
 function fetchApplications(page, size) {
     
-    fetch(`http://127.0.0.1:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetAllLicenseInfo?page=${page}&pageSize=${size}`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -845,7 +845,7 @@ function confirmGenerateLicense(id, isParentRow) {
 function generateLicense(id, isParentRow) {
     const payload = isParentRow ? { oa_request_id: id } : { uniqueID: id };
     
-    fetch('http://127.0.0.1:8080/api/admin/GenerateLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/GenerateLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -901,7 +901,7 @@ function CaptureLicenseOncefunc() {
     });
 
     // 发起 GET 请求的 Promise
-    const fetchPromise = fetch('http://127.0.0.1:8080/api/admin/GetCaptureLicenseOnce', {
+    const fetchPromise = fetch('http://10.28.20.105:8080/api/admin/GetCaptureLicenseOnce', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1116,7 +1116,7 @@ function openUserActionModal(event, data, modalId) {
 
 // 为用户管理界面的每一行添加点击和右键事件监听器
 function fetchUsers() {
-    fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+    fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1161,7 +1161,7 @@ function fetchUsers() {
 
 //查看用户lic历史
 function showUserLicenseHistory() {
-    fetch(`http://127.0.0.1:8080/api/admin/GetlicenseRecordInfoByUser`, {
+    fetch(`http://10.28.20.105:8080/api/admin/GetlicenseRecordInfoByUser`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1316,7 +1316,7 @@ function confirmDelete() {
 }
 
 function deleteRow() {
-            fetch(`http://127.0.0.1:8080/api/admin/deleteLicRow`, {
+            fetch(`http://10.28.20.105:8080/api/admin/deleteLicRow`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -1391,7 +1391,7 @@ function saveNewUser() {
         Email: email
     };
 
-    fetch('http://127.0.0.1:8080/api/register', {  // 修改为实际的API路径
+    fetch('http://10.28.20.105:8080/api/register', {  // 修改为实际的API路径
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1417,7 +1417,7 @@ function saveNewUser() {
 
 
 function deleteUser(uniqueID) {
-    fetch('http://127.0.0.1:8080/api/admin/deleteUser', {
+    fetch('http://10.28.20.105:8080/api/admin/deleteUser', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1455,7 +1455,7 @@ function distributeLicense(oa_id,supportEmail, salesEmail, uniqueID,oa_request_i
     showLoadingModal('正在分发...');
 
     // 将数据作为查询参数传递给 GET 请求
-    const url = `http://127.0.0.1:8080/api/admin/GetDistributeButtenCheckController?oa_request_id=${oa_id}`;
+    const url = `http://10.28.20.105:8080/api/admin/GetDistributeButtenCheckController?oa_request_id=${oa_id}`;
 
     // 向后端发送 GET 请求
     fetch(url, {
@@ -1504,7 +1504,7 @@ function showEmailModal(supportEmail, salesEmail, uniqueID,oa_request_id) {
     document.getElementById('userInputs').innerHTML = ''; // 清空用户输入
 
     // 获取用户信息并填充第一个用户输入框
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1597,7 +1597,7 @@ function addUserInput() {
         .map(select => select.value);
 
     // 获取用户列表并填充到选择框中
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1656,7 +1656,7 @@ function updateUserOptions() {
         defaultOption.textContent = '请选择用户';
         select.appendChild(defaultOption);
 
-        fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+        fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -1723,7 +1723,7 @@ function saveLicenseChanges() {
         NodeCount: parseInt(form.nodeCount.value, 10), // 将 NodeCount 转换为整数
     };
     
-    fetch(`http://127.0.0.1:8080/api/admin/UpdateLicense`, {
+    fetch(`http://10.28.20.105:8080/api/admin/UpdateLicense`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1757,7 +1757,7 @@ function updateUserOptions() {
         const currentValue = select.value;  // 保留当前选择值
         select.innerHTML = ''; // 清空现有选项
         
-        fetch('http://127.0.0.1:8080/api/admin/distributeLicenseByUserInfo', {
+        fetch('http://10.28.20.105:8080/api/admin/distributeLicenseByUserInfo', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -1857,7 +1857,7 @@ function sendEmail() {
     };
     console.log('requestData:', requestData);
 
-    fetch('http://127.0.0.1:8080/api/admin/distributeLicense', {
+    fetch('http://10.28.20.105:8080/api/admin/distributeLicense', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -1898,7 +1898,7 @@ function sendEmail() {
 
 
 function showDistributionHistory() {
-    fetch('http://127.0.0.1:8080/api/admin/GetlicenseRecord', {
+    fetch('http://10.28.20.105:8080/api/admin/GetlicenseRecord', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2082,7 +2082,7 @@ function showRoleManagement() {
 }
 
 function fetchRoles() {
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2424,7 +2424,7 @@ function getCheckboxOptions(selectedPermissions) {
 function fetchRoleInfo(roleName, callback) {
     console.log(`fetchRoleInfo called with roleName: ${roleName}`);
     
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2498,7 +2498,7 @@ function saveRoleChanges(roleId) {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/UpdateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/UpdateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2527,7 +2527,7 @@ function deleteRole(roleName) {
         return;
     }
 
-    fetch('http://127.0.0.1:8080/api/admin/DeleteRole', {
+    fetch('http://10.28.20.105:8080/api/admin/DeleteRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2637,7 +2637,7 @@ function createNewRole() {
         Permissions: selectedPermissions
     };
 
-    fetch('http://127.0.0.1:8080/api/admin/CreateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/CreateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2697,7 +2697,7 @@ function showEditUserForm() {
         form.appendChild(roleSelectDiv);
 
         // 获取角色列表并填充到选择框中
-        fetch('http://127.0.0.1:8080/api/admin/GetRoleNames', {
+        fetch('http://10.28.20.105:8080/api/admin/GetRoleNames', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2743,7 +2743,7 @@ function saveUserChanges() {
                 Role: formData.get('role')
             };
 
-            fetch(`http://127.0.0.1:8080/api/admin/updateUser`, {
+            fetch(`http://10.28.20.105:8080/api/admin/updateUser`, {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`,
@@ -2772,7 +2772,7 @@ function toggleUserInfo() {
     const windowWidth = window.innerWidth; // 浏览器窗口的宽度
 
     if (userModal.style.display === 'none' || userModal.style.display === '') {
-        fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+        fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${token}`,
@@ -2925,7 +2925,7 @@ function toggleSidebar() {
 
 
  function fetchUsername() {
-    fetch(`http://127.0.0.1:8080/api/admin/userInfo`, {
+    fetch(`http://10.28.20.105:8080/api/admin/userInfo`, {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${token}`,
@@ -2965,7 +2965,7 @@ function toggleSidebar() {
 }
 
 function fetchPermissionsByRole(role) {
-    return fetch(`http://127.0.0.1:8080/api/admin/GetSelfRoles`, {
+    return fetch(`http://10.28.20.105:8080/api/admin/GetSelfRoles`, {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${token}`,

+ 2 - 2
static/login/login.js

@@ -1,5 +1,5 @@
 document.addEventListener('DOMContentLoaded', () => {
-    fetch('http://127.0.0.1:8080/api/image')
+    fetch('http://10.28.20.105:8080/api/image')
         .then(response => response.blob())
         .then(imageBlob => {
             const imageObjectURL = URL.createObjectURL(imageBlob);
@@ -17,7 +17,7 @@ async function login(event) {
     const password = document.getElementById('password').value;
 
     try {
-        const response = await fetch('http://127.0.0.1:8080/api/login', {
+        const response = await fetch('http://10.28.20.105:8080/api/login', {
             method: 'POST',
             headers: {
                 'Content-Type': 'application/json'

+ 4 - 4
static/role/role.js

@@ -18,7 +18,7 @@ document.getElementById('CreateRoleModa').addEventListener('submit', function(ev
 
 function fetchRoles() {
     
-    fetch('http://127.0.0.1:8080/api/admin/GetRoles', {
+    fetch('http://10.28.20.105:8080/api/admin/GetRoles', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${authToken}`,
@@ -341,7 +341,7 @@ function modifyRole(roleId) {
     };
 
     // 发送修改请求
-    fetch('http://127.0.0.1:8080/api/admin/UpdateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/UpdateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${authToken}`,
@@ -373,7 +373,7 @@ function modifyRole(roleId) {
 // 示例的删除角色函数
 function deleteRole(roleName) {
     if (confirm(`确定要删除角色:${roleName} 吗?`)) {
-        fetch('http://127.0.0.1:8080/api/admin/DeleteRole', {
+        fetch('http://10.28.20.105:8080/api/admin/DeleteRole', {
             method: 'POST',
             headers: {
                 'Authorization': `Bearer ${authToken}`,
@@ -553,7 +553,7 @@ function createRole() {
     };
     console.log("requestBody", requestBody);
 
-    fetch('http://127.0.0.1:8080/api/admin/CreateRole', {
+    fetch('http://10.28.20.105:8080/api/admin/CreateRole', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${authToken}`,

+ 1 - 1
static/upload_xlsx/script.js

@@ -46,7 +46,7 @@ document.addEventListener('DOMContentLoaded', () => {
 
             const token = localStorage.getItem('Authorization');
 
-            const response = await fetch('http://127.0.0.1:8080/api/admin/upfile', {
+            const response = await fetch('http://10.28.20.105:8080/api/admin/upfile', {
                 method: 'POST',
                 headers: {
                     'Authorization': `Bearer ${token}`

+ 5 - 5
static/user/user.js

@@ -37,7 +37,7 @@ document.getElementById("addUserButton").addEventListener('click', function() {
 fetchUsers();
 function fetchUsers() {
     console.log('Fetching users...');
-    fetch('http://127.0.0.1:8080/api/admin/userInfoAll', {
+    fetch('http://10.28.20.105:8080/api/admin/userInfoAll', {
         method: 'GET',
         headers: {
             'Authorization': `Bearer ${authToken}`,
@@ -133,7 +133,7 @@ function editUser(user) {
     // 检查权限并填充角色选择框
     if (currentUserPermissions.includes('update_role')) {
         roleSelectDiv.style.display = "block";
-        fetch('http://127.0.0.1:8080/api/admin/GetRoleNames', {
+        fetch('http://10.28.20.105:8080/api/admin/GetRoleNames', {
             method: 'GET',
             headers: {
                 'Authorization': `Bearer ${authToken}`,
@@ -180,7 +180,7 @@ function editUser(user) {
         };
 
         // API 请求保存用户信息
-        fetch('http://127.0.0.1:8080/api/admin/updateUser', {
+        fetch('http://10.28.20.105:8080/api/admin/updateUser', {
             method: 'POST',
             headers: {
                 'Authorization': `Bearer ${authToken}`,
@@ -216,7 +216,7 @@ document.getElementById("editUserButton").onclick = () => {
 //删除用户
 function deleteUser(user) {
     const uniqueID = user.UniqueID; // 获取用户的唯一ID
-    fetch('http://127.0.0.1:8080/api/admin/deleteUser', {
+    fetch('http://10.28.20.105:8080/api/admin/deleteUser', {
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${authToken}`,
@@ -313,7 +313,7 @@ function saveNewUser() {
     };
 
     // 发起请求保存新用户
-    fetch('http://127.0.0.1:8080/api/register', {  // 修改为实际的API路径
+    fetch('http://10.28.20.105:8080/api/register', {  // 修改为实际的API路径
         method: 'POST',
         headers: {
             'Authorization': `Bearer ${authToken}`,  // 确保 authToken 是有效的

+ 2 - 2
支持库建表语句.sql

@@ -80,8 +80,8 @@ CREATE TABLE License_generate_Info (
     OA_ID INTEGER COMMENT 'oa 一行的ID',
     License_UniqueID VARCHAR(36) COMMENT 'LicenseApplication表的唯一值ID',
     License_Flage VARCHAR(255) COMMENT 'License分发状态',
-    lic1 VARCHAR(255) COMMENT '主License',
-    lic2 VARCHAR(255) COMMENT '副License',
+    lic1 VARCHAR COMMENT '主License',
+    lic2 VARCHAR COMMENT '副License',
     Creator_generate DATETIME COMMENT '生成时间',
     CONSTRAINT FK_LicenseUniqueID FOREIGN KEY (License_UniqueID)
     REFERENCES target_OA_license (Unique_ID)