3
2
lining 6 жил өмнө
parent
commit
217926f745

+ 2 - 0
src/dashoo.cn/backend/api/business/limsdoctemplate/limstemplateenum.go

@@ -93,4 +93,6 @@ const (
 	DAYT_STEELTAPE_DETAIL string="DAYT.SteelTape.Detail"
 	//压力表检定
 	DAYT_PRESSUREGAUGETEST_DETAIL string= "DAYT.PressureGaugeTest.Detail"
+	// 离心泵机组液体输送系统节能监测原始记录
+	DAYT_LIQUIDTRANSPORTATION_DETAIL string= "DAYT.LiquidTransportation.Detail"
 )

+ 43 - 14
src/dashoo.cn/backend/api/business/limsreportheatingfurnace/limsreportheatingfurnace.go

@@ -8,14 +8,14 @@ type LimsReportHeatingFurnace struct {
 	TaskBalanceId    int       `xorm:"comment('任务分配表ID') INT(10)"`
 	DataEntryId      int       `xorm:"comment('数据记录表ID') INT(10)"`
 	TestDepartId     int       `xorm:"comment('受检单位ID') INT(10)"`
-	TestDepart       int       `xorm:"comment('受检单位') INT(10)"`
+	TestDepart       string    `xorm:"comment('受检单位') VARCHAR(255)"`
 	PositionCheckId  int       `xorm:"comment('检测地点ID') INT(10)"`
 	PositionCheck    string    `xorm:"comment('检测地点') VARCHAR(255)"`
 	CheckDate        time.Time `xorm:"comment('检测时间') DATETIME"`
 	Number           string    `xorm:"comment('被测设备编号及名称') VARCHAR(50)"`
 	HFModel          string    `xorm:"comment('加热炉型号') VARCHAR(20)"`
-	RHCapacity       string    `xorm:"comment('额定热容量') DECIMAL(10,2)"`
-	RatedPower       string    `xorm:"comment('额定效率') DECIMAL(10,2)"`
+	RHCapacity       float64   `xorm:"comment('额定热容量') DECIMAL(10,2)"`
+	RatedPower       float64   `xorm:"comment('额定效率') DECIMAL(10,2)"`
 	HFProDate        time.Time `xorm:"comment('加热炉出厂日期') DATETIME"`
 	Manufacturer     string    `xorm:"comment('制造厂家') VARCHAR(50)"`
 	Fuel             string    `xorm:"comment('燃料') VARCHAR(20)"`
@@ -23,19 +23,23 @@ type LimsReportHeatingFurnace struct {
 	BurnerModel      string    `xorm:"comment('燃烧器型号') VARCHAR(20)"`
 	BurnerProDate    time.Time `xorm:"comment('燃烧器出厂日期') DATETIME"`
 	BurnerIntel      string    `xorm:"comment('燃烧器是否智能') VARCHAR(10)"`
-	Temperature      string    `xorm:"comment('环境温度') DECIMAL(10,2)"`
-	WindSpeed        string    `xorm:"comment('风速') DECIMAL(10,2)"`
-	RelativeHumidity string    `xorm:"comment('环境相对湿度') DECIMAL(10,2)"`
+	Temperature      float64   `xorm:"comment('环境温度') DECIMAL(10,2)"`
+	WindSpeed        float64   `xorm:"comment('风速') DECIMAL(10,2)"`
+	RelativeHumidity float64   `xorm:"comment('环境相对湿度') DECIMAL(10,2)"`
 	InstrStatus      string    `xorm:"comment('仪器状态') VARCHAR(20)"`
-	InTemp           string    `xorm:"comment('介质进口温度') DECIMAL(10,2)"`
-	InPressure       string    `xorm:"comment('介质进口压力') DECIMAL(10,2)"`
-	OutTemp          string    `xorm:"comment('介质出口温度') DECIMAL(10,2)"`
-	Outpressure      string    `xorm:"comment('介质出口压力') DECIMAL(10,2)"`
-	OutPressure      string    `xorm:"comment('介质流量') DECIMAL(10,2)"`
-	MediumFlow       string    `xorm:"comment('介质含水率') DECIMAL(10,2)"`
-	MedMoiContent    string    `xorm:"comment('介质密度') DECIMAL(10,2)"`
-	MedDensity       string    `xorm:"comment('燃烧量+') DECIMAL(10,2)"`
+	InTemp           float64   `xorm:"comment('介质进口温度') DECIMAL(10,2)"`
+	InPressure       float64   `xorm:"comment('介质进口压力') DECIMAL(10,2)"`
+	OutTemp          float64   `xorm:"comment('介质出口温度') DECIMAL(10,2)"`
+	Outpressure      float64   `xorm:"comment('介质出口压力') DECIMAL(10,2)"`
+	MediumFlow       float64   `xorm:"comment('介质流量') DECIMAL(10,2)"`
+	MedMoiContent    float64   `xorm:"comment('介质含水率') DECIMAL(10,2)"`
+	MedDensity       float64   `xorm:"comment('介质密度') DECIMAL(10,2)"`
+	CombustionQty    float64   `xorm:"comment('燃烧量+') DECIMAL(10,2)"`
 	Indoor           string    `xorm:"comment('室内') VARCHAR(10)"`
+	INCTMeter        string    `xorm:"comment('红外非接触测温仪') VARCHAR(10)"`
+	CEMeter          string    `xorm:"comment('燃烧效率仪') VARCHAR(10)"`
+	StandardTM       string    `xorm:"comment('标准温度计') VARCHAR(10)"`
+	OnlineMeter      string    `xorm:"comment('在线仪表') VARCHAR(10)"`
 	Remark           string    `xorm:"comment('备注') VARCHAR(255)"`
 	CreateUserId     int       `xorm:"INT(11)"`
 	CreateOn         time.Time `xorm:"DATETIME"`
@@ -44,3 +48,28 @@ type LimsReportHeatingFurnace struct {
 	ModifiedUserId   int       `xorm:"INT(11)"`
 	ModifiedBy       string    `xorm:"VARCHAR(50)"`
 }
+
+type LimsHeatingFurnaceItems struct {
+	Id                 int       `xorm:"not null pk autoincr INT(10)"`
+	MId                int       `xorm:"INT(10)"`
+	OrderNo            int       `xorm:"comment('序号') INT(10)"`
+	TestTime           time.Time `xorm:"comment('测试时间') DATETIME"`
+	LeftTemperature1   float64   `xorm:"comment('左侧表面温度') DECIMAL(10,2)"`
+	LeftTemperature2   float64   `xorm:"comment('左侧表面温度') DECIMAL(10,2)"`
+	LeftTemperature3   float64   `xorm:"comment('左侧表面温度') DECIMAL(10,2)"`
+	LeftTemperature4   float64   `xorm:"comment('左侧表面温度') DECIMAL(10,2)"`
+	RichtTemperature1  float64   `xorm:"comment('右侧表面温度') DECIMAL(10,2)"`
+	RichtTemperature2  float64   `xorm:"comment('右侧表面温度') DECIMAL(10,2)"`
+	RichtTemperature3  float64   `xorm:"comment('右侧表面温度') DECIMAL(10,2)"`
+	RichtTemperature4  float64   `xorm:"comment('右侧表面温度') DECIMAL(10,2)"`
+	ExhaustTemperature float64   `xorm:"comment('排烟温度') DECIMAL(10,2)"`
+	Oxygen             float64   `xorm:"comment('氧气') DECIMAL(10,2)"`
+	SulfurDioxide      float64   `xorm:"comment('二氧化硫') DECIMAL(10,2)"`
+	CarbonMonoxide     float64   `xorm:"comment('一氧化碳') DECIMAL(10,2)"`
+	CarbonDioxide      float64   `xorm:"comment('二氧化碳') DECIMAL(10,2)"`
+}
+
+type HeatingFurnaceData struct {
+	TableData []LimsHeatingFurnaceItems
+	FormData  LimsReportHeatingFurnace
+}

+ 18 - 0
src/dashoo.cn/backend/api/business/limsreportheatingfurnace/limsreportheatingfurnaceSessionService.go

@@ -0,0 +1,18 @@
+package limsreportheatingfurnace
+
+import (
+	. "dashoo.cn/backend/api/mydb"
+	"github.com/go-xorm/xorm"
+)
+
+type LimsReportHeatingFurnaceSessionService struct {
+	MySessionBase
+}
+
+func GetLimsReportHeatingFurnaceSessionService(xormEngine *xorm.Session) *LimsReportHeatingFurnaceSessionService {
+	s := new(LimsReportHeatingFurnaceSessionService)
+	s.Session = xormEngine
+	return s
+}
+
+ 

+ 69 - 4
src/dashoo.cn/backend/api/business/workflow/ActivitiService.go

@@ -20,10 +20,11 @@ import (
 )
 
 type ActivitiService struct {
-	BaseUrl  string
-	AposeUrl string
-	Username string
-	Password string
+	BaseUrl		string
+	AposeUrl	string
+	OriginUrl	string
+	Username 	string
+	Password 	string
 	ServiceBase
 }
 
@@ -35,6 +36,8 @@ func GetActivitiService(xormEngine *xorm.Engine) *ActivitiService {
 	s.BaseUrl = "http://47.92.212.59:8080/acti-api/api/acti"
 	//s.BaseUrl = "http://192.168.0.171:8081/api/acti"
 	s.AposeUrl = "http://47.92.212.59:8080/acti-api/api/apose"
+	s.OriginUrl = "http://localhost:8081/api"
+	//s.OriginUrl = "http://47.92.212.59:8080/acti-api/api"
 	//s.AposeUrl = "http://localhost:8081/api/apose"
 	//s.AposeUrl = "http://192.168.0.171:8081/api/apose"
 	s.Username = "leader"
@@ -67,6 +70,18 @@ func (this *ActivitiService) Post2(url string, params string, token string) *htt
 	log.Println("resp= ", resp)
 	return resp
 }
+func (this *ActivitiService) PostOrigin(url string, params string, token string) *http.Response {
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", this.OriginUrl+url, strings.NewReader(params))
+	req.Header.Add("Content-Type", "application/json")
+	req.Header.Add("Authorization", "Bearer "+token)
+	resp, err := client.Do(req)
+	if err != nil {
+		log.Println("err= ", err)
+	}
+	log.Println("resp= ", resp)
+	return resp
+}
 
 func (this *ActivitiService) Get(url string, params string, token string) *http.Response {
 	client := &http.Client{}
@@ -237,3 +252,53 @@ func (this *ActivitiService) ExcelToPdf(addressUrl string) string {
 	fmt.Println("==retDocUrl==", retDocUrl)
 	return retDocUrl
 }
+
+
+func (this *ActivitiService) FillWordTemplate(datas map[string]interface{}, templateUrl string, fileName string) string {
+	var wordTempVM WordTemplateVM
+	wordTempVM.Datas = datas
+	wordTempVM.TemplateUrl = templateUrl
+	wordTempVM.FileName = fileName
+	fmt.Println("==templateUrl===", templateUrl)
+	jsonParam, err := json.Marshal(wordTempVM)
+	if err != nil {
+		fmt.Println(err, "生成json字符串错误")
+	}
+	params := string(jsonParam)
+	//token = Authorization(this.Username, this.Password)
+	retVal := this.PostOrigin("/word/fill-word", params, "")
+	if retVal.StatusCode != 200 {
+		return ""
+	}
+	//pdfByte, err := ioutil.ReadAll(retVal.Body)
+	//ioutil.WriteFile("E:\aa.pdf", pdfByte, 777)
+	//模板下载到服务器
+	_dir := utils.Cfg.MustValue("file", "tmplateDir") + "word"
+	utils.CreatePath(_dir)
+	_dir += "/tmp_" + strconv.Itoa(int(time.Now().Unix())) + ".docx"
+	raw := retVal.Body
+	defer raw.Close()
+
+	file, err := os.Create(_dir)
+	defer file.Close()
+	writer := bufio.NewWriter(file)
+	defer writer.Flush()
+	body, err := ioutil.ReadAll(raw)
+	writer.Write(body)
+
+	if err != nil {
+		return ""
+	}
+	var sw *Seaweed
+	var filer []string
+	if _filer := os.Getenv("GOSWFS_FILER_URL"); _filer != "" {
+		filer = []string{_filer}
+	}
+	sw = NewSeaweed("http", utils.Cfg.MustValue("file", "upFileHost"), filer, 2*1024*1024, 5*time.Minute)
+	//_, fID, err := sw.Upload(retVal.Body, "tmp.pdf", int64(len(pdfByte)), "", "")
+	_, _, fID, err := sw.UploadFile(_dir, "", "")
+	retDocUrl := utils.Cfg.MustValue("file", "downFileHost") + "/" + fID
+	os.Remove(_dir)
+	fmt.Println("==retDocUrl==", retDocUrl)
+	return retDocUrl
+}

+ 7 - 1
src/dashoo.cn/backend/api/business/workflow/workflow.go

@@ -27,7 +27,7 @@ type ActiHistoricTask struct {
 	BusinessKey       string `json:"businessKey"`
 	TaskName          string `json:"taskName"`
 	Assignee          string `json:"assignee"`
-	Users          	  string `json:"users"`
+	Users             string `json:"users"`
 	Result            string `json:"result"`
 	Remarks           string `json:"remarks"`
 	StartTime         int64  `json:"startTime"`
@@ -40,6 +40,12 @@ type AposeVM struct {
 	AddressUrl string `json:"addressUrl"`
 }
 
+type WordTemplateVM struct {
+	Datas       map[string]interface{} `json:"datas"`
+	TemplateUrl string                 `json:"templateUrl"`
+	FileName    string                 `json:"fileName"`
+}
+
 const (
 	//特检站数据录入
 	TJZ_DATA_KEY string = "tjz_data_apply"

+ 2 - 0
src/dashoo.cn/backend/api/controllers/base.go

@@ -247,6 +247,8 @@ var (
 	LimsReportElecPumpWellName               string = "LimsReportElecPumpWell" // 电泵井节能监测原始数据记录表
 	LimsReportScrewPumpName                  string = "LimsReportScrewPump" //  螺杆泵节能监测原始数据记录表
 	LimsReportSpecialFieldName               string = "LimsReportSpecialField" // 油田专用变压器运行数据现场测试记录
+	LimsReportHeatingFurnaceName             string = "LimsReportHeatingFurnace" // 加 热 炉 节 能 监 测 原 始 记 录 表
+	LimsHeatingFurnaceItemsName              string = "LimsHeatingFurnaceItems" // 加 热 炉 节 能 -- 从表
 )
 
 //分页信息及数据

+ 55 - 22
src/dashoo.cn/backend/api/controllers/lims/limsdataentry.go

@@ -1,15 +1,17 @@
 package lims
 
 import (
+	"dashoo.cn/backend/api/business/limsreportliquidtransportation"
 	"encoding/base64"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"reflect"
 	"unsafe"
 
+	"dashoo.cn/backend/api/business/workflow"
 	"dashoo.cn/business2/organize"
 	"dashoo.cn/business2/userRole"
-	"dashoo.cn/backend/api/business/workflow"
 
 	"os"
 
@@ -1224,7 +1226,7 @@ func (this *LimsDataEntryController) exportdatatoexcel(fileurl string, dataentry
 		var userlist limsdataentry.UserModel
 		svc.GetEntityByWhere(BaseUserName, "Id = '"+utils.ToStr(dataentrylist.JHUserId)+"'", &userlist)
 		DocUrl, err = svc.DocDataToExcel(entrustlist[0], dataentrylist, this.User.AccCode+LimsReportHuxfName, seqStr, fileurl, this.User.Description, userlist.Description)
-	//阻火器
+		//阻火器
 	case limsdoctemplate.DAYT_BACKFIRE_DETAIL:
 		seqStr := codecSvc.GetReportZuhqSequence(this.User.AccCode)
 		svc := Limsreportzuhq.GetLimsreportzuhqService(utils.DBE)
@@ -1256,7 +1258,7 @@ func (this *LimsDataEntryController) exportdatatoexcel(fileurl string, dataentry
 		var userlist limsdataentry.UserModel
 		svc.GetEntityByWhere(BaseUserName, "Id = '"+utils.ToStr(dataentrylist.JHUserId)+"'", &userlist)
 		DocUrl, err = svc.DocDataToExcel(entrustlist[0], dataentrylist, this.User.AccCode+LimsReportBeamPumpingUnitName, seqStr, fileurl, this.User.Description, userlist.Description)
-	//无游梁式抽油机检测报告
+		//无游梁式抽油机检测报告
 	case limsdoctemplate.DAYT_NOBEAMPUMPINGUNIT_DETAIL:
 		seqStr := codecSvc.GetReportNoBeamPumpingUnitsSequence(this.User.AccCode)
 		svc := limsreportnobeampumpingunits.GetLimsReportNoBeamPumpingUnitsService(utils.DBE)
@@ -1264,7 +1266,7 @@ func (this *LimsDataEntryController) exportdatatoexcel(fileurl string, dataentry
 		var userlist limsdataentry.UserModel
 		svc.GetEntityByWhere(BaseUserName, "Id = '"+utils.ToStr(dataentrylist.JHUserId)+"'", &userlist)
 		DocUrl, err = svc.DocDataToExcel(entrustlist[0], dataentrylist, this.User.AccCode+LimsReportNoBeamPumpingUnitName, seqStr, fileurl, this.User.Description, userlist.Description)
-	//防雷装置
+		//防雷装置
 	case limsdoctemplate.DAYT_LIGHTPROTECT_DETAIL:
 		seqStr := codecSvc.GetReportLightProtectSequence(this.User.AccCode)
 		svc := limsreportlp.GetLimsReportLpService(utils.DBE)
@@ -1274,7 +1276,7 @@ func (this *LimsDataEntryController) exportdatatoexcel(fileurl string, dataentry
 		var userlist limsdataentry.UserModel
 		svc.GetEntityByWhere(BaseUserName, "Id = '"+utils.ToStr(dataentrylist.JHUserId)+"'", &userlist)
 		DocUrl, err = svc.DocDataToExcel(entrustlist[0], dataentrylist, this.User.AccCode+LimsReportLightProtectName, seqStr, fileurl, this.User.Description, userlist.Description)
-	//防雷装置(等电位)
+		//防雷装置(等电位)
 	case limsdoctemplate.DAYT_EQUIPOTENT_DETAIL:
 		seqStr := codecSvc.GetReportEquipotentSequence(this.User.AccCode)
 		svc := limsreportequipotent.GetLimsReportEquipotentService(utils.DBE)
@@ -1284,7 +1286,7 @@ func (this *LimsDataEntryController) exportdatatoexcel(fileurl string, dataentry
 		var userlist limsdataentry.UserModel
 		svc.GetEntityByWhere(BaseUserName, "Id = '"+utils.ToStr(dataentrylist.JHUserId)+"'", &userlist)
 		DocUrl, err = svc.DocDataToExcel(entrustlist[0], dataentrylist, this.User.AccCode+LimsReportEquipotentName, seqStr, fileurl, this.User.Description, userlist.Description)
-	//电气接地装置
+		//电气接地装置
 	case limsdoctemplate.DAYT_ELECGROUND_DETAIL:
 		seqStr := codecSvc.GetReportElecGroundSequence(this.User.AccCode)
 		svc := limsreportelecground.GetLimsReportElecGroundService(utils.DBE)
@@ -1305,10 +1307,41 @@ func (this *LimsDataEntryController) exportdatatoexcel(fileurl string, dataentry
 		svc.GetEntityByWhere(BaseUserName, "Id = '"+utils.ToStr(dataentrylist.JHUserId)+"'", &userlist)
 		DocUrl, err = svc.DocDataToExcel(entrustlist[0], dataentrylist, this.User.AccCode+LimsReportLeakProtectName, seqStr, fileurl, this.User.Description, userlist.Description)
 
+	case limsdoctemplate.DAYT_LIQUIDTRANSPORTATION_DETAIL:
+		//seqStr := codecSvc.GetReportLeakProtectSequence(this.User.AccCode)
+		var model limsreportliquidtransportation.LimsReportLiquidTransportation
+		svc := limsreportliquidtransportation.GetLimsReportLiquidTransportationService(utils.DBE)
+		where1 := "DataEntryId=" + strconv.Itoa(dataentrylist.Id)
+		has := svc.GetEntityByWhere(this.User.AccCode+LimsReportLiquidTransportationName, where1, &model)
+		if (has) {
+			datamap := StructToMapDemo(model)
+			svcActiviti := workflow.GetActivitiService(utils.DBE)
+			//weed1.labsop.cn:9390/5,185d7c489668|离心泵机组液体输送系统.doc
+			// weed1.labsop.cn:9390/1,1866fd6844ea|test.docx
+			templateUrl := "http://" + entrustlist[0].DocAddress
+			fileName := entrustlist[0].DocName
+			DocUrl = svcActiviti.FillWordTemplate(datamap, templateUrl, fileName)
+			err = nil
+		} else {
+			DocUrl = ""
+			err = errors.New("")
+		}
+
 	}
 	return DocUrl, err
 }
 
+func StructToMapDemo(obj interface{}) map[string]interface{} {
+	obj1 := reflect.TypeOf(obj)
+	obj2 := reflect.ValueOf(obj)
+	var data = make(map[string]interface{})
+	for i := 0; i < obj1.NumField(); i++ {
+		data[obj1.Field(i).Name] = obj2.Field(i).Interface()
+	}
+	return data
+}
+
+
 // @Title 审核数字签名
 // @Description 审核数字签名
 // @Success	200	{object} controllers.Request
@@ -2554,21 +2587,21 @@ func (this *LimsDataEntryController) generateDetailCode(xlsx *excelize.File, tem
 		if pictureerr != nil {
 			fmt.Println(pictureerr)
 		}
-	//case limsdoctemplate.DAYT_ELECTRICCONTACTSPRESSUREGAUGETEST_DETAIL:
-	//	//电接点压力表
-	//	seqStr := codecSvc.GetDetailElectricPressureSequence(this.User.AccCode)
-	//	copyindex := 1	//所复制页的起始号
-	//	codeaxis := "C1"	//编号位置
-	//	pictureaxis := "E27"	//签名图片位置
-	//	if SheetNum > 1 {
-	//		this.copySheet(xlsx, copyindex, SheetNum, seqStr, codeaxis, pictureaxis)
-	//	}
-	//	xlsx.SetCellValue("sheet"+strconv.Itoa(copyindex), codeaxis, seqStr)
-	//	//插入检测人签名
-	//	pictureerr := xlsx.AddPicture("sheet"+strconv.Itoa(copyindex), pictureaxis, "./"+this.User.Description, "")
-	//	if pictureerr != nil {
-	//		fmt.Println(pictureerr)
-	//	}
+		//case limsdoctemplate.DAYT_ELECTRICCONTACTSPRESSUREGAUGETEST_DETAIL:
+		//	//电接点压力表
+		//	seqStr := codecSvc.GetDetailElectricPressureSequence(this.User.AccCode)
+		//	copyindex := 1	//所复制页的起始号
+		//	codeaxis := "C1"	//编号位置
+		//	pictureaxis := "E27"	//签名图片位置
+		//	if SheetNum > 1 {
+		//		this.copySheet(xlsx, copyindex, SheetNum, seqStr, codeaxis, pictureaxis)
+		//	}
+		//	xlsx.SetCellValue("sheet"+strconv.Itoa(copyindex), codeaxis, seqStr)
+		//	//插入检测人签名
+		//	pictureerr := xlsx.AddPicture("sheet"+strconv.Itoa(copyindex), pictureaxis, "./"+this.User.Description, "")
+		//	if pictureerr != nil {
+		//		fmt.Println(pictureerr)
+		//	}
 	case limsdoctemplate.DAYT_STEELTAPE_DETAIL:
 		//钢卷尺检定
 		seqStr := codecSvc.GetDetailSteelTapeTestSequence(this.User.AccCode)
@@ -3001,7 +3034,7 @@ func (this *LimsDataEntryController) GetHistoricTask() {
 	case "tjz":
 		processKey = "tjz_data_apply"
 
-	//宇信
+		//宇信
 	case "yx":
 		processKey = "yx_data_apply"
 

+ 526 - 0
src/dashoo.cn/backend/api/controllers/lims/limsreportheatingfurnace.go

@@ -0,0 +1,526 @@
+package lims
+
+import (
+	"dashoo.cn/backend/api/business/baseUser"
+	"dashoo.cn/backend/api/business/limsreportheatingfurnace"
+	. "dashoo.cn/backend/api/controllers"
+	"dashoo.cn/business/userRole"
+	"dashoo.cn/utils"
+	"encoding/json"
+	"strconv"
+	"strings"
+	"time"
+)
+
+type LimsReportHeatingFurnaceSessionController struct {
+	BaseController
+}
+
+// @Title 获取列表
+// @Description get user by token
+// @Success 200 {object} []limsreportheatingfurnace.LimsReportHeatingFurnace
+// @router /list [get]
+func (this *LimsReportHeatingFurnaceSessionController) GetEntityList() {
+
+	//获取分页信息
+	page := this.GetPageInfoForm()
+	where := " 1=1 "
+	orderby := "Id"
+	asc := false
+	Order := this.GetString("Order")
+	Prop := this.GetString("Prop")
+	if Order != "" && Prop != "" {
+		orderby = Prop
+		if Order == "asc" {
+			asc = true
+		}
+	}
+	Id := this.GetString("Id")
+	EId := this.GetString("EId")
+	TaskBalanceId := this.GetString("TaskBalanceId")
+	DataEntryId := this.GetString("DataEntryId")
+	TestDepartId := this.GetString("TestDepartId")
+	TestDepart := this.GetString("TestDepart")
+	PositionCheckId := this.GetString("PositionCheckId")
+	PositionCheck := this.GetString("PositionCheck")
+	CheckDate := this.GetString("CheckDate")
+	Number := this.GetString("Number")
+	HFModel := this.GetString("HFModel")
+	RHCapacity := this.GetString("RHCapacity")
+	RatedPower := this.GetString("RatedPower")
+	HFProDate := this.GetString("HFProDate")
+	Manufacturer := this.GetString("Manufacturer")
+	Fuel := this.GetString("Fuel")
+	BurnerManuf := this.GetString("BurnerManuf")
+	BurnerModel := this.GetString("BurnerModel")
+	BurnerProDate := this.GetString("BurnerProDate")
+	BurnerIntel := this.GetString("BurnerIntel")
+	Temperature := this.GetString("Temperature")
+	WindSpeed := this.GetString("WindSpeed")
+	RelativeHumidity := this.GetString("RelativeHumidity")
+	InstrStatus := this.GetString("InstrStatus")
+	InTemp := this.GetString("InTemp")
+	InPressure := this.GetString("InPressure")
+	OutTemp := this.GetString("OutTemp")
+	OutPressure := this.GetString("OutPressure")
+	MediumFlow := this.GetString("MediumFlow")
+	MedMoiContent := this.GetString("MedMoiContent")
+	MedDensity := this.GetString("MedDensity")
+	CombustionQty := this.GetString("CombustionQty")
+	Indoor := this.GetString("Indoor")
+	Remark := this.GetString("Remark")
+	CreateUserId := this.GetString("CreateUserId")
+	CreateOn := this.GetString("CreateOn")
+	CreateBy := this.GetString("CreateBy")
+	ModifiedOn := this.GetString("ModifiedOn")
+	ModifiedUserId := this.GetString("ModifiedUserId")
+	ModifiedBy := this.GetString("ModifiedBy")
+
+	if Id != "" {
+		where = where + " and Id like '%" + Id + "%'"
+	}
+
+	if EId != "" {
+		where = where + " and EId like '%" + EId + "%'"
+	}
+
+	if TaskBalanceId != "" {
+		where = where + " and TaskBalanceId like '%" + TaskBalanceId + "%'"
+	}
+
+	if DataEntryId != "" {
+		where = where + " and DataEntryId like '%" + DataEntryId + "%'"
+	}
+
+	if TestDepartId != "" {
+		where = where + " and TestDepartId like '%" + TestDepartId + "%'"
+	}
+
+	if TestDepart != "" {
+		where = where + " and TestDepart like '%" + TestDepart + "%'"
+	}
+
+	if PositionCheckId != "" {
+		where = where + " and PositionCheckId like '%" + PositionCheckId + "%'"
+	}
+
+	if PositionCheck != "" {
+		where = where + " and PositionCheck like '%" + PositionCheck + "%'"
+	}
+
+	if CheckDate != "" {
+		where = where + " and CheckDate like '%" + CheckDate + "%'"
+	}
+
+	if Number != "" {
+		where = where + " and Number like '%" + Number + "%'"
+	}
+
+	if HFModel != "" {
+		where = where + " and HFModel like '%" + HFModel + "%'"
+	}
+
+	if RHCapacity != "" {
+		where = where + " and RHCapacity like '%" + RHCapacity + "%'"
+	}
+
+	if RatedPower != "" {
+		where = where + " and RatedPower like '%" + RatedPower + "%'"
+	}
+
+	if HFProDate != "" {
+		where = where + " and HFProDate like '%" + HFProDate + "%'"
+	}
+
+	if Manufacturer != "" {
+		where = where + " and Manufacturer like '%" + Manufacturer + "%'"
+	}
+
+	if Fuel != "" {
+		where = where + " and Fuel like '%" + Fuel + "%'"
+	}
+
+	if BurnerManuf != "" {
+		where = where + " and BurnerManuf like '%" + BurnerManuf + "%'"
+	}
+
+	if BurnerModel != "" {
+		where = where + " and BurnerModel like '%" + BurnerModel + "%'"
+	}
+
+	if BurnerProDate != "" {
+		where = where + " and BurnerProDate like '%" + BurnerProDate + "%'"
+	}
+
+	if BurnerIntel != "" {
+		where = where + " and BurnerIntel like '%" + BurnerIntel + "%'"
+	}
+
+	if Temperature != "" {
+		where = where + " and Temperature like '%" + Temperature + "%'"
+	}
+
+	if WindSpeed != "" {
+		where = where + " and WindSpeed like '%" + WindSpeed + "%'"
+	}
+
+	if RelativeHumidity != "" {
+		where = where + " and RelativeHumidity like '%" + RelativeHumidity + "%'"
+	}
+
+	if InstrStatus != "" {
+		where = where + " and InstrStatus like '%" + InstrStatus + "%'"
+	}
+
+	if InTemp != "" {
+		where = where + " and InTemp like '%" + InTemp + "%'"
+	}
+
+	if InPressure != "" {
+		where = where + " and InPressure like '%" + InPressure + "%'"
+	}
+
+	if OutTemp != "" {
+		where = where + " and OutTemp like '%" + OutTemp + "%'"
+	}
+
+	if OutPressure != "" {
+		where = where + " and OutPressure like '%" + OutPressure + "%'"
+	}
+
+	if MediumFlow != "" {
+		where = where + " and MediumFlow like '%" + MediumFlow + "%'"
+	}
+
+	if MedMoiContent != "" {
+		where = where + " and MedMoiContent like '%" + MedMoiContent + "%'"
+	}
+
+	if MedDensity != "" {
+		where = where + " and MedDensity like '%" + MedDensity + "%'"
+	}
+
+	if CombustionQty != "" {
+		where = where + " and CombustionQty like '%" + CombustionQty + "%'"
+	}
+
+	if Indoor != "" {
+		where = where + " and Indoor like '%" + Indoor + "%'"
+	}
+
+	if Remark != "" {
+		where = where + " and Remark like '%" + Remark + "%'"
+	}
+
+	if CreateUserId != "" {
+		where = where + " and CreateUserId like '%" + CreateUserId + "%'"
+	}
+
+	if CreateOn != "" {
+		where = where + " and CreateOn like '%" + CreateOn + "%'"
+	}
+
+	if CreateBy != "" {
+		where = where + " and CreateBy like '%" + CreateBy + "%'"
+	}
+
+	if ModifiedOn != "" {
+		where = where + " and ModifiedOn like '%" + ModifiedOn + "%'"
+	}
+
+	if ModifiedUserId != "" {
+		where = where + " and ModifiedUserId like '%" + ModifiedUserId + "%'"
+	}
+
+	if ModifiedBy != "" {
+		where = where + " and ModifiedBy like '%" + ModifiedBy + "%'"
+	}
+
+	if CreateOn != "" {
+		dates := strings.Split(CreateOn, ",")
+		if len(dates) == 2 {
+			minDate := dates[0]
+			maxDate := dates[1]
+			where = where + " and CreateOn>='" + minDate + "' and CreateOn<='" + maxDate + "'"
+		}
+	}
+	session := utils.DBE.NewSession()
+	svc := limsreportheatingfurnace.GetLimsReportHeatingFurnaceSessionService(session)
+	var list []limsreportheatingfurnace.LimsReportHeatingFurnace
+	total := svc.GetPagingEntitiesWithOrderBytbl(this.User.AccCode, page.CurrentPage, page.Size, orderby, asc, &list, where)
+	var datainfo DataInfo
+	datainfo.Items = list
+	datainfo.CurrentItemCount = total
+	datainfo.PageIndex = page.CurrentPage
+	datainfo.ItemsPerPage = page.Size
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 获取字典列表
+// @Description get user by token
+// @Success 200 {object} map[string]interface{}
+// @router /dictlist [get]
+func (this *LimsReportHeatingFurnaceSessionController) GetDictList() {
+	dictList := make(map[string]interface{})
+	//dictSvc := items.GetItemsService(utils.DBE)
+	userSvc := baseUser.GetBaseUserService(utils.DBE)
+	//customerSvc := svccustomer.GetCustomerService(utils.DBE)
+	//dictList["WellNo"] = dictSvc.GetKeyValueItems("WellNo", this.User.AccCode)
+	var userEntity userRole.Base_User
+	userSvc.GetEntityById(this.User.Id, &userEntity)
+	dictList["Supervisers"] = userSvc.GetUserListByDepartmentId(this.User.AccCode, userEntity.Departmentid)
+
+	//var dictCustomer []svccustomer.Customer
+	//customerSvc.GetEntitysByWhere(this.User.AccCode + CustomerName, "", &dictCustomer)
+	//dictList["EntrustCorp"] = &dictCustomer
+
+	var datainfo DataInfo
+	datainfo.Items = dictList
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 获取实体
+// @Description 获取实体
+// @Success 200 {object} limsreportheatingfurnace.LimsReportHeatingFurnace
+// @router /get/:id [get]
+func (this *LimsReportHeatingFurnaceSessionController) GetEntity() {
+	session := utils.DBE.NewSession()
+	Id := this.Ctx.Input.Param(":id")
+
+	var model limsreportheatingfurnace.LimsReportHeatingFurnace
+	svc := limsreportheatingfurnace.GetLimsReportHeatingFurnaceSessionService(session)
+	svc.GetEntityByIdBytbl(this.User.AccCode+LimsReportHeatingFurnaceName, Id, &model)
+
+	this.Data["json"] = &model
+	this.ServeJSON()
+}
+
+// @Title 获取实体ByDateEntryId
+// @Description 获取实体
+// @Success 200 {object} limsreportheatingfurnace.LimsReportHeatingFurnace
+// @router /getEntityByDataEntryId/:id [get]
+func (this *LimsReportHeatingFurnaceSessionController) GetEntityByDataEntryId() {
+	session := utils.DBE.NewSession()
+	dictList := make(map[string]interface{})
+	Id := this.Ctx.Input.Param(":id")
+	where := "DataEntryId=" + Id
+	var model limsreportheatingfurnace.LimsReportHeatingFurnace
+	var tabledata []limsreportheatingfurnace.LimsHeatingFurnaceItems
+	svc := limsreportheatingfurnace.GetLimsReportHeatingFurnaceSessionService(session)
+	//svc.GetEntityByIdBytbl(this.User.AccCode+LimsReportHeatingFurnaceName, Id, &model)
+	has := svc.GetEntityByWhere(this.User.AccCode+LimsReportHeatingFurnaceName, where, &model)
+	wheretable := "MId=" + strconv.Itoa(model.Id)
+	svc.GetEntitysByWhere(this.User.AccCode+LimsHeatingFurnaceItemsName, wheretable, &tabledata)
+	var data ErrorDataInfo
+	if (has) {
+		dictList["formData"] = model
+		dictList["tableData"] = tabledata
+		data.Code = 0
+	} else {
+		data.Code = -1
+	}
+	data.Item = dictList
+	this.Data["json"] = &data
+	this.ServeJSON()
+}
+
+// @Title 添加
+// @Description 新增
+// @Param 	body body limsreportheatingfurnace.LimsReportHeatingFurnace
+// @Success	200	{object} controllers.Request
+// @router /add [post]
+func (this *LimsReportHeatingFurnaceSessionController) AddEntity() {
+	session := utils.DBE.NewSession()
+	var requestData limsreportheatingfurnace.HeatingFurnaceData
+	var model limsreportheatingfurnace.LimsReportHeatingFurnace
+	var modelitems limsreportheatingfurnace.LimsHeatingFurnaceItems
+	var jsonBlob = this.Ctx.Input.RequestBody
+	svc := limsreportheatingfurnace.GetLimsReportHeatingFurnaceSessionService(session)
+
+	json.Unmarshal(jsonBlob, &requestData)
+	model = requestData.FormData
+	var tabledata = requestData.TableData
+	model.CreateOn = time.Now()
+	model.CreateBy = this.User.Realname
+	model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+
+	_, err := svc.InsertEntityBytbl(this.User.AccCode+LimsReportHeatingFurnaceName, &model)
+
+	if err == nil {
+		for i := 0; i < len(tabledata); i++ {
+			modelitems = tabledata[i]
+			modelitems.MId = model.Id
+			_, err = svc.InsertEntityBytbl(this.User.AccCode+LimsHeatingFurnaceItemsName, &modelitems)
+		}
+	}
+
+	var errinfo ErrorDataInfo
+	if err == nil {
+		//新增
+		errinfo.Message = "添加成功!"
+		errinfo.Code = 0
+		errinfo.Item = model.Id
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 修改实体
+// @Description 修改实体
+// @Param 	body body limsreportheatingfurnace.LimsReportHeatingFurnace
+// @Success	200	{object} controllers.Request
+// @router /update/:id [post]
+func (this *LimsReportHeatingFurnaceSessionController) UpdateEntity() {
+	session := utils.DBE.NewSession()
+	id := this.Ctx.Input.Param(":id")
+	var errinfo ErrorInfo
+	if id == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+
+	var model limsreportheatingfurnace.LimsReportHeatingFurnace
+	var modelitems []limsreportheatingfurnace.LimsHeatingFurnaceItems
+	var HeatingFurnace limsreportheatingfurnace.HeatingFurnaceData
+	svc := limsreportheatingfurnace.GetLimsReportHeatingFurnaceSessionService(session)
+
+	var jsonBlob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonBlob, &HeatingFurnace)
+	model = HeatingFurnace.FormData
+	modelitems = HeatingFurnace.TableData
+
+	model.ModifiedOn = time.Now()
+	model.ModifiedBy = this.User.Realname
+	model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+
+	cols := []string{
+
+		"Id",
+		"EId",
+		"TaskBalanceId",
+		"DataEntryId",
+		"TestDepartId",
+		"TestDepart",
+		"PositionCheckId",
+		"PositionCheck",
+		"CheckDate",
+		"Number",
+		"HFModel",
+		"RHCapacity",
+		"RatedPower",
+		"HFProDate",
+		"Manufacturer",
+		"Fuel",
+		"BurnerManuf",
+		"BurnerModel",
+		"BurnerProDate",
+		"BurnerIntel",
+		"Temperature",
+		"WindSpeed",
+		"RelativeHumidity",
+		"InstrStatus",
+		"InTemp",
+		"InPressure",
+		"OutTemp",
+		"OutPressure",
+		"MediumFlow",
+		"MedMoiContent",
+		"MedDensity",
+		"CombustionQty",
+		"Indoor",
+		"INCTMeter",
+		"CEMeter",
+		"StandardTM",
+		"OnlineMeter",
+		"Remark",
+		"CreateUserId",
+		"CreateOn",
+		"CreateBy",
+		"ModifiedOn",
+		"ModifiedUserId",
+		"ModifiedBy",
+	}
+	err := svc.UpdateEntityBytbl(this.User.AccCode+LimsReportHeatingFurnaceName, id, &model, cols)
+
+	colsitems := []string{
+		"OrderNo",
+		"TestTime",
+		"LeftTemperature1",
+		"LeftTemperature2",
+		"LeftTemperature3",
+		"LeftTemperature4",
+		"RichtTemperature1",
+		"RichtTemperature2",
+		"RichtTemperature3",
+		"RichtTemperature4",
+		"ExhaustTemperature",
+		"Oxygen",
+		"SulfurDioxide",
+		"CarbonMonoxide",
+		"CarbonDioxide",
+	}
+
+	if err == nil {
+		for i := 0; i < len(modelitems); i++ {
+			where := "Id=" + strconv.Itoa(modelitems[i].Id)
+			err = svc.UpdateEntityBywheretbl(this.User.AccCode+LimsHeatingFurnaceItemsName, &modelitems[i], colsitems, where)
+		}
+
+	}
+
+	if err == nil {
+		errinfo.Message = "修改成功!"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "修改失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 删除单条信息
+// @Description
+// @Success 200 {object} ErrorInfo
+// @Failure 403 :id 为空
+// @router /delete/:Id [delete]
+func (this *LimsReportHeatingFurnaceSessionController) DeleteEntity() {
+	session := utils.DBE.NewSession()
+	Id := this.Ctx.Input.Param(":Id")
+	var errinfo ErrorInfo
+	if Id == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+	var model limsreportheatingfurnace.LimsReportHeatingFurnace
+	var entityempty limsreportheatingfurnace.LimsReportHeatingFurnace
+	svc := limsreportheatingfurnace.GetLimsReportHeatingFurnaceSessionService(session)
+	opdesc := "删除-" + Id
+	err := svc.DeleteOperationAndWriteLogBytbl(this.User.AccCode+LimsReportHeatingFurnaceName, BaseOperationLogName, Id, &model, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "钻井日报")
+	if err == nil {
+		errinfo.Message = "删除成功"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}

+ 12 - 0
src/dashoo.cn/backend/api/routers/router.go

@@ -476,6 +476,18 @@ func init() {
 				&lims.LimsReportSpecialFieldController{},
 			),
 		),
+		// 油田专用变压器运行数据现场测试记录
+		beego.NSNamespace("/limsreportheatingfurnace",
+			beego.NSInclude(
+				&lims.LimsReportHeatingFurnaceSessionController{},
+			),
+		),
+		// 导出word
+		beego.NSNamespace("/limsexportword",
+			beego.NSInclude(
+				&lims.LimsExportWordController{},
+			),
+		),
 	)
 	beego.AddNamespace(ns)
 }

+ 2 - 2
src/dashoo.cn/frontend_web/src/api/lims/limsreportheatingFurnace.js

@@ -24,11 +24,11 @@ export default {
       method: 'GET'
     })
   },
-  addEntity (formData, myAxios) {
+  addEntity (params, myAxios) {
     return myAxios({
       url: '/limsreportheatingfurnace/add',
       method: 'post',
-      data: formData
+      data: params
     })
   },
   updateEntity (entityId, formData, myAxios) {

+ 7 - 0
src/dashoo.cn/frontend_web/src/pages/lims/dataentry/alltask.vue

@@ -717,6 +717,13 @@
               path: '/lims/reportnobeampumpingUnits/subdata/dataopera',
               query: queryParams,
             });
+            break
+          // 离心泵机组液体输送系统节能监测原始记录
+          case  "DAYT.LiquidTransportation.Detail":
+            this.$router.push({
+              path: '/lims/reportliquidtransportation/operation',
+              query: queryParams,
+            });
             break;
 
           default:

+ 405 - 120
src/dashoo.cn/frontend_web/src/pages/lims/reportheatingfurnace/_opera/operation.vue

@@ -12,7 +12,8 @@
           <i class="icon icon-table2"></i> 编辑
         </span>
         <span style="float: right;">
-          <!--<el-button type="primary" size="mini" @click="saveEntity">保存</el-button>-->
+          <el-button type="primary" size="mini" @click="exportWord">导出</el-button>
+          <!--<el-button type="primary" size="mini" @click="saveEntity"></el-button>-->
           <!--<router-link :to="'/lims/reportnobeampumpingunit'">-->
             <!--<el-button type="primary" size="mini" style="margin-left: 8px">返回</el-button>-->
           <!--</router-link>-->
@@ -86,8 +87,14 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="燃料">
-              <el-input v-model.trim="formData.Fuel" placeholder="请输入" style="width: 100%">
-              </el-input>
+              <el-select v-model.trim="formData.Fuel" filterable placeholder="请选择" style="width: 100%">
+                <el-option
+                  v-for="item in FuelOptions"
+                  :key="item.Value"
+                  :label="item.Label"
+                  :value="item.Value">
+                </el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -110,8 +117,14 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="燃烧器是否智能">
-              <el-input v-model.trim="formData.BurnerIntel" placeholder="请输入" style="width: 100%">
-              </el-input>
+              <el-select v-model.trim="formData.BurnerIntel" filterable placeholder="请选择" style="width: 100%">
+                <el-option
+                  v-for="item in BurnerIntelOptions"
+                  :key="item.Value"
+                  :label="item.Label"
+                  :value="item.Value">
+                </el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -213,129 +226,200 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="室内(外)">
-                <el-input v-model.trim="formData.Standard" placeholder="请输入" style="width: 100%">
-                </el-input>
+                <el-select v-model.trim="formData.Indoor" filterable placeholder="请选择" style="width: 100%">
+                  <el-option
+                    v-for="item in IndoorOptions"
+                    :key="item.Value"
+                    :label="item.Label"
+                    :value="item.Value">
+                  </el-option>
+                </el-select>
               </el-form-item>
             </el-col>
           </el-card>
         </el-row>
         <el-row>
           <el-card class="box-card">
-            <div slot="header" class="clearfix">
-              <el-button style="float: right" type="primary">添加</el-button>
-            </div>
             <el-table
-              :data="tableData3"
+              :data="tableData"
+              show-summary
+              :summary-method="getSummaries"
               style="width: 100%">
               <el-table-column
-                prop="date"
+                prop="OrderNo"
                 label="序号"
                 align="center"
-                min-width="80">
+                min-width="50">
               </el-table-column>
               <el-table-column
-                prop="name"
+                prop="TestTime"
                 label="测试时间"
-                min-width="100"
+                min-width="120px"
                 align="center">
+                <template slot-scope="scope">
+                  <el-date-picker size="small" style="width: 100%" v-model="scope.row.TestTime" type="date">
+                  </el-date-picker>
+                </template>
               </el-table-column>
               <el-table-column label="左侧表面温度(℃)" align="center">
                 <el-table-column
-                  prop="province"
+                  prop="LeftTemperature1"
                   label="1"
                   min-width="80"
                   align="center">
+                  <template slot-scope="scope">
+                    <el-input size="small" type="number" step="0.01" v-model.number="scope.row.LeftTemperature1" style="width: 100%"></el-input>
+                  </template>
                 </el-table-column>
                 <el-table-column
-                  prop="city"
+                  prop="LeftTemperature2"
                   label="2"
                   min-width="80"
                   align="center">
+                  <template slot-scope="scope">
+                    <el-input size="small" type="number" step="0.01" v-model.number="scope.row.LeftTemperature2" style="width: 100%"></el-input>
+                  </template>
                 </el-table-column>
                 <el-table-column
-                  prop="address"
+                  prop="LeftTemperature3"
                   label="3"
                   min-width="80"
                   align="center">
+                  <template slot-scope="scope">
+                    <el-input size="small" type="number" step="0.01" v-model.number="scope.row.LeftTemperature3" style="width: 100%"></el-input>
+                  </template>
                 </el-table-column>
                 <el-table-column
-                  prop="zip"
+                  prop="LeftTemperature4"
                   label="4"
                   min-width="80"
                   align="center">
+                  <template slot-scope="scope">
+                    <el-input size="small" type="number" step="0.01" v-model.number="scope.row.LeftTemperature4" style="width: 100%"></el-input>
+                  </template>
                 </el-table-column>
               </el-table-column>
               <el-table-column label="右侧表面温度(℃)" align="center">
                 <el-table-column
-                  prop="province"
+                  prop="RichtTemperature1"
                   label="1"
                   min-width="80"
                   align="center">
+                  <template slot-scope="scope">
+                    <el-input size="small" type="number" step="0.01" v-model.number="scope.row.RichtTemperature1" style="width: 100%"></el-input>
+                  </template>
                 </el-table-column>
                 <el-table-column
-                  prop="city"
+                  prop="RichtTemperature2"
                   label="2"
                   min-width="80"
                   align="center">
+                  <template slot-scope="scope">
+                    <el-input size="small" type="number" step="0.01" v-model.number="scope.row.RichtTemperature2" style="width: 100%"></el-input>
+                  </template>
                 </el-table-column>
                 <el-table-column
-                  prop="address"
+                  prop="RichtTemperature3"
                   label="3"
                   min-width="80"
                   align="center">
+                  <template slot-scope="scope">
+                    <el-input size="small" type="number" step="0.01" v-model.number="scope.row.RichtTemperature3" style="width: 100%"></el-input>
+                  </template>
                 </el-table-column>
                 <el-table-column
-                  prop="zip"
+                  prop="RichtTemperature4"
                   label="4"
                   min-width="80"
                   align="center">
+                  <template slot-scope="scope">
+                    <el-input size="small" type="number" step="0.01" v-model.number="scope.row.RichtTemperature4" style="width: 100%"></el-input>
+                  </template>
                 </el-table-column>
               </el-table-column>
               <el-table-column
-                prop="name"
+                prop="ExhaustTemperature"
                 label="排烟温度(℃)"
                 min-width="80"
                 align="center">
+                <template slot-scope="scope">
+                  <el-input size="small" type="number" step="0.01" v-model.number="scope.row.ExhaustTemperature" style="width: 100%"></el-input>
+                </template>
               </el-table-column>
               <el-table-column
-                prop="name"
+                prop="Oxygen"
                 label="O2"
                 min-width="80"
                 align="center">
+                <template slot-scope="scope">
+                  <el-input size="small" type="number" step="0.01" v-model.number="scope.row.Oxygen" style="width: 100%"></el-input>
+                </template>
               </el-table-column>
               <el-table-column
-                prop="name"
+                prop="SulfurDioxide"
                 label="SO2"
                 min-width="80"
                 align="center">
+                <template slot-scope="scope">
+                  <el-input size="small" type="number" step="0.01" v-model.number="scope.row.SulfurDioxide" style="width: 100%"></el-input>
+                </template>
               </el-table-column>
               <el-table-column
-                prop="name"
+                prop="CarbonMonoxide"
                 label="CO"
                 min-width="80"
                 align="center">
+                <template slot-scope="scope">
+                  <el-input size="small" type="number" step="0.01" v-model.number="scope.row.CarbonMonoxide" style="width: 100%"></el-input>
+                </template>
               </el-table-column>
               <el-table-column
-                prop="name"
+                prop="CarbonDioxide"
                 label="CO2"
                 min-width="80"
                 align="center">
+                <template slot-scope="scope">
+                  <el-input size="small" type="number" step="0.01" v-model.number="scope.row.CarbonDioxide" style="width: 100%"></el-input>
+                </template>
               </el-table-column>
             </el-table>
           </el-card>
           <el-card>
-            <!--<el-col :span="24">-->
-              <!--<el-form-item label="备注">-->
-                <!--<el-input type="textarea" v-model.trim="formData.Remark" placeholder="请输入" style="width: 100%"></el-input>-->
-              <!--</el-form-item>-->
-            <!--</el-col>-->
-            <!--<el-col :span="24">-->
-                <!--<el-form-item :span="24" style="text-align: center;">-->
-                  <!--<el-button type="primary" size="small" @click="saveEntity"><i class="el-icon-circle-check"></i>-->
-                    <!--保存-->
-                  <!--</el-button>-->
-                <!--</el-form-item>-->
-              <!--</el-col>-->
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="备注">
+                  <el-input type="textarea" v-model.trim="formData.Remark" placeholder="请输入" style="width: 100%"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="燃烧效率仪">
+                  <el-input v-model.trim="formData.CEMeter" placeholder="请输入" style="width: 100%"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="红外非接触测温仪" label-width="150px">
+                  <el-input v-model.trim="formData.INCTMeter" placeholder="请输入" style="width: 100%"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="标准温度计">
+                  <el-input v-model.trim="formData.StandardTM" placeholder="请输入" style="width: 100%"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="在线仪表">
+                  <el-input v-model.trim="formData.OnlineMeter" placeholder="请输入" style="width: 100%"></el-input>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="24">
+                  <el-form-item :span="24" style="text-align: center;">
+                    <el-button type="primary" size="small" @click="saveEntity"><i class="el-icon-circle-check"></i>
+                      保存
+                    </el-button>
+                  </el-form-item>
+                </el-col>
+            </el-row>
           </el-card>
         </el-row>
       </el-form>
@@ -347,6 +431,7 @@
   import {
     mapGetters
   } from 'vuex'
+  import api from '@/api/lims/limsreportheatingFurnace'
 
   export default {
     computed: {
@@ -357,7 +442,142 @@
     name: '',
     data () {
       return {
-        tableData3: [],
+        Id: '',
+        EId: '',
+        TaskBalanceId: '',
+        DataEntryId: '',
+        TestDepartId: '',
+
+        currentOrderNo: 0,
+        BurnerIntelOptions: [
+          {
+            Label: '智能',
+            Value: '智能'
+          },
+          {
+            Label: '手动',
+            Value: '手动'
+          }
+        ],
+        IndoorOptions: [
+          {
+            Label: '室内',
+            Value: '室内'
+          },
+          {
+            Label: '室外',
+            Value: '室外'
+          }
+        ],
+        FuelOptions: [
+          {
+            Label: '天然气',
+            Value: '天然气'
+          },
+          {
+            Label: '油',
+            Value: '油'
+          },
+          {
+            Label: '其它燃料',
+            Value: '其它燃料'
+          }
+        ],
+        tableData: [
+          {
+            Id: 0,
+            MId: 0,
+            OrderNo: 1,
+            TestTime: new Date(),
+            LeftTemperature1: '',
+            LeftTemperature2: '',
+            LeftTemperature3: '',
+            LeftTemperature4: '',
+            RichtTemperature1: '',
+            RichtTemperature2: '',
+            RichtTemperature3: '',
+            RichtTemperature4: '',
+            ExhaustTemperature: '',
+            Oxygen: '',
+            SulfurDioxide: '',
+            CarbonMonoxide: '',
+            CarbonDioxide: ''
+          },
+          {
+            Id: 0,
+            MId: 0,
+            OrderNo: 2,
+            TestTime: new Date(),
+            LeftTemperature1: '',
+            LeftTemperature2: '',
+            LeftTemperature3: '',
+            LeftTemperature4: '',
+            RichtTemperature1: '',
+            RichtTemperature2: '',
+            RichtTemperature3: '',
+            RichtTemperature4: '',
+            ExhaustTemperature: '',
+            Oxygen: '',
+            SulfurDioxide: '',
+            CarbonMonoxide: '',
+            CarbonDioxide: ''
+          },
+          {
+            Id: 0,
+            MId: 0,
+            OrderNo: 3,
+            TestTime: new Date(),
+            LeftTemperature1: '',
+            LeftTemperature2: '',
+            LeftTemperature3: '',
+            LeftTemperature4: '',
+            RichtTemperature1: '',
+            RichtTemperature2: '',
+            RichtTemperature3: '',
+            RichtTemperature4: '',
+            ExhaustTemperature: '',
+            Oxygen: '',
+            SulfurDioxide: '',
+            CarbonMonoxide: '',
+            CarbonDioxide: ''
+          },
+          {
+            Id: 0,
+            MId: 0,
+            OrderNo: 4,
+            TestTime: new Date(),
+            LeftTemperature1: '',
+            LeftTemperature2: '',
+            LeftTemperature3: '',
+            LeftTemperature4: '',
+            RichtTemperature1: '',
+            RichtTemperature2: '',
+            RichtTemperature3: '',
+            RichtTemperature4: '',
+            ExhaustTemperature: '',
+            Oxygen: '',
+            SulfurDioxide: '',
+            CarbonMonoxide: '',
+            CarbonDioxide: ''
+          },
+          {
+            Id: 0,
+            MId: 0,
+            OrderNo: 5,
+            TestTime: new Date(),
+            LeftTemperature1: '',
+            LeftTemperature2: '',
+            LeftTemperature3: '',
+            LeftTemperature4: '',
+            RichtTemperature1: '',
+            RichtTemperature2: '',
+            RichtTemperature3: '',
+            RichtTemperature4: '',
+            Oxygen: '',
+            SulfurDioxide: '',
+            CarbonMonoxide: '',
+            CarbonDioxide: ''
+          }],
         formData: {
           Id: '',
           EId: '',
@@ -367,17 +587,17 @@
           TestDepart: '',
           PositionCheckId: '',
           PositionCheck: '',
-          CheckDate: '',
+          CheckDate: new Date(),
           Number: '',
           HFModel: '',
           RHCapacity: '',
           RatedPower: '',
-          HFProDate: '',
+          HFProDate: new Date(),
           Manufacturer: '',
           Fuel: '',
           BurnerManuf: '',
           BurnerModel: '',
-          BurnerProDate: '',
+          BurnerProDate: new Date(),
           BurnerIntel: '',
           Temperature: '',
           WindSpeed: '',
@@ -392,6 +612,10 @@
           MedDensity: '',
           CombustionQty: '',
           Indoor: '',
+          INCTMeter: '',
+          CEMeter: '',
+          StandardTM: '',
+          OnlineMeter: '',
           Remark: '',
           CreateUserId: '',
           CreateOn: '',
@@ -407,92 +631,153 @@
         }
       }
     },
+    created () {
+      // this.EId = this.$route.query.eid
+      // this.TaskBalanceId = this.$route.query.tbid
+      this.DataEntryId = 17// this.$route.query.deid
+      this.formData.DataEntryId = parseInt(this.DataEntryId)
+      this.initData()
+    },
     methods: {
+      exportWord () {
+        this.$axios.post('/limsexportword/exportWord', this.formData)
+          .then(res => {
+            if (res.data.code === 0) {
+
+            } else {
+              this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+      paramsValidate (params) {
+        let flag = false
+        for (var key in params) {
+          if (key !== 'OrderNo' && key !== 'TestTime') {
+            if (params[key]) {
+              return true
+            }
+          }
+        }
+        return flag
+      },
       saveEntity () {
         this.$refs['formData'].validate((valid) => {
           if (valid) {
-            alert('submit!')
+            if (this.formData.Id > 0) {
+              this.updateEntity()
+            } else {
+              this.addEntity()
+            }
           } else {
-            console.log('error submit!!')
             return false
           }
         })
       },
-      numberCheck (str) {
-        switch (str) {
-          case 'TrafficTest1':
-            this.formData.TrafficTest1 = this.formData.TrafficTest1.replace(/[^0-9.-]/g, '')
-            break
-          case 'TrafficTest2':
-            this.formData.TrafficTest2 = this.formData.TrafficTest2.replace(/[^0-9.-]/g, '')
-            break
-          case 'TrafficTest3':
-            this.formData.TrafficTest3 = this.formData.TrafficTest3.replace(/[^0-9.-]/g, '')
-            break
-          case 'PumpSuction1':
-            this.formData.PumpSuction1 = this.formData.PumpSuction1.replace(/[^0-9.-]/g, '')
-            break
-          case 'PumpSuction2':
-            this.formData.PumpSuction2 = this.formData.PumpSuction2.replace(/[^0-9.-]/g, '')
-            break
-          case 'PumpSuction3':
-            this.formData.PumpSuction3 = this.formData.PumpSuction3.replace(/[^0-9.-]/g, '')
-            break
-          case 'PumpDischarge1':
-            this.formData.PumpDischarge1 = this.formData.PumpDischarge1.replace(/[^0-9.-]/g, '')
-            break
-          case 'PumpDischarge2':
-            this.formData.PumpDischarge2 = this.formData.PumpDischarge2.replace(/[^0-9.-]/g, '')
-            break
-          case 'PumpDischarge3':
-            this.formData.PumpDischarge3 = this.formData.PumpDischarge3.replace(/[^0-9.-]/g, '')
-            break
-          case 'ThrottlePressure1':
-            this.formData.ThrottlePressure1 = this.formData.ThrottlePressure1.replace(/[^0-9.-]/g, '')
-            break
-          case 'ThrottlePressure2':
-            this.formData.ThrottlePressure2 = this.formData.ThrottlePressure2.replace(/[^0-9.-]/g, '')
-            break
-          case 'ThrottlePressure3':
-            this.formData.ThrottlePressure3 = this.formData.ThrottlePressure3.replace(/[^0-9.-]/g, '')
-            break
-          case 'TestVoltage1':
-            this.formData.TestVoltage1 = this.formData.TestVoltage1.replace(/[^0-9.-]/g, '')
-            break
-          case 'TestVoltage2':
-            this.formData.TestVoltage2 = this.formData.TestVoltage2.replace(/[^0-9.-]/g, '')
-            break
-          case 'TestVoltage3':
-            this.formData.TestVoltage3 = this.formData.TestVoltage3.replace(/[^0-9.-]/g, '')
-            break
-          case 'TestCurrent1':
-            this.formData.TestCurrent1 = this.formData.TestCurrent1.replace(/[^0-9.-]/g, '')
-            break
-          case 'TestCurrent2':
-            this.formData.TestCurrent2 = this.formData.TestCurrent2.replace(/[^0-9.-]/g, '')
-            break
-          case 'TestCurrent3':
-            this.formData.TestCurrent3 = this.formData.TestCurrent3.replace(/[^0-9.-]/g, '')
-            break
-          case 'MotorPower1':
-            this.formData.MotorPower1 = this.formData.MotorPower1.replace(/[^0-9.-]/g, '')
-            break
-          case 'MotorPower2':
-            this.formData.MotorPower2 = this.formData.MotorPower2.replace(/[^0-9.-]/g, '')
-            break
-          case 'MotorPower3':
-            this.formData.MotorPower3 = this.formData.MotorPower3.replace(/[^0-9.-]/g, '')
-            break
-          case 'MotorFactor1':
-            this.formData.MotorFactor1 = this.formData.MotorFactor1.replace(/[^0-9.-]/g, '')
-            break
-          case 'MotorFactor2':
-            this.formData.MotorFactor2 = this.formData.MotorFactor2.replace(/[^0-9.-]/g, '')
-            break
-          case 'MotorFactor3':
-            this.formData.MotorFactor3 = this.formData.MotorFactor3.replace(/[^0-9.-]/g, '')
-            break
+      addEntity () {
+        let tabledataarr = []
+        Object.assign(tabledataarr, this.tableData)
+        for (let i = 0; i < tabledataarr.length; i++) {
+          if (!this.paramsValidate(tabledataarr[i])) {
+            tabledataarr.splice(i, 1)
+            i--
+          }
+        }
+        let params = {
+          TableData: this.tableData,
+          FormData: this.formData
+        }
+        console.log(params, 'params')
+        api.addEntity(params, this.$axios).then(res => {
+          if (res.data.code === 0) {
+            this.formData.Id = res.data.item
+            this.initData()
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            })
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+      updateEntity () {
+        let params = {
+          TableData: this.tableData,
+          FormData: this.formData
+        }
+        api.updateEntity(this.formData.Id, params, this.$axios).then(res => {
+          if (res.data.code === 0) {
+            this.initData()
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            })
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+      initData () {
+        api.getEntityByDataEntryId(this.formData.DataEntryId, this.$axios).then(res => {
+          if (res.data.code === 0) {
+            console.log(res.data.item, '=========')
+            this.formData = res.data.item['formData']
+            this.tableData = res.data.item['tableData']
+          } else {
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+      getSummaries (param) {
+        console.log(param)
+        const { columns, data } = param
+        const sums = []
+        columns.forEach((column, index) => {
+          if (index === 0) {
+            sums[index] = '均值'
+            return
+          }
+          if (index === 1) {
+            return
+          }
+          const values = data.map(item => Number(item[column.property]))
+          console.log(values)
+          if (!values.every(value => isNaN(value))) {
+            sums[index] = values.reduce((prev, curr) => {
+              const value = Number(curr.toFixed(2))
+              console.log(prev, curr)
+              if (!isNaN(value)) {
+                return prev + curr
+              } else {
+                return prev
+              }
+            }, 0)
+          } else {
+            sums[index] = ''
+          }
+        })
+        for (let i = 2; i < sums.length; i++) {
+          sums[i] = (sums[i] / 5).toFixed(2)
         }
+        console.log(sums)
+        return sums
       }
 
     }

+ 22 - 4
src/dashoo.cn/frontend_web/src/pages/lims/reportliquidtransportation/_opera/operation.vue

@@ -12,7 +12,8 @@
         </span>
         <span style="float: right;">
           <!--<el-button type="primary" size="mini" @click="saveEntity">保存</el-button>-->
-          <router-link :to="'/lims/reportnobeampumpingunit'">
+          <router-link :to="'/lims/dataentry'">
+            <el-button type="primary" size="mini" @click="exportWord">导出</el-button>
             <el-button type="primary" size="mini" style="margin-left: 8px">返回</el-button>
           </router-link>
         </span>
@@ -548,12 +549,29 @@
       }
     },
     created () {
-      // this.EId = this.$route.query.eid
-      // this.TaskBalanceId = this.$route.query.tbid
-      this.DataEntryId = 15// this.$route.query.deid
+      this.EId = this.$route.query.eid
+      this.TaskBalanceId = this.$route.query.tbid
+      console.log(this.$route.query)
+      this.DataEntryId = this.$route.query.deid
       this.initData()
     },
     methods: {
+      exportWord () {
+        this.$axios.post('/limsexportword/exportWord', this.formData)
+          .then(res => {
+            if (res.data.code === 0) {
+
+            } else {
+              this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
       saveEntity () {
         this.$refs['formData'].validate((valid) => {
           if (valid) {