Browse Source

更换目录

shihang 6 năm trước cách đây
mục cha
commit
d86e1fc544
33 tập tin đã thay đổi với 1465 bổ sung981 xóa
  1. 1 2
      src/dashoo.cn/backend/api/business/samplesinfo/samplesinfo.go
  2. 8 2
      src/dashoo.cn/backend/api/business/samplesinfo/samplesinfoService.go
  3. 2 3
      src/dashoo.cn/backend/api/business/sampletest/sampletestService.go
  4. 36 0
      src/dashoo.cn/backend/api/controllers/biobank/samplesbook.go
  5. 4 0
      src/dashoo.cn/backend/api/controllers/biobank/samplessource.go
  6. 2 5
      src/dashoo.cn/backend/api/controllers/biobank/sampletest_v.go
  7. 2 11
      src/dashoo.cn/backend/api/controllers/samplesinfo/sampleoperation.go
  8. 37 53
      src/dashoo.cn/backend/api/controllers/samplesinfo/samplesinput.go
  9. 0 2
      src/dashoo.cn/backend/api/controllers/samplesinfo/samplesubpackage.go
  10. 10 10
      src/dashoo.cn/frontend_animal/src/pages/biobank/source/_opera/operationb.vue
  11. 18 16
      src/dashoo.cn/frontend_animal/src/pages/biobank/source/animal.vue
  12. 1 1
      src/dashoo.cn/frontend_animal/src/pages/biobank/sourcextends/index.vue
  13. 57 47
      src/dashoo.cn/frontend_animal/src/pages/equipment/_opera/manage_new.vue
  14. 7 4
      src/dashoo.cn/frontend_animal/src/pages/equipment/_opera/shelfset_new.vue
  15. 434 0
      src/dashoo.cn/frontend_animal/src/pages/equipment/devicemove_new.vue
  16. 3 206
      src/dashoo.cn/frontend_animal/src/pages/samples/archived/index.vue
  17. 55 19
      src/dashoo.cn/frontend_animal/src/pages/samples/prerecorded/_opera/unhumanadd.vue
  18. 18 11
      src/dashoo.cn/frontend_animal/src/pages/samples/prerecorded/_opera/unhumanpre.vue
  19. 145 190
      src/dashoo.cn/frontend_animal/src/pages/samples/stored/index.vue
  20. 3 210
      src/dashoo.cn/frontend_animal/src/pages/samples/waitingstore/index.vue
  21. 2 2
      src/dashoo.cn/frontend_web/src/assets/styles/base/variables.scss
  22. 10 10
      src/dashoo.cn/frontend_web/src/components/Headbar.vue
  23. 25 26
      src/dashoo.cn/frontend_web/src/components/sidebar.vue
  24. 0 1
      src/dashoo.cn/frontend_web/src/pages/biobank/book/_opera/operation.vue
  25. 90 92
      src/dashoo.cn/frontend_web/src/pages/equipment/_opera/manage_new.vue
  26. 7 4
      src/dashoo.cn/frontend_web/src/pages/equipment/_opera/shelfset_new.vue
  27. 434 0
      src/dashoo.cn/frontend_web/src/pages/equipment/devicemove_new.vue
  28. 36 36
      src/dashoo.cn/frontend_web/src/pages/index.vue
  29. 1 1
      src/dashoo.cn/frontend_web/src/pages/login.vue
  30. 1 1
      src/dashoo.cn/frontend_web/src/pages/login_major.vue
  31. 1 2
      src/dashoo.cn/frontend_web/src/pages/samples/prerecorded/index.vue
  32. 14 13
      src/dashoo.cn/frontend_web/src/pages/samples/stored/index.vue
  33. 1 1
      src/dashoo.cn/frontend_web/src/pages/setting/sampletype/_opera/sampletypeedit.vue

+ 1 - 2
src/dashoo.cn/backend/api/business/samplesinfo/samplesinfo.go

@@ -123,9 +123,8 @@ type SamplesInfoList struct {
 	SourceId          int       `xorm:"INT(10)"`     //样本来源
 	SourceIdCard      string    `xorm:"VARCHAR(50)"` //样本源身份证号原Zbackup11
 	SourceName        string    `xorm:"VARCHAR(50)"` //样本源姓名原Zbackup12
-	ReceiveDate       time.Time `form:"ReceiveDate,2006-1-2 15:4:5"`
-	GroupId           string    `xorm:"VARCHAR(200)"`
 	GroupName         string    `xorm:"VARCHAR(500)"`
+	ReceiveDate       time.Time `form:"ReceiveDate,2006-1-2 15:4:5"`
 	ZBack11           string    `xorm:"VARCHAR(256)"`
 	ZBack12           string    `xorm:"VARCHAR(256)"`
 	ZBack13           string    `xorm:"VARCHAR(256)"`

+ 8 - 2
src/dashoo.cn/backend/api/business/samplesinfo/samplesinfoService.go

@@ -137,10 +137,16 @@ func (s *SamplesInfoService) GetSamplesInfoListAllData(acccode string, order, wh
 	tblmain := acccode + SamplesMaintbName
 	tbldetail := acccode + SamplesDetailtbName
 	tbldonor := acccode + DonorstbName
+	groupdetail := acccode + GroupDetailName
 	var sql string
 
-	sql = ` select a.*,b.*,c.FamilyState,c.ClinicNum,d.XStation ShelfX,d.YStation ShelfY,d.Code ShelfCode,e.XStation BoxX,e.YStation BoxY,e.Code BoxCode,f.Id Eid,f.Name EName,f.Code ECode from ` + tbldetail + ` a left join ` + tblmain +
-		` b on a.SampleCode = b.SampleCode  left join ` + tbldonor + ` c on b.SourceId = c.Id left join Shelf d on a.ShelfId=d.Id left join Box e on a.BoxId=e.Id left join Equipment f on a.EquipmentId=f.Id where ` + where + order
+	sql = ` select a.*,b.*,c.FamilyState,c.ClinicNum,d.XStation ShelfX,d.YStation ShelfY,d.Code ShelfCode,e.XStation BoxX,e.YStation BoxY,e.Code BoxCode,f.Id Eid,f.Name EName,f.Code ECode,g.GroupName from ` + tbldetail + ` a 
+	left join ` + tblmain + ` b on a.SampleCode = b.SampleCode  
+	left join ` + tbldonor + ` c on b.SourceId = c.Id 
+	left join Shelf d on a.ShelfId=d.Id 
+	left join Box e on a.BoxId=e.Id 
+	left join Equipment f on a.EquipmentId=f.Id
+	left join ` + groupdetail + ` g on a.Id = g.SampleId where ` + where + order
 	fmt.Println(sql)
 	List := make([]SamplesInfoList, 0)
 	utils.DBE.Sql(sql).Find(&List)

+ 2 - 3
src/dashoo.cn/backend/api/business/sampletest/sampletestService.go

@@ -20,16 +20,15 @@ func GetSampleTestService(xormEngine *xorm.Engine) *SampleTestService {
 func (s *SampleTestService) GetBarCodeWithXISNum(where string) (entity BarCodeXISNummodel) {
 	DonorsInfo := "srNA2" + "DonorsInfo"
 	TestMain := "srNA2" + "sampletestmain"
-	TestDetail := "srNA2" + "sampletestdetail"
+	//TestDetail := "srNA2" + "sampletestdetail"
 
 	if where == "" {
 		where = " 1=1 "
 	}
 	var sql string
-	sql = `select a.Id, a.XISNum, b.SourceId, b.BarCode, c.InspectionNum
+	sql = `select a.Id, a.XISNum, b.SourceId, b.BarCode
     from ` + DonorsInfo + ` a
 	left join ` + TestMain + ` b on b.SourceId=a.Id
-	left join ` + TestDetail + ` c on b.InspectionNum = c.InspectionNum 
 	where ` + where
 	s.DBE.Sql(sql).Get(&entity)
 	return

+ 36 - 0
src/dashoo.cn/backend/api/controllers/biobank/samplesbook.go

@@ -478,6 +478,42 @@ func (this *SamplesBookController) AuditorBookInfo() {
 		svc.UpdateEntityBywheretbl(this.User.AccCode+DonorstbName, &donormodel, cols_donor, where)
 	}
 
+	//写入预录入
+	if err == nil {
+		var list []samplesbook.SamplesBookDetail
+		where_detail := "ParentId = '" + strconv.Itoa(model.Id) + "'"
+		svc.GetEntitysByWhere(this.User.AccCode+SamplesBookDetailName, where_detail, &list)
+
+		if len(list) > 0 {
+			for i := 0; i < len(list); i++ {
+				var mainmodel samplesinfo.SamplesMain
+				mainmodel.AccCode = this.User.AccCode
+				mainmodel.SampleCode = list[i].SampleCode
+				mainmodel.SampleType = list[i].SampleType
+				mainmodel.SampleTypeName = list[i].SampleTypeName
+				mainmodel.ReceiveDate = model.ReceiveDate
+				mainmodel.SourceId = model.SourceId
+				mainmodel.SourceIdCard = model.IdCard
+				mainmodel.SourceName = model.Name
+				mainmodel.MCreateUserId, _ = utils.StrTo(this.User.Id).Int()
+				mainmodel.MCreateBy = this.User.Realname
+				svc.InsertEntityBytbl(this.User.AccCode+SamplesMaintbName, &mainmodel)
+
+				var detailmodel samplesinfo.SamplesDetail
+				detailmodel.SampleCode = list[i].SampleCode
+				detailmodel.BarCode = list[i].BarCode
+				detailmodel.ValidityDate = model.ReceiveDate
+				detailmodel.InitCapacity = list[i].SampleSize
+				detailmodel.Capacity = list[i].SampleSize
+				detailmodel.Unit = list[i].SampleUnit
+				detailmodel.IState = 2
+				detailmodel.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+				detailmodel.CreateBy = this.User.Realname
+				svc.InsertEntityBytbl(this.User.AccCode+SamplesDetailtbName, &detailmodel)
+			}
+		}
+	}
+
 	if err == nil {
 		errinfo.Message = "操作成功!"
 		errinfo.Code = 0

+ 4 - 0
src/dashoo.cn/backend/api/controllers/biobank/samplessource.go

@@ -666,6 +666,7 @@ func (this *SamplesSourceController) AnimalList() {
 	SurveyDate := this.GetString("SurveyDate")
 	CreateOn := this.GetString("CreateOn")
 	SourceType := this.GetString("SourceType")
+	ProjectName := this.GetString("ProjectName")
 	Address := this.GetString("Address")
 	AuditorStatus := this.GetString("AuditorStatus")
 	AuditorName := this.GetString("AuditorName")
@@ -710,6 +711,9 @@ func (this *SamplesSourceController) AnimalList() {
 	if SourceType != "" {
 		where = where + " and SourceType = '" + SourceType + "'"
 	}
+	if ProjectName != "" {
+		where = where + " and ProjectName = '" + ProjectName + "'"
+	}
 	if Address != "" {
 		where = where + " and ( ProvinceName like '%" + Address + "% or CityName like '%" + Address + "% or StreetName like '%" + Address + "% or Address like '%" + Address + "%)'"
 	}

+ 2 - 5
src/dashoo.cn/backend/api/controllers/biobank/sampletest_v.go

@@ -16,7 +16,7 @@ type SampleTest_vController struct {
 	BaseController
 }
 
-// @Title 获取样本检测列表     SampleTestMain
+// @Title 当前登录许可
 // @Description get user by token
 // @Success 200 {object} models.Userblood
 // @router /sampletest [get]
@@ -77,7 +77,7 @@ func (this *SampleTest_vController) EditPass() {
 	}
 }
 
-// @Title 获取样本检测列表     SampleTestMain
+// @Title 获取样本源信息     SampleTestMain
 // @Description get user by token
 // @Success 200 {object} models.Userblood
 // @router /donorsdetail [get]
@@ -87,9 +87,6 @@ func (this *SampleTest_vController) DonorsDetails() {
 	svc := sampletest.GetSampleTestService(utils.DBE)
 	var entity sampletest.Donorsdetailmodel
 	entity = svc.GetSamplesDetailandDoninfo(where)
-	//	where_test := "b.SourceIdCard =" + entity.IDCard
-	//	var list sampletest.Donorsdetailmodel
-	//	list = svc.GetSamplesDetailandDoninfo(where_test)
 	var datainfo DataInfo
 	datainfo.Items = entity
 	this.Data["json"] = &datainfo

+ 2 - 11
src/dashoo.cn/backend/api/controllers/samplesinfo/sampleoperation.go

@@ -572,9 +572,7 @@ func (this *SampleOperationController) GetSample() {
 func (this *SampleOperationController) SampleAdd() {
 	groupid := this.GetString("groupid")
 	groupname := this.GetString("groupname")
-	//	var model SampleModel
 	samplesdetailid, _ := this.GetInt("SamplesInfoId")
-	//	batchitem, _ := this.GetInt("batchitem")
 	var err error
 	var jsonblob = this.Ctx.Input.RequestBody
 	var datamain samplesinfo.SamplesMain
@@ -583,11 +581,6 @@ func (this *SampleOperationController) SampleAdd() {
 	json.Unmarshal(jsonblob, &datamain)
 	json.Unmarshal(jsonblob, &datadetail)
 	json.Unmarshal(jsonblob, &dataother)
-	//由交接单批量存储,标志位等于1,同时批量存储数据
-	//	if batchitem == 1 && dataother.SampleMainlist[0].Id > 0 {
-	//		this.BatchAddByCollection(datamain, datadetail, dataother, samplesdetailid)
-	//		return
-	//	}
 
 	// 获取值
 	Position := dataother.Min_x + ";" + dataother.Min_y
@@ -638,8 +631,6 @@ func (this *SampleOperationController) SampleAdd() {
 	databuss.PositionDesc = svcSample.GetPostiondescByPosId(datadetail.EquipmentId, datadetail.ShelfId, datadetail.BoxId, datadetail.Position)
 	databuss.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
 	databuss.CreateBy = this.User.Realname
-	//	databuss.CreateUserId = datadetail.CreateUserId
-	//	databuss.CreateBy = datadetail.CreateBy
 
 	var datamainold samplesinfo.SamplesMain
 	wheremain := " SampleCode='" + datamain.SampleCode + "'"
@@ -746,7 +737,7 @@ func (this *SampleOperationController) SampleAdd() {
 		for i := 0; i < (len(zback)); i++ {
 			cols = append(cols, zback[i].Id)
 		}
-		//todo写入日志
+
 		//修改之前向SamplesInfoShow写日志
 		svcSample.WriteSampleLog(this.User.AccCode+SamplesLogtbName, sampleshowold.Id, sampleshowold.MId,
 			&sampleshowold, utils.ToStr(this.User.Id), this.User.Realname, this.User.AccCode, sampleshowold.SampleCode, sampleshowold.BarCode, sampleshowold.SampleType)
@@ -1578,7 +1569,6 @@ func (this *SampleOperationController) DeleteSampleAttach() {
 // @router /applyin [post]
 func (this *SampleOperationController) SampleApplyIN() {
 	// 获得前端传输的model
-	//var err error
 	var jsonblob = this.Ctx.Input.RequestBody
 	var datamain samplesapply.SamplesApply
 	var datadetail samplesapply.SamplesApplyDetail
@@ -1607,6 +1597,7 @@ func (this *SampleOperationController) SampleApplyIN() {
 
 ////样本批量写入入库单
 func (this *SampleOperationController) BatchAddByApply(datamain samplesapply.SamplesApply, datadetail samplesapply.SamplesApplyDetail, dataother SamplesApplyModel) {
+
 	wheremain := " EntryNo='" + dataother.SampleMainlist[0].EntryNo + "'"
 	svcSample := samplesinfo.GetSamplesInfoService(utils.DBE)
 	svcSample.GetEntityByWhere(this.User.AccCode+SamplesApplyName, wheremain, &datamain)

+ 37 - 53
src/dashoo.cn/backend/api/controllers/samplesinfo/samplesinput.go

@@ -1471,22 +1471,32 @@ func (this *SamplesinputController) SaveExcelPost() {
 // @router /exportexcel [get]
 func (this *SamplesinputController) ExportExcel() {
 	accCode := this.User.AccCode
+	ExportFlag := this.GetString("ExportFlag")
 	var filetitle string //文件名
 	//设备权限
-	svcs := equipment.GetEquipmentService(utils.DBE)
-	poweeids := svcs.GetPowerEquipmentids(accCode, utils.ToStr(this.User.Id))
+	svcPermission := permission.GetPermissionService(utils.DBE)
+	eids := svcPermission.GetEquipmentIdById(utils.ToStr(this.User.Id))
 	where := ""
-	ExportFlag := this.GetString("ExportFlag")
+
 	if ExportFlag == "stored" { //已录入导出
 		filetitle = "已录入样本"
 		where = " a.IState =1 and a.DeletionStateCode=0 "
-		where = where + " and  a.EquipmentId in(" + strings.Join(poweeids, ",") + ")"
+		if eids != "" {
+			where = where + " and (f.CreateUserId= " + utils.ToStr(this.User.Id) + " or a.EquipmentId in (" + eids + "))"
+		} else {
+			where = where + "and f.CreateUserId= " + utils.ToStr(this.User.Id)
+		}
 	} else if ExportFlag == "prerecorded" { //预录入导出
 		filetitle = "预录入样本"
 		where = " a.IState in (2,3,4,7,8) and a.DeletionStateCode=0 "
 	} else if ExportFlag == "waitingstore" { //待复存导出
 		filetitle = "待复存样本"
-		where = " a.DeletionStateCode=0 and (a.IState=6 or ( a.IState=5 and a.EquipmentId in(" + strings.Join(poweeids, ",") + ")))"
+		if eids != "" {
+			where = where + " and a.DeletionStateCode=0 and (a.IState=6 or ( a.IState=5 and (f.CreateUserId= '" + utils.ToStr(this.User.Id) + "' or a.EquipmentId in (" + eids + ")) ))"
+		} else {
+			where = where + " and a.DeletionStateCode=0 and (a.IState=6 or ( a.IState=5 and f.CreateUserId= '" + utils.ToStr(this.User.Id) + "'))"
+		}
+
 	} else if ExportFlag == "archived" { //已归档导出
 		filetitle = "已归档样本"
 		where = " a.DeletionStateCode=0  "
@@ -1525,15 +1535,6 @@ func (this *SamplesinputController) ExportExcel() {
 			where = where + " and (" + tysql + ") "
 		}
 	}
-
-	SamplingOrgan := this.GetString("SamplingOrgan")
-	if SamplingOrgan != "" {
-		where = where + " and  SamplingOrgan ='" + SamplingOrgan + "'"
-	}
-	SamplingSite := this.GetString("SamplingSite")
-	if SamplingSite != "" {
-		where = where + " and  SamplingSite ='" + SamplingSite + "'"
-	}
 	CreateOnstart, _ := this.GetInt64("CreateOnstart")
 	if CreateOnstart != 0 {
 		where = where + " and  a.CreateOn >'" + time.Unix(CreateOnstart, 0).Format("2006-01-02") + "'"
@@ -1559,19 +1560,6 @@ func (this *SamplesinputController) ExportExcel() {
 	if createby != "" {
 		where = where + "and  a.CreateBy ='" + createby + "'"
 	}
-	noteitemvalue := this.GetString("Noteitemvalue") //公共扩展检索值
-	noteitem1 := this.GetStrings("Noteitem[]")       //公共扩展名称
-	if j := len(noteitem1); j > 0 && noteitemvalue != "" {
-		tysql := ""
-		for i := 0; i < j; i++ {
-			if tysql == "" {
-				tysql = " b." + noteitem1[i] + " like '%" + noteitemvalue + "%' "
-			} else {
-				tysql += " or b." + noteitem1[i] + " like '%" + noteitemvalue + "%' "
-			}
-		}
-		where = where + " and (" + tysql + ") "
-	}
 
 	//支持从样本来源详情处跳转
 	ssouceid := this.GetString("sourceid")
@@ -1585,12 +1573,6 @@ func (this *SamplesinputController) ExportExcel() {
 
 	svc := samplesinfo.GetSamplesInfoService(utils.DBE)
 
-	//公共扩展list
-	var PublicNoteitemList []samplenoteitem.SamplesNoteItem
-	svcdnote := samplenoteitem.GetSampleNoteItemService(utils.DBE)
-	wherenote := " AccCode='" + accCode + "'"
-	PublicNoteitemList = svcdnote.GetDNoteItemList(wherenote)
-
 	//特有扩展list
 	var tykzlist []stypenoteitem.STypeNoteItem
 	if sampletype != "" {
@@ -1604,10 +1586,7 @@ func (this *SamplesinputController) ExportExcel() {
 	showcolumnnamearr := this.GetString("showcolumnnamearr")
 	titlestring := ""
 	if showcolumnarr == "" {
-		titlestring = "设备ID,设备名称,冻存架ID,冻存架位置,冻存盒ID,冻存盒位置,样本位置,样本编码,样本条码,样本类型名称,名称,组织器官Code,组织器官名称,取材部位Code,取材部位名称,容量,单位,有效日期,接收日期,录入人,样本来源姓名,样本来源身份证号,备注,父级编码,样本内码"
-		for i := 0; i < (len(PublicNoteitemList)); i++ {
-			titlestring = titlestring + "," + PublicNoteitemList[i].Name
-		}
+		titlestring = "设备ID,设备名称,冻存架ID,冻存架位置,冻存盒ID,冻存盒位置,样本位置,样本编码,样本条码,样本类型名称,名称容量,单位,有效日期,接收日期,录入人,样本来源姓名,样本来源身份证号,备注,样本内码,所属分组"
 		for i := 0; i < (len(tykzlist)); i++ {
 			titlestring = titlestring + "," + tykzlist[i].Name
 		}
@@ -1617,24 +1596,26 @@ func (this *SamplesinputController) ExportExcel() {
 
 	var datas []samplesinfo.SamplesInfoList
 	title = strings.Split(titlestring, ",")
+	fmt.Println("122222222222222221", title)
 	if ExportFlag == "archived" { //已归档导出
 		datas = svc.GetArchivedSamplesInfoListAllData(this.User.AccCode, "Id desc", where)
 	} else {
 		datas = svc.GetSamplesInfoListAllData(this.User.AccCode, "Id desc", where)
 	}
-
 	f := xlsx.NewFile()
-	this.DaySaveXlsx(filetitle, title, showcolumnarr, datas, f, PublicNoteitemList, tykzlist)
+	this.DaySaveXlsx(filetitle, title, showcolumnarr, datas, f, tykzlist)
 
 	dir := "static/file/excel/report/" + this.GetAccode()
 	SaveDirectory(dir)
 	path := dir + "/" + utils.TimeFormat(time.Now(), "200612") + filetitle + ".xlsx"
+
 	f.Save(path)
 	this.Data["json"] = this.Ctx.Request.Host + "/" + path
 	this.ServeJSON()
 }
 
-func (this *SamplesinputController) DaySaveXlsx(name string, title []string, column string, datas []samplesinfo.SamplesInfoList, f *xlsx.File, publicnotelist []samplenoteitem.SamplesNoteItem, tykzlist []stypenoteitem.STypeNoteItem) {
+func (this *SamplesinputController) DaySaveXlsx(name string, title []string, column string, datas []samplesinfo.SamplesInfoList, f *xlsx.File, tykzlist []stypenoteitem.STypeNoteItem) {
+
 	sheet, _ := f.AddSheet(name)
 	rowhead := sheet.AddRow()
 	rowhead.WriteSlice(&title, -1)
@@ -1650,7 +1631,6 @@ func (this *SamplesinputController) DaySaveXlsx(name string, title []string, col
 			x := strs[0]
 			y, _ := utils.StrTo(strs[1]).Int()
 			ay := mydb.Boxlinename(y)
-			//			fmt.Println(x, ay)
 			svc := equipment.GetEquipmentService(utils.DBE)
 			e_code, e_name := svc.GetCodeAndNameById(utils.ToStr(v.EquipmentId))
 			svc1 := shelfset.GetshelfsetService(utils.DBE)
@@ -1659,11 +1639,9 @@ func (this *SamplesinputController) DaySaveXlsx(name string, title []string, col
 			b_x, b_y := svc1.GetStationByBoxId(utils.ToStr(v.BoxId))
 			sb_y := mydb.Boxlinename(b_y)
 			datastring = utils.ToStr(v.EquipmentId) + "," + e_code + e_name + "," + utils.ToStr(v.ShelfId) + "," + ss_y + ";" + utils.ToStr(s_x) + "," + utils.ToStr(v.BoxId) + "," + sb_y + ";" + utils.ToStr(b_x) + "," + ay + ";" + x + "," +
-				v.SampleCode + "," + v.BarCode + "," + v.SampleTypeName + "," + v.Name + "," + v.SamplingOrgan + "," + v.SamplingOrganName + "," + v.SamplingSite + "," + v.SamplingSiteName + "," + utils.ToStr(v.Capacity) + "," + v.Unit + "," +
-				utils.ToStr(v.ValidityDate.Format("2006-1-2 15:4:5")) + "," + utils.ToStr(v.ReceiveDate.Format("2006-1-2 15:4:5")) + "," + v.CreateBy + "," + v.SourceName + "," + v.SourceIdCard + "," + v.Remark + "," + v.ParentBarCode + "," + v.InnerCode
-			for i := 0; i < (len(publicnotelist)); i++ {
-				datastring = datastring + "," + mydb.GetKuoZhan(v, publicnotelist[i].FieldName)
-			}
+				v.SampleCode + "," + v.BarCode + "," + v.SampleTypeName + "," + v.Name + "," + utils.ToStr(v.Capacity) + "," + v.Unit + "," +
+				utils.ToStr(v.ValidityDate.Format("2006-1-2 15:4:5")) + "," + utils.ToStr(v.ReceiveDate.Format("2006-1-2 15:4:5")) + "," + v.CreateBy + "," + v.SourceName + "," + v.SourceIdCard + "," + v.Remark + "," + v.InnerCode + "," + v.GroupName
+
 			for i := 0; i < (len(tykzlist)); i++ {
 				datastring = datastring + "," + mydb.GetKuoZhan(v, tykzlist[i].FieldName)
 			}
@@ -1681,16 +1659,22 @@ func (this *SamplesinputController) DaySaveXlsx(name string, title []string, col
 					shelfyint, _ := utils.StrTo(v.ShelfY).Int()
 					boxyint, _ := utils.StrTo(v.BoxY).Int()
 					fvalue = fmt.Sprintf("%v-%v%v-%v%v-%v", v.ECode, NumtoUpChar(shelfyint), v.ShelfX, NumtoUpChar(boxyint), v.BoxX, position)
+
 				} else {
-					fvalue = mydb.GetKuoZhan(v, columnarr[i])
-					if columnarr[i] == "ValidityDate" || columnarr[i] == "ReceiveDate" {
-						if strings.Index(fvalue, "0001") == 0 {
-							fvalue = "----"
-						} else if strings.Index(fvalue, "5000") == 0 {
-							fvalue = "永久"
+					if columnarr[i] != "" {
+						fvalue = mydb.GetKuoZhan(v, columnarr[i])
+						if columnarr[i] == "ValidityDate" || columnarr[i] == "ReceiveDate" {
+							if strings.Index(fvalue, "0001") == 0 {
+								fvalue = "----"
+							} else if strings.Index(fvalue, "5000") == 0 {
+								fvalue = "永久"
+							}
 						}
+						fvalue = strings.Replace(fvalue, ",", ",", -1)
+					} else {
+
 					}
-					fvalue = strings.Replace(fvalue, ",", ",", -1)
+
 				}
 
 				if i == 0 {

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

@@ -421,9 +421,7 @@ func (this *SampleSubpackageController) Subpackage() {
 			}
 			this.Data["json"] = &errinfo
 			this.ServeJSON()
-
 		}
-
 	} else {
 		var err error
 		if datadetail.Capacity > 0 {

+ 10 - 10
src/dashoo.cn/frontend_animal/src/pages/biobank/source/_opera/operationb.vue

@@ -62,13 +62,22 @@
               </el-form-item>
             </el-col>
             <el-col :span="8">
+              <el-form-item label="项目属性">
+                <el-select ref="refProject" v-model="samplesForm.ProjectName" clearable style="width:100%"
+                  placeholder="请选择项目属性">
+                  <el-option v-for="item in projectlist" :label="item.Value" :value="item.Value" :key="item.Value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <!-- <el-col :span="8">
               <el-form-item label="样本来源">
                 <el-select ref="refplace" v-model="samplesForm.SourceType" style="width:100%" placeholder="请选择样本来源">
                   <el-option label="收捕" value="收捕"></el-option>
                   <el-option label="购买" value="购买"></el-option>
                 </el-select>
               </el-form-item>
-            </el-col>
+            </el-col> -->
             <el-col :span="8">
               <el-form-item label="数量" prop="Amount">
                 <el-input v-model="samplesForm.Amount" placeholder="请输入数量" style="width:100%"></el-input>
@@ -126,15 +135,6 @@
                 </el-date-picker>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-form-item label="项目属性">
-                <el-select ref="refProject" v-model="samplesForm.ProjectName" clearable style="width:100%"
-                  placeholder="请选择项目属性">
-                  <el-option v-for="item in projectlist" :label="item.Value" :value="item.Value" :key="item.Value">
-                  </el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
             <el-col :span="24">
               <el-form-item label="备注信息">
                 <el-input v-model="samplesForm.Remark" type="textarea" :rows=3 placeholder="请输入备注信息"></el-input>

+ 18 - 16
src/dashoo.cn/frontend_animal/src/pages/biobank/source/animal.vue

@@ -83,7 +83,7 @@
         </el-table-column>
       </el-table>
       <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
-        :page-sizes="[15, 20, 25, 50]" :page-size="size" layout="total, sizes, prev, pager, next, jumper"
+        :page-sizes="[10, 20, 50, 100]" :page-size="size" layout="total, sizes, prev, pager, next, jumper"
         :total="currentItemCount">
       </el-pagination>
     </el-card>
@@ -130,11 +130,11 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="样本来源">
-              <el-select ref="refplace" v-model="searchform.SourceType" size="mini" style="width: 240px"
-                placeholder="请选择样本来源">
-                <el-option label="收捕" value="收捕"></el-option>
-                <el-option label="购买" value="购买"></el-option>
+            <el-form-item label="项目属性">
+              <el-select ref="refProject" v-model="searchform.ProjectName" size="mini" style="width: 240px"
+                placeholder="请选择项目属性">
+                <el-option v-for="item in projectlist" :label="item.Value" :value="item.Value" :key="item.Value">
+                  </el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -192,6 +192,7 @@
           Name: '',
           Weight: '',
           SourceType: '',
+          ProjectName: '',
           AuditorStatus: '',
           AuditorName: '',
           Tive: '',
@@ -213,21 +214,13 @@
         acceptUsers: [],
         userlist: [],
         genuslist: [],
-        permissionscode: {
-          contractadd: 'cellbank.contract.add',
-          contractedit: 'cellbank.contract.edit',
-          contractapprove: 'cellbank.contract.approve',
-        },
-        permissions: {
-          'cellbank.contract.add': false,
-          'cellbank.contract.edit': false,
-          'cellbank.contract.approve': false,
-        },
+        projectlist: [],
       }
     },
     created() {
       this.initdata()
       this.getAnimalGenus()
+      this.getProjectlist()
     },
     methods: {
       initdata() {
@@ -281,6 +274,14 @@
           .then(res => {
             _this.genuslist = res.data
           })
+      },
+       //获取项目属性
+      getProjectlist() {
+        let _this = this
+        _this.$axios.get('/items/worditem?code=ProjectName', {})
+          .then(res => {
+            _this.projectlist = res.data
+          })
       },
       delSamplesSource(val) {
         let _this = this
@@ -336,6 +337,7 @@
         this.searchform.Address = ''
         this.searchform.InnerNo = ''
         this.searchform.SourceType = ''
+        this.searchform.ProjectName = ''
         this.searchform.Name = ''
         this.searchform.AuditorStatus = ''
         this.searchform.AuditorName = ''

+ 1 - 1
src/dashoo.cn/frontend_animal/src/pages/biobank/sourcextends/index.vue

@@ -59,7 +59,7 @@
         </el-table-column>
       </el-table>
       <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
-        :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+        :page-sizes="[10, 20, 50, 100]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
       </el-pagination>
     </el-card>
   </div>

+ 57 - 47
src/dashoo.cn/frontend_animal/src/pages/equipment/_opera/manage_new.vue

@@ -24,12 +24,12 @@
         </el-breadcrumb>
 
         <span style="float: right;">
-          <el-button size="mini" type="primary" style="margin-left: 8px" v-if="Apply_flag==false" @click="SaveApply">保存</el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px" v-if="Apply_flag==false" @click="SaveApply">保存
+          </el-button>
           <el-button size="mini" type="primary" style="margin-left: 8px" @click="exportVisible = true">导入</el-button>
-          <el-button size="mini" type="primary" style="margin-left: 8px"
-            @click="showBoxTemplate()">下载冻存盒导入模板</el-button>
-          <el-button size="mini" type="primary" style="margin-left: 8px"
-            @click="showEquipemplate()">下载设备模板</el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px" @click="showBoxTemplate()">下载冻存盒导入模板
+          </el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px" @click="showEquipemplate()">下载设备模板</el-button>
           <el-button size="mini" type="primary" style="margin-left: 8px" @click="refreshcbc">
             刷新容量状态</el-button>
           <el-button size="mini" type="primary" style="margin-left: 8px" @click="goback">返回
@@ -37,8 +37,8 @@
         </span>
       </div>
       <el-alert v-if="batchitem == '1'"
-          :title="'支持批量存储,多个样本存储时,系统自动根据所选位置为起始位置依次进行存储!本次将批量添加' + batchstorages.length + '个样本'" type="warning" center
-          show-icon style="margin-bottom:5px;min-width: 1150px"></el-alert>
+        :title="'支持批量存储,多个样本存储时,系统自动根据所选位置为起始位置依次进行存储!本次将批量添加' + batchstorages.length + '个样本'" type="warning" center
+        show-icon style="margin-bottom:5px;min-width: 1150px"></el-alert>
 
       <div style="text-align:center;margin-top:-10px;margin-bottom:3px">
         <el-row>
@@ -198,6 +198,12 @@
             <div slot="header">
               <i class="icon icon-file-text"> </i> 样本管理
               <span style="float: right;">
+                <router-link
+                  :to="'/samples/stored/'+ sampleinfoid + '/detailed?pname=samples-stored&size=10&currentPage=1'">
+                  <el-button type="primary" class="el-button--mini" style="margin-right: 10px"
+                    v-if="sampleForm.type_flag === 'edit' && sampleinfoid > '0'">详情
+                  </el-button>
+                </router-link>
                 <el-button @click="showDialog" type="primary" class="el-button--mini"
                   v-if="sampleForm.type_flag === 'edit'">编辑</el-button>
                 <el-button @click="dialogfusuVisible=true" type="primary" class="el-button--mini"
@@ -220,52 +226,46 @@
                 <el-aside width="100px">
                   <img :src="imgSrc" class="sampleTypeimg">
                 </el-aside>
-                <el-main style="margin-left:45px; margin-top: -15px">
+                <el-main style="margin-left:45px; margin-top: -35px">
                   <h1>样本类型 : {{ sampleForm.SampleTypeName }}</h1>
-                  <el-row style="margin-top:-10px">
-                    <el-col :span="12">
-                      <h3>样本条码 : {{ sampleForm.BarCode }}</h3>
-                    </el-col>
-                    <el-col :span="12">
-                      <h3>位置编码 : {{ checkPosition }} </h3>
-                    </el-col>
-                  </el-row>
+                  <h1>样本条码 : {{ sampleForm.BarCode }}</h1>
+                  <h1>位置编码 : {{ checkPosition }}</h1>
                 </el-main>
               </el-container>
               <div class="sampleInfo">
                 <el-row style="margin-left:25px;margin-top:10px">
                   <el-col :span="12">
-                    <label>名称 : {{ sampleForm.Name }} </label>
+                    <label><strong>名称 :</strong> {{ sampleForm.Name }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>样本来源 : {{ sampleForm.SourceName }} </label>
+                    <label><strong>样本来源 :</strong> {{ sampleForm.SourceName }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>样本内码 : {{ sampleForm.InnerCode }} </label>
+                    <label><strong>样本内码 :</strong> {{ sampleForm.InnerCode }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>样本条码 : {{ sampleForm.SampleCode }} </label>
+                    <label><strong>样本条码 :</strong> {{ sampleForm.SampleCode }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>可用容量 : {{ sampleForm.Capacitystr }} {{ sampleForm.Unit }} </label>
+                    <label><strong>可用容量 :</strong> {{ sampleForm.Capacitystr }} {{ sampleForm.Unit }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>录入人 : {{ sampleForm.CreateBy }} </label>
+                    <label><strong>录入人 :</strong> {{ sampleForm.CreateBy }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>接收日期 : {{ jstimehandle(ReceiveDate) }} </label>
+                    <label><strong>接收日期 :</strong> {{ jstimehandle(ReceiveDate) }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>有效日期 : {{ jstimehandle(ValidityDate) }} </label>
+                    <label><strong>有效日期 :</strong> {{ jstimehandle(ValidityDate) }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>所属分组 : {{ groupname }} </label>
+                    <label><strong>所属分组 :</strong> {{ groupname }} </label>
                   </el-col>
                   <el-col :span="24">
-                    <label>备注信息 : {{ sampleForm.Remark }} </label>
+                    <label><strong>备注信息 :</strong> {{ sampleForm.Remark }} </label>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="附件上传:">
+                    <el-form-item label="附件上传:" style="font-weight:bolder">
                       <el-upload style="margin-top: 10px;" action="" ref="refuploadattach" multiple
                         :http-request="uploadrequest" class="attach-uploader" :show-file-list="true"
                         :before-upload="beforeAvatarUpload">
@@ -274,7 +274,7 @@
                     </el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <label>附件说明 : {{ sampleForm.uploadedremark }} </label>
+                    <label><strong>附件说明 :</strong> {{ sampleForm.uploadedremark }} </label>
                     <el-row>
                       <el-col :span="6" v-for="item in achmentlist" :key="item">
                         <a @click="clickachment(item.Host, item.FileId)">{{item.FileName}}</a></el-col>
@@ -327,7 +327,7 @@
               </el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="acc != 'sBBo4' && acc != 'ssqOy' && acc != 'saB4v'">
+          <!-- <el-col :span="8" v-if="acc != 'sBBo4' && acc != 'ssqOy' && acc != 'saB4v'">
             <el-form-item label="样本来源">
               <el-input v-model="sampleForm.SourceName" placeholder="样本来源" style="width:100%" disabled>
                 <el-button type="primary" :disabled="disabledsourcebutton || contains('1,2', batchitem)"
@@ -335,8 +335,17 @@
                 </el-button>
               </el-input>
             </el-form-item>
+          </el-col> -->
+          <el-col :span="8" v-if="acc == 'sBBo4'">
+            <el-form-item label="样本来源">
+              <el-input v-model="sampleForm.SourceName" placeholder="样本来源" style="width:100%" disabled>
+                <!-- <el-button type="primary" :disabled="disabledsourcebutton || contains('1,2', batchitem)"
+                  style="width:30%" @click="animalSourceVisible = true" slot="append">选择
+                </el-button> -->
+              </el-input>
+            </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="acc == 'sBBo4' || acc == 'saB4v'">
+          <el-col :span="8" v-if="acc == 'saB4v'">
             <el-form-item label="样本来源">
               <el-input v-model="sampleForm.SourceName" placeholder="样本来源" style="width:100%" disabled>
                 <el-button type="primary" :disabled="disabledsourcebutton || contains('1,2', batchitem)"
@@ -354,6 +363,8 @@
               </el-input>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="8">
             <el-form-item label="名称">
               <el-input v-model="sampleForm.Name" placeholder="样本名称"></el-input>
@@ -463,7 +474,7 @@
                       <el-input v-model="item.FieldDefault" v-if="item.FieldType === '3'" :placeholder="'请输入'+item.Name"
                         type="textarea" :rows="3" auto-complete="off"></el-input>
 
-                      <el-date-picker v-model="item.FieldDefault" v-if="item.FieldType === '4'" type="datetime"
+                      <el-date-picker v-model="item.FieldDefault" v-if="item.FieldType === '4'" type="date"
                         style="width:100%" placeholder="选择日期"></el-date-picker>
 
                       <el-button plain v-model="item.FieldDefault" v-if="item.FieldType === '5'" type="primary"
@@ -2905,8 +2916,11 @@
       },
       // 获取冰箱冻存架点击坐标
       getEquipPosition(ybox, xshelf, yshelf) {
-        let index = (xshelf - yshelf) + (yshelf - 1) * (this.colorTableHeight + 1)
-        this.shelfs = this.samplelist[index]
+        for (var i = 0; i < this.samplelist.length; i++) {
+          if (xshelf == this.samplelist[i].YStation && yshelf == this.samplelist[i].XStation) {
+            this.shelfs = this.samplelist[i]
+          }
+        }
         this.xshelf = xshelf
         this.yshelf = yshelf
         this.ybox = ybox + 1
@@ -2992,6 +3006,11 @@
             _this.boxSample = res.data.Boxsample
             _this.TableHeight = _this.selectedBox.RowNum
             _this.TableWidth = _this.selectedBox.ColumnNum
+            for (var i = 0 ; i < this.boxSample.length; i ++){
+              if (this.boxSample[i].Position == this.ytable + ';' + this.xtable){
+                this.tableclk(this.boxSample[i], this.xtable, this.ytable)
+              }
+            }
             // 重置选择的冻存管
             _this.dchxtable = -1
             _this.dchytable = -1
@@ -3037,7 +3056,7 @@
         } else { // 批量添加,如果点击的是空白位置会进入
           this.getSampleInfoByBatchs()
           this.extendList = []
-          if(this.Apply_flag == true) {
+          if (this.Apply_flag == true) {
             this.sampleTitle = '新增样本'
             this.sampleInfoDialog = true
           }
@@ -3424,7 +3443,8 @@
                       type: 'success',
                       message: res.data.message
                     })
-                    _this.handleclk(_this.xbox, _this.ybox, _this.xshelf, _this.yshelf)
+                    _this.shelfs = _this.samplelist[0]
+                    _this.handleclk(_this.xbox-1, _this.ybox-1, _this.xshelf, _this.yshelf)
                     // _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
                     // 清空上传附件
                     _this.$refs.refuploadattach.clearFiles()
@@ -3540,6 +3560,7 @@
           })
       },
       SaveApply(value) {
+        console.log("1111111111111111",value)
         let _this = this
         if (this.dchxtable === -1 || this.dchytable === -1) {
           this.$message({
@@ -3989,19 +4010,8 @@
         }
       },
       formatDateTime(date) {
-        date = date.substring(4, 24)
+        date = date.substring(0, 10)
         return date
-        // var y = date.getFullYear();
-        // var m = date.getMonth() + 1;
-        // m = m < 10 ? ('0' + m) : m;
-        // var d = date.getDate();
-        // d = d < 10 ? ('0' + d) : d;
-        // var h = date.getHours();
-        // var minute = date.getMinutes();
-        // var second = date.getSeconds();
-        // minute = minute < 10 ? ('0' + minute) : minute;
-        // minute = second < 10 ? ('0' + second) : second;
-        // return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
       },
 
       getGrouplist() {

+ 7 - 4
src/dashoo.cn/frontend_animal/src/pages/equipment/_opera/shelfset_new.vue

@@ -437,8 +437,11 @@
       },
       // 获取冰箱冻存架点击坐标
       getEquipPosition(ycolor, xidx, yidx) {
-        let index = (xidx - yidx) + (yidx - 1) * (this.colorTableHeight + 1)
-        this.shelfs = this.samplelist[index]
+        for (var i = 0 ; i < this.samplelist.length; i ++){
+          if (xidx == this.samplelist[i].YStation && yidx == this.samplelist[i].XStation){
+            this.shelfs = this.samplelist[i]
+          }
+        }
         this.xidx = xidx
         this.yidx = yidx
         this.ycolor = ycolor + 1
@@ -623,7 +626,7 @@
         // seed: 0---冻存架; 1---冻存盒
         if (!seed) {
           if (this.xidx !== -1 && this.yidx !== -1) {
-            window.location.href = '/equipment/devicemove?id=' + this.equipid + '&x=' + this.yidx + '&y=' + this.xidx +
+            window.location.href = '/equipment/devicemove_new?id=' + this.equipid + '&x=' + this.yidx + '&y=' + this.xidx +
               '&type=' + seed
           } else if (this.xshelf !== -1 && this.yshelf !== -1) {
             this.$message({
@@ -648,7 +651,7 @@
               message: '无法移动空冻存盒!'
             })
           } else {
-            window.location.href = '/equipment/devicemove?id=' + this.equipid + '&x=' + this.xcolor + '&y=' + this
+            window.location.href = '/equipment/devicemove_new?id=' + this.equipid + '&x=' + this.xcolor + '&y=' + this
               .ycolor +
               '&type=' + seed + '&xshelf=' + this.yidx + '&yshelf=' + this.xidx
           }

+ 434 - 0
src/dashoo.cn/frontend_animal/src/pages/equipment/devicemove_new.vue

@@ -0,0 +1,434 @@
+<style>
+  .input-with-select .el-select .el-input {
+    width: 110px;
+  }
+
+  .input-with-select .el-input-group__append {
+    background-color: #fff;
+  }
+
+</style>
+
+<template>
+  <div>
+    <el-card style="min-height: calc(100vh - 92px);">
+      <div slot="header" style="height: 20px;">
+        <span style="float: left;">
+          <i class="icon icon-table2"></i>
+        </span>
+        <el-breadcrumb class="heading" style="float: left; margin-left: 5px">
+          <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+          <el-breadcrumb-item :to="{ path: '/equipment' }">容器管理</el-breadcrumb-item>
+          <el-breadcrumb-item>移动设置 【{{ename}}】</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" style="margin-left: 5px" @click="savemove()">保存</el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px" onclick="window.history.go(-1)">返回</el-button>
+        </span>
+
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="请选择复存的设备">
+            <el-select size="mini" v-model="selectedequip" placeholder="请选择设备" @change="changeequip" style="width:100%"
+              clearable>
+              <el-option v-for="item in equiplist" :label="item.label" :value="item.value" :key="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-checkbox v-model="isAddFNum" style="margin-left: 10px">记录冻融次数</el-checkbox>
+          </el-form-item>
+        </el-form>
+      </div>
+
+      <div style="text-align:center;margin-top:-10px">
+        <i class="icon icon-stop2" style="color:#EAEAEA"></i>无冻存盒
+        <i class="icon icon-stop2" style="color:#13CE66"></i>空冻存盒
+        <i class="icon icon-stop2" style="color:#FF4949"></i>选中
+        <i class="icon icon-stop2" style="color:#D1EEEE"></i>容量(0-25%)
+        <i class="icon icon-stop2" style="color:#20A0FF"></i>容量(25%-50%)
+        <i class="icon icon-stop2" style="color:#836FFF"></i>容量(50%-75%)
+        <i class="icon icon-stop2" style="color:#000080"></i>容量(75%-100%)
+      </div>
+      <!--冰箱-->
+      <el-row v-loading="downloading" element-loading-text="数据拼命读取中,请稍候。。。">
+        <el-col :span="12">
+          <div>
+            <el-row :gutter="20">
+              <el-col :span="20">
+                <table cellspacing="0" cellpadding="0">
+                  <thead>
+                    <th></th>
+                    <th v-for="ind in colorTableWidth" :key="ind">{{ind}}</th>
+                  </thead>
+                  <tbody>
+                    <tr v-for=" (xcolorTable,k1) in colorTableHeight" :key="xcolorTable">
+                      <td style="text-align:center;font-size:20px;">{{numtoengs[xcolorTable-1]}}</td>
+                      <td v-for="(ycolorTable,k2) in colorTableWidth" :key="ycolorTable"
+                        v-bind:class="{ 'tdborder': true, 'tdleftborder': k2 === 0, 'tdtopborder': k1 === 0, 'tdrightborder': k2 === colorTableWidth-1 }">
+                        <div class="ulbgcolor"
+                          v-bind:style="{ width: unitwidth/colorTableWidth + 'px', height: unitheight/colorTableHeight + 'px', 
+                                                      backgroundColor: xshelf === k2+1 && yshelf === k1+1 ? COLORARR[7] : COLORARR[8] }"
+                          @click="shelfclk(k2+1, k1+1)">
+                          <div v-for="(shelfitem, index) in samplelist" :key="index">
+                            <div v-if="samplelist[index].XStation === k2+1 && samplelist[index].YStation === k1+1">
+                              <div class="hoverdiv" v-for="rowindex in samplelist[index].RowNum" :key="rowindex">
+                                <div
+                                  v-bind:style="{ 
+                                          width: (unitwidth/colorTableWidth-2.5) + 'px',
+                                          height: (unitheight/colorTableHeight/samplelist[index].RowNum-2.5) + 'px',
+                                          backgroundColor: ycolor == rowindex && xidx == k1+1 && yidx == k2+1 ? COLORARR[7] : COLORARR[0]}"
+                                  style="margin: 1px" @click="getEquipPosition(rowindex-1, k1+1, k2+1)">
+                                </div>
+                              </div>
+                            </div>
+                          </div>
+                        </div>
+                      </td>
+                    </tr>
+                  </tbody>
+                </table>
+                <div>
+                  <img :src="fridgebottomimg" class="fridge">
+                </div>
+              </el-col>
+              <el-col :span="4" style="margin-top: 20px">
+                <div class="ulbgcolor" v-for="g in shelfs.ColumnNum" :key="g"
+                  style="width:150px;float:left;margin-left:1px">
+                  <div class="hoverdiv" v-bind:style="{ 
+                          backgroundColor: xcolor == g && ycolor == ycolor && 
+                          xidx == shelfs.YStation && yidx == shelfs.XStation ? COLORARR[2] :                          
+                          (shelfs[numtoengs[ycolor-1]+g] == -2 ? COLORARR[0] : 
+                          (shelfs[numtoengs[ycolor-1]+g] == -1 ? COLORARR[1] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 0 && 
+                          shelfs[numtoengs[ycolor-1]+g] <= 25 ? COLORARR[3] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 25 && 
+                          shelfs[numtoengs[ycolor-1]+g] <= 50 ? COLORARR[4] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 50 && 
+                          shelfs[numtoengs[ycolor-1]+g] <= 75 ? COLORARR[5] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 75 ? COLORARR[6] : 
+                          COLORARR[7])))))) }" @click="handleclk(g-1, ycolor-1, shelfs.YStation, shelfs.XStation)"
+                    style="margin: 1px;width:50px; height:20px;">
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
+          </div>
+        </el-col>
+
+        <el-col :span="12">
+          <div class="tablebox">
+            <table class="sampletable" v-bind:style="{ width: 10*TableWidth + '%', height: 10*TableHeight + '%' }">
+              <thead>
+                <th></th>
+                <th v-for="ind in TableWidth" :key="ind">{{ind}}</th>
+              </thead>
+              <tbody>
+                <tr class="index" v-for=" yindex in TableHeight" :key="yindex">
+                  <td style="width:3px;text-align:center;font-size:20px;">{{numtoengs[yindex-1]}}</td>
+                  <td v-for="xindex in TableWidth" :key="xindex" class="visibletd">
+                    <div v-for="(sdata, sindex) in boxSample" :key="sindex">
+                      <span v-if="sdata.Position.split(';')[0]==xindex && sdata.Position.split(';')[1]==yindex">
+                        <div v-if="sdata.IState === 5">
+                          <img :src="imghost + '/static/img/sampletypeimg/zhanwei.png'" class="image">
+                        </div>
+                        <span v-for="(type, tindex) in option" :key="tindex" v-else>
+                          <div v-if="sdata.SampleType == type.value">
+                            <img :src="imghost + type.photo" class="image">
+                          </div>
+                        </span>
+                      </span>
+                    </div>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+        </el-col>
+      </el-row>
+    </el-card>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'devicemove_new',
+    components: {},
+    data() {
+      return {
+        fridgebottomimg: '',
+        imghost: '',
+        ename: '',
+        // 冰箱面板
+        unitwidth: 400, // 整个冰箱的尺寸
+        unitheight: 378,
+        dchxtable: -1, // 对勾所在位置
+        dchytable: -1,
+        xidx: -1, // 选中的冻存盒的位置
+        yidx: -1,
+        xcolor: -1, //  选中的冻存架的位置
+        ycolor: -1,
+        xshelf: -1, // 点击空冻存架
+        yshelf: -1,
+        shelfs: [], //选中冻存架
+        colorTableWidth: 0, //  冰箱的相对尺寸
+        colorTableHeight: 0,
+        numtoengs: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
+          'U', 'V', 'W', 'X', 'Y', 'Z'
+        ],
+        samplelist: [], // 新增,新的冰箱list和冻存盒/架list以及冻存盒样本list
+        equipid: 0, // 新增,设备id
+        COLORARR: ['#EAEAEA', '#13CE66', '#FF4949', '#D1EEEE', '#20A0FF', '#836FFF', '#000080', '#FF7777', '#FFFFFF'],
+        equiplist: [],
+        selectedequip: '',
+        paramx: 0, // 坐标参数
+        paramy: 0,
+        paramxshelf: 0,
+        paramyshelf: 0,
+        isAddFNum: false, // 冻融次数
+        movetype: '', // 移动的类型
+        cbcvalue: '' // 冻存盒颜色数值
+      }
+    },
+    created() {
+      this.imghost = process.env.imgserverhost
+      // let eid = this.$route.params.eid
+      let eid = this.$route.query.id
+      this.paramx = this.$route.query.x
+      this.paramy = this.$route.query.y
+      this.movetype = this.$route.query.type
+      this.paramxshelf = this.$route.query.xshelf
+      this.paramyshelf = this.$route.query.yshelf
+      this.equipid = eid
+      this.initData(eid)
+      this.getfridgeimg(eid)
+      this.getnameidlist()
+    },
+    watch: {},
+    methods: {
+      initData(eid) {
+        let _this = this
+        // 获取冻存架信息
+        _this.$axios.get('/shelfset/equipmentdraw/' + eid, {})
+          .then(res => {
+            // response
+            _this.samplelist = res.data.items
+            _this.colorTableHeight = res.data.dimension[1]
+            _this.colorTableWidth = res.data.dimension[0]
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      getfridgeimg(eid) {
+        let _this = this
+        // 获取容器信息
+        _this.$axios.get('/equipment/getmodel/' + eid, {})
+          .then(res => {
+            _this.ename = res.data.Name
+            if (res.data && (res.data.DItem === 4)) {
+              _this.fridgebottomimg = _this.imghost + '/static/img/sampletypeimg/bottomydg.png'
+            } else {
+              _this.fridgebottomimg = _this.imghost + '/static/img/sampletypeimg/bottombx.png'
+            }
+          })
+          .catch({})
+      },
+      getnameidlist() {
+        let _this = this
+        _this.$axios.get('/equipment/elist', {})
+          .then(res => {
+            for (var i = 0; i < res.data.items.length / 2; i++) {
+              _this.equiplist.push({
+                label: res.data.items[2 * i],
+                value: res.data.items[2 * i + 1]
+              })
+            }
+            _this.selectedequip = _this.equipid
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+      handleclk(xindex, yindex, xcolorTable, ycolorTable) {
+        // 修改坐标
+        this.xidx = xcolorTable
+        this.yidx = ycolorTable
+        this.xcolor = xindex + 1
+        this.ycolor = yindex + 1
+        this.dchxtable = -1
+        this.dchytable = -1
+      },
+      shelfclk(x, y) {
+        for (var i = 0; i < this.samplelist.length; i++) {
+          if (x === this.samplelist[i].XStation && y === this.samplelist[i].YStation) {
+            this.yshelf = -1
+            this.xshelf = -1
+            return
+          }
+        }
+        this.yshelf = y
+        this.xshelf = x
+        this.xidx = -1
+        this.yidx = -1
+        this.xcolor = -1
+        this.ycolor = -1
+        this.shelfs = [] 
+      },
+      getEquipPosition(ycolor, xidx, yidx) {
+        for (var i = 0 ; i < this.samplelist.length; i ++){
+          if (xidx == this.samplelist[i].YStation && yidx == this.samplelist[i].XStation){
+            this.shelfs = this.samplelist[i]
+          }
+        }
+        this.xidx = xidx
+        this.yidx = yidx
+        this.ycolor = ycolor + 1
+        this.xcolor = -1
+      },
+      changeequip(val) {
+        this.initData(val)
+        this.selectedequip = val
+        this.xshelf = -1
+        this.yshelf = -1
+      },
+      savemove() {
+        // 0----冻存架;1----冻存盒
+        if (this.movetype === '0') {
+          if (this.xhself !== -1 && this.yshelf !== -1) {
+            let _this = this
+            _this.$axios.put('/shelfset/shelfmove/' + _this.selectedequip + '_' + _this.equipid + '_' + _this.paramx +
+                '_' + _this.paramy + '_' + _this.xshelf + '_' + _this.yshelf + '_' + _this.isAddFNum, {})
+              .then(res => {
+                if (res.data.code === 0) {
+                  this.$message({
+                    type: 'success',
+                    message: res.data.message
+                  })
+                  window.history.go(-1)
+                } else {
+                  this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                  })
+                }
+              })
+              .catch(err => {
+                // handle error
+                console.error(err)
+              })
+          } else if (this.xidx !== -1 && this.yidx !== -1) {
+            this.$message({
+              type: 'warning',
+              message: '已存在冻存架!'
+            })
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '请选择冻存架!'
+            })
+          }
+        } else {
+          if (this.xcolor === -1 && this.ycolor === -1) {
+            this.$message({
+              type: 'warning',
+              message: '请选择冻存盒!'
+            })
+          } else if (this.havebox()) {
+            this.$message({
+              type: 'warning',
+              message: '已存在冻存盒!'
+            })
+          } else {
+            let _this = this
+            // request
+            _this.$axios.put('/shelfset/boxmove/' + _this.selectedequip + '_' + _this.equipid + '_' + _this.paramx +
+                '_' + _this.paramy + '_' + _this.xcolor + '_' + _this.ycolor + '_' + _this.isAddFNum + '_' + _this
+                .paramxshelf + '_' + _this.paramyshelf + '_' + _this.yidx + '_' + _this.xidx, {})
+              .then(res => {
+                // response
+                if (res.data.code === 0) {
+                  this.$message({
+                    type: 'success',
+                    message: res.data.message
+                  })
+                  window.history.go(-1)
+                } else {
+                  this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                  })
+                }
+              })
+              .catch(err => {
+                // handle error
+                console.error(err)
+              })
+          }
+        }
+      },
+      havebox() {
+        for (var i = 0; i < this.samplelist.length; i++) {
+          // 选择选择shelf
+          if (this.yidx === this.samplelist[i].XStation && this.xidx === this.samplelist[i].YStation) {
+            // 检查颜色
+            if (this.samplelist[i][this.numtoengs[this.ycolor - 1] + this.xcolor] === -2) {
+              return false
+            } else {
+              this.cbcvalue = this.samplelist[i][this.numtoengs[this.ycolor - 1] + this.xcolor]
+              return true
+            }
+          }
+        }
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss" scoped>
+  .ulbgcolor div {
+    float: left;
+  }
+
+  .hoverdiv:hover {
+    box-shadow: 0 0 4px rgba(0, 0, 0, .4);
+    transform: scale(1.15);
+  }
+
+  .fridge {
+    width: 425px;
+    height: 110px;
+    margin-left: 13px;
+  }
+
+  .worklisticolist {
+    font-size: 14px;
+    margin-bottom: 12px;
+  }
+
+  .worklisticolist i:not(:first-child) {
+    margin-left: 4px;
+  }
+
+  .worklisticolist i {
+    margin-right: 3px;
+  }
+
+  .tdborder {
+    border: 1px solid #B4CDCD;
+  }
+
+  .tdtopborder {
+    border-top: 5px solid #A3A3A3;
+  }
+
+  .tdleftborder {
+    border-left: 5px solid #A3A3A3;
+  }
+
+  .tdrightborder {
+    border-right: 5px solid #A3A3A3;
+  }
+
+</style>

+ 3 - 206
src/dashoo.cn/frontend_animal/src/pages/samples/archived/index.vue

@@ -63,14 +63,7 @@
         <el-table-column :label="item.name" :key="item.name" v-if="item.show" v-for="item in showcolumn"
           :width="item.columnwidth" align="center" show-overflow-tooltip>
           <template slot-scope="scope">
-            <template v-if="item.filed === 'SourceName' && acc != 'sBBo4' &&  acc != 'ssqOy' && acc != 'saB4v'">
-              <router-link
-                :to="'/biobank/source/'+ scope.row.SourceId + '/sourceinfo?pname=samples-prerecorded&size='+size+'&currentPage='+currentPage"
-                :style="{color: scope.row.FamilyState === 0 ? 'blue' : 'red'}">
-                {{scope.row.SourceName}}
-              </router-link>
-            </template>
-            <template v-else-if="item.filed === 'SourceName' && (acc == 'sBBo4' || acc == 'saB4v')">
+            <template v-if="item.filed === 'SourceName' && (acc == 'sBBo4' || acc == 'saB4v')">
               <router-link
                 :to="'/biobank/source/'+ scope.row.SourceId + '/sourcedetail?pname=samples-prerecorded&size='+size+'&currentPage='+currentPage"
                 :style="{color: scope.row.FamilyState === 0 ? 'blue' : 'red'}">
@@ -124,11 +117,6 @@
                 <el-option v-for="item in sampletypes" :label="item.Name" :value="item.Id" :key="item.Id"></el-option>
               </el-select>
             </el-form-item>
-            <!-- <el-form-item label="公共扩展">
-              <el-select v-model="Noteitem" multiple placeholder="请选择" size="mini" style="width:100%">
-                <el-option v-for="item in publicsampletypes" :label="item.Name" :value="item.FieldName" :key="item.FieldName"></el-option>
-              </el-select>
-            </el-form-item> -->
           </el-col>
           <el-col :span="8">
             <el-form-item label="样本编码">
@@ -137,20 +125,12 @@
             <el-form-item label="名称">
               <el-input v-model="Name" placeholder="请输入名称" size="mini" style="width:100%"></el-input>
             </el-form-item>
-            <el-form-item label="组织器官">
-              <el-cascader :options="zuzhitreelist" :props="sampinputtreeprops" change-on-select
-                :show-all-levels="false" v-model="selectedzuzhi" @change="zuzhitreehandleChange" placeholder="请选择组织"
-                size="mini" style="width:100%"></el-cascader>
-            </el-form-item>
             <el-form-item label="特有扩展">
               <el-select v-model="STNoteField" multiple placeholder="请选择" size="mini" style="width:100%">
                 <el-option v-for="item in typetykzlist" :label="item.Name" :value="item.FieldName"
                   :key="item.FieldName"></el-option>
               </el-select>
             </el-form-item>
-            <!-- <el-form-item label="公共检索">
-              <el-input v-model="Noteitemvalue" placeholder="请输入检索内容" size="mini" style="width:100%"></el-input>
-            </el-form-item> -->
           </el-col>
           <el-col :span="8">
             <el-form-item label="样本来源">
@@ -159,12 +139,6 @@
             <el-form-item label="录入人">
               <el-input v-model="CreateBy" placeholder="请输入录入人" size="mini" style="width:100%"></el-input>
             </el-form-item>
-            <el-form-item label="取材部位">
-              <el-select v-model="SamplingSite" clearable placeholder="请选择" size="mini" style="width:100%">
-                <el-option v-for="item in samplesitenames" :label="item.Name" :value="item.Code" :key="item.Code">
-                </el-option>
-              </el-select>
-            </el-form-item>
             <el-form-item label="特有检索">
               <el-input v-model="Stnotevalue" placeholder="输入检索内容" size="mini" style="width:100%"></el-input>
             </el-form-item>
@@ -245,7 +219,7 @@
                   <el-input v-else-if="searchField == 'SampleCode'" v-model="searchValue.SampleCode"
                     placeholder="请输入样本编码"></el-input>
                   <el-input v-else-if="searchField == 'SourceName'" v-model="searchValue.SourceName"
-                    placeholder="请输入身份证号或姓名"></el-input>
+                    placeholder="请输入样本源名称"></el-input>
                   <el-input v-else-if="searchField == 'InnerCode'" v-model="searchValue.InnerCode"
                     placeholder="请输入样本内码"></el-input>
                   <el-input v-else-if="searchField == 'Name'" v-model="searchValue.Name" placeholder="请输入名称"></el-input>
@@ -256,22 +230,6 @@
                   <el-date-picker v-else-if="searchField == 'ReceiveDate'" v-model="searchValue.CreateOn"
                     type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
                     style="width:100%"></el-date-picker>
-                  <el-cascader v-else-if="searchField == 'SamplingOrganName'" :options="zuzhitreelist"
-                    :props="sampinputtreeprops2" change-on-select :show-all-levels="false"
-                    v-model="searchValue.selectedzuzhi" @change="zuzhitreehandleChange2" placeholder="请选择组织"
-                    style="width:100%">
-                  </el-cascader>
-                  <span v-else-if="searchField == 'SamplingSiteName'">
-                    <el-cascader :options="zuzhitreelist" :props="sampinputtreeprops" change-on-select
-                      :show-all-levels="false" v-model="selectedzuzhi2" @change="zuzhitreehandleChange2"
-                      placeholder="请选择组织" style="width:50%">
-                    </el-cascader>
-                    <el-select v-model="searchValue.SamplingSite" clearable placeholder="请选择"
-                      style="width:45%;margin-left:5px;">
-                      <el-option v-for="item in samplesitenames2" :key="item.Code" :label="item.Name"
-                        :value="item.Name"></el-option>
-                    </el-select>
-                  </span>
                   <el-select v-else-if="searchField == 'SampleTypeName'" v-model="searchValue.SampleType" clearable
                     placeholder="请选择" @change="selsampletypeChange" style="width:100%">
                     <el-option v-for="item in sampletypes" :key="item.Id" :label="item.Name" :value="item.Name">
@@ -356,11 +314,8 @@
         BarCode: '', // 样本条码
         SampleCode: '', // 样本编码
         SampleType: '', // 样本类型
-        SamplingSite: '', // 取材部位
         Stnotevalue: '', // 特有扩展检索值
         STNoteField: [], // 特有扩展名称
-        Noteitemvalue: '', // 公共扩展检索值
-        Noteitem: [], // 公共扩展名称
         CreateBy: '', // 录入人
         CreateOn: [], // 录入时期
         GroupName: '', //所属分组
@@ -370,16 +325,6 @@
         InnerCode: '', // 样本内码
         dialogFormVisible: false, // 添加弹框是否显示
         showquerydiv: false,
-        publicsampletypedata: [], // 样本公共扩展
-        sampletypes: [], // 样本类型
-        zuzhitreelist: [], // 组织器官
-        samplesitenames: [], // 取材部位
-        publicsampletypes: [], // 公共拓展
-        sampinputtreeprops: {
-          value: 'code',
-          label: 'name',
-          children: 'children'
-        },
         // searchmodel: {
         //   BarCode: '', // 样本条码
         //   SampleCode: '', // 样本编码
@@ -398,8 +343,7 @@
         //   InnerCode: '', // 样本内码
         //   SamplingOrgan: '' //组织器官
         // },
-        selectedzuzhi: [],
-        selectsigorg: '',
+        sampletypes: [], // 样本类型
         typetykzlist: [], // 特有扩展
         multipleSelection: [], //多选框
         showcolumn: [], // 显示列
@@ -420,8 +364,6 @@
           Name: '',
           CreateBy: '',
           CreateOn: [],
-          selectedzuzhi: [],
-          SamplingSite: '',
           SampleType: '',
           Validity: [],
           Capacity: '',
@@ -429,13 +371,6 @@
           Extension: '',
           GroupName: '', //所属分组
         },
-        sampinputtreeprops2: {
-          value: 'name',
-          label: 'name',
-          children: 'children'
-        },
-        selectedzuzhi2: [],
-        samplesitenames2: [], // 取材部位
         orAnd: "and",
         orAndData: [{
             name: "并且",
@@ -481,14 +416,6 @@
           if (this.searchmodel.CreateOn && this.searchmodel.CreateOn.length === 2) { //录入日期
             this.CreateOn = [new Date(this.searchmodel.CreateOn[0]), new Date(this.searchmodel.CreateOn[1])]
           }
-          if (this.searchmodel.SamplingOrgan && this.searchmodel.SamplingOrgan !== '') { //组织器官
-            this.selectsigorg = this.searchmodel.SamplingOrgan
-            this.getparentcodebytopcode(this.searchmodel.SamplingOrgan)
-            // this.selectedzuzhi=searchmodel.SamplingOrgan
-          }
-          if (this.searchmodel.SamplingSite && this.searchmodel.SamplingSite !== '') { //取材部位
-            this.SamplingSite = this.searchmodel.SamplingSite
-          }
           if (this.searchmodel.SampleType && this.searchmodel.SampleType !== '') { //样本类型
             this.SampleType = this.searchmodel.SampleType
             this.searchsampletypeChange()
@@ -502,12 +429,6 @@
           if (this.searchmodel.Validity && this.searchmodel.Validity.length === 2) { //有效日期
             this.Validity = [new Date(this.searchmodel.Validity[0]), new Date(this.searchmodel.Validity[1])]
           }
-          if (this.searchmodel.Noteitem && this.searchmodel.Noteitem.length > 0) { //公有扩展
-            this.Noteitem = this.searchmodel.Noteitem
-          }
-          if (this.searchmodel.Noteitemvalue && this.searchmodel.Noteitemvalue !== '') { //公共检索内容
-            this.Noteitemvalue = this.searchmodel.Noteitemvalue
-          }
           if (searchmodel.GroupName && searchmodel.GroupName !== '') { //所属分组
             this.GroupName = searchmodel.GroupName
           }
@@ -554,16 +475,6 @@
           name: '可用容量',
           show: true,
           kuoz: false
-        }, {
-          filed: 'SamplingOrganName',
-          name: '组织器官',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SamplingSiteName',
-          name: '取材部位',
-          show: true,
-          kuoz: false
         }, {
           filed: 'InnerCode',
           name: '样本内码',
@@ -591,7 +502,6 @@
           kuoz: false
         }]
       }
-      // initial data
       this.initData()
       this.getextends()
       this.checkedshowall()
@@ -607,14 +517,12 @@
       initData() {
         this.currentSearchTemplate = ''
         let _this = this
-        // paginate
         let params = {
           _currentPage: this.currentPage,
           _size: this.size,
           BarCode: this.BarCode,
           SampleCode: this.SampleCode,
           SampleType: this.SampleType,
-          SamplingSite: this.SamplingSite,
           Stnotevalue: this.Stnotevalue,
           STNoteField: this.STNoteField,
           Noteitemvalue: this.Noteitemvalue,
@@ -625,7 +533,6 @@
           Validity: this.Validity,
           CreateOn: this.CreateOn,
           InnerCode: this.InnerCode,
-          SamplingOrgan: this.selectsigorg,
           GroupName: _this.GroupName
         }
         if (this.CreateOn && this.CreateOn.length === 2) {
@@ -636,17 +543,14 @@
           params = Object.assign(params, params2)
         }
         store.set('samplearchivedseach', params)
-        // request
         this.$axios.get('/samplesfiles/list', {
             params
           })
           .then(res => {
-            // response
             _this.list = res.data.items
             _this.currentItemCount = res.data.currentItemCount
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -672,82 +576,14 @@
           })
           .then(res => {
             _this.sampletypes = res.data.items
-            // _this.sampletypes = [{'Id': 123, 'Name': '987'}]
-          }).catch(() => {})
-        this.$axios.get('/sampleinput/getpublicsampletype', {
-            _currentPage: -1
-          })
-          .then(res => {
-            _this.publicsampletypes = res.data.items
-            // 扩展列增加到显示列中
-            if (!(this.cachecols && this.cachecols !== '')) {
-              for (let i = 0; i < _this.publicsampletypes.length; i++) {
-                _this.showcolumn.push({
-                  filed: _this.publicsampletypes[i].FieldName,
-                  name: _this.publicsampletypes[i].Name,
-                  show: true,
-                  kuoz: true
-                })
-              }
-            } else {
-              // 新增和修改
-              for (let i = 0; i < _this.publicsampletypes.length; i++) {
-                let matchindex = -1
-                for (let j = 0; j < _this.showcolumn.length; j++) {
-                  if (_this.showcolumn[j].filed === _this.publicsampletypes[i].FieldName && _this.showcolumn[j]
-                    .kuoz) {
-                    matchindex = j
-                    break
-                  }
-                }
-                if (matchindex >= 0) {
-                  _this.showcolumn[matchindex] = {
-                    filed: _this.publicsampletypes[i].FieldName,
-                    name: _this.publicsampletypes[i].Name,
-                    show: _this.showcolumn[matchindex].show,
-                    kuoz: true,
-                    columnwidth: _this.showcolumn[matchindex].columnwidth
-                  }
-                } else {
-                  _this.showcolumn.push({
-                    filed: _this.publicsampletypes[i].FieldName,
-                    name: _this.publicsampletypes[i].Name,
-                    show: true,
-                    kuoz: true
-                  })
-                }
-              }
-              // 删除
-              let showcolumntemp = _this.showcolumn
-              _this.showcolumn = []
-              for (let j = 0; j < showcolumntemp.length; j++) {
-                if (!showcolumntemp[j].kuoz) {
-                  _this.showcolumn.push(showcolumntemp[j])
-                } else {
-                  for (let i = 0; i < _this.publicsampletypes.length; i++) {
-                    if (showcolumntemp[j].filed === _this.publicsampletypes[i].FieldName) {
-                      _this.showcolumn.push(showcolumntemp[j])
-                      break
-                    }
-                  }
-                }
-              }
-            }
             if (store.get('samplearchivedseach').searchWithTemplate && store.get('samplearchivedseach')
               .searchWithTemplate !==
               '') { //自定义查询
               this.handleSearchCommand(store.get('samplearchivedseach').searchWithTemplate)
             } else {
-              // initial data
               this.initData()
             }
           }).catch(() => {})
-        this.$axios.get('/sampleinput/getoperations', {
-            _currentPage: -1
-          })
-          .then(res => {
-            _this.zuzhitreelist = window.toolfun_gettreejson(res.data.items, 'id', 'pId', 'id,name,code')
-          }).catch(() => {})
       },
       seachdata() {
         if (this.selectedzuzhi.length > 0) {
@@ -765,7 +601,6 @@
         }).then(() => {
           _this.$axios.delete('samplesfiles/' + val.Id + '?sampletype=' + val.SampleType, null)
             .then(res => {
-              // response
               if (res.data.code === 0) {
                 _this.$message({
                   type: 'success',
@@ -807,7 +642,6 @@
                 .multipleSelection[
                   i].SampleType, null)
               .then(res => {
-                // response
                 if (res.data.code === 0) {
                   succeedMsg = res.data.message
                 } else {
@@ -837,7 +671,6 @@
               })
           }
         }).catch(err => {
-          // handle error
           console.error(err)
         })
       },
@@ -981,20 +814,9 @@
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
-      zuzhitreehandleChange2(value) {
-        if (this.selectedzuzhi2.length > 0) {
-          let selectsigorg = this.selectedzuzhi2[this.selectedzuzhi2.length - 1] + ''
-          this.$axios.get('/samplesite/getsitebyfcode?code=' + selectsigorg, {})
-            .then(res => {
-              this.searchValue.SamplingSite = ''
-              this.samplesitenames2 = res.data
-            }).catch(() => {})
-        }
-      },
       //添加自定义搜索详情
       addSearchField() {
         let searchValue
@@ -1079,7 +901,6 @@
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -1106,21 +927,17 @@
 
         }
         let _this = this
-        // request
         this.$axios.get('/samplesfiles/search?name=' + name, {
             params
           })
           .then(res => {
             console.log(res.data.items)
-            // response
             if (res.data.items) {
               _this.list = res.data.items
-              // toggle loading
               _this.currentItemCount = res.data.currentItemCount
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -1163,7 +980,6 @@
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -1176,8 +992,6 @@
           Name: '',
           CreateBy: '',
           CreateOn: [],
-          selectedzuzhi: [],
-          SamplingSite: '',
           SampleType: '',
           Validity: [],
           Capacity: '',
@@ -1207,16 +1021,6 @@
           return val.substring(0, 19)
         }
       },
-      zuzhitreehandleChange(value) {
-        if (this.selectedzuzhi.length > 0) {
-          this.selectsigorg = this.selectedzuzhi[this.selectedzuzhi.length - 1] + ''
-          this.$axios.get('/samplesite/getsitebyfcode?code=' + this.selectsigorg, {})
-            .then(res => {
-              this.SamplingSite = ''
-              this.samplesitenames = res.data
-            }).catch(() => {})
-        }
-      },
       //返回查询条件执行
       searchzuzhitreehandleChange(value) {
         if (this.selectedzuzhi.length > 0) {
@@ -1276,7 +1080,6 @@
           BarCode: this.BarCode,
           SampleCode: this.SampleCode,
           SampleType: this.SampleType,
-          SamplingSite: this.SamplingSite,
           Stnotevalue: this.Stnotevalue,
           STNoteField: this.STNoteField,
           Noteitemvalue: this.Noteitemvalue,
@@ -1286,7 +1089,6 @@
           Name: this.Name,
           Validity: this.Validity,
           InnerCode: this.InnerCode,
-          SamplingOrgan: this.selectsigorg,
           GroupName: this.GroupName,
           showcolumnarr: showcolumnarr + '',
           showcolumnnamearr: showcolumnnamearr + '',
@@ -1341,7 +1143,6 @@
             window.location = 'http://' + res.data
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -1373,7 +1174,6 @@
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -1386,9 +1186,6 @@
         this.Name = ''
         this.CreateBy = ''
         this.CreateOn = []
-        this.selectsigorg = ''
-        this.selectedzuzhi = []
-        this.SamplingSite = ''
         this.SampleType = ''
         this.STNoteField = ''
         this.Stnotevalue = ''

+ 55 - 19
src/dashoo.cn/frontend_animal/src/pages/samples/prerecorded/_opera/unhumanadd.vue

@@ -41,6 +41,40 @@
               </el-input>
             </el-form-item>
           </el-col>
+          <el-col :span="8">
+            <el-form-item label="来源内码">
+              <el-input v-model="sampleform.InnerNo" placeholder="来源内码" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="蜂种">
+              <el-input v-model="sampleform.Genus" placeholder="蜂种" disabled></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="取样地区">
+              <el-input v-model="Address" placeholder="取样地区" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="采样日期">
+              <el-date-picker v-model="sampleform.SurveyDate" type="date" style="width:100%" placeholder="选择日期"
+                disabled>
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="数量">
+              <el-input v-model="amountuni" placeholder="数量" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="项目属性">
+              <el-input v-model="sampleform.ProjectName" placeholder="项目属性" disabled></el-input>
+            </el-form-item>
+          </el-col>
           <el-col :span="8">
             <el-form-item label="样本来源" v-if="acc =='ssqOy'">
               <el-input placeholder="样本来源" v-model="sampleform.SourceName" style="width:100%">
@@ -50,6 +84,8 @@
               </el-input>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="8">
             <el-form-item label="样本类型" required prop="SampleTypestr">
               <el-select v-model="sampleform.SampleTypestr" clearable placeholder="请选择" style="width:100%"
@@ -59,13 +95,6 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="8">
-            <el-form-item label="样本条码" prop="BarCode">
-              <el-input v-model="sampleform.BarCode" placeholder="为空默认自动生成" :disabled="disabledbarcode"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="16">
             <el-form-item label="样本编码" prop="SampleCode">
               <el-row>
@@ -96,6 +125,11 @@
                 placeholder="样本编码"></el-input>
             </el-form-item>
           </el-col> -->
+          <el-col :span="8">
+            <el-form-item label="样本条码" prop="BarCode">
+              <el-input v-model="sampleform.BarCode" placeholder="为空默认自动生成" :disabled="disabledbarcode"></el-input>
+            </el-form-item>
+          </el-col>
           <el-col :span="8">
             <el-form-item label="样本名称">
               <el-input v-model="sampleform.Name" placeholder="样本名称"></el-input>
@@ -304,6 +338,10 @@
           SourceName: '', // 样本来源
           SourceId: 0,
           SourceIdCard: '',
+          InnerNo: '',
+          Genus: '',
+          SurveyDate: new Date(),
+          ProjectName: '',
           Remark: '', // 备注----------------------
           Isyongjiu: false, // 是否永久
           code_default: '',
@@ -325,6 +363,9 @@
           CreateUserId: 0, // 录入人
           CreateBy: '' // 录入人
         },
+        amountuni: '',
+        Address: '',
+        AreaCode: '',
         sampleformrule: {
           //   SampleCode: [{
           //     validator: checkSampleCode,
@@ -842,14 +883,15 @@
           this.$router.go(-1)
         }
       },
-      customsampsourceDialogCallback(val) {
-        this.sampleform.SourceId = val.Id
-        this.sampleform.SourceIdCard = val.IdCard
-        this.sampleform.SourceName = val.Name
-      },
       animalDialogCallback(val) {
+        this.sampleform.Genus = val.Genus
         this.sampleform.SourceId = val.Id
         this.sampleform.SourceName = val.Name
+        this.sampleform.InnerNo = val.InnerNo
+        this.sampleform.ProjectName = val.ProjectName
+        this.sampleform.SurveyDate = new Date(val.SurveyDate)
+        this.amountuni = val.Amount + val.Unit
+        this.Address = val.ProvinceName + val.CityName + val.StreetName + val.Address
         this.AreaCode = val.AreaCode
         this.TimeCode = this.jstimehandle(val.SurveyDate)
         this.getGroupCode()
@@ -865,17 +907,11 @@
           .then(res => {
             let minvalue = res.data.items.MinValue
             let maxvalue = res.data.items.MaxValue
-            for (var i = minvalue; i < maxvalue + 2; i++) {
+            for (var i = minvalue; i < maxvalue + 1; i++) {
               _this.groupcodeList.push({
                 label: (Array(4).join(0) + i).slice(-4),
                 value: i
               });
-              if (i == maxvalue + 1) {
-                _this.groupcodeList.push({
-                  label: '全部',
-                  value: i
-                });
-              }
             }
           })
           .catch(err => {

+ 18 - 11
src/dashoo.cn/frontend_animal/src/pages/samples/prerecorded/_opera/unhumanpre.vue

@@ -72,6 +72,11 @@
                 <el-input v-model="amountuni" placeholder="数量" disabled></el-input>
               </el-form-item>
             </el-col>
+            <el-col :span="8">
+              <el-form-item label="项目属性">
+                <el-input v-model="sampleform.ProjectName" placeholder="项目属性" disabled></el-input>
+              </el-form-item>
+            </el-col>
           </el-row>
         </el-card>
 
@@ -192,10 +197,10 @@
           </el-col>
           <el-col :span="16">
             <el-form-item>
-               <!--<el-checkbox :disabled="disabledcheckprint" v-model="sampleform.autoprintchecked" class="title">
+              <!--<el-checkbox :disabled="disabledcheckprint" v-model="sampleform.autoprintchecked" class="title">
                 新增保存时打印标签(如若勾选,请确保已经设置过默认打印方案)
               </el-checkbox>-->
-            </el-form-item> 
+            </el-form-item>
           </el-col>
           <el-col :span="8" v-if="acc !='srNA2'">
             <el-form-item label="选择直接入库">
@@ -482,6 +487,7 @@
           SampleTypestr: '', // 样本类型
           SampleTypeName: '',
           Name: '', // 样本名称
+          ProjectName: '',
           ReceiveDatedate: new Date(), // 接收日期
           ValidityDate: '', // 有效日期
           DefaultCapacity: 1, //默认容量
@@ -720,6 +726,7 @@
         this.sourceform.Name = val.Name
         this.sourceform.InnerNo = val.InnerNo
         this.sourceform.Amount = val.Amount
+        this.sampleform.ProjectName = val.ProjectName
         this.sourceform.Unit = val.Unit
         this.sourceform.SourceType = val.SourceType
         this.sourceform.SurveyDate = new Date(val.SurveyDate)
@@ -731,6 +738,7 @@
       },
       getGroupCode() {
         let _this = this;
+        _this.groupcodeListv = []
         let params = {
           SourceId: this.sourceform.SourceId
         }
@@ -740,18 +748,16 @@
           .then(res => {
             let minvalue = res.data.items.MinValue
             let maxvalue = res.data.items.MaxValue
-            for (var i = minvalue; i < maxvalue + 2; i++) {
+            for (var i = minvalue; i < maxvalue + 1; i++) {
               _this.groupcodeList.push({
                 label: (Array(4).join(0) + i).slice(-4),
                 value: i
               });
-              if (i == maxvalue + 1) {
-                _this.groupcodeList.push({
-                  label: '全部',
-                  value: i
-                });
-              }
             }
+            _this.groupcodeList.push({
+              label: '全部',
+              value: maxvalue + 1
+            });
           })
           .catch(err => {
             console.error(err);
@@ -811,7 +817,7 @@
             let params = _this.sampleform
             params = Object.assign(params, jsonobj)
             //拼接群号列表
-            if(_this.groupcodeList){
+            if (_this.groupcodeList) {
               params = Object.assign(params, _this.groupcodeList)
             }
             // 时间格式数据拼接
@@ -842,7 +848,8 @@
               }
               _this.GroupName = tempOfficers.join(',');
             }
-            _this.$axios.post('samplesubpackage/subpackage?subpackagenum=' + _this.SubpackageNum + '&subpackagecapacity=' +
+            _this.$axios.post('samplesubpackage/subpackage?subpackagenum=' + _this.SubpackageNum +
+                '&subpackagecapacity=' +
                 _this.SubpackageCapacity + '&capacity=' + _this.sampleform.Capacity + '&groupid=' + _this.GroupId +
                 '&groupname=' + _this.GroupName + '&timecode=' + _this.TimeCode, params)
               .then(res => {

+ 145 - 190
src/dashoo.cn/frontend_animal/src/pages/samples/stored/index.vue

@@ -10,7 +10,8 @@
           <el-breadcrumb-item>已存储样本</el-breadcrumb-item>
         </el-breadcrumb>
         <span style="float: right;">
-          <el-dropdown split-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @command="handleExportsamplesCommand">
+          <el-dropdown split-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;"
+            @command="handleExportsamplesCommand">
             导出
             <el-dropdown-menu slot="dropdown">
               <el-dropdown-item style="color:black;" command="exportchosen">导出所选样本</el-dropdown-item>
@@ -18,16 +19,20 @@
               <el-dropdown-item style="color:black;" command="exportall">导出所有样本</el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
-          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="batchprint">打印</el-button>
-          <el-dropdown split-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @command="chooseType">
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="batchprint">打印
+          </el-button>
+          <el-dropdown split-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;"
+            @command="chooseType">
             复苏
             <el-dropdown-menu slot="dropdown">
               <el-dropdown-item style="color:black;" command="batchrecovery">复苏所选样本</el-dropdown-item>
               <el-dropdown-item style="color:black;" command="Apply">审核复苏样本</el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
-          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="batchdelete">删除</el-button>
-          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="columndialogVisible = true">显示列</el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="batchdelete">删除
+          </el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;"
+            @click="columndialogVisible = true">显示列</el-button>
         </span>
         <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
           <el-form-item label="样本条码">
@@ -39,7 +44,8 @@
               <el-dropdown-menu slot="dropdown">
                 <el-dropdown-item command="search">高级查询</el-dropdown-item>
                 <el-dropdown-item command="clear">查询重置</el-dropdown-item>
-                <el-dropdown-item style="color:black;" v-for="item in searchTemplates" :key="item.Name" :command="item.Name">{{item.Name}}</el-dropdown-item>
+                <el-dropdown-item style="color:black;" v-for="item in searchTemplates" :key="item.Name"
+                  :command="item.Name">{{item.Name}}</el-dropdown-item>
                 <el-dropdown-item divided style="color:black;" command="编辑">自定义</el-dropdown-item>
               </el-dropdown-menu>
             </el-dropdown>
@@ -47,19 +53,22 @@
         </el-form>
       </div>
 
-      <el-table ref="multipleTable" :data="list" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;"
-        @selection-change="handleSelectionChange" @header-dragend="header_dragend">
+      <el-table ref="multipleTable" :data="list" bordertooltip-effect="dark" border height="calc(100vh - 230px)"
+        style="width: 100%;" @selection-change="handleSelectionChange" @header-dragend="header_dragend">
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column label="操作" width="130" align="center" fixed>
           <template slot-scope="scope">
-            <router-link :to="'/samples/stored/'+scope.row.Id + '/edit?pname=samples-stored&size='+size+'&currentPage='+currentPage">
+            <router-link
+              :to="'/samples/stored/'+scope.row.Id + '/edit?pname=samples-stored&size='+size+'&currentPage='+currentPage">
               <el-button size="small" type="text" title="编辑" icon="el-icon-edit"></el-button>
             </router-link>
-            <el-button size="small" type="text" title="删除" style="margin-left:3px;" icon="el-icon-delete" @click="deletedata(scope.row)"></el-button>
+            <el-button size="small" type="text" title="删除" style="margin-left:3px;" icon="el-icon-delete"
+              @click="deletedata(scope.row)"></el-button>
             <el-button type="text" size="small" title="打印" style="margin-left:3px;" @click="openPrintDialog(scope.row)">
               <i class="icon icon-printer"></i>
             </el-button>
-            <router-link :to="'/samples/stored/'+scope.row.Id + '/detailed?pname=samples-stored&size='+size+'&currentPage='+currentPage">
+            <router-link
+              :to="'/samples/stored/'+scope.row.Id + '/detailed?pname=samples-stored&size='+size+'&currentPage='+currentPage">
               <el-button type="text" size="small" title="详情" style="margin-left:3px;">
                 <i class="icon icon-eye"></i>
               </el-button>
@@ -69,34 +78,39 @@
                 <i class="icon icon-location"></i>
               </el-button>
             </router-link>
-            <router-link :to="'/samples/stored/'+scope.row.Id + '/detailed?pname=samples-stored&size='+size+'&currentPage='+currentPage">
-              <el-button v-if="scope.row.IsAttachment == 1" size="small" type="text" title="上传附件" style="margin-left:3px;">
+            <router-link
+              :to="'/samples/stored/'+scope.row.Id + '/detailed?pname=samples-stored&size='+size+'&currentPage='+currentPage">
+              <el-button v-if="scope.row.IsAttachment == 1" size="small" type="text" title="上传附件"
+                style="margin-left:3px;">
                 <i class="icon icon-upload2"></i>
               </el-button>
             </router-link>
-            <el-button v-if="scope.row.IsAttachment == 0" size="small" type="text" title="上传附件" style="margin-left:3px;color:#CDC5BF"
-              @click="uploadfile(scope.row)">
+            <el-button v-if="scope.row.IsAttachment == 0" size="small" type="text" title="上传附件"
+              style="margin-left:3px;color:#CDC5BF" @click="uploadfile(scope.row)">
               <i class="icon icon-upload2"></i>
             </el-button>
           </template>
         </el-table-column>
-        <el-table-column :label="item.name" :key="item.name" v-if="item.show" v-for="item in showcolumn" :width="item.columnwidth"
-          align="center" show-overflow-tooltip>
+        <el-table-column :label="item.name" :key="item.name" v-if="item.show" v-for="item in showcolumn"
+          :width="item.columnwidth" align="center" show-overflow-tooltip>
           <template slot-scope="scope">
             <template v-if="item.filed === 'SourceName' && acc != 'sBBo4' && acc !='ssqOy' && acc != 'saB4v'">
-              <router-link :to="'/biobank/source/'+ scope.row.SourceId + '/sourceinfo?pname=samples-prerecorded&size='+size+'&currentPage='+currentPage"
+              <router-link
+                :to="'/biobank/source/'+ scope.row.SourceId + '/sourceinfo?pname=samples-prerecorded&size='+size+'&currentPage='+currentPage"
                 :style="{color: scope.row.FamilyState === 0 ? 'blue' : 'red'}">
                 {{scope.row.SourceName}}
               </router-link>
             </template>
             <template v-else-if="item.filed === 'SourceName' && (acc == 'sBBo4' || acc == 'saB4v')">
-              <router-link :to="'/biobank/source/'+ scope.row.SourceId + '/sourcedetail?pname=samples-prerecorded&size='+size+'&currentPage='+currentPage"
+              <router-link
+                :to="'/biobank/source/'+ scope.row.SourceId + '/sourcedetail?pname=samples-prerecorded&size='+size+'&currentPage='+currentPage"
                 :style="{color: scope.row.FamilyState === 0 ? 'blue' : 'red'}">
                 {{scope.row.SourceName}}
               </router-link>
             </template>
             <template v-else-if="item.filed === 'SourceName' && acc == 'ssqOy'">
-              <router-link :to="'/biobank/source/'+ scope.row.SourceId + '/sourcemicinfo?pname=samples-prerecorded&size='+size+'&currentPage='+currentPage"
+              <router-link
+                :to="'/biobank/source/'+ scope.row.SourceId + '/sourcemicinfo?pname=samples-prerecorded&size='+size+'&currentPage='+currentPage"
                 :style="{color: scope.row.FamilyState === 0 ? 'blue' : 'red'}">
                 {{scope.row.SourceName}}
               </router-link>
@@ -118,7 +132,8 @@
       <div class="block">
         <span class="demonstration"></span>
         <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
-          :page-sizes="[10, 15, 20]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+          :page-sizes="[10, 15, 20]" :page-size="size" layout="total, sizes, prev, pager, next, jumper"
+          :total="currentItemCount">
         </el-pagination>
       </div>
 
@@ -155,13 +170,14 @@
               <el-form-item label="名称">
                 <el-input v-model="Name" placeholder="请输入名称" size="mini" style="width:100%"></el-input>
               </el-form-item>
-              <el-form-item label="组织器官">
+              <!-- <el-form-item label="组织器官">
                 <el-cascader :options="zuzhitreelist" :props="sampinputtreeprops" change-on-select :show-all-levels="false"
                   v-model="selectedzuzhi" @change="zuzhitreehandleChange" placeholder="请选择组织" size="mini" style="width:100%"></el-cascader>
-              </el-form-item>
+              </el-form-item> -->
               <el-form-item label="特有扩展">
                 <el-select v-model="STNoteField" multiple placeholder="请选择" size="mini" style="width:100%">
-                  <el-option v-for="item in typetykzlist" :label="item.Name" :value="item.FieldName" :key="item.FieldName"></el-option>
+                  <el-option v-for="item in typetykzlist" :label="item.Name" :value="item.FieldName"
+                    :key="item.FieldName"></el-option>
                 </el-select>
               </el-form-item>
               <!-- <el-form-item label="公共检索">
@@ -175,11 +191,11 @@
               <el-form-item label="录入人">
                 <el-input v-model="CreateBy" placeholder="请输入录入人" size="mini" style="width:100%"></el-input>
               </el-form-item>
-              <el-form-item label="取材部位">
+              <!-- <el-form-item label="取材部位">
                 <el-select v-model="SamplingSite" clearable placeholder="请选择" size="mini" style="width:100%">
                   <el-option v-for="item in samplesitenames" :label="item.Name" :value="item.Code" :key="item.Code"></el-option>
                 </el-select>
-              </el-form-item>
+              </el-form-item> -->
               <el-form-item label="特有检索">
                 <el-input v-model="Stnotevalue" placeholder="输入检索内容" size="mini" style="width:100%"></el-input>
               </el-form-item>
@@ -197,7 +213,8 @@
 
       <el-dialog title="打印" :visible.sync="dialogPrintVisible" size="tiny">
         <el-select v-model="Printscheme" placeholder="请选择">
-          <el-option v-for="item in printschemelist" :label="item.Name" :value="item.FileName" :key="item.FileName"></el-option>
+          <el-option v-for="item in printschemelist" :label="item.Name" :value="item.FileName" :key="item.FileName">
+          </el-option>
         </el-select>
         <br>
         <br>
@@ -206,7 +223,8 @@
     </el-card>
 
     <el-dialog title="选中显示列(拖拽可以实现排序)" :visible.sync="columndialogVisible" top="5vh">
-      <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange" style="margin-left:15px;">全选</el-checkbox>
+      <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange"
+        style="margin-left:15px;">全选</el-checkbox>
       <div style="margin: 10px 0;"></div>
       <draggable v-model="showcolumn">
         <transition-group class="sampshowfiledsort_ul sampshowfiledsort_ul_tags" tag="ul">
@@ -220,7 +238,8 @@
         <el-button type="primary" @click="saveshowfiled()">确 定</el-button>
       </div>
     </el-dialog>
-    <batchrecoverydialog @close="recoverydialogcallback" :applyform="shenhe" :visible.sync="dialogfusuVisible"></batchrecoverydialog>
+    <batchrecoverydialog @close="recoverydialogcallback" :applyform="shenhe" :visible.sync="dialogfusuVisible">
+    </batchrecoverydialog>
 
     <el-dialog title="自定义搜索" :visible.sync="searchDialogVisible" width="1000px" top="5vh">
       <el-form ref="form" inline label-width="120px">
@@ -239,9 +258,9 @@
       <el-row :gutter="0">
         <el-col :span="5">
           <div class="searchDialogLeftStyle">
-            <el-tag v-for="tag in searchTemplates" :id="tag.Name" :key="tag.Name" closable class="reporttag reportselect"
-              :onclick="'clickmodeltypetag(' + tag.Name + ')'" style="display:block;text-align:center;color:white;"
-              @close="removeSearchTab(tag.Name)">
+            <el-tag v-for="tag in searchTemplates" :id="tag.Name" :key="tag.Name" closable
+              class="reporttag reportselect" :onclick="'clickmodeltypetag(' + tag.Name + ')'"
+              style="display:block;text-align:center;color:white;" @close="removeSearchTab(tag.Name)">
               <i class="el-icon-caret-right" v-if="tag.Name == currentSearchTemplateName"></i>
               {{tag.Name}}
             </el-tag>
@@ -258,54 +277,72 @@
               </el-row>
               <el-row :gutter="1">
                 <el-col :span="5">
-                  <el-select v-model="searchField" @change="changeSearchField()" placeholder="请选择" style="margin-left:5px;margin-right:5px;">
-                    <el-option v-for="item in searchcolumn" :key="item.field" :label="item.name" :value="item.filed"></el-option>
+                  <el-select v-model="searchField" @change="changeSearchField()" placeholder="请选择"
+                    style="margin-left:5px;margin-right:5px;">
+                    <el-option v-for="item in searchcolumn" :key="item.field" :label="item.name" :value="item.filed">
+                    </el-option>
                   </el-select>
                 </el-col>
                 <el-col :span="8">
-                  <el-input v-if="searchField == 'BarCode'" v-model="searchValue.BarCode" placeholder="请输入样本条码" style="margin-left:5px;display:inline-block;"></el-input>
-                  <el-input v-else-if="searchField == 'SampleCode'" v-model="searchValue.SampleCode" placeholder="请输入样本编码"></el-input>
-                  <el-input v-else-if="searchField == 'SourceName'" v-model="searchValue.SourceName" placeholder="请输入身份证号或姓名"></el-input>
-                  <el-input v-else-if="searchField == 'InnerCode'" v-model="searchValue.InnerCode" placeholder="请输入样本内码"></el-input>
+                  <el-input v-if="searchField == 'BarCode'" v-model="searchValue.BarCode" placeholder="请输入样本条码"
+                    style="margin-left:5px;display:inline-block;"></el-input>
+                  <el-input v-else-if="searchField == 'SampleCode'" v-model="searchValue.SampleCode"
+                    placeholder="请输入样本编码"></el-input>
+                  <el-input v-else-if="searchField == 'SourceName'" v-model="searchValue.SourceName"
+                    placeholder="请输入身份证号或姓名"></el-input>
+                  <el-input v-else-if="searchField == 'InnerCode'" v-model="searchValue.InnerCode"
+                    placeholder="请输入样本内码"></el-input>
                   <el-input v-else-if="searchField == 'Name'" v-model="searchValue.Name" placeholder="请输入名称"></el-input>
-                  <el-input v-else-if="searchField == 'CreateBy'" v-model="searchValue.CreateBy" placeholder="请输入录入人"></el-input>
-                  <el-input v-else-if="searchField == 'GroupName'" v-model="searchValue.GroupName" placeholder="请输入所属分组"></el-input>
-                  <el-date-picker v-else-if="searchField == 'ReceiveDate'" v-model="searchValue.CreateOn" type="daterange"
-                    range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width:100%"></el-date-picker>
-                  <el-cascader v-else-if="searchField == 'SamplingOrganName'" :options="zuzhitreelist" :props="sampinputtreeprops2"
+                  <el-input v-else-if="searchField == 'CreateBy'" v-model="searchValue.CreateBy" placeholder="请输入录入人">
+                  </el-input>
+                  <el-input v-else-if="searchField == 'GroupName'" v-model="searchValue.GroupName"
+                    placeholder="请输入所属分组"></el-input>
+                  <el-date-picker v-else-if="searchField == 'ReceiveDate'" v-model="searchValue.CreateOn"
+                    type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
+                    style="width:100%"></el-date-picker>
+                  <!-- <el-cascader v-else-if="searchField == 'SamplingOrganName'" :options="zuzhitreelist" :props="sampinputtreeprops2"
                     change-on-select :show-all-levels="false" v-model="searchValue.selectedzuzhi" @change="zuzhitreehandleChange2"
                     placeholder="请选择组织" style="width:100%">
-                  </el-cascader>
-                  <span v-else-if="searchField == 'SamplingSiteName'">
+                  </el-cascader> -->
+                  <!-- <span v-else-if="searchField == 'SamplingSiteName'">
                     <el-cascader :options="zuzhitreelist" :props="sampinputtreeprops" change-on-select :show-all-levels="false"
                       v-model="selectedzuzhi2" @change="zuzhitreehandleChange2" placeholder="请选择组织" style="width:50%">
                     </el-cascader>
                     <el-select v-model="searchValue.SamplingSite" clearable placeholder="请选择" style="width:45%;margin-left:5px;">
                       <el-option v-for="item in samplesitenames2" :key="item.Code" :label="item.Name" :value="item.Name"></el-option>
                     </el-select>
-                  </span>
+                  </span> -->
                   <el-select v-else-if="searchField == 'SampleTypeName'" v-model="searchValue.SampleType" clearable
                     placeholder="请选择" @change="selsampletypeChange" style="width:100%">
-                    <el-option v-for="item in sampletypes" :key="item.Id" :label="item.Name" :value="item.Name"></el-option>
+                    <el-option v-for="item in sampletypes" :key="item.Id" :label="item.Name" :value="item.Name">
+                    </el-option>
                   </el-select>
-                  <el-date-picker v-else-if="searchField == 'ValidityDate'" v-model="searchValue.Validity" type="daterange"
-                    range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width:100%">
+                  <el-date-picker v-else-if="searchField == 'ValidityDate'" v-model="searchValue.Validity"
+                    type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
+                    style="width:100%">
                   </el-date-picker>
-                  <el-input v-else-if="searchField == 'Capacity'" v-model="searchValue.Capacity" placeholder="请输入容量"></el-input>
-                  <el-input v-else-if="searchField == 'Location'" v-model="searchValue.Location" placeholder=" 请输入存储位置"></el-input>
-                  <el-input v-else v-model="searchValue.Extension" placeholder="" style="margin-left:5px;display:inline-block;"></el-input>
+                  <el-input v-else-if="searchField == 'Capacity'" v-model="searchValue.Capacity" placeholder="请输入容量">
+                  </el-input>
+                  <el-input v-else-if="searchField == 'Location'" v-model="searchValue.Location" placeholder=" 请输入存储位置">
+                  </el-input>
+                  <el-input v-else v-model="searchValue.Extension" placeholder=""
+                    style="margin-left:5px;display:inline-block;"></el-input>
                 </el-col>
                 <el-col :span="3">
                   <el-select v-model="orAnd" placeholder="请选择" style="margin-left:15px;">
-                    <el-option v-for="item in orAndData" :key="item.value" :label="item.name" :value="item.value"></el-option>
+                    <el-option v-for="item in orAndData" :key="item.value" :label="item.name" :value="item.value">
+                    </el-option>
                   </el-select>
                 </el-col>
                 <el-col :span="3">
-                  <el-button type="primary" size="middle" style="margin-left:5px;display:inline-block;" @click="addSearchField">添加</el-button>
+                  <el-button type="primary" size="middle" style="margin-left:5px;display:inline-block;"
+                    @click="addSearchField">添加</el-button>
                 </el-col>
                 <el-col :span="5">
-                  <el-button type="primary" size="middle" style="display:inline-block;" @click="saveAndSearchWithTemplate">查询</el-button>
-                  <el-button type="primary" size="middle" style="display:inline-block;" @click="saveSearchTemplate">保存</el-button>
+                  <el-button type="primary" size="middle" style="display:inline-block;"
+                    @click="saveAndSearchWithTemplate">查询</el-button>
+                  <el-button type="primary" size="middle" style="display:inline-block;" @click="saveSearchTemplate">保存
+                  </el-button>
                 </el-col>
               </el-row>
               <el-row style="margin-top:10px;">
@@ -331,7 +368,8 @@
         </el-col>
       </el-row>
     </el-dialog>
-    <uploadattachdialog @close="uploaddialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialoguploadVisible"></uploadattachdialog>
+    <uploadattachdialog @close="uploaddialogcallback" :sampleinfo="sampleinfodetail"
+      :visible.sync="dialoguploadVisible"></uploadattachdialog>
   </div>
 </template>
 <script>
@@ -387,9 +425,9 @@
         InnerCode: '', // 样本内码
         labelPosition: 'top',
         selectionraw: {}, // 点编辑时所选择的列的数据
-        publicsampletypedata: [], // 样本公共扩展
+        //  publicsampletypedata: [], // 样本公共扩展
         sampletypes: [], // 样本类型
-        publicsampletypes: [], // 公共拓展
+        //   publicsampletypes: [], // 公共拓展
         publicdatas: [], // 样本取用记录
         relationSamples: [], // 相关样本
         GroupName: '', //所属分组
@@ -397,9 +435,9 @@
         userextends: [], // 扩展字段
         specialelist: [], // 特殊扩展字段
         dialogPrintVisible: false, // 打印弹框是否显示
-        zuzhitreelist: [], // 组织器官
-        samplesitenames: [], // 取材部位
-        samplesitenames2: [], // 取材部位
+        // zuzhitreelist: [], // 组织器官
+        // samplesitenames: [], // 取材部位
+        //  samplesitenames2: [], // 取材部位
         Printscheme: '', // 打印选项
         printschemelist: [], // 打印列表
         sampinputtreeprops: {
@@ -493,14 +531,14 @@
           if (searchmodel.CreateOn && searchmodel.CreateOn.length === 2) { //录入日期
             this.CreateOn = [new Date(searchmodel.CreateOn[0]), new Date(searchmodel.CreateOn[1])]
           }
-          if (searchmodel.SamplingOrgan && searchmodel.SamplingOrgan !== '') { //组织器官
-            this.selectsigorg = searchmodel.SamplingOrgan
-            this.getparentcodebytopcode(searchmodel.SamplingOrgan)
-            // this.selectedzuzhi=searchmodel.SamplingOrgan
-          }
-          if (searchmodel.SamplingSite && searchmodel.SamplingSite !== '') { //取材部位
-            this.SamplingSite = searchmodel.SamplingSite
-          }
+          // if (searchmodel.SamplingOrgan && searchmodel.SamplingOrgan !== '') { //组织器官
+          //   this.selectsigorg = searchmodel.SamplingOrgan
+          //   this.getparentcodebytopcode(searchmodel.SamplingOrgan)
+          //   // this.selectedzuzhi=searchmodel.SamplingOrgan
+          // }
+          // if (searchmodel.SamplingSite && searchmodel.SamplingSite !== '') { //取材部位
+          //   this.SamplingSite = searchmodel.SamplingSite
+          // }
           if (searchmodel.SampleType && searchmodel.SampleType !== '') { //样本类型
             this.SampleType = searchmodel.SampleType
             this.searchsampletypeChange()
@@ -561,16 +599,6 @@
           name: '可用容量',
           show: true,
           kuoz: false
-        }, {
-          filed: 'SamplingOrganName',
-          name: '组织器官',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SamplingSiteName',
-          name: '取材部位',
-          show: true,
-          kuoz: false
         }, {
           filed: 'InnerCode',
           name: '样本内码',
@@ -645,7 +673,6 @@
           BarCode: this.BarCode,
           SampleCode: this.SampleCode,
           SampleType: this.SampleType,
-          SamplingSite: this.SamplingSite,
           Stnotevalue: this.Stnotevalue,
           STNoteField: this.STNoteField,
           Noteitemvalue: this.Noteitemvalue,
@@ -656,7 +683,6 @@
           Validity: this.Validity,
           CreateOn: this.CreateOn,
           InnerCode: this.InnerCode,
-          SamplingOrgan: this.selectsigorg,
           GroupName: _this.GroupName
         }
         if (this.CreateOn && this.CreateOn.length === 2) {
@@ -674,18 +700,14 @@
           params = Object.assign(params, params3)
         }
         store.set('samplestoredseach', params)
-        // request
         this.$axios.get('/sampleinput/list', {
             params
           })
           .then(res => {
-            // response
             _this.list = res.data.items
-            // toggle loading
             _this.currentItemCount = res.data.currentItemCount
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -727,80 +749,13 @@
           })
           .then(res => {
             _this.sampletypes = res.data.items
-          }).catch(() => {})
-        this.$axios.get('/sampleinput/getpublicsampletype', {
-            _currentPage: -1
-          })
-          .then(res => {
-            _this.publicsampletypes = res.data.items
-            // 扩展列增加到显示列中
-            let cachecols = store.get('sapminputshowcolumn')
-            if (!(cachecols && cachecols !== '')) {
-              for (let i = 0; i < _this.publicsampletypes.length; i++) {
-                _this.showcolumn.push({
-                  filed: _this.publicsampletypes[i].FieldName,
-                  name: _this.publicsampletypes[i].Name,
-                  show: true,
-                  kuoz: true
-                })
-              }
-            } else {
-              // 新增和修改
-              for (let i = 0; i < _this.publicsampletypes.length; i++) {
-                let matchindex = -1
-                for (let j = 0; j < _this.showcolumn.length; j++) {
-                  if (_this.showcolumn[j].filed === _this.publicsampletypes[i].FieldName && _this.showcolumn[j].kuoz) {
-                    matchindex = j
-                    break
-                  }
-                }
-                if (matchindex >= 0) {
-                  _this.showcolumn[matchindex] = {
-                    filed: _this.publicsampletypes[i].FieldName,
-                    name: _this.publicsampletypes[i].Name,
-                    show: _this.showcolumn[matchindex].show,
-                    kuoz: true,
-                    columnwidth: _this.showcolumn[matchindex].columnwidth
-                  }
-                } else {
-                  _this.showcolumn.push({
-                    filed: _this.publicsampletypes[i].FieldName,
-                    name: _this.publicsampletypes[i].Name,
-                    show: true,
-                    kuoz: true
-                  })
-                }
-              }
-              // 删除
-              let showcolumntemp = _this.showcolumn
-              _this.showcolumn = []
-              for (let j = 0; j < showcolumntemp.length; j++) {
-                if (!showcolumntemp[j].kuoz) {
-                  _this.showcolumn.push(showcolumntemp[j])
-                } else {
-                  for (let i = 0; i < _this.publicsampletypes.length; i++) {
-                    if (showcolumntemp[j].filed === _this.publicsampletypes[i].FieldName) {
-                      _this.showcolumn.push(showcolumntemp[j])
-                      break
-                    }
-                  }
-                }
-              }
-            }
-            if (store.get('samplestoredseach').searchWithTemplate && store.get('samplestoredseach').searchWithTemplate !==
-              '') { //自定义查询
+            if (store.get('samplestoredseach').searchWithTemplate && store.get('samplestoredseach')
+              .searchWithTemplate !== '') { //自定义查询
               this.handleSearchCommand(store.get('samplestoredseach').searchWithTemplate)
             } else {
-              // initial data
               this.initData()
             }
           }).catch(() => {})
-        this.$axios.get('/sampleinput/getoperations', {
-            _currentPage: -1
-          })
-          .then(res => {
-            _this.zuzhitreelist = window.toolfun_gettreejson(res.data.items, 'id', 'pId', 'id,name,code')
-          }).catch(() => {})
       },
       seachdata() {
         if (this.selectedzuzhi.length > 0) {
@@ -819,8 +774,8 @@
         if (_this.SampleType !== '') {
           _this.$axios.get('/sampletype/gettykzzd?SampleType=' + _this.SampleType, {})
             .then(res => {
-              // response
               _this.STNoteField = []
+              console.log("11111111111111", _this.typetykzlist)
               _this.typetykzlist = res.data
             })
         }
@@ -832,7 +787,6 @@
         if (_this.SampleType !== '') {
           _this.$axios.get('/sampletype/gettykzzd?SampleType=' + _this.SampleType, {})
             .then(res => {
-              // response
               _this.typetykzlist = res.data
             })
         }
@@ -945,35 +899,35 @@
           }
         }
       },
-      zuzhitreehandleChange(value) {
-        if (this.selectedzuzhi.length > 0) {
-          this.selectsigorg = this.selectedzuzhi[this.selectedzuzhi.length - 1] + ''
-          this.$axios.get('/samplesite/getsitebyfcode?code=' + this.selectsigorg, {})
-            .then(res => {
-              this.SamplingSite = ''
-              this.samplesitenames = res.data
-            }).catch(() => {})
-        }
-      },
-      searchzuzhitreehandleChange(value) {
-        if (this.selectedzuzhi.length > 0) {
-          this.selectsigorg = this.selectedzuzhi[this.selectedzuzhi.length - 1] + ''
-          this.$axios.get('/samplesite/getsitebyfcode?code=' + this.selectsigorg, {})
-            .then(res => {
-              this.samplesitenames = res.data
-            }).catch(() => {})
-        }
-      },
-      zuzhitreehandleChange2(value) {
-        if (this.selectedzuzhi2.length > 0) {
-          let selectsigorg = this.selectedzuzhi2[this.selectedzuzhi2.length - 1] + ''
-          this.$axios.get('/samplesite/getsitebyfcode?code=' + selectsigorg, {})
-            .then(res => {
-              this.searchValue.SamplingSite = ''
-              this.samplesitenames2 = res.data
-            }).catch(() => {})
-        }
-      },
+      // zuzhitreehandleChange(value) {
+      //   if (this.selectedzuzhi.length > 0) {
+      //     this.selectsigorg = this.selectedzuzhi[this.selectedzuzhi.length - 1] + ''
+      //     this.$axios.get('/samplesite/getsitebyfcode?code=' + this.selectsigorg, {})
+      //       .then(res => {
+      //         this.SamplingSite = ''
+      //         this.samplesitenames = res.data
+      //       }).catch(() => {})
+      //   }
+      // },
+      // searchzuzhitreehandleChange(value) {
+      //   if (this.selectedzuzhi.length > 0) {
+      //     this.selectsigorg = this.selectedzuzhi[this.selectedzuzhi.length - 1] + ''
+      //     this.$axios.get('/samplesite/getsitebyfcode?code=' + this.selectsigorg, {})
+      //       .then(res => {
+      //         this.samplesitenames = res.data
+      //       }).catch(() => {})
+      //   }
+      // },
+      // zuzhitreehandleChange2(value) {
+      //   if (this.selectedzuzhi2.length > 0) {
+      //     let selectsigorg = this.selectedzuzhi2[this.selectedzuzhi2.length - 1] + ''
+      //     this.$axios.get('/samplesite/getsitebyfcode?code=' + selectsigorg, {})
+      //       .then(res => {
+      //         this.searchValue.SamplingSite = ''
+      //         this.samplesitenames2 = res.data
+      //       }).catch(() => {})
+      //   }
+      // },
       chooseType(command) {
         let _this = this
         if (_this.multipleSelection.length < 1) {
@@ -1041,7 +995,7 @@
           BarCode: this.BarCode,
           SampleCode: this.SampleCode,
           SampleType: this.SampleType,
-          SamplingSite: this.SamplingSite,
+          // SamplingSite: this.SamplingSite,
           Stnotevalue: this.Stnotevalue,
           STNoteField: this.STNoteField,
           Noteitemvalue: this.Noteitemvalue,
@@ -1052,7 +1006,7 @@
           Validity: this.Validity,
           InnerCode: this.InnerCode,
           GroupName: this.GroupName,
-          SamplingOrgan: this.selectsigorg,
+          //  SamplingOrgan: this.selectsigorg,
           showcolumnarr: showcolumnarr + '',
           showcolumnnamearr: showcolumnnamearr + '',
           ExportFlag: 'stored'
@@ -1172,8 +1126,9 @@
           let errorMsg = ''
           let count = 0
           for (var i = 0; i < _this.multipleSelection.length; i++) {
-            _this.$axios.delete('sampleinput/' + _this.multipleSelection[i].Id + '?sampletype=' + _this.multipleSelection[
-                i].SampleType, null)
+            _this.$axios.delete('sampleinput/' + _this.multipleSelection[i].Id + '?sampletype=' + _this
+                .multipleSelection[
+                  i].SampleType, null)
               .then(res => {
                 // response
                 if (res.data.code === 0) {

+ 3 - 210
src/dashoo.cn/frontend_animal/src/pages/samples/waitingstore/index.vue

@@ -124,11 +124,6 @@
                 <el-option v-for="item in sampletypes" :label="item.Name" :value="item.Id" :key="item.Id"></el-option>
               </el-select>
             </el-form-item>
-            <!-- <el-form-item label="公共扩展">
-              <el-select v-model="Noteitem" multiple placeholder="请选择" size="mini" style="width:100%">
-                <el-option v-for="item in publicsampletypes" :label="item.Name" :value="item.FieldName" :key="item.FieldName"></el-option>
-              </el-select>
-            </el-form-item> -->
           </el-col>
           <el-col :span="8">
             <el-form-item label="样本编码">
@@ -137,18 +132,11 @@
             <el-form-item label="名称">
               <el-input v-model="Name" placeholder="请输入名称" size="mini" style="width:100%"></el-input>
             </el-form-item>
-            <el-form-item label="组织器官">
-              <el-cascader :options="zuzhitreelist" :props="sampinputtreeprops" change-on-select :show-all-levels="false"
-                v-model="selectedzuzhi" @change="zuzhitreehandleChange" placeholder="请选择组织" size="mini" style="width:100%"></el-cascader>
-            </el-form-item>
             <el-form-item label="特有扩展">
               <el-select v-model="STNoteField" multiple placeholder="请选择" size="mini" style="width:100%">
                 <el-option v-for="item in typetykzlist" :label="item.Name" :value="item.FieldName" :key="item.FieldName"></el-option>
               </el-select>
-            </el-form-item>
-            <!-- <el-form-item label="公共检索">
-              <el-input v-model="Noteitemvalue" placeholder="请输入检索内容" size="mini" style="width:100%"></el-input>
-            </el-form-item> -->
+            </el-form-item> 
           </el-col>
           <el-col :span="8">
             <el-form-item label="样本来源">
@@ -157,11 +145,6 @@
             <el-form-item label="录入人">
               <el-input v-model="CreateBy" placeholder="请输入录入人" size="mini" style="width:100%"></el-input>
             </el-form-item>
-            <el-form-item label="取材部位">
-              <el-select v-model="SamplingSite" clearable placeholder="请选择" size="mini" style="width:100%">
-                <el-option v-for="item in samplesitenames" :label="item.Name" :value="item.Code" :key="item.Code"></el-option>
-              </el-select>
-            </el-form-item>
             <el-form-item label="特有检索">
               <el-input v-model="Stnotevalue" placeholder="输入检索内容" size="mini" style="width:100%"></el-input>
             </el-form-item>
@@ -243,18 +226,7 @@
                   <el-input v-else-if="searchField == 'GroupName'" v-model="searchValue.GroupName" placeholder="请输入所属分组"></el-input>
                   <el-date-picker v-else-if="searchField == 'ReceiveDate'" v-model="searchValue.CreateOn" type="daterange"
                     range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width:100%"></el-date-picker>
-                  <el-cascader v-else-if="searchField == 'SamplingOrganName'" :options="zuzhitreelist" :props="sampinputtreeprops2"
-                    change-on-select :show-all-levels="false" v-model="searchValue.selectedzuzhi" @change="zuzhitreehandleChange2"
-                    placeholder="请选择组织" style="width:100%">
-                  </el-cascader>
-                  <span v-else-if="searchField == 'SamplingSiteName'">
-                    <el-cascader :options="zuzhitreelist" :props="sampinputtreeprops" change-on-select :show-all-levels="false"
-                      v-model="selectedzuzhi2" @change="zuzhitreehandleChange2" placeholder="请选择组织" style="width:50%">
-                    </el-cascader>
-                    <el-select v-model="searchValue.SamplingSite" clearable placeholder="请选择" style="width:45%;margin-left:5px;">
-                      <el-option v-for="item in samplesitenames2" :key="item.Code" :label="item.Name" :value="item.Name"></el-option>
-                    </el-select>
-                  </span>
+                 
                   <el-select v-else-if="searchField == 'SampleTypeName'" v-model="searchValue.SampleType" clearable
                     placeholder="请选择" @change="selsampletypeChange" style="width:100%">
                     <el-option v-for="item in sampletypes" :key="item.Id" :label="item.Name" :value="item.Name"></el-option>
@@ -329,12 +301,8 @@
         BarCode: '', // 样本条码
         SampleCode: '', // 样本编码
         SampleType: '', // 样本类型
-        SamplingSite: '', // 取材部位
         Stnotevalue: '', // 特有扩展检索值
         STNoteField: [], // 特有扩展名称
-        Noteitemvalue: '', // 公共扩展检索值
-        Noteitem: [], // 公共扩展名称
-        selectsigorg: '', // 组织器官
         CreateBy: '', // 录入人
         CreateOn: [], // 录入时期
         GroupName: '', //所属分组
@@ -343,19 +311,8 @@
         InnerCode: '', // 样本内码
         dialogFormVisible: false, // 添加弹框是否显示
         showquerydiv: false,
-        publicsampletypedata: [], // 样本公共扩展
         sampletypes: [], // 样本类型
-        zuzhitreelist: [], // 组织器官
-        samplesitenames: [], // 取材部位
-        publicsampletypes: [], // 公共拓展
-        sampinputtreeprops: {
-          value: 'code',
-          label: 'name',
-          children: 'children'
-        },
-        selectedzuzhi: [],
         // 新增
-        organlist: [],
         typetykzlist: [], // 特有扩展
         multipleSelection: [], //多选框
         showcolumn: [], // 显示列
@@ -375,9 +332,6 @@
           InnerCode: '',
           Name: '',
           CreateBy: '',
-          CreateOn: [],
-          selectedzuzhi: [],
-          SamplingSite: '',
           SampleType: '',
           Validity: [],
           Capacity: '',
@@ -385,13 +339,6 @@
           Extension: '',
           GroupName: '', //所属分组
         },
-        sampinputtreeprops2: {
-          value: 'name',
-          label: 'name',
-          children: 'children'
-        },
-        selectedzuzhi2: [],
-        samplesitenames2: [], // 取材部位
         orAnd: "and",
         orAndData: [{
             name: "并且",
@@ -437,14 +384,6 @@
           if (searchmodel.CreateOn && searchmodel.CreateOn.length === 2) { //录入日期
             this.CreateOn = [new Date(searchmodel.CreateOn[0]), new Date(searchmodel.CreateOn[1])]
           }
-          if (searchmodel.SamplingOrgan && searchmodel.SamplingOrgan !== '') { //组织器官
-            this.selectsigorg = searchmodel.SamplingOrgan
-            this.getparentcodebytopcode(searchmodel.SamplingOrgan)
-            // this.selectedzuzhi=searchmodel.SamplingOrgan
-          }
-          if (searchmodel.SamplingSite && searchmodel.SamplingSite !== '') { //取材部位
-            this.SamplingSite = searchmodel.SamplingSite
-          }
           if (searchmodel.SampleType && searchmodel.SampleType !== '') { //样本类型
             this.SampleType = searchmodel.SampleType
             this.searchsampletypeChange()
@@ -458,12 +397,6 @@
           if (searchmodel.Validity && searchmodel.Validity.length === 2) { //有效日期
             this.Validity = [new Date(searchmodel.Validity[0]), new Date(searchmodel.Validity[1])]
           }
-          if (searchmodel.Noteitem && searchmodel.Noteitem.length > 0) { //公有扩展
-            this.Noteitem = searchmodel.Noteitem
-          }
-          if (searchmodel.Noteitemvalue && searchmodel.Noteitemvalue !== '') { //公共检索内容
-            this.Noteitemvalue = searchmodel.Noteitemvalue
-          }
           if (searchmodel.GroupName && searchmodel.GroupName !== '') { //所属分组
             this.GroupName = searchmodel.GroupName
           }
@@ -510,16 +443,6 @@
           name: '可用容量',
           show: true,
           kuoz: false
-        }, {
-          filed: 'SamplingOrganName',
-          name: '组织器官',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SamplingSiteName',
-          name: '取材部位',
-          show: true,
-          kuoz: false
         }, {
           filed: 'InnerCode',
           name: '样本内码',
@@ -548,7 +471,6 @@
         }]
       }
       this.getextends()
-      this.getOrgan()
       this.checkedshowall()
       this.getAllSearchTab()
     },
@@ -568,7 +490,6 @@
           BarCode: this.BarCode,
           SampleCode: this.SampleCode,
           SampleType: this.SampleType,
-          SamplingSite: this.SamplingSite,
           Stnotevalue: this.Stnotevalue,
           STNoteField: this.STNoteField,
           Noteitemvalue: this.Noteitemvalue,
@@ -579,7 +500,6 @@
           Validity: this.Validity,
           CreateOn: this.CreateOn,
           InnerCode: this.InnerCode,
-          SamplingOrgan: this.selectsigorg,
           GroupName: _this.GroupName
         }
         if (this.CreateOn && this.CreateOn.length === 2) {
@@ -595,7 +515,6 @@
             params
           })
           .then(res => {
-            // response
             _this.list = res.data.items
             _this.currentItemCount = res.data.currentItemCount
           })
@@ -618,16 +537,6 @@
             _this.searchzuzhitreehandleChange()
           })
       },
-      getOrgan() {
-        if (this.organlist.length === 0) {
-          let _this = this
-          _this.$axios.get('/shelfset/getorgan', {})
-            .then(res => {
-              // response
-              _this.organlist = res.data.items
-            })
-        }
-      },
       getextends() {
         let _this = this
         this.$axios.get('/sampleinput/getsampletype', {
@@ -635,85 +544,15 @@
           })
           .then(res => {
             _this.sampletypes = res.data.items
-          }).catch(() => {})
-        this.$axios.get('/sampleinput/getpublicsampletype', {
-            _currentPage: -1
-          })
-          .then(res => {
-            _this.publicsampletypes = res.data.items
-            // 扩展列增加到显示列中
-            if (!(this.cachecols && this.cachecols !== '')) {
-              for (let i = 0; i < _this.publicsampletypes.length; i++) {
-                _this.showcolumn.push({
-                  filed: _this.publicsampletypes[i].FieldName,
-                  name: _this.publicsampletypes[i].Name,
-                  show: true,
-                  kuoz: true
-                })
-              }
-            } else {
-              // 新增和修改
-              for (let i = 0; i < _this.publicsampletypes.length; i++) {
-                let matchindex = -1
-                for (let j = 0; j < _this.showcolumn.length; j++) {
-                  if (_this.showcolumn[j].filed === _this.publicsampletypes[i].FieldName && _this.showcolumn[j].kuoz) {
-                    matchindex = j
-                    break
-                  }
-                }
-                if (matchindex >= 0) {
-                  _this.showcolumn[matchindex] = {
-                    filed: _this.publicsampletypes[i].FieldName,
-                    name: _this.publicsampletypes[i].Name,
-                    show: _this.showcolumn[matchindex].show,
-                    kuoz: true,
-                    columnwidth: _this.showcolumn[matchindex].columnwidth
-                  }
-                } else {
-                  _this.showcolumn.push({
-                    filed: _this.publicsampletypes[i].FieldName,
-                    name: _this.publicsampletypes[i].Name,
-                    show: true,
-                    kuoz: true
-                  })
-                }
-              }
-              // 删除
-              let showcolumntemp = _this.showcolumn
-              _this.showcolumn = []
-              for (let j = 0; j < showcolumntemp.length; j++) {
-                if (!showcolumntemp[j].kuoz) {
-                  _this.showcolumn.push(showcolumntemp[j])
-                } else {
-                  for (let i = 0; i < _this.publicsampletypes.length; i++) {
-                    if (showcolumntemp[j].filed === _this.publicsampletypes[i].FieldName) {
-                      _this.showcolumn.push(showcolumntemp[j])
-                      break
-                    }
-                  }
-                }
-              }
-            }
-            if (store.get('samplewaitstoreseach').searchWithTemplate && store.get('samplewaitstoreseach').searchWithTemplate !==
+             if (store.get('samplewaitstoreseach').searchWithTemplate && store.get('samplewaitstoreseach').searchWithTemplate !==
               '') { //自定义查询
               this.handleSearchCommand(store.get('samplewaitstoreseach').searchWithTemplate)
             } else {
-              // initial data
               this.initData()
             }
           }).catch(() => {})
-        this.$axios.get('/sampleinput/getoperations', {
-            _currentPage: -1
-          })
-          .then(res => {
-            _this.zuzhitreelist = window.toolfun_gettreejson(res.data.items, 'id', 'pId', 'id,name,code')
-          }).catch(() => {})
       },
       seachdata() {
-        // selectedzuzhi
-        if (this.selectedzuzhi.length > 0) {
-          this.selectsigorg = this.selectedzuzhi[this.selectedzuzhi.length - 1] + ''
-        }
         this.currentPage = 1
         this.initData()
       },
@@ -723,7 +562,6 @@
         if (_this.SampleType !== '') {
           _this.$axios.get('/sampletype/gettykzzd?SampleType=' + _this.SampleType, {})
             .then(res => {
-              // response
               _this.STNoteField = []
               _this.typetykzlist = res.data
             })
@@ -736,7 +574,6 @@
         if (_this.SampleType !== '') {
           _this.$axios.get('/sampletype/gettykzzd?SampleType=' + _this.SampleType, {})
             .then(res => {
-              // response
               _this.typetykzlist = res.data
             })
         }
@@ -857,20 +694,9 @@
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
-      zuzhitreehandleChange2(value) {
-        if (this.selectedzuzhi2.length > 0) {
-          let selectsigorg = this.selectedzuzhi2[this.selectedzuzhi2.length - 1] + ''
-          this.$axios.get('/samplesite/getsitebyfcode?code=' + selectsigorg, {})
-            .then(res => {
-              this.searchValue.SamplingSite = ''
-              this.samplesitenames2 = res.data
-            }).catch(() => {})
-        }
-      },
       //添加自定义搜索详情
       addSearchField() {
         let searchValue
@@ -955,7 +781,6 @@
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -982,21 +807,17 @@
 
         }
         let _this = this
-        // request
         this.$axios.get('/samplesunsave/search?name=' + name, {
             params
           })
           .then(res => {
             console.log(res.data.items)
-            // response
             if (res.data.items) {
               _this.list = res.data.items
-              // toggle loading
               _this.currentItemCount = res.data.currentItemCount
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -1039,7 +860,6 @@
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -1113,7 +933,6 @@
             _this.initData()
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -1126,9 +945,6 @@
         this.Name = ''
         this.CreateBy = ''
         this.CreateOn = []
-        this.selectsigorg = ''
-        this.selectedzuzhi = []
-        this.SamplingSite = ''
         this.SampleType = ''
         this.STNoteField = ''
         this.Stnotevalue = ''
@@ -1139,26 +955,6 @@
         this.GroupName = ''
         this.initData()
       },
-      zuzhitreehandleChange(value) {
-        if (this.selectedzuzhi.length > 0) {
-          this.selectsigorg = this.selectedzuzhi[this.selectedzuzhi.length - 1] + ''
-          this.$axios.get('/samplesite/getsitebyfcode?code=' + this.selectsigorg, {})
-            .then(res => {
-              this.SamplingSite = ''
-              this.samplesitenames = res.data
-            }).catch(() => {})
-        }
-      },
-      //返回查询条件执行
-      searchzuzhitreehandleChange(value) {
-        if (this.selectedzuzhi.length > 0) {
-          this.selectsigorg = this.selectedzuzhi[this.selectedzuzhi.length - 1] + ''
-          this.$axios.get('/samplesite/getsitebyfcode?code=' + this.selectsigorg, {})
-            .then(res => {
-              this.samplesitenames = res.data
-            }).catch(() => {})
-        }
-      },
       //导出样本
       handleExportsamplesCommand(command) {
         let _this = this
@@ -1208,7 +1004,6 @@
           BarCode: this.BarCode,
           SampleCode: this.SampleCode,
           SampleType: this.SampleType,
-          SamplingSite: this.SamplingSite,
           Stnotevalue: this.Stnotevalue,
           STNoteField: this.STNoteField,
           Noteitemvalue: this.Noteitemvalue,
@@ -1219,7 +1014,6 @@
           Validity: this.Validity,
           InnerCode: this.InnerCode,
           GroupName: this.GroupName,
-          SamplingOrgan: this.selectsigorg,
           showcolumnarr: showcolumnarr + '',
           showcolumnnamearr: showcolumnnamearr + '',
           ExportFlag: 'waitingstore'
@@ -1273,7 +1067,6 @@
             window.location = 'http://' + res.data
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },

+ 2 - 2
src/dashoo.cn/frontend_web/src/assets/styles/base/variables.scss

@@ -60,8 +60,8 @@ $main-light:                #3e4c59;
 $main-dark:                 #283643;
 // $main:                      #2b3b49;
 // $main-darker:               #24313c;
-$main:                      #004EA2;
-$main-darker:               #002140;
+$main:                      #0072BC; //  #004EA2;
+$main-darker:               #0072BC;//#002140;
 
 // - Brand color
 $primary:                   #20A0FF;

+ 10 - 10
src/dashoo.cn/frontend_web/src/components/Headbar.vue

@@ -1,22 +1,22 @@
 <template>
-  <header class="header" style="background-color:#004EA2;">
+  <header class="header" style="background-color:#2E528A;">
     <div v-if="!isMenuHidden" class="brand"
-      style="background-color:#004EA2;padding-top:7px;padding-left:20px;width:180px;">
+      style="background-color:#2E528A;padding-top:7px;padding-left:20px;width:180px;">
       <img src="../assets/img/logo_white.png" style="height:35px; margin-left: 20px" />
     </div>
 
-    <div v-if="isMenuHidden" class="brand" style="background-color:#004EA2;padding-top:7px;width:56px;">
+    <div v-if="isMenuHidden" class="brand" style="background-color:#2E528A;padding-top:7px;width:56px;">
       <img src="../assets/img/title.png" style="height:35px;" />
     </div>
 
-    <nav class="toolbar" style="margin-top: 3px;background-color:#004EA2;">
+    <nav class="toolbar" style="margin-top: 3px;background-color:#2E528A;">
       <img src="../assets/img/title_biobank.png" style="height:35px;padding-top:5px;" />
       <div style="margin: 10px 0px 0px 20px;"></div>
       <el-tag type="text" size="mini" style="margin-top:12px;background-color:#F0F1F3">{{department}}</el-tag>
 
-      <ul class="list" style="background: #004EA2;">
-        <li class="item" style="background: #004EA2">
-          <a style="font-size: 90%;background: #004EA2;color: #F0F1F3; font-weight: bold" href="#" v-if="authUser">
+      <ul class="list" style="background: #2E528A;">
+        <li class="item" style="background: #2E528A">
+          <a style="font-size: 90%;background: #2E528A;color: #F0F1F3; font-weight: bold" href="#" v-if="authUser">
             <span style="margin-right: 20px;">
               <el-button type="text" icon="icon icon-shrink" v-if="fullscreen" @click="handleFullScreen"></el-button>
               <el-button type="text" icon="icon icon-enlarge" v-if="!fullscreen" @click="handleFullScreen"></el-button>
@@ -24,10 +24,10 @@
             您好, {{ authUser.Profile.Realname }}
             <img v-if="authUser.Profile.Photo" style="background: #002140; border: hidden"
               :src="'http://'+authUser.Profile.Host+authUser.Profile.Photo" class="avatar">
-            <img v-else class="avatar" style="background: white; border: hidden" src="~/assets/img/avatar.svg"
+            <img v-else class="avatar" style="border: hidden" src="~/assets/img/avatar.svg"
               :alt="authUser.name">
           </a>
-          <ul class="list" style="text-align: center;background: #004EA2;">
+          <ul class="list" style="text-align: center;background: #2E528A;">
             <li class="item">
               <router-link to="/system/usersetting" style="color: #F0F1F3; font-weight: bold">账户设置</router-link>
             </li>
@@ -61,7 +61,7 @@
 
         fullscreen: false,
         sampcode: '',
-        department: '专业版'
+        department: '标准版'
       }
     },
     created() {

+ 25 - 26
src/dashoo.cn/frontend_web/src/components/sidebar.vue

@@ -5,12 +5,11 @@
         :collapse="isCollapse"
         :router="true"
         default-active="/"
-        background-color="#004EA2"
+        background-color="#0072BC"
         text-color="#fff"
         active-text-color="#312520"
-        :collapse-transition="false"
-      
-      >
+        :collapse-transition="false">
+        
         <template v-for="(item, index) in menus">
           <el-menu-item v-if="!item.children" :index="item.url" :key="item.id">
             <i :class="'icon-before icon-'+item.icon" style="padding-top: 5px; margin-right: 10px; color: #fff"></i>
@@ -22,18 +21,18 @@
               <i :class="'icon-before icon-'+item.icon" style="padding-top: 5px; margin-right: 10px; color: #fff"></i>
               <span slot="title">{{ item.name }}</span>
             </template>
-            <template v-if="item.children" v-for="sub in item.children" >
+            <template v-if="item.children" v-for="sub in item.children">
               <el-menu-item v-if="!sub.children"  :index="sub.url"  :key="sub.id">
-                <!--<i :class="'icon-before icon-'+sub.icon" style="padding-top: 5px; margin-right: 10px;"></i>-->
-                <span slot="title">{{ sub.name }}</span>
+                <i :class="'icon-before icon-'+sub.icon" style="padding-top: 5px; margin-right: 10px;"></i>
+                <span slot="title" style="color: #312520">{{ sub.name }}</span>
               </el-menu-item>
               <el-submenu v-if="sub.children" :index="sub.name" :key="sub.id">
                 <template slot="title">
-                  <i :class="'icon-before icon-'+sub.icon" style="padding-top: 5px; margin-right: 10px; color: #fff"></i>
-                  <span slot="title">{{ sub.name }}</span>
+                  <i :class="'icon-before icon-'+sub.icon" style="padding-top: 5px; margin-right: 10px; color: #312520;"></i>
+                  <span slot="title" style="color: #312520">{{ sub.name }}</span>
                 </template>
                 <el-menu-item v-for="sub2 in sub.children" :index="sub2.url" :key="sub2.id">
-                  <span slot="title">{{ sub2.name }}</span>
+                  <span slot="title" style="color: #312520">{{ sub2.name }}</span>
                 </el-menu-item>
               </el-submenu>
             </template>
@@ -188,11 +187,11 @@ export default class Sidebar extends Vue {
   $menuActiveText:#409EFF;
   $subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951*/
 
-  $menuBg:#004EA2;
-  $menuHover:#004EA2;
+  $menuBg:#F7F7F7;
+  $menuHover:#2CA6E0;
 
-  $subMenuBg:#004EA2;
-  $subMenuHover:#004EA2;
+  $subMenuBg:#F7F7F7;
+  $subMenuHover:#2CA6E0;
 
   $sideBarWidth: 200px;
 
@@ -274,9 +273,9 @@ export default class Sidebar extends Vue {
       &:hover {
         background-color: $subMenuHover !important;
       }
-      // &:focus {
-      //   background-color: #F0F1F3 !important;
-      // }
+      &:focus {
+        background-color: #2CA6E0 !important;
+      }
     }
   }
 
@@ -320,9 +319,9 @@ export default class Sidebar extends Vue {
           display: none;
         }
       }
-      // &:focus {
-      //   background-color: #F0F1F3 !important;
-      // }
+      &:focus {
+        background-color: #2CA6E0 !important;
+      }
     }
 
     .el-menu--collapse {
@@ -336,9 +335,9 @@ export default class Sidebar extends Vue {
             display: inline-block;
           }
         }
-      //&:focus {
-      //   background-color: #F0F1F3 !important;
-      // }
+      &:focus {
+        background-color: #2CA6E0 !important;
+      }
       }
     }
   }
@@ -390,9 +389,9 @@ export default class Sidebar extends Vue {
       &:hover {
         background-color: $menuHover !important;
       }
-      // &:focus {
-      //   background-color: #F0F1F3 !important;
-      // }
+      &:focus {
+        background-color: #2CA6E0 !important;
+      }
     }
 
     // the scroll bar appears when the subMenu is too long

+ 0 - 1
src/dashoo.cn/frontend_web/src/pages/biobank/book/_opera/operation.vue

@@ -621,7 +621,6 @@
         let _this = this
         _this.$axios.put('/samplesbook/auditorbook/' + _this.ServiceId, _this.mainForm)
           .then(res => {
-            // response
             if (res.data.code === 0) {
               _this.$message({
                 type: 'success',

+ 90 - 92
src/dashoo.cn/frontend_web/src/pages/equipment/_opera/manage_new.vue

@@ -24,12 +24,12 @@
         </el-breadcrumb>
 
         <span style="float: right;">
-          <el-button size="mini" type="primary" style="margin-left: 8px" v-if="Apply_flag==false" @click="SaveApply">保存</el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px" v-if="Apply_flag==false" @click="SaveApply">保存
+          </el-button>
           <el-button size="mini" type="primary" style="margin-left: 8px" @click="exportVisible = true">导入</el-button>
-          <el-button size="mini" type="primary" style="margin-left: 8px"
-            @click="showBoxTemplate()">下载冻存盒导入模板</el-button>
-          <el-button size="mini" type="primary" style="margin-left: 8px"
-            @click="showEquipemplate()">下载设备模板</el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px" @click="showBoxTemplate()">下载冻存盒导入模板
+          </el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px" @click="showEquipemplate()">下载设备模板</el-button>
           <el-button size="mini" type="primary" style="margin-left: 8px" @click="refreshcbc">
             刷新容量状态</el-button>
           <el-button size="mini" type="primary" style="margin-left: 8px" @click="goback">返回
@@ -37,8 +37,8 @@
         </span>
       </div>
       <el-alert v-if="batchitem == '1'"
-          :title="'支持批量存储,多个样本存储时,系统自动根据所选位置为起始位置依次进行存储!本次将批量添加' + batchstorages.length + '个样本'" type="warning" center
-          show-icon style="margin-bottom:5px;min-width: 1150px"></el-alert>
+        :title="'支持批量存储,多个样本存储时,系统自动根据所选位置为起始位置依次进行存储!本次将批量添加' + batchstorages.length + '个样本'" type="warning" center
+        show-icon style="margin-bottom:5px;min-width: 1150px"></el-alert>
 
       <div style="text-align:center;margin-top:-10px;margin-bottom:3px">
         <el-row>
@@ -198,6 +198,12 @@
             <div slot="header">
               <i class="icon icon-file-text"> </i> 样本管理
               <span style="float: right;">
+                <router-link
+                  :to="'/samples/stored/'+ sampleinfoid + '/detailed?pname=samples-stored&size=10&currentPage=1'">
+                  <el-button type="primary" class="el-button--mini" style="margin-right: 10px"
+                    v-if="sampleForm.type_flag === 'edit' && sampleinfoid > '0'">详情
+                  </el-button>
+                </router-link>
                 <el-button @click="showDialog" type="primary" class="el-button--mini"
                   v-if="sampleForm.type_flag === 'edit'">编辑</el-button>
                 <el-button @click="dialogfusuVisible=true" type="primary" class="el-button--mini"
@@ -220,52 +226,46 @@
                 <el-aside width="100px">
                   <img :src="imgSrc" class="sampleTypeimg">
                 </el-aside>
-                <el-main style="margin-left:45px; margin-top: -15px">
+                <el-main style="margin-left:45px; margin-top: -35px">
                   <h1>样本类型 : {{ sampleForm.SampleTypeName }}</h1>
-                  <el-row style="margin-top:-10px">
-                    <el-col :span="12">
-                      <h3>样本条码 : {{ sampleForm.BarCode }}</h3>
-                    </el-col>
-                    <el-col :span="12">
-                      <h3>位置编码 : {{ checkPosition }} </h3>
-                    </el-col>
-                  </el-row>
+                  <h1>样本条码 : {{ sampleForm.BarCode }}</h1>
+                  <h1>位置编码 : {{ checkPosition }}</h1>
                 </el-main>
               </el-container>
               <div class="sampleInfo">
                 <el-row style="margin-left:25px;margin-top:10px">
                   <el-col :span="12">
-                    <label>名称 : {{ sampleForm.Name }} </label>
+                    <label><strong>名称 :</strong> {{ sampleForm.Name }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>样本来源 : {{ sampleForm.SourceName }} </label>
+                    <label><strong>样本来源 :</strong> {{ sampleForm.SourceName }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>样本内码 : {{ sampleForm.InnerCode }} </label>
+                    <label><strong>样本内码 :</strong> {{ sampleForm.InnerCode }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>样本条码 : {{ sampleForm.SampleCode }} </label>
+                    <label><strong>样本条码 :</strong> {{ sampleForm.SampleCode }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>可用容量 : {{ sampleForm.Capacitystr }} {{ sampleForm.Unit }} </label>
+                    <label><strong>可用容量 :</strong> {{ sampleForm.Capacitystr }} {{ sampleForm.Unit }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>录入人 : {{ sampleForm.CreateBy }} </label>
+                    <label><strong>录入人 :</strong> {{ sampleForm.CreateBy }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>接收日期 : {{ jstimehandle(ReceiveDate) }} </label>
+                    <label><strong>接收日期 :</strong> {{ jstimehandle(ReceiveDate) }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>有效日期 : {{ jstimehandle(ValidityDate) }} </label>
+                    <label><strong>有效日期 :</strong> {{ jstimehandle(ValidityDate) }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>所属分组 : {{ groupname }} </label>
+                    <label><strong>所属分组 :</strong> {{ groupname }} </label>
                   </el-col>
                   <el-col :span="24">
-                    <label>备注信息 : {{ sampleForm.Remark }} </label>
+                    <label><strong>备注信息 :</strong> {{ sampleForm.Remark }} </label>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="附件上传:">
+                    <el-form-item label="附件上传:" style="font-weight:bolder">
                       <el-upload style="margin-top: 10px;" action="" ref="refuploadattach" multiple
                         :http-request="uploadrequest" class="attach-uploader" :show-file-list="true"
                         :before-upload="beforeAvatarUpload">
@@ -274,7 +274,7 @@
                     </el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <label>附件说明 : {{ sampleForm.uploadedremark }} </label>
+                    <label><strong>附件说明 :</strong> {{ sampleForm.uploadedremark }} </label>
                     <el-row>
                       <el-col :span="6" v-for="item in achmentlist" :key="item">
                         <a @click="clickachment(item.Host, item.FileId)">{{item.FileName}}</a></el-col>
@@ -336,7 +336,7 @@
               </el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="acc == 'sBBo4' || acc == 'saB4v'">
+          <el-col :span="8" v-if="acc == 'saB4v'">
             <el-form-item label="样本来源">
               <el-input v-model="sampleForm.SourceName" placeholder="样本来源" style="width:100%" disabled>
                 <el-button type="primary" :disabled="disabledsourcebutton || contains('1,2', batchitem)"
@@ -463,7 +463,7 @@
                       <el-input v-model="item.FieldDefault" v-if="item.FieldType === '3'" :placeholder="'请输入'+item.Name"
                         type="textarea" :rows="3" auto-complete="off"></el-input>
 
-                      <el-date-picker v-model="item.FieldDefault" v-if="item.FieldType === '4'" type="datetime"
+                      <el-date-picker v-model="item.FieldDefault" v-if="item.FieldType === '4'" type="date"
                         style="width:100%" placeholder="选择日期"></el-date-picker>
 
                       <el-button plain v-model="item.FieldDefault" v-if="item.FieldType === '5'" type="primary"
@@ -2514,8 +2514,11 @@
       },
       // 获取冰箱冻存架点击坐标
       getEquipPosition(ybox, xshelf, yshelf) {
-        let index = (xshelf - yshelf) + (yshelf - 1) * (this.colorTableHeight + 1)
-        this.shelfs = this.samplelist[index]
+        for (var i = 0; i < this.samplelist.length; i++) {
+          if (xshelf == this.samplelist[i].YStation && yshelf == this.samplelist[i].XStation) {
+            this.shelfs = this.samplelist[i]
+          }
+        }
         this.xshelf = xshelf
         this.yshelf = yshelf
         this.ybox = ybox + 1
@@ -2601,6 +2604,11 @@
             _this.boxSample = res.data.Boxsample
             _this.TableHeight = _this.selectedBox.RowNum
             _this.TableWidth = _this.selectedBox.ColumnNum
+            for (var i = 0 ; i < this.boxSample.length; i ++){
+              if (this.boxSample[i].Position == this.ytable + ';' + this.xtable){
+                this.tableclk(this.boxSample[i], this.xtable, this.ytable)
+              }
+            }
             // 重置选择的冻存管
             _this.dchxtable = -1
             _this.dchytable = -1
@@ -2646,10 +2654,10 @@
         } else { // 批量添加,如果点击的是空白位置会进入
           this.getSampleInfoByBatchs()
           this.extendList = []
-          if(this.Apply_flag == true) {
+          if (this.Apply_flag == true) {
             this.sampleTitle = '新增样本'
             this.sampleInfoDialog = true
-          }        
+          }
         }
         this.dchxtable = y
         this.dchytable = x
@@ -2802,11 +2810,13 @@
           samplecode: samplecode,
           barcode: barcode
         }
+        console.log("111111111111111111111111",params)
         this.$axios.get('/sampleoperation/getattachmentbysamplecode', {
             params
           })
           .then(res => {
             _this.achmentlist = res.data
+            console.log("2222222222222222222222222222",res.data)
           }).catch(() => {})
       },
       clickachment(host, fid) {
@@ -3023,8 +3033,7 @@
                 }
                 _this.GroupName = tempOfficers.join(',');
               }
-              // _this.$axios.post('/sampleoperation?batchitem=' + _this.batchitem + '&groupid=' + _this.GroupId +
-              //     '&groupname=' +
+              console.log("wwwwwwwwwwwwwwwwwww",params)
               _this.$axios.post('/sampleoperation?groupid=' + _this.GroupId + '&groupname=' + _this.GroupName,
                   params)
                 .then(res => {
@@ -3033,8 +3042,9 @@
                       type: 'success',
                       message: res.data.message
                     })
-                    _this.handleclk(_this.xbox, _this.ybox, _this.xshelf, _this.yshelf)
-                    // _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
+                    _this.shelfs = _this.samplelist[0]
+                    _this.handleclk(_this.xbox-1, _this.ybox-1, _this.xshelf, _this.yshelf)
+                   
                     // 清空上传附件
                     _this.$refs.refuploadattach.clearFiles()
                     // 获取附件信息
@@ -3042,46 +3052,47 @@
                     //清空缓存数据
                     _this.batchstorages = []
                     store.set('batchstorages', _this.batchstorages)
-                  } else if (res.data.code === 10 || res.data.code === 11) { // 保存成功后打印
-                    this.$message({
-                      type: 'success',
-                      message: res.data.message
-                    })
-                    _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
-                    // 自动打印
-                    if (res.data.item.Printmsg !== '') {
-                      let printparams = res.data.item.Printmsg.split(',')
-                      if (printparams.length === 3 && printparams[0] !== '' && printparams[1] !== '' &&
-                        printparams[2] !== '') {
-                        window.PrintReport(printparams[1], `samples,${printparams[2]},${printparams[0]}`)
-                      }
-                    }
-                    // 清空上传附件
-                    _this.$refs.refuploadattach.clearFiles()
-                    // 获取附件信息
-                    _this.getattachment(_this.sampleForm.BarCode, _this.sampleForm.SampleCode)
-                    //清空缓存数据
-                    _this.batchstorages = []
-                    store.set('batchstorages', _this.batchstorages)
-                  } else if (res.data.code === 20) {
-                    this.$message({
-                      type: 'error',
-                      message: res.data.message
-                    })
-                    _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
-                    // 清空上传附件
-                    _this.$refs.refuploadattach.clearFiles()
-                    // 获取附件信息
-                    _this.getattachment(_this.sampleForm.BarCode, _this.sampleForm.SampleCode)
-                    //清空缓存数据
-                    _this.batchstorages = []
-                    store.set('batchstorages', _this.batchstorages)
-                  } else {
-                    this.$message({
-                      type: 'warning',
-                      message: res.data.message
-                    })
                   }
+                  //  else if (res.data.code === 10 || res.data.code === 11) { // 保存成功后打印
+                  //   this.$message({
+                  //     type: 'success',
+                  //     message: res.data.message
+                  //   })
+                  //   _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
+                  //   // 自动打印
+                  //   if (res.data.item.Printmsg !== '') {
+                  //     let printparams = res.data.item.Printmsg.split(',')
+                  //     if (printparams.length === 3 && printparams[0] !== '' && printparams[1] !== '' &&
+                  //       printparams[2] !== '') {
+                  //       window.PrintReport(printparams[1], `samples,${printparams[2]},${printparams[0]}`)
+                  //     }
+                  //   }
+                  //   // 清空上传附件
+                  //   _this.$refs.refuploadattach.clearFiles()
+                  //   // 获取附件信息
+                  //   _this.getattachment(_this.sampleForm.BarCode, _this.sampleForm.SampleCode)
+                  //   //清空缓存数据
+                  //   _this.batchstorages = []
+                  //   store.set('batchstorages', _this.batchstorages)
+                  // } else if (res.data.code === 20) {
+                  //   this.$message({
+                  //     type: 'error',
+                  //     message: res.data.message
+                  //   })
+                  //   _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
+                  //   // 清空上传附件
+                  //   _this.$refs.refuploadattach.clearFiles()
+                  //   // 获取附件信息
+                  //   _this.getattachment(_this.sampleForm.BarCode, _this.sampleForm.SampleCode)
+                  //   //清空缓存数据
+                  //   _this.batchstorages = []
+                  //   store.set('batchstorages', _this.batchstorages)
+                  // } else {
+                  //   this.$message({
+                  //     type: 'warning',
+                  //     message: res.data.message
+                  //   })
+                  // }
                   _this.sampleInfoDialog = false
                 })
                 .catch(err => {
@@ -3475,8 +3486,6 @@
       },
       recoverydialogcallback(v) {
         this.handleclk(this.xbox - 1, this.ybox - 1, this.xshelf, this.yshelf)
-        // 回到顶部
-        // this.goAnchor('#equishelfcard')
       },
       numtoupchar(num) {
         return String.fromCharCode(64 + parseInt(num))
@@ -3598,21 +3607,10 @@
         }
       },
       formatDateTime(date) {
-        date = date.substring(4, 24)
+        date = date.substring(0, 10)
         return date
-        // var y = date.getFullYear();
-        // var m = date.getMonth() + 1;
-        // m = m < 10 ? ('0' + m) : m;
-        // var d = date.getDate();
-        // d = d < 10 ? ('0' + d) : d;
-        // var h = date.getHours();
-        // var minute = date.getMinutes();
-        // var second = date.getSeconds();
-        // minute = minute < 10 ? ('0' + minute) : minute;
-        // minute = second < 10 ? ('0' + second) : second;
-        // return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
       },
-      
+
       getGrouplist() {
         let _this = this
         _this.$axios.get('/samplesgroup/grouplist', {})

+ 7 - 4
src/dashoo.cn/frontend_web/src/pages/equipment/_opera/shelfset_new.vue

@@ -437,8 +437,11 @@
       },
       // 获取冰箱冻存架点击坐标
       getEquipPosition(ycolor, xidx, yidx) {
-        let index = (xidx - yidx) + (yidx - 1) * (this.colorTableHeight + 1)
-        this.shelfs = this.samplelist[index]
+        for (var i = 0 ; i < this.samplelist.length; i ++){
+          if (xidx == this.samplelist[i].YStation && yidx == this.samplelist[i].XStation){
+            this.shelfs = this.samplelist[i]
+          }
+        }
         this.xidx = xidx
         this.yidx = yidx
         this.ycolor = ycolor + 1
@@ -623,7 +626,7 @@
         // seed: 0---冻存架; 1---冻存盒
         if (!seed) {
           if (this.xidx !== -1 && this.yidx !== -1) {
-            window.location.href = '/equipment/devicemove?id=' + this.equipid + '&x=' + this.yidx + '&y=' + this.xidx +
+            window.location.href = '/equipment/devicemove_new?id=' + this.equipid + '&x=' + this.yidx + '&y=' + this.xidx +
               '&type=' + seed
           } else if (this.xshelf !== -1 && this.yshelf !== -1) {
             this.$message({
@@ -648,7 +651,7 @@
               message: '无法移动空冻存盒!'
             })
           } else {
-            window.location.href = '/equipment/devicemove?id=' + this.equipid + '&x=' + this.xcolor + '&y=' + this
+            window.location.href = '/equipment/devicemove_new?id=' + this.equipid + '&x=' + this.xcolor + '&y=' + this
               .ycolor +
               '&type=' + seed + '&xshelf=' + this.yidx + '&yshelf=' + this.xidx
           }

+ 434 - 0
src/dashoo.cn/frontend_web/src/pages/equipment/devicemove_new.vue

@@ -0,0 +1,434 @@
+<style>
+  .input-with-select .el-select .el-input {
+    width: 110px;
+  }
+
+  .input-with-select .el-input-group__append {
+    background-color: #fff;
+  }
+
+</style>
+
+<template>
+  <div>
+    <el-card style="min-height: calc(100vh - 92px);">
+      <div slot="header" style="height: 20px;">
+        <span style="float: left;">
+          <i class="icon icon-table2"></i>
+        </span>
+        <el-breadcrumb class="heading" style="float: left; margin-left: 5px">
+          <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+          <el-breadcrumb-item :to="{ path: '/equipment' }">容器管理</el-breadcrumb-item>
+          <el-breadcrumb-item>移动设置 【{{ename}}】</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" style="margin-left: 5px" @click="savemove()">保存</el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px" onclick="window.history.go(-1)">返回</el-button>
+        </span>
+
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="请选择复存的设备">
+            <el-select size="mini" v-model="selectedequip" placeholder="请选择设备" @change="changeequip" style="width:100%"
+              clearable>
+              <el-option v-for="item in equiplist" :label="item.label" :value="item.value" :key="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-checkbox v-model="isAddFNum" style="margin-left: 10px">记录冻融次数</el-checkbox>
+          </el-form-item>
+        </el-form>
+      </div>
+
+      <div style="text-align:center;margin-top:-10px">
+        <i class="icon icon-stop2" style="color:#EAEAEA"></i>无冻存盒
+        <i class="icon icon-stop2" style="color:#13CE66"></i>空冻存盒
+        <i class="icon icon-stop2" style="color:#FF4949"></i>选中
+        <i class="icon icon-stop2" style="color:#D1EEEE"></i>容量(0-25%)
+        <i class="icon icon-stop2" style="color:#20A0FF"></i>容量(25%-50%)
+        <i class="icon icon-stop2" style="color:#836FFF"></i>容量(50%-75%)
+        <i class="icon icon-stop2" style="color:#000080"></i>容量(75%-100%)
+      </div>
+      <!--冰箱-->
+      <el-row v-loading="downloading" element-loading-text="数据拼命读取中,请稍候。。。">
+        <el-col :span="12">
+          <div>
+            <el-row :gutter="20">
+              <el-col :span="20">
+                <table cellspacing="0" cellpadding="0">
+                  <thead>
+                    <th></th>
+                    <th v-for="ind in colorTableWidth" :key="ind">{{ind}}</th>
+                  </thead>
+                  <tbody>
+                    <tr v-for=" (xcolorTable,k1) in colorTableHeight" :key="xcolorTable">
+                      <td style="text-align:center;font-size:20px;">{{numtoengs[xcolorTable-1]}}</td>
+                      <td v-for="(ycolorTable,k2) in colorTableWidth" :key="ycolorTable"
+                        v-bind:class="{ 'tdborder': true, 'tdleftborder': k2 === 0, 'tdtopborder': k1 === 0, 'tdrightborder': k2 === colorTableWidth-1 }">
+                        <div class="ulbgcolor"
+                          v-bind:style="{ width: unitwidth/colorTableWidth + 'px', height: unitheight/colorTableHeight + 'px', 
+                                                      backgroundColor: xshelf === k2+1 && yshelf === k1+1 ? COLORARR[7] : COLORARR[8] }"
+                          @click="shelfclk(k2+1, k1+1)">
+                          <div v-for="(shelfitem, index) in samplelist" :key="index">
+                            <div v-if="samplelist[index].XStation === k2+1 && samplelist[index].YStation === k1+1">
+                              <div class="hoverdiv" v-for="rowindex in samplelist[index].RowNum" :key="rowindex">
+                                <div
+                                  v-bind:style="{ 
+                                          width: (unitwidth/colorTableWidth-2.5) + 'px',
+                                          height: (unitheight/colorTableHeight/samplelist[index].RowNum-2.5) + 'px',
+                                          backgroundColor: ycolor == rowindex && xidx == k1+1 && yidx == k2+1 ? COLORARR[7] : COLORARR[0]}"
+                                  style="margin: 1px" @click="getEquipPosition(rowindex-1, k1+1, k2+1)">
+                                </div>
+                              </div>
+                            </div>
+                          </div>
+                        </div>
+                      </td>
+                    </tr>
+                  </tbody>
+                </table>
+                <div>
+                  <img :src="fridgebottomimg" class="fridge">
+                </div>
+              </el-col>
+              <el-col :span="4" style="margin-top: 20px">
+                <div class="ulbgcolor" v-for="g in shelfs.ColumnNum" :key="g"
+                  style="width:150px;float:left;margin-left:1px">
+                  <div class="hoverdiv" v-bind:style="{ 
+                          backgroundColor: xcolor == g && ycolor == ycolor && 
+                          xidx == shelfs.YStation && yidx == shelfs.XStation ? COLORARR[2] :                          
+                          (shelfs[numtoengs[ycolor-1]+g] == -2 ? COLORARR[0] : 
+                          (shelfs[numtoengs[ycolor-1]+g] == -1 ? COLORARR[1] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 0 && 
+                          shelfs[numtoengs[ycolor-1]+g] <= 25 ? COLORARR[3] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 25 && 
+                          shelfs[numtoengs[ycolor-1]+g] <= 50 ? COLORARR[4] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 50 && 
+                          shelfs[numtoengs[ycolor-1]+g] <= 75 ? COLORARR[5] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 75 ? COLORARR[6] : 
+                          COLORARR[7])))))) }" @click="handleclk(g-1, ycolor-1, shelfs.YStation, shelfs.XStation)"
+                    style="margin: 1px;width:50px; height:20px;">
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
+          </div>
+        </el-col>
+
+        <el-col :span="12">
+          <div class="tablebox">
+            <table class="sampletable" v-bind:style="{ width: 10*TableWidth + '%', height: 10*TableHeight + '%' }">
+              <thead>
+                <th></th>
+                <th v-for="ind in TableWidth" :key="ind">{{ind}}</th>
+              </thead>
+              <tbody>
+                <tr class="index" v-for=" yindex in TableHeight" :key="yindex">
+                  <td style="width:3px;text-align:center;font-size:20px;">{{numtoengs[yindex-1]}}</td>
+                  <td v-for="xindex in TableWidth" :key="xindex" class="visibletd">
+                    <div v-for="(sdata, sindex) in boxSample" :key="sindex">
+                      <span v-if="sdata.Position.split(';')[0]==xindex && sdata.Position.split(';')[1]==yindex">
+                        <div v-if="sdata.IState === 5">
+                          <img :src="imghost + '/static/img/sampletypeimg/zhanwei.png'" class="image">
+                        </div>
+                        <span v-for="(type, tindex) in option" :key="tindex" v-else>
+                          <div v-if="sdata.SampleType == type.value">
+                            <img :src="imghost + type.photo" class="image">
+                          </div>
+                        </span>
+                      </span>
+                    </div>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+        </el-col>
+      </el-row>
+    </el-card>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'devicemove_new',
+    components: {},
+    data() {
+      return {
+        fridgebottomimg: '',
+        imghost: '',
+        ename: '',
+        // 冰箱面板
+        unitwidth: 400, // 整个冰箱的尺寸
+        unitheight: 378,
+        dchxtable: -1, // 对勾所在位置
+        dchytable: -1,
+        xidx: -1, // 选中的冻存盒的位置
+        yidx: -1,
+        xcolor: -1, //  选中的冻存架的位置
+        ycolor: -1,
+        xshelf: -1, // 点击空冻存架
+        yshelf: -1,
+        shelfs: [], //选中冻存架
+        colorTableWidth: 0, //  冰箱的相对尺寸
+        colorTableHeight: 0,
+        numtoengs: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
+          'U', 'V', 'W', 'X', 'Y', 'Z'
+        ],
+        samplelist: [], // 新增,新的冰箱list和冻存盒/架list以及冻存盒样本list
+        equipid: 0, // 新增,设备id
+        COLORARR: ['#EAEAEA', '#13CE66', '#FF4949', '#D1EEEE', '#20A0FF', '#836FFF', '#000080', '#FF7777', '#FFFFFF'],
+        equiplist: [],
+        selectedequip: '',
+        paramx: 0, // 坐标参数
+        paramy: 0,
+        paramxshelf: 0,
+        paramyshelf: 0,
+        isAddFNum: false, // 冻融次数
+        movetype: '', // 移动的类型
+        cbcvalue: '' // 冻存盒颜色数值
+      }
+    },
+    created() {
+      this.imghost = process.env.imgserverhost
+      // let eid = this.$route.params.eid
+      let eid = this.$route.query.id
+      this.paramx = this.$route.query.x
+      this.paramy = this.$route.query.y
+      this.movetype = this.$route.query.type
+      this.paramxshelf = this.$route.query.xshelf
+      this.paramyshelf = this.$route.query.yshelf
+      this.equipid = eid
+      this.initData(eid)
+      this.getfridgeimg(eid)
+      this.getnameidlist()
+    },
+    watch: {},
+    methods: {
+      initData(eid) {
+        let _this = this
+        // 获取冻存架信息
+        _this.$axios.get('/shelfset/equipmentdraw/' + eid, {})
+          .then(res => {
+            // response
+            _this.samplelist = res.data.items
+            _this.colorTableHeight = res.data.dimension[1]
+            _this.colorTableWidth = res.data.dimension[0]
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      getfridgeimg(eid) {
+        let _this = this
+        // 获取容器信息
+        _this.$axios.get('/equipment/getmodel/' + eid, {})
+          .then(res => {
+            _this.ename = res.data.Name
+            if (res.data && (res.data.DItem === 4)) {
+              _this.fridgebottomimg = _this.imghost + '/static/img/sampletypeimg/bottomydg.png'
+            } else {
+              _this.fridgebottomimg = _this.imghost + '/static/img/sampletypeimg/bottombx.png'
+            }
+          })
+          .catch({})
+      },
+      getnameidlist() {
+        let _this = this
+        _this.$axios.get('/equipment/elist', {})
+          .then(res => {
+            for (var i = 0; i < res.data.items.length / 2; i++) {
+              _this.equiplist.push({
+                label: res.data.items[2 * i],
+                value: res.data.items[2 * i + 1]
+              })
+            }
+            _this.selectedequip = _this.equipid
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+      handleclk(xindex, yindex, xcolorTable, ycolorTable) {
+        // 修改坐标
+        this.xidx = xcolorTable
+        this.yidx = ycolorTable
+        this.xcolor = xindex + 1
+        this.ycolor = yindex + 1
+        this.dchxtable = -1
+        this.dchytable = -1
+      },
+      shelfclk(x, y) {
+        for (var i = 0; i < this.samplelist.length; i++) {
+          if (x === this.samplelist[i].XStation && y === this.samplelist[i].YStation) {
+            this.yshelf = -1
+            this.xshelf = -1
+            return
+          }
+        }
+        this.yshelf = y
+        this.xshelf = x
+        this.xidx = -1
+        this.yidx = -1
+        this.xcolor = -1
+        this.ycolor = -1
+        this.shelfs = [] 
+      },
+      getEquipPosition(ycolor, xidx, yidx) {
+        for (var i = 0 ; i < this.samplelist.length; i ++){
+          if (xidx == this.samplelist[i].YStation && yidx == this.samplelist[i].XStation){
+            this.shelfs = this.samplelist[i]
+          }
+        }
+        this.xidx = xidx
+        this.yidx = yidx
+        this.ycolor = ycolor + 1
+        this.xcolor = -1
+      },
+      changeequip(val) {
+        this.initData(val)
+        this.selectedequip = val
+        this.xshelf = -1
+        this.yshelf = -1
+      },
+      savemove() {
+        // 0----冻存架;1----冻存盒
+        if (this.movetype === '0') {
+          if (this.xhself !== -1 && this.yshelf !== -1) {
+            let _this = this
+            _this.$axios.put('/shelfset/shelfmove/' + _this.selectedequip + '_' + _this.equipid + '_' + _this.paramx +
+                '_' + _this.paramy + '_' + _this.xshelf + '_' + _this.yshelf + '_' + _this.isAddFNum, {})
+              .then(res => {
+                if (res.data.code === 0) {
+                  this.$message({
+                    type: 'success',
+                    message: res.data.message
+                  })
+                  window.history.go(-1)
+                } else {
+                  this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                  })
+                }
+              })
+              .catch(err => {
+                // handle error
+                console.error(err)
+              })
+          } else if (this.xidx !== -1 && this.yidx !== -1) {
+            this.$message({
+              type: 'warning',
+              message: '已存在冻存架!'
+            })
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '请选择冻存架!'
+            })
+          }
+        } else {
+          if (this.xcolor === -1 && this.ycolor === -1) {
+            this.$message({
+              type: 'warning',
+              message: '请选择冻存盒!'
+            })
+          } else if (this.havebox()) {
+            this.$message({
+              type: 'warning',
+              message: '已存在冻存盒!'
+            })
+          } else {
+            let _this = this
+            // request
+            _this.$axios.put('/shelfset/boxmove/' + _this.selectedequip + '_' + _this.equipid + '_' + _this.paramx +
+                '_' + _this.paramy + '_' + _this.xcolor + '_' + _this.ycolor + '_' + _this.isAddFNum + '_' + _this
+                .paramxshelf + '_' + _this.paramyshelf + '_' + _this.yidx + '_' + _this.xidx, {})
+              .then(res => {
+                // response
+                if (res.data.code === 0) {
+                  this.$message({
+                    type: 'success',
+                    message: res.data.message
+                  })
+                  window.history.go(-1)
+                } else {
+                  this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                  })
+                }
+              })
+              .catch(err => {
+                // handle error
+                console.error(err)
+              })
+          }
+        }
+      },
+      havebox() {
+        for (var i = 0; i < this.samplelist.length; i++) {
+          // 选择选择shelf
+          if (this.yidx === this.samplelist[i].XStation && this.xidx === this.samplelist[i].YStation) {
+            // 检查颜色
+            if (this.samplelist[i][this.numtoengs[this.ycolor - 1] + this.xcolor] === -2) {
+              return false
+            } else {
+              this.cbcvalue = this.samplelist[i][this.numtoengs[this.ycolor - 1] + this.xcolor]
+              return true
+            }
+          }
+        }
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss" scoped>
+  .ulbgcolor div {
+    float: left;
+  }
+
+  .hoverdiv:hover {
+    box-shadow: 0 0 4px rgba(0, 0, 0, .4);
+    transform: scale(1.15);
+  }
+
+  .fridge {
+    width: 425px;
+    height: 110px;
+    margin-left: 13px;
+  }
+
+  .worklisticolist {
+    font-size: 14px;
+    margin-bottom: 12px;
+  }
+
+  .worklisticolist i:not(:first-child) {
+    margin-left: 4px;
+  }
+
+  .worklisticolist i {
+    margin-right: 3px;
+  }
+
+  .tdborder {
+    border: 1px solid #B4CDCD;
+  }
+
+  .tdtopborder {
+    border-top: 5px solid #A3A3A3;
+  }
+
+  .tdleftborder {
+    border-left: 5px solid #A3A3A3;
+  }
+
+  .tdrightborder {
+    border-right: 5px solid #A3A3A3;
+  }
+
+</style>

+ 36 - 36
src/dashoo.cn/frontend_web/src/pages/index.vue

@@ -80,12 +80,12 @@
       <el-card style="margin-top: 5px; height:460.5px; width: 100%"
         v-if="acc =='sgVEw' && permissions[permissionscode.showbar]">
         <div class="salesCard">
-          <!-- <el-col :span="16" style="margin-top: 20px">
+          <el-col :span="16" style="margin-top: 20px">
             <div v-if="groupList && groupList.length === 0">无显示数据,可在
               <router-link :to="'/setting/systemitems'">数据字典</router-link> 中录入</div>
             <div id="GroupBar" style="height:380px; margin-left:-25px; margin-top:10px; min-width:400px; width: 900px">
             </div>
-          </el-col> -->
+          </el-col>
           <!-- <el-col :span="8" style="float: right; margin-top: -10px">
             <div v-if="ProjectList.length === 0">无显示数据</div>
             <ranking-list title="检测报告" :list="GroupSamList" />
@@ -226,9 +226,9 @@
         PreGroup: [],
         StoGroup: [],
         LockGroup: [],
-        tjdevicecolor: [
-          '#F5B132', '#E56C5A', '#8B9F74', '#EEA7A3', '#E94648', '#918E90', '#bbc8e6', '#004EA2',
-          '#ffec47', '#c0a2c7', '#93ca76'
+        tjdevicecolor: [ '#008FD1', '#B9DCED', '#00799E', '#00A6DE', '#12126E', '#0090B0', '#005BAB', '#4FABC2', '#00214F', '#1F2D75'
+          // '#F5B132', '#E56C5A', '#8B9F74', '#EEA7A3', '#E94648', '#918E90', '#bbc8e6', '#004EA2',
+          // '#ffec47', '#c0a2c7', '#93ca76'
         ],
         downloading: true,
         acc: '',
@@ -357,8 +357,9 @@
             data: this.sampleTitle
           },
           color: [
-            '#F5B132', '#E56C5A', '#8B9F74', '#EEA7A3', '#E94648', '#918E90', '#bbc8e6', '#004EA2',
-            '#ffec47', '#c0a2c7', '#93ca76'
+            '#008FD1', '#B9DCED', '#00799E', '#00A6DE', '#12126E', '#0090B0', '#005BAB', '#4FABC2', '#00214F', '#1F2D75'
+            // '#F5B132', '#E56C5A', '#8B9F74', '#EEA7A3', '#E94648', '#918E90', '#bbc8e6', '#004EA2',
+            // '#ffec47', '#c0a2c7', '#93ca76'
           ],
           series: [{
             name: '样本类型',
@@ -446,31 +447,31 @@
         _this.$axios.get('users/samplebygroup', {})
           .then(res => {
             if (this.groupList) {
-              // for (var i = 0; i < this.groupList.length; i++) {
-              //   for (var n = 0; n < res.data.length; n++) {
-              //     if (res.data[n].IState == '10') {
-              //       if (res.data[n].Name == this.groupList[i]) {
-              //         this.LockGroup.push(res.data[n].Num)
-              //       } else {
-              //         this.LockGroup.push(0)
-              //       }
-              //     }
-              //     if (res.data[n].IState == '1') {
-              //       if (res.data[n].Name == this.groupList[i]) {
-              //         this.StoGroup.push(res.data[n].Num)
-              //       } else {
-              //         this.StoGroup.push(0)
-              //       }
-              //     }
-              //     if (res.data[n].IState == '2') {
-              //       if (res.data[n].Name == this.groupList[i]) {
-              //         this.PreGroup.push(res.data[n].Num)
-              //       } else {
-              //         this.PreGroup.push(0)
-              //       }
-              //     }
-              //   }
-              // }
+              for (var i = 0; i < this.groupList.length; i++) {
+                for (var n = 0; n < res.data.length; n++) {
+                  if (res.data[n].IState == '10') {
+                    if (res.data[n].Name == this.groupList[i]) {
+                      this.LockGroup.push(res.data[n].Num)
+                    } else {
+                      this.LockGroup.push(0)
+                    }
+                  }
+                  if (res.data[n].IState == '1') {
+                    if (res.data[n].Name == this.groupList[i]) {
+                      this.StoGroup.push(res.data[n].Num)
+                    } else {
+                      this.StoGroup.push(0)
+                    }
+                  }
+                  if (res.data[n].IState == '2') {
+                    if (res.data[n].Name == this.groupList[i]) {
+                      this.PreGroup.push(res.data[n].Num)
+                    } else {
+                      this.PreGroup.push(0)
+                    }
+                  }
+                }
+              }
             }
             this.drawGroupChart()
           })
@@ -534,10 +535,9 @@
         let _this = this
         _this.$axios.get('/samplesgroup/grouplist', {})
           .then(res => {
-            console.log("dlfsfsfsfsfsfsfsfsfsfsfsfsfsfsfs", res.data)
-            // for (var i = 0; i < res.data.length; i++) {
-            //   _this.groupList.push(res.data[i].Key)
-            // }
+            for (var i = 0; i < res.data.length; i++) {
+              _this.groupList.push(res.data[i].Key)
+            }
           })
       },
       //获取权限

+ 1 - 1
src/dashoo.cn/frontend_web/src/pages/login.vue

@@ -21,7 +21,7 @@
       <el-row>
         <el-col :span="15">
           <div class="leftpadding">
-            <img src="../assets/img/major.png" class="intelligent-img" /> </div>
+            <img src="../assets/img/std.png" class="intelligent-img" /> </div>
         </el-col>
         <el-col :span="9">
           <el-card class="box-card" style="width: 300px;margin-top: 130px;height: 360px;">

+ 1 - 1
src/dashoo.cn/frontend_web/src/pages/login_std.vue → src/dashoo.cn/frontend_web/src/pages/login_major.vue

@@ -21,7 +21,7 @@
       <el-row>
         <el-col :span="15">
           <div class="leftpadding">
-            <img src="../assets/img/std.png" class="intelligent-img" /> </div>
+            <img src="../assets/img/major.png" class="intelligent-img" /> </div>
         </el-col>
         <el-col :span="9">
           <el-card class="box-card" style="width: 300px;margin-top: 130px;height: 360px;">

+ 1 - 2
src/dashoo.cn/frontend_web/src/pages/samples/prerecorded/index.vue

@@ -764,7 +764,7 @@
           Name: this.Name,
           Validity: this.Validity,
           InnerCode: this.InnerCode,
-          SamplingOrgan: this.selectsigorg,
+         // SamplingOrgan: this.selectsigorg,
           GroupName: this.GroupName,
           showcolumnarr: showcolumnarr + '',
           showcolumnnamearr: showcolumnnamearr + '',
@@ -820,7 +820,6 @@
             window.location = 'http://' + res.data
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },

+ 14 - 13
src/dashoo.cn/frontend_web/src/pages/samples/stored/index.vue

@@ -561,17 +561,19 @@
           name: '可用容量',
           show: true,
           kuoz: false
-        }, {
-          filed: 'SamplingOrganName',
-          name: '组织器官',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SamplingSiteName',
-          name: '取材部位',
-          show: true,
-          kuoz: false
-        }, {
+        }, 
+        // {
+        //   filed: 'SamplingOrganName',
+        //   name: '组织器官',
+        //   show: true,
+        //   kuoz: false
+        // }, {
+        //   filed: 'SamplingSiteName',
+        //   name: '取材部位',
+        //   show: true,
+        //   kuoz: false
+        // },
+         {
           filed: 'InnerCode',
           name: '样本内码',
           show: true,
@@ -791,7 +793,6 @@
               '') { //自定义查询
               this.handleSearchCommand(store.get('samplestoredseach').searchWithTemplate)
             } else {
-              // initial data
               this.initData()
             }
           }).catch(() => {})
@@ -1103,12 +1104,12 @@
             params
           })
           .then(res => {
+            console.log("wwwwwwwwwwwwwwww",res.data)
             _this.exportloading = false
             window.location = 'http://' + res.data
           })
           .catch(err => {
             _this.exportloading = false
-            // handle error
             console.error(err)
           })
       },

+ 1 - 1
src/dashoo.cn/frontend_web/src/pages/setting/sampletype/_opera/sampletypeedit.vue

@@ -33,7 +33,7 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="编码" prop="Code">
-              <el-input placeholder="请输入编码" style="width:100%" v-model="SampleTypeForm.Code"></el-input>
+              <el-input placeholder="请输入编码" style="width:100%" v-model="SampleTypeForm.Code" disabled></el-input>
             </el-form-item>
             <el-form-item label="默认单位">
               <el-select style="width:100%" v-model="SampleTypeForm.Unit" placeholder="请选择默认单位">