siked 2 лет назад
Родитель
Сommit
c7ac6ddb59


+ 97 - 0
controllers/Data.go

@@ -1087,3 +1087,100 @@ func (c *DataController) Raw() {
 	c.ServeJSON()
 	return
 }
+
+// -------------------------------------------------      3D视图 - HTML     -------------------------------------------------
+func (c *DataController) DataView3d_html() {
+	// 验证登录
+	b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !b_ {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
+		c.ServeJSON()
+		return
+	}
+	c.Data["Admin_r"] = admin_r
+	v, err := c.GetInt("v") // 强行阅览
+
+	if admin_r.Admin_power != 6 || err == nil {
+		Htmlv3d := ""
+		switch v {
+		case 0:
+			Htmlv3d = admin_r.Admin_panel_v3d
+			break
+		case 1:
+			Htmlv3d = admin_r.Admin_panel_v3d1
+			break
+		case 2:
+			Htmlv3d = admin_r.Admin_panel_v3d2
+			break
+		case 3:
+			Htmlv3d = admin_r.Admin_panel_v3d3
+			break
+		case 4:
+			Htmlv3d = admin_r.Admin_panel_v3d4
+			break
+		case 5:
+			Htmlv3d = admin_r.Admin_panel_v3d5
+			break
+
+		default:
+			Htmlv3d = admin_r.Admin_panel_v3d
+			break
+		}
+		if len(admin_r.Admin_panel_v3d) == 0 {
+			Htmlv3d = "<html><head></head><body><h1>您当期没有可用3D视图</h1></body></html>"
+		}
+		Htmlv3d = strings.Replace(Htmlv3d, "<<User_tokey>>", c.Ctx.GetCookie("User_tokey"), -1)
+		c.Data["Htmlv3d"] = Htmlv3d
+		// 普通用户
+		c.TplName = "Data/DataView3d.html"
+	} else {
+		// 内部运维
+		c.TplName = "Data/DataView3dE.html"
+	}
+
+	//
+	//
+	//Name := c.GetString("Name")
+	//
+	//c.Data["Class_List"] = Device.Read_DeviceClass_ALL_T_uuid_1(admin_r.Admin_uuid)
+	//c.Data["Name"] = Name
+
+}
+func (c *DataController) UpDataView3d() {
+	// 验证登录
+	b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !b_ {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
+		c.ServeJSON()
+		return
+	}
+	if admin_r.Admin_power != 6 {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User Err!"}
+		c.ServeJSON()
+		return
+	}
+
+	admin_r.Admin_panel_v3d = c.GetString("View3dHtml")
+	admin_r.Admin_panel_v3d1 = c.GetString("View3dHtml1")
+	admin_r.Admin_panel_v3d2 = c.GetString("View3dHtml2")
+	admin_r.Admin_panel_v3d3 = c.GetString("View3dHtml3")
+	admin_r.Admin_panel_v3d4 = c.GetString("View3dHtml4")
+	admin_r.Admin_panel_v3d5 = c.GetString("View3dHtml5")
+
+	Admin.Update_Admin(admin_r, "Admin_panel_v3d", "Admin_panel_v3d1", "Admin_panel_v3d2", "Admin_panel_v3d3", "Admin_panel_v3d4", "Admin_panel_v3d5")
+
+	for _, v := range Admin.Read_Admin_master_next_ALL(admin_r.Id) {
+		v.Admin_panel_v3d = c.GetString("View3dHtml")
+		v.Admin_panel_v3d1 = c.GetString("View3dHtml1")
+		v.Admin_panel_v3d2 = c.GetString("View3dHtml2")
+		v.Admin_panel_v3d3 = c.GetString("View3dHtml3")
+		v.Admin_panel_v3d4 = c.GetString("View3dHtml4")
+		v.Admin_panel_v3d5 = c.GetString("View3dHtml5")
+
+		Admin.Update_Admin(v, "Admin_panel_v3d", "Admin_panel_v3d1", "Admin_panel_v3d2", "Admin_panel_v3d3", "Admin_panel_v3d4", "Admin_panel_v3d5")
+	}
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+	c.ServeJSON()
+	return
+}

+ 30 - 0
controllers/Device.go

@@ -221,6 +221,36 @@ func (c *DeviceController) UpDeviceSensor_Tsort() {
 	c.ServeJSON()
 	return
 }
+
+func (c *DeviceController) UpDeviceSensor_T3dview() {
+
+	// 验证登录
+	b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !b_ {
+		c.Ctx.Redirect(302, "Login")
+		return
+	}
+
+	Sn := c.GetString("Sn")
+	Id, _ := c.GetInt("Id")
+	T_3dview := c.GetString("T_3dview")
+
+	DeviceSensor, is := Device.Read_DeviceSensor_ByT_sn(Sn, Id)
+	if !is {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "信息错误!"}
+		c.ServeJSON()
+		return
+	}
+	DeviceSensor.T_3dview = T_3dview
+	//c.Data["Device_lite"] = Device.Read_DeviceParameter_SN(Sn)
+	Device.Update_DeviceSensor(DeviceSensor, "T_3dview")
+
+	System.Add_UserLogs_T(admin_r.Admin_uuid, "设备管理", "3D 视图ID操作", "SN:"+Sn+" ["+strconv.Itoa(Id)+"]"+T_3dview)
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "OK"}
+	c.ServeJSON()
+	return
+}
+
 func (c *DeviceController) UpDeviceSensor_T_datashow() {
 
 	// 验证登录

+ 356 - 23
controllers/GoodsOrder.go

@@ -3,9 +3,15 @@ package controllers
 import (
 	"Cold_Api/conf"
 	"Cold_Api/controllers/lib"
+	"Cold_Api/models/Device"
 	"Cold_Api/models/Function"
-	"Cold_Api/models/Template"
+	"fmt"
 	beego "github.com/beego/beego/v2/server/web"
+	"github.com/signintech/gopdf"
+	"math"
+	"strconv"
+
+	"time"
 )
 
 //Handle
@@ -15,13 +21,16 @@ type GoodsOrderController struct {
 
 func (c *GoodsOrderController) GoodsOrder_html() {
 	// 验证登录
-	b_, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 	if !b_ {
 		c.Ctx.Redirect(302, "Login")
 		return
 	}
+	c.Data["Device_lite"] = Device.Read_Device_ALL_bind(admin_r)
+
 	//c.Data["Admin_Power"], _ = Admin.Read_AdminPower_ById(admin_r.Admin_power)
 	Name := c.GetString("Name")
+	c.Data["Name"] = Name
 
 	page, _ := c.GetInt("page")
 
@@ -35,12 +44,14 @@ func (c *GoodsOrderController) GoodsOrder_html() {
 		page_z = conf.Page_size
 	}
 
-	List, cnt := Function.Read_GoodsOrder_List(page, page_z, Name)
-	c.Data["Name"] = Name
+	List, cnt := Function.Read_GoodsOrder_List(admin_r.Admin_uuid, page, page_z, Name)
+
+	page_size := math.Ceil(float64(cnt) / float64(conf.Page_size))
+
 	c.Data["List"] = List
 	c.Data["Page"] = page
-	c.Data["Page_size"] = page_z
-	c.Data["Pages"] = lib.Func_page(int64(page), int64(page_z))
+	c.Data["Page_size"] = page_size
+	c.Data["Pages"] = lib.Func_page(int64(page), int64(page_size))
 	c.Data["cnt"] = cnt
 
 	c.TplName = "GoodsOrder/GoodsOrder.html"
@@ -48,12 +59,20 @@ func (c *GoodsOrderController) GoodsOrder_html() {
 
 func (c *GoodsOrderController) GoodsOrder__html() {
 	// 验证登录
-	b_, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 	if !b_ {
 		c.Ctx.Redirect(302, "Login")
 		return
 	}
+
+	c.Data["Device_lite"] = Device.Read_Device_ALL_bind(admin_r)
+
 	//c.Data["Admin_Power"], _ = Admin.Read_AdminPower_ById(admin_r.Admin_power)
+	id, _ := c.GetInt("id")
+	c.Data["id"] = id
+	if id > 0 {
+		c.Data["Date"] = Function.Read_GoodsOrder_ById(id)
+	}
 
 	c.TplName = "GoodsOrder/GoodsOrder-.html"
 }
@@ -124,35 +143,51 @@ func (c *GoodsOrderController) GoodsOrder__html() {
 //
 
 func (c *GoodsOrderController) List_Post() {
+	// 验证登录
+	b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !b_ {
+		c.Ctx.Redirect(302, "Login")
+		return
+	}
 	var id int64
 	var err error
 
 	id, _ = c.GetInt64("id")
-	T_name := c.GetString("T_name")
-	T_class, _ := c.GetInt("T_class")
-	T_img := c.GetString("T_img")
-	T_int, _ := c.GetInt("T_int")
+	T_orderid := c.GetString("T_orderid")
+	T_outorderid := c.GetString("T_outorderid")
+	T_sn := c.GetString("T_sn")
+	T_receiving := c.GetString("T_receiving")
+	T_start_Ut := c.GetString("T_start_Ut")
+	T_end_Ut := c.GetString("T_end_Ut")
+	T_start_Ut_T, _ := c.GetFloat("T_start_Ut_T")
+	T_end_Ut_T, _ := c.GetFloat("T_end_Ut_T")
 	T_text := c.GetString("T_text")
-
-	var_ := Template.Template{
-		T_name:  T_name,
-		T_class: T_class,
-		T_img:   T_img,
-		T_int:   T_int,
-		T_text:  T_text,
-		T_State: 1,
+	T_start_Ut_, err := time.Parse("2006-01-02 15:04:05", T_start_Ut)
+	T_end_Ut_, err := time.Parse("2006-01-02 15:04:05", T_end_Ut)
+	var_ := Function.GoodsOrder{
+		T_uuid:       admin_r.Admin_uuid,
+		T_orderid:    T_orderid,
+		T_outorderid: T_outorderid,
+		T_sn:         T_sn,
+		T_receiving:  T_receiving,
+		T_start_Ut:   T_start_Ut_,
+		T_end_Ut:     T_end_Ut_,
+		T_start_Ut_T: float32(T_start_Ut_T),
+		T_end_Ut_T:   float32(T_end_Ut_T),
+		T_text:       T_text,
+		T_State:      1,
 	}
 
 	if id > 0 {
 		var_.Id = int(id)
-		err = Template.Update_List_ById(var_)
-		if err != nil {
+		is := Function.Update_TGoodsOrder(var_, "T_orderid", "T_outorderid", "T_sn", "T_receiving", "T_start_Ut", "T_end_Ut", "T_start_Ut_T", "T_end_Ut_T", "T_text")
+		if !is {
 			c.Data["json"] = lib.JSONS{Code: 302, Msg: "修改失败!"}
 			c.ServeJSON()
 			return
 		}
 	} else {
-		id, err = Template.Add_List(var_)
+		id, err = Function.Add_GoodsOrder(var_)
 		if err != nil {
 			c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
 			c.ServeJSON()
@@ -169,7 +204,8 @@ func (c *GoodsOrderController) List_Post() {
 func (c *GoodsOrderController) List_Del() {
 	Id, _ := c.GetInt("Id")
 	if Id > 0 {
-		Template.Delete_List_ById(Id)
+		GoodsOrder_r := Function.Read_GoodsOrder_ById(Id)
+		Function.Delete_GoodsOrder_ById(GoodsOrder_r)
 	} else {
 		c.Data["json"] = lib.JSONS{Code: 201, Msg: "e!"}
 		c.ServeJSON()
@@ -181,3 +217,300 @@ func (c *GoodsOrderController) List_Del() {
 	return
 
 }
+
+// 列表 - 接口
+func (c *GoodsOrderController) Data_PDF() {
+	var err error
+	// 验证登录
+	b_, user_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !b_ {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
+		c.ServeJSON()
+		return
+	}
+	Id, _ := c.GetInt("Id")
+	if Id == 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id  e!"}
+		c.ServeJSON()
+		return
+	}
+
+	GoodsOrder_r := Function.Read_GoodsOrder_ById(Id)
+	if GoodsOrder_r.Id == 0 {
+		c.Data["json"] = lib.JSONS{Code: 207, Msg: "Id  e!"}
+		c.ServeJSON()
+		return
+	}
+	Device_r, err := Device.Read_Device_ByT_sn(GoodsOrder_r.T_sn)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 204, Msg: "T_sn Err!"}
+		c.ServeJSON()
+		return
+	}
+
+	DeviceSensor_r := Device.Read_DeviceSensor_ALL_List_T_sn(GoodsOrder_r.T_sn)
+	if len(DeviceSensor_r) == 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: GoodsOrder_r.T_sn + "设备没有数据!"}
+		c.ServeJSON()
+		return
+	}
+
+	var DeviceSensor_data []Device.DeviceData_
+	DeviceSensor_data, _ = Device.Read_DeviceSensorData_By_T_snid_List(GoodsOrder_r.T_sn+","+strconv.Itoa(DeviceSensor_r[0].T_id), GoodsOrder_r.T_start_Ut.Format("2006-01-02 15:04:05"), GoodsOrder_r.T_end_Ut.Format("2006-01-02 15:04:05"), 0, 9999)
+
+	pdf := &gopdf.GoPdf{}
+	pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}}) //595.28, 841.89 = A4
+	//err = GetFont(pdf, "LiberationSerif-Regular.ttf")
+	//if err != nil {
+	//	log.Fatalln(err)
+	//}
+	//err = pdf.SetFont("Ubuntu-L", "", 14)
+	//if err != nil {
+	//	log.Fatalln(err)
+	//}
+
+	err = pdf.AddTTFFont("simsun", "static/fonts/三极行楷简体-粗.ttf")
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 204, Msg: "ok!", Data: err}
+		c.ServeJSON()
+		return
+	}
+	err = pdf.SetFont("simsun", "", 24)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 205, Msg: "ok!", Data: err}
+		c.ServeJSON()
+		return
+	}
+
+	pdf.SetGrayFill(0.5)
+
+	pdf.SetMargins(0, 20, 0, 20)
+	pdf.AddPage()
+
+	//use path
+	//pdf.Image("logo.png", 100, 50, &gopdf.Rect{W: 50, H: 50})
+
+	textw, _ := pdf.MeasureTextWidth(user_r.Admin_name)
+	pdf.SetX((595 / 2) - (textw / 2))
+	pdf.SetY(40)
+	pdf.Text(user_r.Admin_name)
+
+	// 线
+	pdf.SetLineWidth(2)
+	pdf.SetLineType("dashed")
+	pdf.Line(10, 60, 585, 60)
+
+	err = pdf.AddTTFFont("wts", "static/fonts/MiSans-Medium.ttf")
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 206, Msg: "ok!", Data: err}
+		c.ServeJSON()
+		return
+	}
+	err = pdf.SetFont("wts", "", 10)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
+		c.ServeJSON()
+		return
+	}
+	//fmt.Sprintf(" %.1f ", v.T_t)
+	//lib.RectFillColor(pdf, "历史数据["+Time_start+" / "+Time_end+"]", 14, 22, 80, 550, 40, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+
+	// -------------
+	x := 22.0
+	w1 := 80.0
+	w2 := 195.0
+
+	lib.RectFillColor(pdf, "订单号:", 12, x, 80, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, GoodsOrder_r.T_orderid, 12, x, 80, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+
+	lib.RectFillColor(pdf, "出库订单号:", 12, x, 80, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, GoodsOrder_r.T_outorderid, 12, x, 80, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+	// -------------
+	x = 22.0
+	w1 = 80.0
+	w2 = 195.0
+
+	lib.RectFillColor(pdf, "设备名称:", 12, x, 100, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, Device_r.T_devName, 12, x, 100, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+
+	lib.RectFillColor(pdf, "设备编号:", 12, x, 100, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, Device_r.T_sn, 12, x, 100, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+	// -------------
+	x = 22.0
+	w1 = 80.0
+	w2 = 240.0
+	T_time := fmt.Sprintf("%s", GoodsOrder_r.T_start_Ut.Format("2006-01-02 15:04:05")+" - "+GoodsOrder_r.T_end_Ut.Format("2006-01-02 15:04:05"))
+	lib.RectFillColor(pdf, "送货时间:", 12, x, 120, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, T_time, 12, x, 120, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+
+	T_time = fmt.Sprintf("%s", GoodsOrder_r.CreateTime.Format("2006-01-02 15:04:05"))
+	lib.RectFillColor(pdf, "订单时间:", 12, x, 120, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, T_time, 12, x, 120, 150, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+
+	// -------------
+	x = 22.0
+	w1 = 80.0
+	w2 = 195.0*2 + 80
+	T_text := fmt.Sprintf("%s", GoodsOrder_r.T_receiving)
+	lib.RectFillColor(pdf, "收货单位:", 12, x, 140, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, T_text, 12, x, 140, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+
+	// -----------
+	textw, _ = pdf.MeasureTextWidth("历史数据")
+	pdf.SetX(20)
+	pdf.SetY(210)
+	pdf.Text("历史数据:")
+
+	// 数据展示--------------------------------
+	var y float64 = 220
+	x = 22.0
+	w1 = 94.0
+	w2 = 43.0
+
+	lib.RectFillColor(pdf, "记录时间", 10, x, y, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, "温度℃", 10, x, y, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+	lib.RectFillColor(pdf, "记录时间", 10, x, y, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, "温度℃", 10, x, y, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+	lib.RectFillColor(pdf, "记录时间", 10, x, y, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, "温度℃", 10, x, y, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+	lib.RectFillColor(pdf, "记录时间", 10, x, y, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, "温度℃", 10, x, y, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+	// 数据展示--------------------------------
+
+	y = 240
+
+	err = pdf.SetFont("wts", "", 8)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
+		c.ServeJSON()
+		return
+	}
+	nln := 0
+	x = 22.0
+	var T_t_l float32 = 100.0
+	var T_t_u float32 = 0.0
+	var T_t_v float32 = 0.0
+	for n := 0; len(DeviceSensor_data) > n; n++ {
+		// -计算温度
+		if DeviceSensor_data[n].T_t < T_t_l {
+			T_t_l = DeviceSensor_data[n].T_t
+		}
+		if DeviceSensor_data[n].T_t > T_t_u {
+			T_t_u = DeviceSensor_data[n].T_t
+		}
+		T_t_v += DeviceSensor_data[n].T_t
+
+		//text := fmt.Sprintf(" %d ", i+1)
+		var textH float64 = 25 // if text height is 25px.
+		pdf.SetNewY(y, textH)
+		y = pdf.GetY()
+
+		nln++
+		if nln > 4 {
+			nln = 1
+			x = 22.0
+			y += 18
+		}
+
+		// ------------------
+		T_t := fmt.Sprintf(" %.1f ", DeviceSensor_data[n].T_t)
+		T_time = fmt.Sprintf("%s", DeviceSensor_data[n].T_time)
+
+		lib.RectFillColor(pdf, T_time, 10, x, y, w1, 18, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+		x += w1
+		lib.RectFillColor(pdf, T_t, 10, x, y, w2, 18, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+		x += w2
+
+	}
+
+	err = pdf.SetFont("wts", "", 10)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
+		c.ServeJSON()
+		return
+	}
+	// 数据汇总--------------------------------
+	y = 160
+	x = 22.0
+	w1 = 60.0
+	w2 = 50.0
+
+	T_t := fmt.Sprintf(" %.1f℃ ", DeviceSensor_data[len(DeviceSensor_data)-1].T_t)
+	lib.RectFillColor(pdf, "起送温度", 10, x, y, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, T_t, 10, x, y, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+
+	T_t = fmt.Sprintf(" %.1f℃ ", DeviceSensor_data[0].T_t)
+	lib.RectFillColor(pdf, "送达温度", 10, x, y, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, T_t, 10, x, y, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+
+	T_t = fmt.Sprintf(" %.1f℃ ", T_t_l)
+	lib.RectFillColor(pdf, "最低温度", 10, x, y, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, T_t, 10, x, y, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+
+	T_t = fmt.Sprintf(" %.1f℃ ", float32(T_t_v/float32(len(DeviceSensor_data)-1)))
+	lib.RectFillColor(pdf, "平均温度", 10, x, y, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, T_t, 10, x, y, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+
+	T_t = fmt.Sprintf(" %.1f℃ ", T_t_u)
+	lib.RectFillColor(pdf, "最高温度", 10, x, y, w1, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w1
+	lib.RectFillColor(pdf, T_t, 10, x, y, w2, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
+	x += w2
+
+	//----------------
+	timeStr := "ofile/" + time.Now().Format("20060102150405") + ".pdf"
+
+	err = pdf.WritePdf(timeStr)
+	if err != nil {
+		c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
+		c.ServeJSON()
+		return
+	}
+
+	//// 上传 OSS
+	//url, is := NatsServer.Qiniu_UploadFile(lib.GetCurrentDirectory()+"/"+timeStr, timeStr)
+	//if !is {
+	//	c.Data["json"] = lib.JSONS{Code: 203, Msg: "oss!"}
+	//	c.ServeJSON()
+	//	return
+	//}
+	////删除目录
+	//err = os.Remove(timeStr)
+	//if err != nil {
+	//	fmt.Println(err)
+	//}
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: "url"}
+	c.ServeJSON()
+	return
+
+}

+ 1 - 1
lastupdate.tmp

@@ -1 +1 @@
-{"C:\\BZD\\Cold\\Cold_API\\controllers":1661232558810548700}
+{"C:\\BZD\\Cold\\Cold_Api\\controllers":1667541171969316800}

+ 28 - 0
logs/logx/logx.2022-11-02.001.log

@@ -0,0 +1,28 @@
+2022/08/30 15:06:08.559 [I]  2022-08-30 15:06:08>%!(EXTRA []interface {}=[============Nats init============])
+2022/08/30 15:06:08.927 [I]  2022-08-30 15:06:08>%!(EXTRA []interface {}=[nats OK!])
+2022/08/30 15:09:28.039 [I]  2022-08-30 15:09:28>%!(EXTRA []interface {}=[============Nats init============])
+2022/08/30 15:09:28.174 [I]  2022-08-30 15:09:28>%!(EXTRA []interface {}=[nats OK!])
+2022/08/30 15:21:11.882 [I]  2022-08-30 15:21:11>%!(EXTRA []interface {}=[============Nats init============])
+2022/08/30 15:21:12.159 [I]  2022-08-30 15:21:12>%!(EXTRA []interface {}=[nats OK!])
+2022/10/24 09:13:27.464 [I]  2022-10-24 09:13:27>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/24 09:13:27.877 [I]  2022-10-24 09:13:27>%!(EXTRA []interface {}=[nats OK!])
+2022/10/24 09:15:07.958 [I]  2022-10-24 09:15:07>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/24 09:15:08.367 [I]  2022-10-24 09:15:08>%!(EXTRA []interface {}=[nats OK!])
+2022/10/24 09:30:16.793 [I]  2022-10-24 09:30:16>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/24 09:30:16.903 [I]  2022-10-24 09:30:16>%!(EXTRA []interface {}=[nats OK!])
+2022/10/24 15:41:24.137 [I]  2022-10-24 15:41:24>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/24 15:41:24.257 [I]  2022-10-24 15:41:24>%!(EXTRA []interface {}=[nats OK!])
+2022/10/24 15:52:32.547 [I]  2022-10-24 15:52:32>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/24 15:52:32.656 [I]  2022-10-24 15:52:32>%!(EXTRA []interface {}=[nats OK!])
+2022/10/24 16:02:32.021 [I]  2022-10-24 16:02:32>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/24 16:02:32.295 [I]  2022-10-24 16:02:32>%!(EXTRA []interface {}=[nats OK!])
+2022/10/24 16:03:26.367 [I]  2022-10-24 16:03:26>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/24 16:03:26.489 [I]  2022-10-24 16:03:26>%!(EXTRA []interface {}=[nats OK!])
+2022/10/24 16:06:20.058 [I]  2022-10-24 16:06:20>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/24 16:06:20.167 [I]  2022-10-24 16:06:20>%!(EXTRA []interface {}=[nats OK!])
+2022/10/24 16:08:00.729 [I]  2022-10-24 16:08:00>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/24 16:08:00.835 [I]  2022-10-24 16:08:00>%!(EXTRA []interface {}=[nats OK!])
+2022/10/31 17:52:37.963 [I]  2022-10-31 17:52:37>%!(EXTRA []interface {}=[============Nats init============])
+2022/10/31 17:52:38.327 [I]  2022-10-31 17:52:38>%!(EXTRA []interface {}=[nats OK!])
+2022/11/01 09:05:37.393 [I]  2022-11-01 09:05:37>%!(EXTRA []interface {}=[============Nats init============])
+2022/11/01 09:05:38.414 [I]  2022-11-01 09:05:38>%!(EXTRA []interface {}=[nats OK!])

+ 14 - 0
logs/logx/logx.2022-11-04.001.log

@@ -0,0 +1,14 @@
+2022/11/03 14:07:47.881 [I]  2022-11-03 14:07:47>%!(EXTRA []interface {}=[============Nats init============])
+2022/11/03 14:07:48.253 [I]  2022-11-03 14:07:48>%!(EXTRA []interface {}=[nats OK!])
+2022/11/03 14:14:05.303 [I]  2022-11-03 14:14:05>%!(EXTRA []interface {}=[============Nats init============])
+2022/11/03 14:14:05.422 [I]  2022-11-03 14:14:05>%!(EXTRA []interface {}=[nats OK!])
+2022/11/03 14:14:51.528 [I]  2022-11-03 14:14:51>%!(EXTRA []interface {}=[============Nats init============])
+2022/11/03 14:14:51.647 [I]  2022-11-03 14:14:51>%!(EXTRA []interface {}=[nats OK!])
+2022/11/03 14:17:57.593 [I]  2022-11-03 14:17:57>%!(EXTRA []interface {}=[============Nats init============])
+2022/11/03 14:17:57.712 [I]  2022-11-03 14:17:57>%!(EXTRA []interface {}=[nats OK!])
+2022/11/03 14:22:28.032 [I]  2022-11-03 14:22:28>%!(EXTRA []interface {}=[============Nats init============])
+2022/11/03 14:22:28.148 [I]  2022-11-03 14:22:28>%!(EXTRA []interface {}=[nats OK!])
+2022/11/03 14:25:25.342 [I]  2022-11-03 14:25:25>%!(EXTRA []interface {}=[============Nats init============])
+2022/11/03 14:25:25.458 [I]  2022-11-03 14:25:25>%!(EXTRA []interface {}=[nats OK!])
+2022/11/03 14:34:06.765 [I]  2022-11-03 14:34:06>%!(EXTRA []interface {}=[============Nats init============])
+2022/11/03 14:34:06.881 [I]  2022-11-03 14:34:06>%!(EXTRA []interface {}=[nats OK!])

+ 0 - 13
logs/logx/logx.log

@@ -1,13 +0,0 @@
-2022/08/23 09:00:21.889 [I]  2022-08-23 09:00:21>%!(EXTRA []interface {}=[============Nats init============])
-2022/08/23 09:00:22.010 [I]  2022-08-23 09:00:22>%!(EXTRA []interface {}=[nats OK!])
-2022/08/23 10:51:23.055 [I]  2022-08-23 10:51:23>%!(EXTRA []interface {}=[Nats => Cold_Api/Nats/NatsServer.Qiniu_UploadFile C:/Users/SIKED/AppData/Local/Temp/GoLand/ofile/20220823105123.xlsx ofile/20220823105123.xlsx])
-2022/08/23 13:07:15.141 [I]  2022-08-23 13:07:15>%!(EXTRA []interface {}=[Nats => Cold_Api/Nats/NatsServer.Qiniu_UploadFile C:/Users/SIKED/AppData/Local/Temp/GoLand/ofile/20220823130715.xlsx ofile/20220823130715.xlsx])
-2022/08/23 13:27:44.798 [I]  2022-08-23 13:27:44>%!(EXTRA []interface {}=[============Nats init============])
-2022/08/23 13:27:44.917 [I]  2022-08-23 13:27:44>%!(EXTRA []interface {}=[nats OK!])
-2022/08/23 13:28:18.806 [I]  2022-08-23 13:28:18>%!(EXTRA []interface {}=[============Nats init============])
-2022/08/23 13:28:18.929 [I]  2022-08-23 13:28:18>%!(EXTRA []interface {}=[nats OK!])
-2022/08/23 13:28:36.745 [I]  2022-08-23 13:28:36>%!(EXTRA []interface {}=[Nats => Cold_Api/Nats/NatsServer.Qiniu_UploadFile C:/Users/SIKED/AppData/Local/Temp/GoLand/ofile/20220823132836.xlsx ofile/20220823132836.xlsx])
-2022/08/23 13:29:01.084 [I]  2022-08-23 13:29:01>%!(EXTRA []interface {}=[Nats => Cold_Api/Nats/NatsServer.Qiniu_UploadFile C:/Users/SIKED/AppData/Local/Temp/GoLand/ofile/20220823132901.xlsx ofile/20220823132901.xlsx])
-2022/08/23 13:29:24.621 [I]  2022-08-23 13:29:24>%!(EXTRA []interface {}=[============Nats init============])
-2022/08/23 13:29:24.743 [I]  2022-08-23 13:29:24>%!(EXTRA []interface {}=[nats OK!])
-2022/08/23 13:29:31.582 [I]  2022-08-23 13:29:31>%!(EXTRA []interface {}=[Nats => Cold_Api/Nats/NatsServer.Qiniu_UploadFile C:/Users/SIKED/AppData/Local/Temp/GoLand/ofile/20220823132931.xlsx ofile/20220823132931.xlsx])

+ 34 - 2
models/Admin/Admin.go

@@ -24,8 +24,14 @@ type Admin struct {
 	Admin_gender    int    `orm:"size(2);null"`    // 性别  0未知   1男   2女
 	Admin_text      string `orm:"type(text);null"` // 详情
 
-	Admin_panel_plan string `orm:"size(200);null"` //  平面图
-	Admin_panel_data string `orm:"size(200);null"` //  大数据
+	Admin_panel_plan string `orm:"size(200);null"`  //  平面图
+	Admin_panel_data string `orm:"size(200);null"`  //  大数据
+	Admin_panel_v3d  string `orm:"type(text);null"` //  3D 视图
+	Admin_panel_v3d1 string `orm:"type(text);null"` //  3D 视图 1
+	Admin_panel_v3d2 string `orm:"type(text);null"` //  3D 视图 2
+	Admin_panel_v3d3 string `orm:"type(text);null"` //  3D 视图 3
+	Admin_panel_v3d4 string `orm:"type(text);null"` //  3D 视图 4
+	Admin_panel_v3d5 string `orm:"type(text);null"` //  3D 视图 5
 
 	Admin_rh int `orm:"type(text);1"` // 显示湿度  0 不显示   1  显示
 
@@ -46,6 +52,12 @@ type Admin_R struct {
 	Admin_rh         int    // 显示湿度
 	Admin_panel_plan string //  平面图
 	Admin_panel_data string //  大数据
+	Admin_panel_v3d  string //  大数据
+	Admin_panel_v3d1 string //  大数据
+	Admin_panel_v3d2 string //  大数据
+	Admin_panel_v3d3 string //  大数据
+	Admin_panel_v3d4 string //  大数据
+	Admin_panel_v3d5 string //  大数据
 }
 
 func Admin_To_Admin_R(r Admin) (v Admin_R) {
@@ -61,6 +73,13 @@ func Admin_To_Admin_R(r Admin) (v Admin_R) {
 	v.Admin_rh = r.Admin_rh
 	v.Admin_panel_plan = r.Admin_panel_plan
 	v.Admin_panel_data = r.Admin_panel_data
+	v.Admin_panel_v3d = r.Admin_panel_v3d
+	v.Admin_panel_v3d1 = r.Admin_panel_v3d1
+	v.Admin_panel_v3d2 = r.Admin_panel_v3d2
+	v.Admin_panel_v3d3 = r.Admin_panel_v3d3
+	v.Admin_panel_v3d4 = r.Admin_panel_v3d4
+	v.Admin_panel_v3d5 = r.Admin_panel_v3d5
+
 	return v
 }
 
@@ -360,3 +379,16 @@ func Read_Admin_List_Admin_master_ALL(Admin_master int) (maps []Admin) {
 
 	return maps
 }
+
+// 获取列表 - 权限相同
+func Read_Admin_master_next_ALL(Admin_master int) (maps []Admin) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(Admin))
+	qs.Filter("Admin_master", Admin_master).Filter("T_State", 1).OrderBy("Id").All(&maps)
+	//cnt, _ := qs.Filter("Id", AdminPower).Count()
+
+	return maps
+}

+ 1 - 1
models/Device/DeviceData.go

@@ -277,7 +277,7 @@ func Read_DeviceSensorData_ById_List(SN string, T_id int, Time_start_ string, Ti
 		return maps, 0
 	}
 	//fmt.Println("maps_z;",maps_z[0][0])
-	sql = "SELECT t_name,t_id,t_t,t_rh,t_tl,t_tu,t_rhl,t_rhu,t_site,DATE_FORMAT(t_time,'%Y-%c-%d %H:%i:%s') AS t_time  FROM Z_DeviceData_" + SN + " WHERE " + sql_time + " t_id = " + strconv.Itoa(T_id) + " ORDER BY t_time DESC "
+	sql = "SELECT t_name,t_id,t_t,t_rh,t_tl,t_tu,t_rhl,t_rhu,t_site,DATE_FORMAT(t_time,'%Y-%c-%d %H:%i:%s') AS t_time,t_time AS t_time1  FROM Z_DeviceData_" + SN + " WHERE " + sql_time + " t_id = " + strconv.Itoa(T_id) + " ORDER BY t_time1 DESC "
 	if page_z != 9999 {
 		sql = sql + " LIMIT " + strconv.Itoa(offset) + "," + strconv.Itoa(pagez)
 	}

+ 17 - 0
models/Device/DeviceSensor.go

@@ -44,6 +44,8 @@ type DeviceSensor struct {
 
 	T_monitor int `orm:"size(256);null"` //  记录状态
 
+	T_3dview string `orm:"size(256);null"` //3D 视图ID
+
 	T_Calss    string    `orm:"size(256);null"`                                        //设备分类
 	T_l_p      int       `orm:"size(22);null"`                                         // 1物流端   2药店端
 	T_give     int       `orm:"size(2);1"`                                             // 0 丢弃  1 正常
@@ -77,6 +79,7 @@ type DeviceSensor_R struct {
 	T_RHupper  float32 //  湿度上限
 	T_time     string  // 采集时间
 	T_Site     string  //GPS
+	T_3dview   string  //3D 视图ID
 	T_Dattery  int     //电量
 	T_monitor  int     //  记录状态
 	T_online   int     //  在线状态 1 在线  0 离线
@@ -162,6 +165,7 @@ func DeviceSensorToDeviceSensor_R(DeviceSensor_ DeviceSensor) (DeviceSensor_r De
 	DeviceSensor_r.T_Site = DeviceSensor_.T_Site
 	DeviceSensor_r.T_Dattery = DeviceSensor_.T_Dattery
 	DeviceSensor_r.T_monitor = DeviceSensor_.T_monitor
+	DeviceSensor_r.T_3dview = DeviceSensor_.T_3dview
 
 	DeviceSensor_r.T_datashow = DeviceSensor_.T_datashow
 
@@ -536,6 +540,19 @@ func Read_DeviceSensor_ALL_T_sn_T_id_class_1(T_sn string, T_id int, T_Calss_id i
 }
 
 // 获取列表
+func Read_DeviceSensor_ALL_List_T_sn(T_sn string) (r []DeviceSensor) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(DeviceSensor))
+
+	qs.Filter("T_sn", T_sn).All(&r)
+
+	return r
+}
+
+// 获取列表
 func Read_DeviceSensor_ALL_class_1(T_Calss_id int) (r []DeviceSensor) {
 
 	o := orm.NewOrm()

+ 29 - 18
models/Function/Order.go → models/Function/GoodsOrder.go

@@ -2,7 +2,6 @@ package Function
 
 import (
 	"Cold_Api/conf"
-	"Cold_Api/controllers/lib"
 	"fmt"
 	"github.com/beego/beego/v2/adapter/orm"
 	orm2 "github.com/beego/beego/v2/client/orm"
@@ -18,8 +17,9 @@ type GoodsOrder struct {
 
 	T_orderid    string `orm:"size(256);null"` // 订单号
 	T_outorderid string `orm:"size(256);null"` // 出库订单号
-	T_sn         string `orm:"size(256);null"` // 出库订单号
-	T_receiving  string `orm:"size(256);null"` // 收货单位
+	T_sn         string `orm:"size(256);null"` // 设备sn
+	//T_snid         int `orm:"size(256);0"` // 设备id
+	T_receiving string `orm:"size(256);null"` // 收货单位
 
 	T_start_Ut   time.Time `orm:"type(timestamp);null;"` // 起运时间
 	T_start_Ut_T float32   `orm:"size(10);0;"`           // 起运温度
@@ -45,6 +45,17 @@ func init() {
 
 // ---------------- 特殊方法 -------------------
 // 获取 ById
+func Read_GoodsOrder_ById(id int) (r GoodsOrder) {
+	o := orm.NewOrm()
+	r = GoodsOrder{Id: id}
+	err := o.Read(&r) // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
+	if err != nil {
+		fmt.Println(err)
+	}
+	return r
+}
+
+// 获取 ById
 func Read_GoodsOrder_ByT_id(T_id string) (r GoodsOrder) {
 	o := orm.NewOrm()
 	r = GoodsOrder{T_id: T_id}
@@ -58,19 +69,19 @@ func Read_GoodsOrder_ByT_id(T_id string) (r GoodsOrder) {
 // 添加
 func Add_GoodsOrder(m GoodsOrder) (id int64, err error) {
 	o := orm.NewOrm()
-	T_id := ""
-	var rand_x int64
-	for true {
-		var rx GoodsOrder
-		rx.T_id = lib.GetRandstring(8, "", rand_x)
-		err = o.Read(&rx, "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
-		if err == nil {
-			T_id = rx.T_id
-			break
-		}
-		rand_x++
-	}
-	m.T_id = T_id
+	//T_id := ""
+	//var rand_x int64
+	//for true {
+	//	var rx GoodsOrder
+	//	rx.T_id = lib.GetRandstring(8, "", rand_x)
+	//	err = o.Read(&rx, "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
+	//	if err != nil {
+	//		T_id = rx.T_id
+	//		break
+	//	}
+	//	rand_x++
+	//}
+	//m.T_id = T_id
 	id, err = o.Insert(&m)
 	if err != nil {
 		fmt.Println(err)
@@ -105,7 +116,7 @@ func Delete_GoodsOrder(m GoodsOrder) (err error) {
 }
 
 // 获取列表
-func Read_GoodsOrder_List(page int, page_z int, Name string) (r []GoodsOrder, cnt int64) {
+func Read_GoodsOrder_List(Admin_uuid string, page int, page_z int, Name string) (r []GoodsOrder, cnt int64) {
 	o := orm.NewOrm()
 
 	// 也可以直接使用 Model 结构体作为表名
@@ -122,7 +133,7 @@ func Read_GoodsOrder_List(page int, page_z int, Name string) (r []GoodsOrder, cn
 	}
 
 	cond := orm.NewCondition()
-	cond1 := cond.And("T_State", 1)
+	cond1 := cond.And("T_uuid", Admin_uuid).And("T_State", 1)
 
 	if len(Name) > 0 {
 		cond1 = cond.AndCond(cond1).AndCond(cond.Or("T_sn__icontains", Name).Or("T_orderid__icontains", Name).Or("T_outorderid__icontains", Name))

+ 3 - 0
routers/Data.go

@@ -34,5 +34,8 @@ func init() {
 	beego.Router("/Data/DataScreen_Map", &controllers.DataController{}, "*:DataScreen_Map")                   // 设置 设备参数
 
 	beego.Router("/Data/Raw", &controllers.DataController{}, "*:Raw") // 设置 设备参数
+	// 3D
+	beego.Router("/Data/DataView3d_html", &controllers.DataController{}, "*:DataView3d_html")
+	beego.Router("/Data/UpDataView3d", &controllers.DataController{}, "*:UpDataView3d")
 
 }

+ 3 - 1
routers/Device.go

@@ -68,7 +68,9 @@ func init() {
 	beego.Router("/Device/DeviceWarning_Del", &controllers.DeviceController{}, "*:DeviceWarning_Del")                     // 获取未读消息
 	beego.Router("/Device/DeviceWarningListT_Tips", &controllers.DeviceController{}, "*:DeviceWarningList_T_Tips")        // 获取未读消息
 
-	beego.Router("/Device/UpDeviceSensor_Tsort", &controllers.DeviceController{}, "*:UpDeviceSensor_Tsort")           // 获取未读消息
+	beego.Router("/Device/UpDeviceSensor_Tsort", &controllers.DeviceController{}, "*:UpDeviceSensor_Tsort")     // 获取未读消息
+	beego.Router("/Device/UpDeviceSensor_T3dview", &controllers.DeviceController{}, "*:UpDeviceSensor_T3dview") // 获取未读消息
+	// 获取未读消息
 	beego.Router("/Device/UpDeviceSensor_T_datashow", &controllers.DeviceController{}, "*:UpDeviceSensor_T_datashow") // 获取未读消息
 
 	beego.Router("/Device/DeviceTask_List", &controllers.DeviceController{}, "*:DeviceTask_List") // 设置 设备参数

+ 1 - 0
routers/Function.go

@@ -12,4 +12,5 @@ func init() {
 	//beego.Router("/GoodsOrder/List_", &controllers.TemplateController{}, "*:List_")         // 获取未读消息
 	beego.Router("/GoodsOrder/List_Post", &controllers.GoodsOrderController{}, "*:List_Post") // 获取未读消息
 	beego.Router("/GoodsOrder/List_Del", &controllers.GoodsOrderController{}, "*:List_Del")   // 获取未读消息
+	beego.Router("/GoodsOrder/Data_PDF", &controllers.GoodsOrderController{}, "*:Data_PDF")   // 获取未读消息
 }

+ 1 - 1
server.pid

@@ -1 +1 @@
-17660
+13468

+ 2 - 2
views/Data/DataList.html

@@ -557,13 +557,13 @@
         for (let i = 0; i < DS_lite.length; i++) {
 
             style_s = ""
-            if(DS_lite[i].T_t <  DS_lite[i].T_Tlower || DS_lite[i].T_t >  DS_lite[i].T_Tupper){
+            if(DS_lite[i].T_t <=  DS_lite[i].T_Tlower || DS_lite[i].T_t >=  DS_lite[i].T_Tupper){
                 style_s = " style='background-color: #ff8585' "
             }
             if(Admin_rh == 0 && DS_lite[i].T_sn.indexOf("YD") != -1){
 
             }else {
-                if(DS_lite[i].T_rh < DS_lite[i].T_RHlower || DS_lite[i].T_rh > DS_lite[i].T_RHupper){
+                if(DS_lite[i].T_rh <= DS_lite[i].T_RHlower || DS_lite[i].T_rh >= DS_lite[i].T_RHupper){
                     style_s = " style='background-color: #ff8585' "
                 }
             }

+ 3 - 25
views/Data/DataRealCalss.html

@@ -292,7 +292,7 @@
 
                 // 是否 超标
                 if(!(( 0 ==  Ds.T_Tlower && 0 == Ds.T_RHlower) && ( 0 ==  Ds.T_Tupper && 0 == Ds.T_RHupper))){
-                    if(Ds.T_t <  Ds.T_Tlower || Ds.T_rh < Ds.T_RHlower || Ds.T_t >  Ds.T_Tupper || Ds.T_rh > Ds.T_RHupper ){
+                    if(Ds.T_t <=  Ds.T_Tlower || Ds.T_rh <= Ds.T_RHlower || Ds.T_t >=  Ds.T_Tupper || Ds.T_rh >= Ds.T_RHupper ){
                         // 传感器 超标
                         src_img = "报警.png"
                     }
@@ -415,8 +415,9 @@
 
 </script>
 
+<!--websocket 通讯-->
 <script>
-
+    // websocket.send("{\"Sn\":\"" + data[i].T_sn + "\"}");
     var websocket = null;
 
     //判断当前浏览器是否支持WebSocket
@@ -450,29 +451,6 @@
     //接收到消息的回调方法
     websocket.onmessage = function (event) {
         console.log(event.data)
-        var obj = JSON.parse(event.data);
-        // console.log(obj.type)
-        // if(obj.sn != Device_Sn){
-        //     console.log(obj.sn,"跳过。。  Device_Sn = ",Device_Sn)
-        //     return
-        // }
-        // console.log(obj.sn,"进入。。  Device_Sn = ",Device_Sn)
-        if (obj.type == 0 ) {
-            // console.log("data.length:",obj.sensor.length)
-
-            // Pu_DeviceSensor_list_g(obj.sn,obj.sensor)
-
-            if(obj.type == 0 ){
-                // $("#T_time").html("刷新时间:" + dateChangeFormat_x('YYYY-mm-dd HH:MM:SS', obj.sensor[0].UT) + "   上传刷新间隔:" + Math.abs(timestamp_V - obj.sensor[0].UT).toFixed(0) + "s")
-
-                // console.log(timestamp_V, obj.sensor[0].UT, "   刷新间隔:" + (timestamp_V - obj.sensor[0].UT) + "s")
-                timestamp_V = obj.sensor[0].UT
-
-            }
-
-
-        }
-
 
     };
 

+ 2 - 0
views/Data/DataView3d.html

@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+{{str2html .Htmlv3d}}

+ 139 - 0
views/Data/DataView3dE.html

@@ -0,0 +1,139 @@
+<!DOCTYPE html>
+<html class="x-admin-sm">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+          content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
+    <link rel="shortcut icon" href="https://osscold.baozhida.cn/favicon.ico">
+    <link rel="bookmark" href="https://osscold.baozhida.cn/favicon.ico">
+    <link rel="stylesheet" href="https://osscold.baozhida.cn/css/font.css">
+    <link rel="stylesheet" href="https://osscold.baozhida.cn/css/xadmin.css">
+    <script src="https://osscold.baozhida.cn/js/jquery.min.js"></script>
+    <script src="https://osscold.baozhida.cn/js/jquery.cookie.min.js"></script>
+    <script src="https://osscold.baozhida.cn/lib/layui/layui.js" charset="utf-8"></script>
+    <script type="text/javascript" src="https://osscold.baozhida.cn/js/xadmin.js"></script>
+
+    <style>
+
+    </style>
+</head>
+
+<body>
+
+<div class="layui-fluid" style="height: 100%">
+    <div class="layui-row">
+        <span class="layui-btn" onclick="f_UpDataView3d()" style="float: left;margin-right: 100px">发布</span>
+
+        <span class="layui-btn" onclick="f_Project_Add()" style="float: left;margin-right: 30px;">新建3D</span>
+        <input type="text" id="ProjectId" placeholder="请输入ProjectId" autocomplete="off" class="layui-input" style="width: 180px;float: left">
+        <input type="text" id="ProjectKey" placeholder="请输入ProjectKey" autocomplete="off" class="layui-input"  style="width: 300px;float: left;margin-right: 4px;">
+        <span class="layui-btn" onclick="f_open_editor()" style="float: left;margin-right: 20px;">编辑3D</span>
+
+
+        <span class="layui-btn" style="float: right" onclick="window.open('?v=0') ">预览</span>
+    </div>
+    <div class="layui-row" style="margin-top: 10px;height: 841px;">
+        <div class="layui-tab layui-tab-card">
+            <ul class="layui-tab-title">
+                <li class="layui-this">主页</li>
+                <li>1</li>
+                <li>2</li>
+                <li>3</li>
+                <li>4</li>
+                <li>5</li>
+            </ul>
+            <div class="layui-tab-content" style="height: 841px;">
+                <div class="layui-tab-item layui-show">
+                    <textarea id="View3dHtml" style="width: 100%;height: 841px;" placeholder="请输入HTML" class="layui-textarea">{{.Admin_r.Admin_panel_v3d}}</textarea>
+                </div>
+                <div class="layui-tab-item">
+                    <textarea id="View3dHtml1" style="width: 100%;height: 841px;" placeholder="请输入HTML" class="layui-textarea">{{.Admin_r.Admin_panel_v3d1}}</textarea>
+                </div>
+                <div class="layui-tab-item">
+                    <textarea id="View3dHtml2" style="width: 100%;height: 841px;" placeholder="请输入HTML" class="layui-textarea">{{.Admin_r.Admin_panel_v3d2}}</textarea>
+                </div>
+                <div class="layui-tab-item">
+                    <textarea id="View3dHtml3" style="width: 100%;height: 841px;" placeholder="请输入HTML" class="layui-textarea">{{.Admin_r.Admin_panel_v3d3}}</textarea>
+                </div>
+                <div class="layui-tab-item">
+                    <textarea id="View3dHtml4" style="width: 100%;height: 841px;" placeholder="请输入HTML" class="layui-textarea">{{.Admin_r.Admin_panel_v3d4}}</textarea>
+                </div>
+                <div class="layui-tab-item">
+                    <textarea id="View3dHtml5" style="width: 100%;height: 841px;" placeholder="请输入HTML" class="layui-textarea">{{.Admin_r.Admin_panel_v3d5}}</textarea>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script>
+    function f_UpDataView3d() {
+        $.ajax({
+            type: 'POST',
+            url: '../../../Data/UpDataView3d',//发送请求
+            data: {
+                View3dHtml:$("#View3dHtml").val(),
+                View3dHtml1:$("#View3dHtml1").val(),
+                View3dHtml2:$("#View3dHtml2").val(),
+                View3dHtml3:$("#View3dHtml3").val(),
+                View3dHtml4:$("#View3dHtml4").val(),
+                View3dHtml5:$("#View3dHtml5").val(),
+            },
+            success: function(result) {
+                console.log(result)
+                if(result.Code == 200){
+                    layer.msg("操作成功,可点击右上方阅览", {
+                        icon: 1,
+                        time: 2000
+                    });
+
+                }else {
+                    layer.msg("错误:"+result.Msg, {
+                        icon: 2,
+                        time: 2000
+                    });
+                }
+            }
+        });
+
+    }
+
+    var objv3d = JSON.parse("{{.Admin_r.Admin_panel_v3d}}");
+    console.log(objv3d)
+
+    function f_Project_Add() {
+        var settings = {
+            "url": "https://iot3d.baozhida.cn/Project/Add",
+            "method": "POST",
+            "timeout": 0,
+            "headers": {
+                "Content-Type": "application/x-www-form-urlencoded"
+            },
+            "data": {
+                "T_name": "冷链3D视图{{.Admin_r.Admin_name}}",
+                "T_class": "3"
+            }
+        };
+
+        $.ajax(settings).done(function (response) {
+            console.log(response);
+
+            $("#ProjectId").val(response.Data.T_ProjectId)
+            $("#ProjectKey").val(response.Data.T_ProjectKey)
+        });
+    }
+
+    function f_open_editor() {
+
+        window.open('https://iot3d.baozhida.cn/editor/index?ProjectID='+ $("#ProjectId").val() +'&ProjectKEY='+$("#ProjectKey").val() +'&T_uuid=Cold')
+
+
+    }
+
+</script>
+
+</body>
+</html>

+ 37 - 0
views/Device/Device_Sensor-.html

@@ -159,6 +159,21 @@
                     </div>
                 </form>
 
+                <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
+                    <legend>数据视图订阅</legend>
+                </fieldset>
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label" style="width: 100px;">3D视图ID:</label>
+                        <div class="layui-input-inline" style="width: 200px;">
+                            <input type="text" value="{{.DeviceSensor.T_3dview}}" id="T_3dview" autocomplete="off" class="layui-input">
+                        </div>
+                        <div class="layui-input-inline" style="width: 100px;">
+                            <button class="layui-btn  layui-btn-normal" onclick="UpDeviceSensor_T3dview()" >设置</button>
+                        </div>
+                    </div>
+                </div>
+
 
                 <fieldset class="layui-elem-field layui-field-title" style="margin-top: 10px;">
                     <legend>设备操作</legend>
@@ -327,6 +342,28 @@
             }
         });
     }
+    function UpDeviceSensor_T3dview() {
+        // console.log(getQueryString("Sn"),getQueryString("Id"))
+        //
+        $.ajax({
+            type: 'POST',
+            url: '../../Device/UpDeviceSensor_T3dview',//发送请求】
+            data: {
+                Sn: getQueryString("Sn"),
+                Id: getQueryString("Id"),
+                T_3dview: $("#T_3dview").val()
+            },
+            success: function (result) {
+                console.log(result)
+
+                //关闭当前frame
+                var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
+                parent.layer.close(index); //再执行关闭
+                parent.location.reload();
+                // return false;
+            }
+        });
+    }
     f_Read_DeviceParameter_is = true
     function f_Read_DeviceParameter() {
         if(f_Read_DeviceParameter_is){

+ 107 - 121
views/GoodsOrder/GoodsOrder-.html

@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html class="x-admin-sm">
+<html class="x-admin-sm" style="overflow-y: hidden;">
     
     <head>
         <meta charset="UTF-8">
@@ -13,6 +13,7 @@
         <link rel="stylesheet" href="https://osscold.baozhida.cn/layui/css/layui.css">
         <script type="text/javascript" src="https://osscold.baozhida.cn/layui/layui.js" charset="utf-8"></script>
         <script type="text/javascript" src="https://osscold.baozhida.cn/js/xadmin.js"></script>
+        <script src="https://osscold.baozhida.cn/js/jquery.min.js"></script>
         <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
         <!--[if lt IE 9]>
             <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
@@ -22,69 +23,73 @@
     <body>
         <div class="layui-fluid">
             <div class="layui-row">
-                <form class="layui-form">
-
-                    <div class="layui-form-item">
-                        <label class="layui-form-label">
-                            <span class="x-red">*</span>图片</label>
+                <form class="layui-form" lay-filter="example1">
+                    <div class="layui-form-item" style="margin-top: 20px">
+                        <label for="T_orderid" class="layui-form-label">订单号</label>
                         <div class="layui-input-inline">
-                            <div class="layui-upload">
-                                <button type="button" class="layui-btn" id="test1">上传图片</button>
-                                <div class="layui-upload-list">
-                                    <img {{if gt .id 0 }}
-                                         src="{{.Date.T_img}}"
-                                         {{end}}  style="max-height: 100px;height: 100px" class="layui-upload-img" id="demo1">
-                                    <p id="demoText"></p>
-                                </div>
-                            </div>
-
-                        </div>
+                            <input {{if gt .id 0 }} value="{{.Date.T_orderid}}" {{end}}
+                                   type="text" id="T_orderid" name="T_orderid" required="" autocomplete="off" class="layui-input"></div>
                     </div>
-                    <div class="layui-form-item">
-                        <label for="T_name" class="layui-form-label">
-                            <span class="x-red">*</span>名称</label>
+                    <div class="layui-form-item" style="margin-top: 20px">
+                        <label for="T_outorderid" class="layui-form-label">出库订单号</label>
                         <div class="layui-input-inline">
-                            <input {{if gt .id 0 }}
-                                   value="{{.Date.Id}}"
-                                   {{end}}  type="text" id="T_name" name="T_name" required="" lay-verify="required" autocomplete="off" class="layui-input"></div>
+                            <input {{if gt .id 0 }} value="{{.Date.T_outorderid}}" {{end}}
+                                   type="text" id="T_outorderid" name="T_outorderid" required="" autocomplete="off" class="layui-input"></div>
                     </div>
                     <div class="layui-form-item">
                         <label class="layui-form-label">
-                            <span class="x-red">*</span>分类</label>
+                            设备编号</label>
                         <div class="layui-input-inline">
-                            <select  lay-filter="T_class" id="T_class" name="T_class" class="valid" >
-                                {{range $index, $elem := .Class_List}}
-                                    <option value="{{$elem.Id}}" {{if gt $.id 0 }}
-                                                {{if eq $.Date.T_class $elem.Id }}
-                                                selected
-                                                {{end}}
-                                            {{end}}
-                                             >{{$elem.T_name}}</option>
+                            <select id="T_sn" name="T_sn" class="valid" >
+                                {{range $index, $elem := .Device_lite}}
+                                <option value="{{$elem.T_sn}}" {{if gt $.id 0 }}
+                                        {{if eq $.Date.T_sn $elem.T_sn }}
+                                        selected
+                                        {{end}}
+                                        {{end}}
+                                >{{$elem.T_devName}}</option>
                                 {{end}}
 
                             </select>
                         </div>
                     </div>
-                    <div class="layui-form-item">
-                        <label for="T_int" class="layui-form-label">
-                            <span class="x-red">*</span>数字</label>
-                        <div class="layui-input-inline">
-                            <input {{if gt .id 0 }}
-                                        value="{{.Date.T_int}}"
-                                   {{end}} type="text" id="T_int" name="T_int" placeholder="¥" autocomplete="off" class="layui-input">
+
+                    <div class="layui-form-item" style="margin-top: 20px">
+                        <label for="T_receiving" class="layui-form-label">收货单位</label>
+                        <div class="layui-input-inline"  style="width: 250px;">
+                            <input {{if gt .id 0 }} value="{{.Date.T_receiving}}" {{end}}
+                                   type="text" id="T_receiving" name="T_receiving" required="" autocomplete="off" class="layui-input"></div>
+                    </div>
+
+                    <div class="layui-form-item" style="margin-top: 20px">
+                        <label for="T_orderid" class="layui-form-label">送货时间</label>
+                        <div class="layui-input-inline "  style="width: 250px;">
+                            <input class="layui-input lay-date" autocomplete="off" placeholder="起运时间" name="T_start_Ut" id="T_start_Ut" lay-key="1">
                         </div>
-                        <div class="layui-form-mid layui-word-aux">
-                            <span class="x-red">*</span>
+                    </div>
+
+                    <div class="layui-form-item" style="margin-top: 20px">
+                        <div >
+                            <label for="T_orderid" class="layui-form-label">起运温度</label>
+                            <div class="layui-input-inline" style="width: 65px;">
+                                <input {{if gt .id 0 }} value="{{.Date.T_start_Ut_T}}" {{end}}
+                                       type="text" id="T_start_Ut_T" name="T_start_Ut_T" required="" autocomplete="off" class="layui-input"></div>
+                        </div>
+
+                        <div>
+                            <label for="T_end_Ut_T" class="layui-form-label">到达温度</label>
+                            <div class="layui-input-inline" style="width: 65px;">
+                                <input {{if gt .id 0 }} value="{{.Date.T_end_Ut_T}}" {{end}}
+                                       type="text" id="T_end_Ut_T" name="T_end_Ut_T" required="" autocomplete="off" class="layui-input"></div>
                         </div>
                     </div>
+
+
                     <div class="layui-form-item layui-form-text">
-                        <label for="T_text" class="layui-form-label">描述</label>
+                        <label for="T_text" class="layui-form-label">详情</label>
                         <div class="layui-input-block">
-                           <textarea class="layui-textarea" id="T_text" style="display: none" >
-                              {{if gt .id 0 }}
-                                   {{.Date.T_text}}
-                                   {{end}}
-                            </textarea>
+
+                            <textarea name="T_text" id="T_text" class="layui-textarea">{{.Date.T_text}}</textarea>
                         </div>
                     </div>
                     <div class="layui-form-item" style="text-align: center;margin-top: 20px">
@@ -94,41 +99,73 @@
             </div>
         </div>
         <script>
-            layui.use(['form', 'layer',"layedit"],
+
+            layui.use(['form', 'layer',"layedit","laydate"],
 
                 function() {
                     $ = layui.jquery;
-                    var form = layui.form,
-                    layer = layui.layer;
+
+                    var form = layui.form;
+                    var layer = layui.layer;
                     var layedit = layui.layedit
+                    var laydate = layui.laydate
+                    laydate.render({
+                        elem: '#T_start_Ut' //指定元素
+                        ,type: 'datetime'
+                        ,range: true
+                        ,trigger: 'click', // 新增这一行以解决
+                    });
+                    // layedit.set({
+                    //     uploadImage: {
+                    //         url: '/UpFile' //接口url
+                    //     }
+                    // });
+                    // //构建一个默认的编辑器
+                    // var index = layedit.build('T_text', {
+                    //     height: 140 //设置编辑器高度,
+                    //
+                    // });
+
+                    {{if gt .id 0 }}
+                    T_start_Ut = '{{.Date.T_start_Ut.Format "2006-01-02 15:04:05"}}'
+                    T_end_Ut = '{{.Date.T_end_Ut.Format "2006-01-02 15:04:05"}}'
+
+                    form.val('example1', {
+                        "T_start_Ut":T_start_Ut + " - " + T_end_Ut,
 
-                    layedit.set({
-                        uploadImage: {
-                            url: '/UpFile' //接口url
-                        }
                     });
 
-                    //构建一个默认的编辑器
-                    var index = layedit.build('T_text', {
-                        height: 580 //设置编辑器高度,
+                    {{end}}
+
+
 
-                    });
                     //监听提交
                     form.on('submit(add)',
                         function(data) {
                             console.log("=== submit(add) ==");
                             console.log(data);
 
+                            T_start_Ut = ""
+                            T_end_Ut = ""
+                            if($("#T_start_Ut").val().length > 0){
+                                T_start_Ut = $("#T_start_Ut").val().split(" - ")[0]
+                                T_end_Ut = $("#T_start_Ut").val().split(" - ")[1]
+                            }
+
                             $.ajax({
                                 type: 'POST',
                                 url: 'List_Post',//发送请求
                                 data: {
                                     id:"{{.id}}",
-                                    T_name:data.field.T_name,
-                                    T_class:data.field.T_class,
-                                    T_int:data.field.T_int,
-                                    T_img:T_img,
-                                    T_text:layedit.getContent(index),
+                                    T_orderid:data.field.T_orderid,
+                                    T_outorderid:data.field.T_outorderid,
+                                    T_sn:data.field.T_sn,
+                                    T_receiving:data.field.T_receiving,
+                                    T_start_Ut:T_start_Ut,
+                                    T_end_Ut:T_end_Ut,
+                                    T_start_Ut_T:data.field.T_start_Ut_T,
+                                    T_end_Ut_T:data.field.T_end_Ut_T,
+                                    T_text:data.field.T_text,
                                 },
                                 success: function(result) {
                                     console.log(result)
@@ -137,6 +174,12 @@
                                             icon: 1,
                                             time: 2000
                                         });
+                                        //关闭当前frame
+                                        parent.layer.close(parent.layer.getFrameIndex(window.name));
+                                        parent.location.reload();
+
+                                        form.render('select');
+                                        // return false;
                                     }else {
                                         layer.msg("错误:"+result.Msg, {
                                             icon: 2,
@@ -144,13 +187,8 @@
                                         });
                                     }
 
-                                    //
-                                    //关闭当前frame
-                                    parent.layer.close(parent.layer.getFrameIndex(window.name));
-                                    parent.location.reload();
 
-                                    form.render('select');
-                                    // return false;
+
                                 }
                             });
 
@@ -159,60 +197,8 @@
 
                 });
         </script>
-        <script>
 
-            T_img = "{{.Date.T_img}}"
 
-
-            layui.use('upload', function(){
-                var $ = layui.jquery
-                    ,upload = layui.upload;
-
-                //普通图片上传
-                var uploadInst = upload.render({
-                    elem: '#test1'
-                    ,url: '/UpFile' //改成您自己的上传接口
-                    ,before: function(obj){
-                        //预读本地文件示例,不支持ie8
-                        obj.preview(function(index, file, result){
-                            $('#demo1').attr('src', result); //图片链接(base64)
-                        });
-                    }
-                    ,done: function(res){
-
-                        console.log(res)
-                        //如果上传失败
-                        if(res.code != 0){
-                            return layer.msg('上传失败');
-                        }
-                        T_img = res.data.src
-                        console.log(T_img)
-                        //上传成功
-                    }
-                    ,error: function(){
-                        console.log("error")
-
-                        //演示失败状态,并实现重传
-                        var demoText = $('#demoText');
-                        demoText.html('<span style="color: #ff5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
-                        demoText.find('.demo-reload').on('click', function(){
-                            uploadInst.upload();
-                        });
-                    }
-                });
-
-                //绑定原始文件域
-                upload.render({
-                    elem: '#test20'
-                    ,url: 'https://httpbin.org/post' //改成您自己的上传接口
-                    ,done: function(res){
-                        layer.msg('上传成功');
-                        console.log(res)
-                    }
-                });
-
-            });
-        </script>
     </body>
 
 </html>

+ 43 - 19
views/GoodsOrder/GoodsOrder.html

@@ -41,43 +41,47 @@
                         <div class="layui-card-header">
 <!--                            <button class="layui-btn layui-btn-danger" onclick="delAll()">-->
 <!--                                <i class="layui-icon"></i>批量删除</button>-->
-                            <button class="layui-btn  layui-btn-normal" onclick="xadmin.open('添加','List_',800,600,true);">
+                            <button class="layui-btn  layui-btn-normal" onclick="xadmin.open('添加','GoodsOrder__html',650,600,false);">
                                 <i class="layui-icon"></i>添加</button></div>
                         <div class="layui-card-body ">
                             <table class="layui-table layui-form">
                                 <thead>
                                     <tr>
-                                        <th>编号</th>
-                                        <th>图片</th>
-                                        <th>名称</th>
-                                        <th>分类</th>
-                                        <th>数量</th>
-                                        <th>操作</th></tr>
+                                        <th>订单号</th>
+                                        <th>出库订单号</th>
+                                        <th>设备编号</th>
+                                        <th>收货单位</th>
+                                        <th>起运时间</th>
+                                        <th>到达时间</th>
+                                        <th style="width: 122.7px;">操作</th></tr>
                                 </thead>
                                 <tbody>
                                 {{range $index, $elem := .List}}
                                     <tr>
 
-                                        <td>{{$elem.Id}}</td>
-                                        <td><img src="{{$elem.T_img}}"></td>
-                                        <td>{{$elem.T_name}}</td>
+                                        <td>{{$elem.T_orderid}}</td>
+                                        <td>{{$elem.T_outorderid}}</td>
                                         <td>
-                                            {{range $index, $elemx := $.Class_List}}
-                                                {{if eq $elem.T_class $elemx.Id }}
-                                                    {{$elemx.T_name}}
-                                                {{end}}
+                                            {{range $index, $elemx := $.Device_lite}}
+                                            {{if eq $elem.T_sn $elemx.T_sn }}
+                                            {{$elemx.T_devName}}
+                                            {{end}}
                                             {{end}}
                                         </td>
-                                        <td>{{$elem.T_int}}</td>
+                                        <td>{{$elem.T_receiving}}</td>
+
+                                        <td>{{$elem.T_start_Ut.Format "2006-01-02 15:04:05"}}</td>
+                                        <td>{{$elem.T_end_Ut.Format "2006-01-02 15:04:05"}}</td>
 
                                         <td class="td-manage">
-                                            <a title="编辑" onclick="xadmin.open('编辑','List_?id={{$elem.Id}}');" href="javascript:;">
-                                                <i class="layui-icon">&#xe63c;</i></a>
+                                            <a title="编辑" onclick="f_Data_PDF('{{$elem.Id}}');" href="javascript:;">
+                                                <i class="layui-icon">&#xe601;</i>PDF</a>
+                                            <a title="编辑" onclick="xadmin.open('编辑','GoodsOrder__html?id={{$elem.Id}}',650,600,false);" href="javascript:;">
+                                                <i class="layui-icon">&#xe63c;</i>编辑</a>
                                             <a title="删除" onclick="member_del(this,'{{$elem.Id}}')" href="javascript:;">
-                                                <i class="layui-icon">&#xe640;</i></a>
+                                                <i class="layui-icon">&#xe640;</i>删除</a>
                                         </td>
                                     </tr>
-
                                 {{end}}
 
 
@@ -139,6 +143,26 @@
                     elem: '#end' //指定元素
             });
         });
+
+        function f_Data_PDF(Id) {
+            $.ajax({
+                type: 'POST',
+                url: 'Data_PDF',//发送请求
+                data: {
+                    Id: Id,
+                },
+                success: function (result) {
+                    console.log(result)
+                    // layer.close(loading)
+                    // if (result.Code != 200) {
+                    //     layer.msg(result.Msg);
+                    //     return
+                    // }
+                    // window.parent.location.href = result.Data;
+
+                }
+            });
+        }
         /*用户-删除*/
         function member_del(obj, id) {
             layer.confirm('确认要删除吗?',

+ 22 - 17
views/index.html

@@ -2,7 +2,7 @@
 <html class="x-admin-sm">
     <head>
         <meta charset="UTF-8">
-        <title>宝智达 冷链系统 v2.1</title>
+        <title>宝智达 冷链系统 v2.8</title>
         <meta name="renderer" content="webkit|ie-comp|ie-stand">
         <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
         <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
@@ -35,7 +35,7 @@
         <!-- 顶部开始 -->
         <div class="container">
             <div class="logo">
-                <a href="/Index">宝智达 v2.1</a></div>
+                <a href="/Index">宝智达 v2.8</a></div>
             <div class="left_open">
                 <a><i title="展开左侧栏" class="iconfont">&#xe699;</i></a>
             </div>
@@ -234,6 +234,11 @@
                                     <i class="iconfont">&#xe6a7;</i>
                                     <cite>平面图</cite></a>
                             </li>
+                            <li class="open">
+                                <a onclick="xadmin.del_all();window.location.href='/Data/DataView3d_html';">
+                                    <i class="iconfont">&#xe6a7;</i>
+                                    <cite>3D场景</cite></a>
+                            </li>
                             {{if eq 1 .Admin_Power.Power_DataScreen_r }}
                             <li class="open">
                                 <a onclick="xadmin.del_all();window.location.href='/Data/DataScreen';">
@@ -362,20 +367,20 @@
 
 <script>
 
-    setInterval(function(){
-        $.ajax({
-            type: 'POST',
-            url: '/User/InspectTokey',//发送请求
-            success: function(result) {
-                if(result.Code != 200){
-                    location.href="/Login"
-                }
-
-            }
-        });
-
-
-
-    },1000*60*2);
+//    setInterval(function(){
+//        $.ajax({
+//            type: 'POST',
+//            url: '/User/InspectTokey',//发送请求
+//            success: function(result) {
+//                if(result.Code != 200){
+//                    location.href="/Login"
+//                }
+//
+//            }
+//        });
+//
+//
+//
+//    },1000*60*2);
 </script>
 </html>

+ 3 - 4
views/login.html

@@ -15,16 +15,15 @@
     <script type="text/javascript" src="https://osscold.baozhida.cn/js/jquery.min.js"></script>
     <script type="text/javascript" src="https://osscold.baozhida.cn/js/jquery.md5.js" ></script>
     <script src="https://osscold.baozhida.cn/lib/layui/layui.js" charset="utf-8"></script>
-    <!--[if lt IE 9]>
+
     <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
     <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
-<!--fsdfsdfsdf-->
-    <![endif]-->
+
 </head>
 <body class="login-bg">
 
 <div class="login layui-anim" style="margin-top: 15%;">
-    <div class="message">宝智达 v2.1-管理登录</div>
+    <div class="message">宝智达 v2.8-管理登录</div>
     <div id="darkbannerwrap"></div>
 
     <form method="post" class="layui-form" >