Jelajahi Sumber

兴瑞界面

shihang 6 tahun lalu
induk
melakukan
142a55cf72
22 mengubah file dengan 1789 tambahan dan 524 penghapusan
  1. 9 0
      src/dashoo.cn/backend/api/business/customer/customer.go
  2. 3 3
      src/dashoo.cn/backend/api/conf/app.conf
  3. 82 3
      src/dashoo.cn/backend/api/controllers/casbin/role.go
  4. 315 0
      src/dashoo.cn/backend/api/controllers/family/customer.go
  5. 2 2
      src/dashoo.cn/backend/api/controllers/samplesinfo/sampleoperation.go
  6. 715 0
      src/dashoo.cn/backend/api/controllers/system/orderadd.go
  7. 23 1
      src/dashoo.cn/backend/api/routers/router.go
  8. 1 1
      src/dashoo.cn/frontend_web/nuxt.config.ignore.js
  9. 21 21
      src/dashoo.cn/frontend_web/src/assets/styles/modules/header.scss
  10. 1 1
      src/dashoo.cn/frontend_web/src/components/sidebar.vue
  11. 51 44
      src/dashoo.cn/frontend_web/src/pages/biobank/book/_opera/operation.vue
  12. 93 74
      src/dashoo.cn/frontend_web/src/pages/biobank/book/index.vue
  13. 1 1
      src/dashoo.cn/frontend_web/src/pages/biobank/protocol/_opera/operation.vue
  14. 38 22
      src/dashoo.cn/frontend_web/src/pages/biobank/protocol/_opera/protocoledit.vue
  15. 96 84
      src/dashoo.cn/frontend_web/src/pages/biobank/protocol/index.vue
  16. 30 18
      src/dashoo.cn/frontend_web/src/pages/biobank/protocol/protocoladd.vue
  17. 28 17
      src/dashoo.cn/frontend_web/src/pages/biobank/sampletest/_opera/operation.vue
  18. 88 83
      src/dashoo.cn/frontend_web/src/pages/biobank/sampletest/index.vue
  19. 25 16
      src/dashoo.cn/frontend_web/src/pages/biobank/service/_opera/operation.vue
  20. 76 65
      src/dashoo.cn/frontend_web/src/pages/biobank/service/complated.vue
  21. 90 67
      src/dashoo.cn/frontend_web/src/pages/biobank/service/index.vue
  22. 1 1
      src/dashoo.cn/frontend_web/src/pages/biobank/source/_opera/operation.vue

+ 9 - 0
src/dashoo.cn/backend/api/business/customer/customer.go

@@ -56,6 +56,15 @@ type CellsContractAttachment struct {
 	ModifiedOn     time.Time `xorm:"DATETIME updated"`
 }
 
+// 附件model
+type ContractAttachmentarrt struct {
+	Host       string
+	FileId     string
+	FileName   string
+	FileSize   int32
+	UploadDesc string
+}
+
 type CellsContractAttachmentarrt struct {
 	Host     string
 	FileId   string

+ 3 - 3
src/dashoo.cn/backend/api/conf/app.conf

@@ -50,7 +50,7 @@ type=mysql
 
 #本地测试服务器
 name=casbin
-host=47.92.212.59
-user=root
-pwd=zks123456
+host=mydb01.cnbkzlqg5w7l.rds.cn-north-1.amazonaws.com.cn
+user=mydb01_user
+pwd=mydb01_user58717168
 domain=biobank

+ 82 - 3
src/dashoo.cn/backend/api/controllers/casbin/role.go

@@ -1,10 +1,12 @@
 package casbin
 
 import (
-	"dashoo.cn/backend/api/business/role"
+	"encoding/json"
 	"strconv"
 	"strings"
 
+	"dashoo.cn/backend/api/business/role"
+
 	. "dashoo.cn/backend/api/controllers"
 	"dashoo.cn/business2/district"
 	"dashoo.cn/business2/module"
@@ -57,6 +59,83 @@ func (this *RoleController) RoleList() {
 	this.Data["json"] = &datainfo
 	this.ServeJSON()
 }
+
+// @Title 创建角色
+// @Description 创建角色
+// @Success	200	{object} controllers.Request
+// @router / [post]
+func (this *RoleController) RoleAddPost() {
+	var roleentity userRole.Base_Role
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &roleentity)
+	roleentity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+	roleentity.CreateBy = this.User.Realname
+	svc := userRole.GetRoleService(utils.DBE)
+	err := svc.AddRole(&roleentity)
+	var errinfo ErrorInfo
+	if err == nil {
+		errinfo.Message = utils.AlertProcess("创建角色成功!")
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = utils.AlertProcess("创建角色失败!" + err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 编辑角色
+// @Description 编辑角色
+// @Success	200	{object} controllers.Request
+// @router /:id [put]
+func (this *RoleController) RoleEditPost() {
+	id := this.Ctx.Input.Param(":id")
+	var roleentity userRole.Base_Role
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &roleentity)
+	roleentity.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+	roleentity.ModifiedBy = this.User.Realname
+	svc := userRole.GetRoleService(utils.DBE)
+	var cols []string = []string{"Realname", "Category", "Description", "ModifiedUserId", "ModifiedBy"}
+	_, err := svc.UpdateEntityByIdCols(id, &roleentity, cols)
+	var errinfo ErrorInfo
+	if err == nil {
+		errinfo.Message = utils.AlertProcess("编辑角色成功!")
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = utils.AlertProcess("编辑角色失败!" + err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 删除角色
+// @Description 删除角色
+// @Success 200 {object} controllers.Request
+// @router /:id [delete]
+func (this *RoleController) RoleDelete() {
+	id := this.Ctx.Input.Param(":id")
+	svc := userRole.GetRoleService(utils.DBE)
+	err := svc.DeleteRole(id)
+	var errinfo ErrorInfo
+	if err == nil {
+		errinfo.Message = utils.AlertProcess("删除角色成功!")
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = utils.AlertProcess("删除角色失败!" + err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
 // @Title 权限
 // @Description 获取菜单操作权限
 // @Success 200 {object} controllers.Request
@@ -216,7 +295,7 @@ func (this *RoleController) DistrictPost() {
 			if strings.HasPrefix(districtids[i], "self_") {
 				_districtids := []byte(districtids[i])[5:]
 				districtids, _ := utils.StrTo(_districtids).Int()
-				ret := utils.RBAC.AddNamedGroupingPolicy("g4", "rid_"+roleid,"did_"+strconv.Itoa(districtids), utils.DOMAIN)
+				ret := utils.RBAC.AddNamedGroupingPolicy("g4", "rid_"+roleid, "did_"+strconv.Itoa(districtids), utils.DOMAIN)
 				//utils.RBAC.DeletePermissionForUser("rid_"+roleid,"did_"+strconv.Itoa(districtids))
 				//ret := utils.RBAC.AddPermissionForUser("rid_"+roleid, "did_"+strconv.Itoa(districtids))
 				if ret == false {
@@ -225,7 +304,7 @@ func (this *RoleController) DistrictPost() {
 				}
 			} else {
 				districtids, _ := utils.StrTo(districtids[i]).Int()
-				ret := utils.RBAC.AddNamedGroupingPolicy("g4", "rid_"+roleid,"did_"+strconv.Itoa(districtids), utils.DOMAIN)
+				ret := utils.RBAC.AddNamedGroupingPolicy("g4", "rid_"+roleid, "did_"+strconv.Itoa(districtids), utils.DOMAIN)
 				if ret == false {
 					beego.Debug("insert error:", ret)
 					continue

+ 315 - 0
src/dashoo.cn/backend/api/controllers/family/customer.go

@@ -0,0 +1,315 @@
+package family
+
+import (
+	"encoding/json"
+	"strings"
+
+	"dashoo.cn/backend/api/business/customer"
+	. "dashoo.cn/backend/api/controllers"
+	"dashoo.cn/utils"
+)
+
+type CustomerController struct {
+	BaseController
+}
+
+//保存附件UI model
+type contractFormmodel struct {
+	PId             int
+	AttachmodelList []customer.ContractAttachmentarrt // 上传附件
+
+}
+
+// @Title 根据用户AccCode get检验主表 客户原始信息内容
+// @Description get user by token
+// @Success 200 {object} models.Userblood
+// @router /customerlist [get]
+func (this *CustomerController) Customerlist() {
+	page := this.GetPageInfoForm()
+	danwei := this.GetString("danwei")
+	lianxiren := this.GetString("lianxiren")
+	telephone := this.GetString("telephone")
+	CreateBy := this.GetString("CreateBy")
+	var list []customer.Customer
+	svc := customer.GetCustomerService(utils.DBE)
+	where := " 1=1 "
+	orderby := "Id"
+	asc := false
+	Order := this.GetString("Order")
+	Prop := this.GetString("Prop")
+	if Order != "" && Prop != "" {
+		orderby = Prop
+		if Order == "asc" {
+			asc = true
+		}
+	}
+	if danwei != "" {
+		where = where + " and CustomerName like '%" + danwei + "%'"
+	}
+	if CreateBy != "" {
+		where = where + " and CreateBy like '%" + CreateBy + "%'"
+	}
+	if lianxiren != "" {
+		where = where + " and Person like '%" + lianxiren + "%'"
+	}
+	if telephone != "" {
+		where = where + " and Telephone like '%" + telephone + "%'"
+	}
+	CreateOn := this.GetString("CreateOn")
+	if CreateOn != "" {
+		dates := strings.Split(CreateOn, ",")
+		if len(dates) == 2 {
+			minDate := dates[0]
+			maxDate := dates[1]
+			where = where + " and CreateOn>='" + minDate + "' and CreateOn<='" + maxDate + "'"
+		}
+	}
+
+	total := svc.GetPagingEntitiesWithOrderBytbl(this.User.AccCode, page.CurrentPage, page.Size, orderby, asc, &list, where)
+	var datainfo DataInfo
+	datainfo.Items = list
+	datainfo.CurrentItemCount = total
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 添加客户原始信息内容
+// @Description 新增客户原始信息内容
+// @Param	body	body	business.device.DeviceChannels	"客户原始信息内容"
+// @Success	200	{object} controllers.Request
+// @router /customerlistadd [post]
+func (this *CustomerController) Customerlistadd() {
+	var testlistentity customer.Customer
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &testlistentity)
+	testlistentity.CreateBy = this.User.Realname
+	testlistentity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+	testlistentity.AuthCode = utils.GetGuid()
+	svc := customer.GetCustomerService(utils.DBE)
+	_, err := svc.InsertEntityBytbl(this.User.AccCode+CustomerName, &testlistentity)
+	var errinfo ErrorInfo
+	if err == nil {
+		errinfo.Message = "操作成功!"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 获取编辑时的客户原始信息内容
+// @Description 获取编辑时的客户原始信息内容
+// @Success 200 {object} business.device.DeviceChannels
+// @router /getcustomerlist/:id [get]
+func (this *CustomerController) Getcustomerlist() {
+	id := this.Ctx.Input.Param(":id")
+	var model customer.Customer
+	svc := customer.GetCustomerService(utils.DBE)
+	svc.GetEntityByIdBytbl(this.User.AccCode+CustomerName, id, &model) //修改时获取列表
+	var datainfo DataInfo
+	datainfo.Items = model
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 编辑试管信息
+// @Description 编辑试管信息
+// @Param	id	path	string	true		"需要修改的试管信息"
+// @Param	body	body	business.device.DeviceChannels	"试管信息"
+// @Success	200	{object} controllers.Request
+// @router /customerlistedit/:id [put]
+func (this *CustomerController) Customerlistedit() {
+	id := this.Ctx.Input.Param(":id")
+	var errinfo ErrorInfo
+	if id == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+	var model customer.Customer
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &model)
+	var entityempty customer.Customer
+	model.ModifiedBy = this.User.Realname
+	model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
+	svc := customer.GetCustomerService(utils.DBE)
+
+	opdesc := "检验-" + model.Person
+	var cols []string = []string{"CustomerName", "Person", "Telephone", "Mailbox", "Address", "AuthCode", "CustomerName", "CustomerCode", "Established", "EmployeesNum", "EnterpriseType", "ZipCode", "FaxTelephone", "Website", "Representative", "MainBusiness", "ViceBusiness", "ModifiedBy", "ModifiedUserId"}
+	err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+CustomerName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "客户管理")
+	if err == nil {
+		errinfo.Message = "操作成功!"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 删除单条信息
+// @Description
+// @Success 200 {object} ErrorInfo
+// @Failure 403 :id 为空
+// @router /customerlistdelete/:Id [delete]
+func (this *CustomerController) Customerlistdelete() {
+	Id := this.Ctx.Input.Param(":Id")
+	var errinfo ErrorInfo
+	if Id == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+	where := " Id= " + Id
+	svc := customer.GetCustomerService(utils.DBE)
+	err := svc.DeleteEntityBytbl(this.User.AccCode+CustomerName, where)
+	if err == nil {
+		errinfo.Message = "删除成功"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 判断合同是否存在
+// @Description get user by token
+// @Success 200 {object} models.Userblood
+// @router /contractNoorlist [get]
+func (this *CustomerController) ContractNoorlist() {
+	ContractNo := this.GetString("ContractNo")
+	svc := customer.GetCustomerService(utils.DBE)
+	where := " ContractNo= '" + ContractNo + "'"
+	total := svc.GetContractNo(this.User.AccCode+CellsContractName, where)
+
+	var datainfo DataInfo
+	datainfo.Items = total
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 保存附件
+// @Description 保存附件
+// @Success 200 {object}
+// @router /savesampleattach [put]
+func (this *CustomerController) SaveSampleAttach() {
+	// 获得前端传输的model
+	var jsonblob = this.Ctx.Input.RequestBody
+	var upmodel contractFormmodel
+	json.Unmarshal(jsonblob, &upmodel)
+	var errinfo ErrorInfo
+	if len(upmodel.AttachmodelList) == 0 {
+		errinfo.Message = "上传失败!无附件信息"
+		errinfo.Code = -3
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+	//---附件---
+	var attachmodel customer.CellsContractAttachment
+	attachmodel.CreateBy = this.User.Realname
+	attachmodel.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+	attachmodel.PId = upmodel.PId
+	svc := customer.GetCustomerService(utils.DBE)
+	var err error
+	for _, val := range upmodel.AttachmodelList {
+
+		attachmodel.FileId = val.FileId
+		attachmodel.FileName = val.FileName
+		attachmodel.FileSize = val.FileSize
+		attachmodel.Host = val.Host
+		attachmodel.UploadDesc = val.UploadDesc
+		_, err = svc.InsertEntityBytbl(this.User.AccCode+CellsContractAttachmentName, &attachmodel)
+	}
+	if err == nil {
+		errinfo.Message = "保存成功"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "上传失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 质量管理根据id信息查询附件
+// @Description get user by token
+// @Success 200 {object} models.Userblood
+// @router /getcontractAttachment [get]
+func (this *CustomerController) GetcontractAttachment() {
+	PId := this.GetString("PId")
+	svc := customer.GetCustomerService(utils.DBE)
+	where := " PId= '" + PId + "'"
+	total := svc.GetCustomerAttachment(this.User.AccCode+CellsContractAttachmentName, where)
+	var datainfo DataInfo
+	datainfo.Items = total
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title  根据id删除合同管理附件
+// @Description
+// @Success 200 {object} ErrorInfo
+// @Failure 403 :id 为空
+// @router /contractAttachmentdeletearrt/:Id [delete]
+func (this *CustomerController) ContractAttachmentdeletearrt() {
+	Id := this.Ctx.Input.Param(":Id")
+	var errinfo ErrorInfo
+	if Id == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+	where := " PId= " + Id
+	svc := customer.GetCustomerService(utils.DBE)
+
+	err := svc.DeleteEntityBytbl(this.User.AccCode+CellsContractAttachmentName, where)
+
+	if err == nil {
+		errinfo.Message = "删除成功"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 更改用户授权码
+// @Description 更改用户授权码
+// @Param	body	body	business.device.DeviceChannels	"更改用户授权码"
+// @Success	200	{object} controllers.Request
+// @router /authCodeedit [get]
+func (this *CustomerController) GetauthCode() {
+	var testlistentity customer.Customer
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &testlistentity)
+	testlistentity.AuthCode = utils.GetGuid()
+	var datainfo DataInfo
+	datainfo.Items = testlistentity.AuthCode
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+
+}

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

@@ -360,8 +360,8 @@ func (this *SampleOperationController) AutoBarCodeModel() (string, string) {
 // @Title 根据样本类型获取自动编码数据
 // @Description get SampleType by token
 // @Success 200 {object} sampletype.SampleType
-// @router /getautobarcodeandsampletypebysampleitem [get]
-func (this *SampleOperationController) GetAutoBarCodeModelandsampletypeBysampleitem() {
+// @router /getbarcodeandsampletype [get]
+func (this *SampleOperationController) GetBarCodeModelandsampletype() {
 	//自动生成编码
 	var coderule_list []coderule.CodeRule
 	var coderuledetail_list []coderule.CodeRuleDetail

+ 715 - 0
src/dashoo.cn/backend/api/controllers/system/orderadd.go

@@ -0,0 +1,715 @@
+package system
+
+import (
+	"encoding/json"
+	"fmt"
+	"strings"
+	"time"
+
+	"dashoo.cn/backend/api/business/coustominformation"
+	"dashoo.cn/backend/api/business/orders"
+	"dashoo.cn/backend/api/business/organize"
+	. "dashoo.cn/backend/api/controllers"
+	"dashoo.cn/utils"
+)
+
+// Operations about Users
+type OrderaddController struct {
+	BaseController
+}
+
+type Orderadd struct {
+	//客户信息
+	IdCard        string `json:"IdCard"`
+	Name          string `json:"Name"`
+	Sex           string `json:"Sex"`
+	Age           string `json:"Age"`
+	Telephone     string `json:"Telephone"`
+	Email         string `json:"Email"`
+	HomeAddress   string `json:"HomeAddress"`
+	RightDisease  string `json:"RightDisease"`
+	FamilyDisease string `json:"FamilyDisease"`
+
+	//订单信息
+	OrderTypeName     string    `json:"OrderTypeName"`
+	OrderType         int       `json:"OrderType"`
+	OrderNum          int64     `json:"OrderNum"`
+	OrderData         time.Time `json:"OrderData"`
+	OrderPrice        string    `json:"OrderPrice"`
+	OrderSales        string    `json:"OrderSales"`
+	Hospital          string    `json:"Hospital"`
+	Department        string    `json:"department"`
+	AdmissonNumbe     string    `json:"AdmissonNumbe"`
+	Disblood          string    `json:"Disblood"`
+	Entity            string    `json:"Entity"`
+	ClinicalDiagnosis string    `json:"ClinicalDiagnosis"`
+	State             string    `json:"State"`
+	TState            int       `json:"TState"`
+
+	//制备信息
+	CellType    string `json:"CellType"`
+	BackNum     string `json:"BackNum"`
+	Volume      string `json:"Volume"`
+	AnotherFrom string `json:"AnotherFrom"`
+	AnotherInfo string `json:"AnotherInfo"`
+	//细胞存储信息
+	SelfCell    string `json:"SelfCell"`
+	AdiposeCell string `json:"AdiposeCell"`
+	SampleFrom  string `json:"SampleFrom"`
+	//基因信息
+	SusceptibleGene string    `json:"Susceptiblegene"`
+	CtDNA           string    `json:"CtDNA"`
+	CancerDetaction string    `json:"Cancerdetaction"`
+	GatherTime      time.Time `json:"GatherTime"`
+	OutlibTime      time.Time `json:"OutlibTime"`
+}
+
+// @Title 新增细胞订单
+// @Description
+// @Success    200    {object} controllers.Request
+// @router / [post]
+func (this *OrderaddController) AddUser() {
+	var model Orderadd
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &model)
+	var errinfo ErrorInfo
+	var cellpd orders.CellProduct
+	var custominfo coustominformation.Coustom_Information
+	var ordinfo orders.Order_Information
+	utils.AutoMap(&custominfo, &model)
+	utils.AutoMap(&ordinfo, &model)
+	utils.AutoMap(&cellpd, &model)
+
+	svc := orders.GetCellproductService(utils.DBE)
+	svb := coustominformation.GetCoustominfomationService(utils.DBE)
+	sva := orders.GetOrderinfoService(utils.DBE)
+	_, err1 := svc.InsertEntityBytbl(this.User.AccCode+CellProductName, &cellpd)
+	_, err2 := svb.InsertEntityBytbl(this.User.AccCode+Coustom_InformationName, &custominfo)
+	_, err3 := sva.InsertEntityBytbl(this.User.AccCode+Order_InformationName, &ordinfo)
+	if err1 == nil && err2 == nil && err3 == nil {
+		errinfo.Message = "新增细胞产品订单成功"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	} else {
+		errinfo.Message = "添加失败!" + utils.AlertProcess(err1.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+}
+
+// @Title get订单信息
+// @Description get user by token
+// @Success 200 {object} models.Userblood
+// @router /orderviewlist [get]
+func (this *OrderaddController) Orderviewlist() {
+	page := this.GetPageInfoForm()
+	where := "1 = 1 "
+	OrderType := this.GetString("ordertype")
+	TState := this.GetString("TState")
+	State := this.GetString("State")
+	if OrderType != "" {
+		where = where + " and OrderType = " + OrderType
+	}
+	if TState != "" {
+		where = where + " and TState = " + TState
+	}
+	if State != "" {
+		where = where + " and State = " + State
+	}
+	svc := orders.GetOrderinfoService(utils.DBE)
+	total, list := svc.GetPagingOrderviewlist(page.CurrentPage, page.Size, "Id desc", where, this.User.AccCode)
+	//根据组织ID查询父级并输出
+	svv := organize.GetOrganizeService(utils.DBE)
+	var i int
+	var listtotal int
+	var length int
+	length = len(list)
+	if length < int(page.Size) {
+		listtotal = length
+	} else {
+		listtotal = int(page.Size)
+	}
+	for i = 0; i < listtotal; i++ {
+		var hoapital = ""
+		model := svv.GetAllParentByTopAccCode(list[i].Hospital, this.User.AccCode)
+		arr := strings.Split(model, ",")
+		for j := len(arr) - 4; j >= 0; j-- {
+			if j == 0 {
+				where := " Id= " + arr[j]
+				entity := svv.QueryEntity(where)
+				hoapital += entity.Fullname
+			} else {
+				where := " Id= " + arr[j]
+				entity := svv.QueryEntity(where)
+				hoapital += entity.Fullname + "/"
+			}
+		}
+		list[i].Hospital = hoapital
+	}
+	var datainfo DataInfo
+	datainfo.Items = list
+	datainfo.CurrentItemCount = total
+	datainfo.PageIndex = page.CurrentPage
+	datainfo.ItemsPerPage = page.Size
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title get订单查询
+// @Success 200 {object} controllers.Request
+// @router /ordersearch [get]
+func (this *OrderaddController) Ordersearch() {
+	page := this.GetPageInfoForm()
+	where := "a.Id != 0 "
+	Name := this.GetString("Name")
+	if Name != "" {
+		where = where + "and a.Name like '%" + Name + "%' "
+	}
+	Hospital := this.GetString("Hospital")
+	if Hospital != "" {
+		where = where + "and a.Hospital like '%" + Hospital + "%' "
+	}
+	OrderNum := this.GetString("OrderNum")
+	if OrderNum != "" {
+		where = where + "and a.OrderNum like '%" + OrderNum + "%' "
+	}
+	Disblood := this.GetString("Disblood")
+	if Disblood != "" {
+		where = where + "and a.Disblood like '%" + Disblood + "%' "
+	}
+	CreateOnstart, _ := this.GetInt64("StartData")
+	if CreateOnstart != 0 {
+		fmt.Println("x--", CreateOnstart)
+		where = where + "and a.OrderData >'" + time.Unix(CreateOnstart/1000, 0).Format("2006-01-02") + "'"
+	}
+	CreateOnend, _ := this.GetInt64("EndData")
+	if CreateOnend != 0 {
+		fmt.Println("x--", CreateOnend)
+		where = where + "and a.OrderData <'" + time.Unix(CreateOnend/1000, 0).Format("2006-01-02") + " 23:59:59'"
+	}
+	svc := orders.GetOrderinfoService(utils.DBE)
+	var list []orders.Order_Information
+	total, list := svc.GetinfoWithOrderSearch(page.CurrentPage, page.Size, "Id desc", where, this.User.AccCode)
+	svv := organize.GetOrganizeService(utils.DBE)
+	var i int64
+	for i = 0; i < total; i++ {
+		var hoapital = ""
+		model := svv.GetAllParentByTopAccCode(list[i].Hospital, this.User.AccCode)
+		arr := strings.Split(model, ",")
+		for j := len(arr) - 4; j >= 0; j-- {
+			if j == 0 {
+				where := " Id= " + arr[j]
+				entity := svv.QueryEntity(where)
+				hoapital += entity.Fullname
+			} else {
+				where := " Id= " + arr[j]
+				entity := svv.QueryEntity(where)
+				hoapital += entity.Fullname + "/"
+			}
+		}
+		list[i].Hospital = hoapital
+	}
+	var datainfo DataInfo
+	datainfo.Items = list
+	datainfo.CurrentItemCount = total
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 修改订单状态
+// @Description
+// @Param	OrderNum	path	string	true
+// @Success	200	{object} controllers.Request
+// @router /changeordetstate/:id [put]
+func (this *OrderaddController) ChangeOrdetState() {
+	OrderNum := this.Ctx.Input.Param(":id")
+	var errinfo ErrorInfo
+	var model Orderadd
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &model)
+	svc := orders.GetOrderinfoService(utils.DBE)
+	flag := svc.UpdateOrderStata(OrderNum, "State", this.User.AccCode)
+	if flag == 1 {
+		errinfo.Message = "审核成功"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "审核失败!"
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Description get user by token
+// @Success 200 {object} models.Userblood
+// @router /delete/:Id [delete]
+func (this *OrderaddController) Orderdelete() {
+	id := this.Ctx.Input.Param(":Id")
+	OrderNum := this.GetString("OrderNum")
+	num := OrderNum
+	var errinfo ErrorInfo
+	var entity orders.Order_Information
+	var entityempty orders.Order_Information
+	opdesc := "删除订单"
+	tabledesc := "申请单模块"
+	svc := orders.GetOrderinfoService(utils.DBE)
+	flag := svc.DeleteOrderInfo(num, this.User.AccCode)
+	err := svc.DeleteOperationAndWriteLogBytbl(this.User.AccCode+Order_InformationName, BaseOperationLogName, id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, tabledesc)
+	if err == nil && flag == 1 {
+		errinfo.Message = "删除成功"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title get
+// @Description get SampleType by token
+// @Success 200 {object} controllers.Request
+// @router /ordersed/:OrderNum [get]
+func (this *OrderaddController) Ordersed() {
+	svc := orders.GetOrderinfoService(utils.DBE)
+	OrderNum := this.Ctx.Input.Param(":OrderNum")
+	var entity orders.Order_Information
+	where := " OrderNum=" + OrderNum + ""
+	entity = svc.QueryOrderEntity(where, this.User.AccCode)
+	var datainfo DataInfo
+	datainfo.Items = entity
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 客户样本详细信息 根据ORDNUM查找get
+// @Description get SampleType by token
+// @Success 200 {object} controllers.Request
+// @router /coustom/:OrderNum [get]
+func (this *OrderaddController) Coustom() {
+	svc := coustominformation.GetCoustominfomationService(utils.DBE)
+	OrderNum := this.Ctx.Input.Param(":OrderNum")
+	var entity coustominformation.Coustom_Information
+	where := " OrderNum=" + OrderNum + ""
+	entity = svc.QueryCoustominfomationEntity(where, this.User.AccCode)
+	var datainfo DataInfo
+	datainfo.Items = entity
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 获取订单号
+// @Description get SampleType by token
+// @Success 200 {object} controllers.Request
+// @router /getOrderNum [get]
+func (this *OrderaddController) GetOrderNum() {
+	entity := GetRandomOrderNum()
+	var datainfo DataInfo
+	datainfo.Items = entity
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 客户样本详细信息 根据身份证号查找
+// @Description get SampleType by token
+// @Success 200 {object} controllers.Request
+// @router /searchByIdCard [get]
+func (this *OrderaddController) FindCoustomByIdCard() {
+	svc := coustominformation.GetCoustominfomationService(utils.DBE)
+	IdCard := this.GetString("idcard")
+	var entity coustominformation.Coustom_Information
+	where := " IdCard=" + IdCard + ""
+	entity = svc.QueryCoustominfomationEntity(where, this.User.AccCode)
+	var datainfo DataInfo
+	datainfo.Items = entity
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 细胞治疗详细信息
+// @Description get SampleType by token
+// @Success 200 {object} controllers.Request
+// @router /cellproducted/:OrderNum [get]
+func (this *OrderaddController) Cellproducted() {
+	svc := orders.GetCellproductService(utils.DBE)
+	OrderNum := this.Ctx.Input.Param(":OrderNum")
+	var entity orders.CellProduct
+	where := " OrderNum=" + OrderNum + ""
+	entity = svc.QueryCellpoductEntity(where, this.User.AccCode)
+	var datainfo DataInfo
+	datainfo.Items = entity
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 细胞储存详细信息
+// @Description get SampleType by token
+// @Success 200 {object} controllers.Request
+// @router /cellsave/:OrderNum [get]
+func (this *OrderaddController) Cellsave() {
+	svc := orders.GetCellsaveinfoService(utils.DBE)
+	OrderNum := this.Ctx.Input.Param(":OrderNum")
+	var entity orders.CellSave
+	where := " OrderNum=" + OrderNum + ""
+	entity = svc.QueryCellsaveEntity(where, this.User.AccCode)
+	var datainfo DataInfo
+	datainfo.Items = entity
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 基因治疗详细信息
+// @Description get SampleType by token
+// @Success 200 {object} controllers.Request
+// @router /geneproduct/:OrderNum [get]
+func (this *OrderaddController) Geneproduct() {
+	svc := orders.GetGeneproductService(utils.DBE)
+	OrderNum := this.Ctx.Input.Param(":OrderNum")
+	var entity orders.GeneProduct
+	where := " OrderNum=" + OrderNum + ""
+	entity = svc.QueryGeneproductEntity(where, this.User.AccCode)
+	var datainfo DataInfo
+	datainfo.Items = entity
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 编辑细胞制备样本
+// @Description 编辑存储样本
+// @Param	OrderNum	path	string	true		"需要修改的传感器编号"
+// @Param	body	body	business.device.DeviceChannels	"传感器信息"
+// @Success	200	{object} controllers.Request
+// @router /productedit/:OrderNum [put]
+func (this *OrderaddController) ProductEdit() {
+	OrderNum := this.Ctx.Input.Param(":OrderNum")
+	var errinfo ErrorInfo
+	if OrderNum == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+	var model orders.CellProduct
+	var model1 orders.Order_Information
+	var model2 coustominformation.Coustom_Information
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &model)
+	json.Unmarshal(jsonblob, &model1)
+	json.Unmarshal(jsonblob, &model2)
+
+	var entityempty orders.CellProduct
+	var entityempty1 orders.Order_Information
+	var entityempty2 coustominformation.Coustom_Information
+
+	svc := orders.GetCellproductService(utils.DBE)
+	svb := orders.GetOrderinfoService(utils.DBE)
+	sva := coustominformation.GetCoustominfomationService(utils.DBE)
+
+	model.Id, _ = utils.StrTo(this.User.Id).Int()
+	opdesc := "编辑存储样本-" + utils.ToStr(model.OrderNum)
+	var cols []string = []string{"CellType", "BackNum", "Volume", "SampleFrom", "AnotherFrom", "AnotherInfo"}
+	err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+CellProductName, BaseOperationLogName, OrderNum, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "订单模块")
+
+	var cols1 []string = []string{"OrderData", "Name", "OrderData", "OrderPrice", "OrderSales", "Hospital", "Department", "AdmissonNumbe", "Disblood", "Entity", "ClinicalDiagnosis"}
+	err1 := svb.UpdateOperationAndWriteLogBytbl(this.User.AccCode+Order_InformationName, BaseOperationLogName, OrderNum, &model1, &entityempty1, cols1, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "订单模块")
+	var cols2 []string = []string{"IdCard", "Name", "Sex", "Age", "Telephone", "Email", "HomeAddress", "RightDisease", "Hospital", "FamilyDisease"}
+	err2 := sva.UpdateOperationAndWriteLogBytbl(this.User.AccCode+Coustom_InformationName, BaseOperationLogName, OrderNum, &model2, &entityempty2, cols2, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "订单模块")
+	if err == nil && err1 == nil && err2 == nil {
+		errinfo.Message = "修改信息成功!"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 编辑基因样本
+// @Description 编辑存储样本
+// @Param	OrderNum	path	string	true		"需要修改的传感器编号"
+// @Param	body	body	business.device.DeviceChannels	"传感器信息"
+// @Success	200	{object} controllers.Request
+// @router /geneedit/:OrderNum [put]
+func (this *OrderaddController) Geneedit() {
+	OrderNum := this.Ctx.Input.Param(":OrderNum")
+	var errinfo ErrorInfo
+	if OrderNum == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+	var model orders.GeneProduct
+	var model1 orders.Order_Information
+	var model2 coustominformation.Coustom_Information
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &model)
+	json.Unmarshal(jsonblob, &model1)
+	json.Unmarshal(jsonblob, &model2)
+
+	var entityempty orders.GeneProduct
+	var entityempty1 orders.Order_Information
+	var entityempty2 coustominformation.Coustom_Information
+
+	svc := orders.GetGeneproductService(utils.DBE)
+	svb := orders.GetOrderinfoService(utils.DBE)
+	sva := coustominformation.GetCoustominfomationService(utils.DBE)
+
+	model.Id, _ = utils.StrTo(this.User.Id).Int()
+	opdesc := "编辑基因样本-" + utils.ToStr(model.OrderNum)
+	var cols []string = []string{"SusceptibleGene", "CtDNA", "CancerDetaction", "SampleFrom", "AnotherFrom", "AnotherInfo"}
+	err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+GeneProductName, BaseOperationLogName, OrderNum, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "订单模块")
+	var cols1 []string = []string{"OrderData", "Name", "OrderData", "OrderPrice", "OrderSales", "Hospital", "Department", "AdmissonNumbe", "Disblood", "Entity", "ClinicalDiagnosis"}
+	err1 := svb.UpdateOperationAndWriteLogBytbl(this.User.AccCode+Order_InformationName, BaseOperationLogName, OrderNum, &model1, &entityempty1, cols1, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "订单模块")
+	var cols2 []string = []string{"IdCard", "Name", "Sex", "Age", "Telephone", "Email", "HomeAddress", "RightDisease", "FamilyDisease"}
+	err2 := sva.UpdateOperationAndWriteLogBytbl(this.User.AccCode+Coustom_InformationName, BaseOperationLogName, OrderNum, &model2, &entityempty2, cols2, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "订单模块")
+	if err == nil && err1 == nil && err2 == nil {
+		errinfo.Message = "修改信息成功!"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 编辑细胞存储样本
+// @Description 编辑存储样本
+// @Param	OrderNum	path	string	true		"需要修改的传感器编号"
+// @Param	body	body	business.device.DeviceChannels	"传感器信息"
+// @Success	200	{object} controllers.Request
+// @router /cellsaveedit/:OrderNum [put]
+func (this *OrderaddController) Cellsaveedit() {
+	OrderNum := this.Ctx.Input.Param(":OrderNum")
+	var errinfo ErrorInfo
+	if OrderNum == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+	var model orders.CellSave
+	var model1 orders.Order_Information
+	var model2 coustominformation.Coustom_Information
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &model)
+	json.Unmarshal(jsonblob, &model1)
+	json.Unmarshal(jsonblob, &model2)
+
+	var entityempty orders.CellSave
+	var entityempty1 orders.Order_Information
+	var entityempty2 coustominformation.Coustom_Information
+
+	svc := orders.GetCellsaveinfoService(utils.DBE)
+	svb := orders.GetOrderinfoService(utils.DBE)
+	sva := coustominformation.GetCoustominfomationService(utils.DBE)
+
+	model.Id, _ = utils.StrTo(this.User.Id).Int()
+	opdesc := "编辑存储样本-" + utils.ToStr(model.OrderNum)
+	var cols []string = []string{"AdiposeCell", "SelfCell", "SampleFrom", "AnotherFrom", "AnotherInfo"}
+	err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+CellSaveName, BaseOperationLogName, OrderNum, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "订单模块")
+	var cols1 []string = []string{"OrderData", "Name", "OrderData", "OrderPrice", "OrderSales", "Hospital", "Department", "AdmissonNumbe", "Disblood", "Entity", "ClinicalDiagnosis"}
+	err1 := svb.UpdateOperationAndWriteLogBytbl(this.User.AccCode+Order_InformationName, BaseOperationLogName, OrderNum, &model1, &entityempty1, cols1, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "订单模块")
+	var cols2 []string = []string{"IdCard", "Name", "Sex", "Age", "Telephone", "Email", "HomeAddress", "RightDisease", "FamilyDisease"}
+	err2 := sva.UpdateOperationAndWriteLogBytbl(this.User.AccCode+Coustom_InformationName, BaseOperationLogName, OrderNum, &model2, &entityempty2, cols2, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "订单模块")
+	if err == nil && err1 == nil && err2 == nil {
+		errinfo.Message = "修改信息成功!"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}
+
+// @Title 创建用户
+// @Description 创建用户
+// @Param	body	body	business.device.DeviceChannels	"传感器信息"
+// @Success	200	{object} controllers.Request
+// @router /cellsaved [post]
+func (this *OrderaddController) Cellsaved() {
+	var model Orderadd
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &model)
+	var errinfo ErrorInfo
+
+	var cellsaveinfo orders.CellSave
+	var custominfo coustominformation.Coustom_Information
+	var ordinfo orders.Order_Information
+
+	custominfo.IdCard = model.IdCard
+	custominfo.Name = model.Name
+	custominfo.Sex = model.Sex
+	custominfo.Age = model.Age
+	custominfo.Telephone = model.Telephone
+	custominfo.Email = model.Email
+	custominfo.HomeAddress = model.HomeAddress
+	custominfo.RightDisease = model.RightDisease
+	custominfo.FamilyDisease = model.FamilyDisease
+	custominfo.Hospital = model.Hospital
+	custominfo.OrderNum = model.OrderNum
+
+	ordinfo.OrderData = model.OrderData
+	ordinfo.OrderPrice = model.OrderPrice
+	ordinfo.OrderSales = model.OrderSales
+	ordinfo.OrderNum = model.OrderNum
+	ordinfo.Hospital = model.Hospital
+	ordinfo.Department = model.Department
+	ordinfo.AdmissonNumbe = model.AdmissonNumbe
+	ordinfo.Disblood = model.Disblood
+	ordinfo.Entity = model.Entity
+	ordinfo.ClinicalDiagnosis = model.ClinicalDiagnosis
+	ordinfo.OrderType = model.OrderType
+	ordinfo.OrderTypeName = model.OrderTypeName
+	ordinfo.GatherTime = model.GatherTime
+	ordinfo.Name = model.Name
+	ordinfo.OrderType = model.OrderType
+	ordinfo.State = model.State
+
+	cellsaveinfo.AdiposeCell = model.AdiposeCell
+	cellsaveinfo.AnotherInfo = model.AnotherInfo
+	cellsaveinfo.SampleFrom = model.SampleFrom
+	cellsaveinfo.SelfCell = model.SelfCell
+	cellsaveinfo.AnotherFrom = model.AnotherFrom
+	cellsaveinfo.OrderNum = model.OrderNum
+
+	svc := orders.GetCellsaveinfoService(utils.DBE)
+	svb := coustominformation.GetCoustominfomationService(utils.DBE)
+	sva := orders.GetOrderinfoService(utils.DBE)
+	_, err1 := svc.InsertEntityBytbl(this.User.AccCode+CellSaveName, &cellsaveinfo)
+	_, err2 := svb.InsertEntityBytbl(this.User.AccCode+Coustom_InformationName, &custominfo)
+	_, err3 := sva.InsertEntityBytbl(this.User.AccCode+Order_InformationName, &ordinfo)
+	if err1 == nil && err2 == nil && err3 == nil {
+		errinfo.Message = "新增细胞存储订单成功"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	} else {
+		errinfo.Message = "添加失败!" + utils.AlertProcess(err1.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+
+}
+
+// @Title 获取细胞存储订单号
+// @Description get SampleType by token
+// @Success 200 {object} controllers.Request
+// @router /getOrderNumcell [get]
+func (this *OrderaddController) GetOrderNumcell() {
+	entity := GetRandomOrderNum()
+	var datainfo DataInfo
+	datainfo.Items = entity
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+//新增基因产品
+// @Title 创建用户
+// @Description 创建用户
+// @Param	body	body	business.device.DeviceChannels	"传感器信息"
+// @Success	200	{object} controllers.Request
+// @router /genelist [post]
+func (this *OrderaddController) Genelist() {
+	var model Orderadd
+	var jsonblob = this.Ctx.Input.RequestBody
+	json.Unmarshal(jsonblob, &model)
+	var errinfo ErrorInfo
+
+	var gene orders.GeneProduct
+	var custominfo coustominformation.Coustom_Information
+	var ordinfo orders.Order_Information
+
+	custominfo.IdCard = model.IdCard
+	custominfo.Name = model.Name
+	custominfo.Sex = model.Sex
+	custominfo.Age = model.Age
+	custominfo.Telephone = model.Telephone
+	custominfo.Email = model.Email
+	custominfo.HomeAddress = model.HomeAddress
+	custominfo.RightDisease = model.RightDisease
+	custominfo.FamilyDisease = model.FamilyDisease
+	custominfo.Hospital = model.Hospital
+	custominfo.OrderNum = model.OrderNum
+
+	ordinfo.Name = model.Name
+	ordinfo.OrderData = model.OrderData
+	ordinfo.OrderNum = model.OrderNum
+	ordinfo.OrderPrice = model.OrderPrice
+	ordinfo.OrderSales = model.OrderSales
+	ordinfo.Hospital = model.Hospital
+	ordinfo.Department = model.Department
+	ordinfo.AdmissonNumbe = model.AdmissonNumbe
+	ordinfo.Disblood = model.Disblood
+	ordinfo.Entity = model.Entity
+	ordinfo.ClinicalDiagnosis = model.ClinicalDiagnosis
+	ordinfo.OrderType = model.OrderType
+	ordinfo.OrderTypeName = model.OrderTypeName
+	ordinfo.GatherTime = model.GatherTime
+	ordinfo.OutlibTime = model.OutlibTime
+	ordinfo.State = model.State
+
+	gene.SusceptibleGene = model.SusceptibleGene
+	gene.CtDNA = model.CtDNA
+	gene.CancerDetaction = model.CancerDetaction
+	gene.SampleFrom = model.SampleFrom
+	gene.AnotherInfo = model.AnotherInfo
+	gene.AnotherFrom = model.AnotherFrom
+	gene.OrderNum = model.OrderNum
+
+	svc := orders.GetGeneproductService(utils.DBE)
+	svb := coustominformation.GetCoustominfomationService(utils.DBE)
+	sva := orders.GetOrderinfoService(utils.DBE)
+	_, err1 := svc.InsertEntityBytbl(this.User.AccCode+GeneProductName, &gene)
+	_, err2 := svb.InsertEntityBytbl(this.User.AccCode+Coustom_InformationName, &custominfo)
+	_, err3 := sva.InsertEntityBytbl(this.User.AccCode+Order_InformationName, &ordinfo)
+	if err1 == nil && err2 == nil && err3 == nil {
+		errinfo.Message = "新增基因产品订单成功"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	} else {
+		errinfo.Message = "添加失败!" + utils.AlertProcess(err1.Error())
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+
+}
+
+// @Title 获取基因产品订单号
+// @Description get SampleType by token
+// @Success 200 {object} controllers.Request
+// @router /getOrderNumgene [get]
+func (this *OrderaddController) GetOrderNumgene() {
+	entity := GetRandomOrderNum()
+	var datainfo DataInfo
+	datainfo.Items = entity
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}

+ 23 - 1
src/dashoo.cn/backend/api/routers/router.go

@@ -9,6 +9,7 @@ import (
 	"dashoo.cn/backend/api/controllers/casbin"
 	"dashoo.cn/backend/api/controllers/document"
 	"dashoo.cn/backend/api/controllers/equipment"
+	"dashoo.cn/backend/api/controllers/family"
 	"dashoo.cn/backend/api/controllers/instrument"
 	"dashoo.cn/backend/api/controllers/logs"
 	"dashoo.cn/backend/api/controllers/material"
@@ -89,6 +90,11 @@ func init() {
 				&system.CodecSequenceController{},
 			),
 		),
+		beego.NSNamespace("/orderadd",
+			beego.NSInclude(
+				&system.OrderaddController{},
+			),
+		),
 		//数据导出
 		beego.NSNamespace("/dataexports",
 			beego.NSInclude(
@@ -197,6 +203,22 @@ func init() {
 				&instrument.InstrumentController{},
 			),
 		),
+		//客户管理
+		beego.NSNamespace("/customer",
+			beego.NSInclude(
+				&family.CustomerController{},
+			),
+		),
+		beego.NSNamespace("/familyman",
+			beego.NSInclude(
+				&family.CustomerController{},
+			),
+		),
+		beego.NSNamespace("/familydetail",
+			beego.NSInclude(
+				&family.CustomerController{},
+			),
+		),
 		//样本管理
 		beego.NSNamespace("/sampletype",
 			beego.NSInclude(
@@ -215,7 +237,7 @@ func init() {
 		),
 		beego.NSNamespace("/sampleoperation",
 			beego.NSInclude(
-				&samplesinfo.SampleorganController{},
+				&samplesinfo.SampleOperationController{},
 			),
 		),
 		beego.NSNamespace("/sampleorgan",

+ 1 - 1
src/dashoo.cn/frontend_web/nuxt.config.ignore.js

@@ -169,7 +169,7 @@ module.exports = {
     'pages/report/**/*.*',
     'pages/sampleboard/**/*.*',
     'pages/samples/**/*.*',
-    'pages/sampletest/**/*.*',
+    // 'pages/sampletest/**/*.*',
     /*'pages/setting/!**!/!*.*',*/
     'pages/transferLab/**/*.*',
   ]

+ 21 - 21
src/dashoo.cn/frontend_web/src/assets/styles/modules/header.scss

@@ -4,16 +4,16 @@
 .header {
   display: flex;
   padding: 0 .5rem;
-  background-color: #2b3b49;
-  //padding: 0 0;
-  //background-color:white;
+  // padding: 0 0;
+  background-color:#2b3b49;
+  // background-color:#2b3b49;
 
-  >.brand {
+  > .brand {
     margin: 0 1rem 0 0;
     font: italic ($header-height * .625) sans-serif;
     line-height: $header-height;
 
-    >a {
+    > a {
       color: $brand-color;
 
       &:hover {
@@ -21,25 +21,25 @@
       }
     }
 
-    &:hover {
+    &:hover  {
       color: $brand-hover-color;
     }
   }
 
-  >.toolbar {
+  > .toolbar {
     display: flex;
     flex: 1;
 
-    >.list {
+    > .list {
       display: flex;
       list-style: none;
       margin: 0;
       padding: 0;
 
-      >.item {
+      > .item {
         position: relative;
 
-        >a {
+        > a {
           display: block;
           padding: 0 .625rem;
           color: $menu-item-color;
@@ -50,7 +50,7 @@
             margin-right: .3125rem;
           }
 
-          >img {
+          > img {
             max-width: ($header-height / 2);
             max-height: ($header-height / 2);
             margin-top: -.25rem;
@@ -60,7 +60,7 @@
           }
         }
 
-        >.list {
+        > .list {
           display: none;
           list-style: none;
           position: absolute;
@@ -70,7 +70,7 @@
           padding: .625rem;
           background: $menu-item-hover-background;
 
-          >.divider::before {
+          > .divider::before {
             display: block;
             height: .0625rem;
             margin: .125rem;
@@ -78,8 +78,8 @@
             content: '';
           }
 
-          >.item {
-            >a {
+          > .item  {
+            > a {
               display: block;
               padding: .125rem;
               color: $menu-item-color;
@@ -88,7 +88,7 @@
             }
 
             &:hover {
-              >a {
+              > a {
                 color: $menu-item-hover-color;
               }
             }
@@ -96,12 +96,12 @@
         }
 
         &:hover {
-          >a {
+          > a {
             background: $menu-item-hover-background;
             color: $menu-item-hover-color;
           }
 
-          >.list {
+          > .list {
             display: block;
           }
         }
@@ -110,8 +110,8 @@
       &:last-child {
         margin-left: auto;
 
-        >.item {
-          >.list {
+        > .item {
+          > .list {
             right: 0;
             text-align: right;
           }
@@ -122,7 +122,7 @@
 }
 
 @media screen and (max-width: 568px) {
-  .header>.toolbar>.list:first-child {
+  .header > .toolbar > .list:first-child {
     display: none;
   }
 }

+ 1 - 1
src/dashoo.cn/frontend_web/src/components/sidebar.vue

@@ -19,7 +19,7 @@
       class="el-menu-vertical-demo"
       :router="true"
       default-active="/"
-      background-color="#001529"
+      background-color="#2b3b49"
       text-color="#fff"
       active-text-color="#1890FF"
       :collapse-transition="false"

+ 51 - 44
src/dashoo.cn/frontend_web/src/pages/biobank/book/_opera/operation.vue

@@ -1,27 +1,33 @@
+<style>
+  .input-with-select .el-select .el-input {
+    width: 110px;
+  }
+  .input-with-select .el-input-group__append {
+    background-color: #fff;
+  }
+</style>
+
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/book' }">样本采集</el-breadcrumb-item>
-      <el-breadcrumb-item>{{pagetitle}}</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card>
-      <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> {{pagetitle}}
+    <el-card style="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: '/biobank/book' }">样本采集</el-breadcrumb-item>
+          <el-breadcrumb-item>{{pagetitle}}</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
-          <el-button type="primary" v-if="mainForm.State == 1" :disabled="mainForm.BookStatus != 0 || !authoer_flag"
-            @click="auditorShow=true" class="el-button--small">审核</el-button>
-          <el-button v-if="service_flag=='addservice'" :disabled="Book_flag" type="primary" class="el-button--small"
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" v-if="samplebooklist && samplebooklist.length > 0"
+            :disabled="mainForm.BookStatus != 0 || !authoer_flag" @click="auditorShow=true">审核</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" :disabled="mainForm.BookStatus != 0"
             @click="savedata()">保存</el-button>
-          <el-button v-if="service_flag=='editservice'" type="primary" class="el-button--small" :disabled="BookState == '1'"
-            @click="editdata()">保存</el-button>
-          <router-link :to="'/biobank/book'">
-            <el-button type="primary" class="el-button--small" style="margin-left: 8px">返回</el-button>
-          </router-link>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" onclick="window.history.go(-1)">返回</el-button>
         </span>
       </div>
+
       <el-form :model="mainForm" ref="mainForm" label-width="110px">
         <el-row :gutter="10" class="donorsaddformcss">
           <el-col :span="24">
@@ -56,11 +62,11 @@
                   <el-input v-model="mainForm.ContainerNo" style="width: 100%" placeholder="请输入容器编号"></el-input>
                 </el-form-item>
               </el-col> -->
-              <el-col :span="8">
+              <!-- <el-col :span="8">
                 <el-form-item label="采集人员" prop="Collectors">
                   <el-input v-model="mainForm.Collectors" style="width: 100%" placeholder="请输入采集人员"></el-input>
                 </el-form-item>
-              </el-col>
+              </el-col> -->
               <el-col :span="8">
                 <el-form-item label="采集地点" prop="CollectionPlace">
                   <el-input v-model="mainForm.CollectionPlace" style="width: 100%" placeholder="请输入采集地点"></el-input>
@@ -72,7 +78,7 @@
                   </el-date-picker>
                 </el-form-item>
               </el-col>
-              <el-col :span="8">
+              <!-- <el-col :span="8">
                 <el-form-item label="交接状态">
                   <el-select v-model="mainForm.State" style="width:100%" placeholder="请选择交接状态" @change="nullReceive">
                     <el-option label="待交接" value="0"></el-option>
@@ -80,18 +86,18 @@
                     <el-option label="交接失败" value="2"></el-option>
                   </el-select>
                 </el-form-item>
-              </el-col>
-              <el-col :span="8" v-if="Book_flag || service_flag=='editservice'">
-                <el-form-item label="录入人">
-                  <el-input v-model="mainForm.CreateBy" placeholder="请输入录入人" disabled></el-input>
-                </el-form-item>
-              </el-col>
+              </el-col> -->
               <el-col :span="8">
-                <el-form-item label="接收时间" prop="ReceiveDate" v-if="mainForm.State!=0">
+                <el-form-item label="接收时间" prop="ReceiveDate">
                   <el-date-picker style="width: 100%" v-model="mainForm.ReceiveDate" type="datetime" placeholder="请选择接收日期">
                   </el-date-picker>
                 </el-form-item>
               </el-col>
+              <el-col :span="8">
+                <el-form-item label="录入人">
+                  <el-input v-model="mainForm.CreateBy" placeholder="请输入录入人" disabled></el-input>
+                </el-form-item>
+              </el-col>
               <el-col :span="8" v-if="mainForm.BookStatus != 0">
                 <el-form-item label="审核人">
                   <el-input v-model="mainForm.AuditorBy" placeholder="请输入审核人" disabled></el-input>
@@ -112,7 +118,7 @@
                 <legend style="color:#436EEE"></legend>
                 <i class="icon icon-paragraph-justify"> 样本列表</i>
                 <span style="float: right;">
-                  <el-button type="primary" class="el-button--mini" :disabled="mainForm.addflag" @click="bookdetailshow">添加</el-button>
+                  <el-button type="primary" class="el-button--mini" :disabled="mainForm.BookStatus != 0" @click="bookdetailshow">添加</el-button>
                 </span>
               </div>
               <el-table ref="samplelist" :data="samplebooklist" border tooltip-effect="dark" style="width: 100%">
@@ -140,7 +146,7 @@
       </el-form>
     </el-card>
 
-    <el-dialog :title="samplesDetailTitle" :visible.sync="bookdetailShow" width="90%">
+    <el-dialog :title="samplesDetailTitle" :visible.sync="bookdetailShow" width="1000px">
       <el-form :model="transportForm" label-width="120px" ref="transportForm">
         <el-row>
           <el-col :span="24">
@@ -174,7 +180,7 @@
       </div>
     </el-dialog>
 
-    <el-dialog title="选择协议" :visible.sync="protocolShow" top="5vh" width="80%">
+    <el-dialog title="选择协议" :visible.sync="protocolShow" top="5vh" width="1200px">
       <el-form :model="searchform" ref="protocolFom" label-width="90px">
         <el-row>
           <el-col :span="8">
@@ -287,7 +293,6 @@
         sampletypeliste: [], //样本类型
         sampeunitlist: [],
         mainForm: {
-          addflag: true,
           SourceId: '',
           CollectionNo: '',
           CollectionPlace: '',
@@ -305,7 +310,6 @@
           AuditorRemark: ''
         },
         Book_flag: false,
-        BookState: 0,
         authoer_flag: false,
         bookdetailShow: false, //执行信息弹窗
         samplesDetailTitle: '', //执行信息弹窗标题
@@ -357,6 +361,7 @@
       if (this.ServiceId == 'addbook') {
         this.pagetitle = '添加样本采集信息'
         this.service_flag = 'addservice'
+        this.mainForm.CreateBy = this.authUser.Profile.Realname
         this.$axios.get('orderadd/getOrderNumgene' + '?ordertype=' + '2')
           .then(function (response) {
             _this.mainForm.CollectionNo = response.data.items + ''
@@ -376,13 +381,9 @@
         _this.$axios.get('/samplesbook/getcollectioninfo/' + _this.ServiceId, {})
           .then(res => {
             _this.mainForm = res.data.items
-            _this.mainForm.State = _this.mainForm.State + ''
-            _this.BookState = _this.mainForm.State
+            // _this.mainForm.State = _this.mainForm.State + ''
             _this.mainForm.CollectionDate = new Date(res.data.items.CollectionDate)
             _this.mainForm.ReceiveDate = new Date(res.data.items.ReceiveDate)
-            if (_this.mainForm.State == 1) {
-              _this.mainForm.addflag = true
-            }
             if (_this.authUser.Profile.Id != res.data.items.CreateUserId) {
               _this.authoer_flag = true
             }
@@ -392,10 +393,16 @@
             console.error(err)
           })
       },
-      //添加采集信息主表
       savedata() {
+        if (this.ServiceId == 'addbook' || this.ServiceId <= '0') {
+          this.savebook()
+        } else {
+          this.editbook()
+        }
+      },
+      //添加采集信息主表
+      savebook() {
         let _this = this
-        _this.mainForm.addflag = false
         _this.mainForm.State = parseInt(_this.mainForm.State)
         _this.$axios.post('/samplesbook/addbook/', _this.mainForm)
           .then(res => {
@@ -422,7 +429,7 @@
 
       },
       //编辑采集主表信息
-      editdata() {
+      editbook() {
         let _this = this
         _this.mainForm.State = parseInt(_this.mainForm.State)
         _this.$axios.put('/samplesbook/editbook/' + _this.ServiceId, _this.mainForm)
@@ -505,9 +512,9 @@
             console.error(err)
           })
       },
-      nullReceive() {
-        this.mainForm.ReceiveDate = new Date()
-      },
+      // nullReceive() {
+      //   this.mainForm.ReceiveDate = new Date()
+      // },
       editsamples(val) {
         this.bookdetailShow = true
         this.detail_flag = 'editdetail'
@@ -690,7 +697,7 @@
       // 自动获取样本编码
       choosetype() {
         let _this = this
-        _this.$axios.get('/sampleoperation/getautobarcodeandsampletypebysampleitem?SampleType=' + _this.transportForm
+        _this.$axios.get('/sampleoperation/getbarcodeandsampletype?SampleType=' + _this.transportForm
             .SampleType, {})
           .then(res => {
             // response

+ 93 - 74
src/dashoo.cn/frontend_web/src/pages/biobank/book/index.vue

@@ -1,76 +1,39 @@
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/book' }">样本采集</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> 样本采集
+    <el-card class="box-card" style="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>样本采集</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
-          <el-button type="primary" size="small" @click="exportExcel">导出</el-button>
-          <el-button type="primary" size="small" @click="addbiobank">添加</el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出</el-button>
+          <router-link :to="'/biobank/book/addbook/operation'">
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
+          </router-link>
         </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="采集时间">
+            <el-date-picker size="mini" style="width: 220px" v-model="CollectionDate" type="daterange" range-separator="至"
+              start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-dropdown split-button type="primary" size="mini" @click="seachdata" @command="searchCommand">
+              查询
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="search">高级查询</el-dropdown-item>
+                <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </el-form-item>
+        </el-form>
       </div>
-      <el-collapse>
-        <el-collapse-item title="查询" name="1">
-          <el-form :model="searchform" ref="form" label-width="90px">
-            <el-row :gutter="20">
-              <el-col :span="8">
-                <el-form-item label="协议编码">
-                  <el-input type=" " v-model="searchform.ProtocolNo" placeholder="请输入协议单号"></el-input>
-                </el-form-item>
-              </el-col>
-              <!-- <el-col :span="8">
-                <el-form-item label="采集单号">
-                  <el-input type=" " v-model="searchform.CollectionNo" placeholder="请输入采集单编号"></el-input>
-                </el-form-item>
-              </el-col> -->
-              <el-col :span="8">
-                <el-form-item label="样本条码">
-                  <el-input type=" " v-model="searchform.BarCode" placeholder="请输入样本编码"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="监护人姓名">
-                  <el-input type=" " v-model="searchform.Name" placeholder="请输入监护人姓名"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="采集人员">
-                  <el-input type=" " v-model="searchform.Collectors" placeholder="请输入采集人员"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="采集时间">
-                  <el-date-picker v-model="CollectionDate" type="daterange" range-separator="至" start-placeholder="开始日期"
-                    end-placeholder="结束日期" style="width:100%"></el-date-picker>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="审核状态">
-                  <el-select style="width: 100%;" v-model="searchform.BookStatus" placeholder="请选择审核状态">
-                    <el-option label="未审核" value="0"></el-option>
-                    <el-option label="已审核" value="1"></el-option>
-                    <el-option label="审核异常" value="2"></el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
 
-            </el-row>
-            <el-row>
-              <el-col class="line" :span="24" style="background-color:lightgrey; line-height: 1px">&nbsp;</el-col>
-            </el-row>
-            <el-row :gutter="0" style="text-align:right;margin-top:10px;">
-              <el-button size="small" @click="seachdata" type="primary">查询</el-button>
-              <el-button type="primary" class="el-button--small" @click="clearSearch" style="margin-left:8px">重 置</el-button>
-            </el-row>
-          </el-form>
-        </el-collapse-item>
-      </el-collapse>
-      <el-table :data="activities" border style="width: 100%" @sort-change="orderby">
+      <el-table :data="activities" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;"
+        @sort-change="orderby">
         <el-table-column label="操作" width="100" align="center" fixed>
           <template slot-scope="scope">
             <el-button type="text" title="编辑" size="small" @click="editbook(scope.row)">
@@ -93,19 +56,20 @@
           </template>
         </el-table-column>
         <!-- <el-table-column prop="CollectionPlace" sortable min-width="120" label="采集地点" align="center"></el-table-column>  -->
-        <el-table-column prop="Collectors" sortable min-width="100" label="采集人员" align="center"></el-table-column>
-        <el-table-column prop="State" sortable min-width="90" label="交接状态" align="center">
+        <!-- <el-table-column prop="Collectors" sortable min-width="100" label="采集人员" align="center"></el-table-column> -->
+        <!-- <el-table-column prop="State" sortable min-width="90" label="交接状态" align="center">
           <template slot-scope="scope">
             <el-tag v-show="scope.row.State=='0'" type="warning">待交接</el-tag>
             <el-tag v-show="scope.row.State=='1'" type="success">已交接</el-tag>
             <el-tag v-show="scope.row.State=='2'" type="danger">交接失败</el-tag>
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column label="接收时间" prop="ReceiveDate" sortable min-width="160" align="center">
           <template slot-scope="scope">
             {{ jstimehandle(scope.row.ReceiveDate+'') }}
           </template>
         </el-table-column>
+        <el-table-column prop="CreateBy" sortable min-width="100" label="录入人" align="center"></el-table-column>
         <el-table-column prop="BookStatus" sortable min-width="90" label="审核状态" align="center">
           <template slot-scope="scope">
             <el-tag v-show="scope.row.BookStatus=='0'" type="warning">未审核</el-tag>
@@ -118,8 +82,58 @@
       <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">
       </el-pagination>
-
     </el-card>
+
+    <el-dialog title="高级查询" :visible.sync="dialogVisible" width="700px">
+      <el-form ref="advancedSearchForm" label-width="90px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="采集时间">
+              <el-date-picker size="mini" v-model="CollectionDate" type="daterange" style="width:100%" range-separator="至"
+                start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+            </el-form-item>
+          </el-col>
+          <!-- <el-col :span="12">
+            <el-form-item label="采集单号">
+              <el-input size="mini" v-model="searchform.CollectionNo" style="width:100%" placeholder="请输入采集单编号"></el-input>
+            </el-form-item>
+          </el-col> -->
+          <el-col :span="12">
+            <el-form-item label="协议编码">
+              <el-input size="mini" v-model="searchform.ProtocolNo" style="width:100%" placeholder="请输入协议编码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="样本条码">
+              <el-input size="mini" v-model="searchform.BarCode" style="width:100%" placeholder="请输入样本条码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="监护人姓名">
+              <el-input size="mini" v-model="searchform.Name" style="width:100%" placeholder="请输入监护人姓名"></el-input>
+            </el-form-item>
+          </el-col>
+          <!-- <el-col :span="12">
+            <el-form-item label="采集人员">
+              <el-input size="mini" v-model="searchform.Collectors" style="width:100%" placeholder="请输入采集人员"></el-input>
+            </el-form-item>
+          </el-col> -->
+          <el-col :span="12">
+            <el-form-item label="审核状态">
+              <el-select size="mini" ref="reflrrselect" v-model="searchform.BookStatus" style="width:100%" clearable>
+                <el-option label="未审核" value="0"></el-option>
+                <el-option label="已审核" value="1"></el-option>
+                <el-option label="审核异常" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="dialogVisible = false">取 消</el-button>
+        <el-button size="mini" type="primary" @click="seachdata">查 询</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -135,7 +149,8 @@
     name: 'sampletype',
     data() {
       return {
-        CollectionDate: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()], // 录入时期
+        dialogVisible: false,
+        CollectionDate: [new Date(new Date().getTime() - 6 * 30 * 24 * 60 * 60 * 1000), new Date()], // 录入时期
         searchform: {
           ProtocolNo: '',
           CollectionNo: '',
@@ -299,9 +314,6 @@
             })
         }).catch(() => {})
       },
-      addbiobank() {
-        this.$router.push('/biobank/book/addbook/operation')
-      },
       //获取权限
       getPermissions() {
         let _this = this
@@ -374,6 +386,13 @@
         this.Column.Prop = column.prop
         this.initdata()
       },
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
       clearSearch() {
         this.searchform.protocolno = ''
         this.searchform.BarCode = ''

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

@@ -1410,7 +1410,7 @@
       // 自动获取样本编码
       choosetype() {
         let _this = this
-        _this.$axios.get('/sampleoperation/getautobarcodeandsampletypebysampleitem?SampleType=' + _this.collectionDetail
+        _this.$axios.get('/sampleoperation/getbarcodeandsampletype?SampleType=' + _this.collectionDetail
             .SampleType, {})
           .then(res => {
             // response

+ 38 - 22
src/dashoo.cn/frontend_web/src/pages/biobank/protocol/_opera/protocoledit.vue

@@ -1,21 +1,33 @@
+<style>
+  .input-with-select .el-select .el-input {
+    width: 110px;
+  }
+  .input-with-select .el-input-group__append {
+    background-color: #fff;
+  }
+</style>
+
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/protocol' }">协议管理</el-breadcrumb-item>
-      <el-breadcrumb-item>编辑协议</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> 编辑协议
+    <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: '/biobank/protocol' }">协议管理</el-breadcrumb-item>
+          <el-breadcrumb-item>编辑协议</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
-          <el-button type="primary" @click="auditorShow=true" class="el-button--small" :disabled="protocolForm.ProtocolStatus== 1 || !authoer_flag">审核</el-button>
-          <el-button type="primary" @click="ProtocolNoTrue()" class="el-button--small" :disabled="protocolForm.ProtocolStatus== 1">保存</el-button>
-          <el-button type="primary" class="el-button--small" onclick="window.history.go(-1)">返回</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" :disabled="protocolForm.ProtocolStatus== 1 || !authoer_flag"
+            @click="auditorShow=true">审核</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" :disabled="protocolForm.ProtocolStatus== 1"
+            @click="ProtocolNoTrue()">保存</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" onclick="window.history.go(-1)">返回</el-button>
         </span>
       </div>
+
       <el-form :model="protocolForm" :rules="rulestestlistform" label-width="130px" ref="protocolForm">
         <el-row :gutter="20" class="protocoladdcss">
           <el-col :span="24">
@@ -36,7 +48,8 @@
               </el-col>
               <el-col :span="8">
                 <el-form-item label="姓名" prop="CustomorId">
-                  <el-select ref="customorselect" v-model="protocolForm.CustomorId" style="width:100%" clearable placeholder="请选择姓名">
+                  <el-select ref="customorselect" v-model="protocolForm.CustomorId" style="width:100%" clearable
+                    placeholder="请选择姓名">
                     <el-option v-for="item in customorList" :key="item.value" :label="item.Name" :value="item.Id"></el-option>
                   </el-select>
                 </el-form-item>
@@ -48,7 +61,8 @@
               </el-col>
               <el-col :span="8">
                 <el-form-item label="协议期限">
-                  <el-date-picker v-model="CreateOn" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width:100%"></el-date-picker>
+                  <el-date-picker v-model="CreateOn" type="daterange" range-separator="至" start-placeholder="开始日期"
+                    end-placeholder="结束日期" style="width:100%"></el-date-picker>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
@@ -81,7 +95,7 @@
               </el-col> -->
               <el-col :span="8" v-if="protocolForm.ProtocolStatus != 0">
                 <el-form-item label="审核人">
-                  <el-input v-model="protocolForm.AuditorBy" disabled ></el-input>
+                  <el-input v-model="protocolForm.AuditorBy" disabled></el-input>
                 </el-form-item>
               </el-col>
               <el-col :span="24">
@@ -107,8 +121,8 @@
               </el-col>
               <el-col :span="24">
                 <el-form-item label="文档上传" prop="Diseaseinfo">
-                  <el-upload style="margin-top: 10px;" multiple="true" action="" :limit="1" ref="refuploadattach" :http-request="uploadrequest"
-                    class="attach-uploader" :show-file-list="true" :before-upload="beforeAvatarUpload">
+                  <el-upload style="margin-top: 10px;" multiple="true" action="" :limit="1" ref="refuploadattach"
+                    :http-request="uploadrequest" class="attach-uploader" :show-file-list="true" :before-upload="beforeAvatarUpload">
                     <i class="el-icon-plus attach-uploader-icon"></i>
                   </el-upload>
                 </el-form-item>
@@ -120,7 +134,8 @@
                       <el-row>
                         <el-col :span="24" v-for="(v,K) in maintainlogattrlist" :key="v">
                           <span>
-                            <el-button size="small" type="text" icon="el-icon-delete" title="删除" @click="deletedatafile(K)" :disabled="protocolForm.ProtocolStatus== 1"></el-button>
+                            <el-button size="small" type="text" icon="el-icon-delete" title="删除" @click="deletedatafile(K)"
+                              :disabled="protocolForm.ProtocolStatus== 1"></el-button>
                           </span>
                           <a style="margin-left:10px" @click="clickachment(v.url)">{{ v.name }}</a>
                         </el-col>
@@ -152,7 +167,8 @@
                 <el-table-column label="操作" width="70px" align="center" header-align="center">
                   <template slot-scope="scope">
                     <el-button type="text" title="编辑" @click="showdetail(scope.row)" size="small" icon="el-icon-edit"></el-button>
-                    <el-button size="small" type="text" title="删除" @click="deletedatail(scope.row)" icon="el-icon-delete" style="margin-left: 3px"></el-button>
+                    <el-button size="small" type="text" title="删除" @click="deletedatail(scope.row)" icon="el-icon-delete"
+                      style="margin-left: 3px"></el-button>
                   </template>
                 </el-table-column>
                 <el-table-column prop="ImplementTypeName" label="类型" align="center" show-overflow-tooltip></el-table-column>
@@ -318,7 +334,7 @@
         maintainlogattrlist: [],
         ICMchecked: true,
         ECRchecked: true,
-        authoer_flag : false,
+        authoer_flag: false,
         rulestestlistform: {
           ProtocolNo: [{
             required: true,
@@ -401,7 +417,7 @@
       this.ServiceId = this.$route.params.opera
       this.getuserlist()
       this.getProtocolinfo() //获取协议详情
-      this.getCustomorList()     
+      this.getCustomorList()
       // this.getUsersByPerCode()
     },
     methods: {
@@ -424,7 +440,7 @@
             //   }
             // }
             _this.CreateOn = [_this.protocolForm.ProtocolStart, _this.protocolForm.ProtocolEnd]
-            if(_this.authUser.Profile.Id != res.data.items.ConUserId){
+            if (_this.authUser.Profile.Id != res.data.items.ConUserId) {
               _this.authoer_flag = true
             }
             if (res.data.items.FileURL != '') {

+ 96 - 84
src/dashoo.cn/frontend_web/src/pages/biobank/protocol/index.vue

@@ -1,94 +1,38 @@
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/protocol' }">协议管理</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> 协议管理
+    <el-card class="box-card" style="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>协议管理</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
-          <!-- <router-link :to="'/biobank/protocol/addprotocol/operation'">
-            <el-button type="primary" size="small">快捷订单</el-button>
-          </router-link> -->
           <router-link :to="'protocol/protocoladd'">
-            <el-button type="primary" size="small" style="margin-left:10px">添加</el-button>
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
           </router-link>
         </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="签订日期">
+            <el-date-picker size="mini" style="width: 220px" v-model="ProtocolStart" type="daterange" range-separator="至"
+              start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-dropdown split-button type="primary" size="mini" @click="seachdata" @command="searchCommand">
+              查询
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="search">高级查询</el-dropdown-item>
+                <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </el-form-item>
+        </el-form>
       </div>
-      <el-collapse>
-        <el-collapse-item title="查询" name="1">
-          <el-form ref="form" label-width="90px">
-            <el-row :gutter="0">
-              <el-col :span="8">
-                <el-form-item label="协议名称">
-                  <el-input type=" " v-model="searchform.protocolname" placeholder="请输入协议名称"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="协议编码">
-                  <el-input type=" " v-model="searchform.protocolno" placeholder="请输入协议条码"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="姓名">
-                  <el-input type=" " v-model="searchform.name" placeholder="请输入姓名"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="身份证号">
-                  <el-input type=" " v-model="searchform.idcard" placeholder="请输入身份证号"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="联系号码">
-                  <el-input type=" " v-model="searchform.telephone" placeholder="请输入联系号码"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="签订日期">
-                  <el-date-picker v-model="ProtocolStart" type="daterange" range-separator="至" start-placeholder="签订日期"
-                    end-placeholder="结束日期" style="width:100%"></el-date-picker>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="审核状态">
-                  <el-select v-model="searchform.ProtocolStatus" style="width:100%" placeholder="请选择审核状态">
-                    <el-option label="未审核" value="0"></el-option>
-                    <el-option label="已审核" value="1"></el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="录入人">
-                  <el-select ref="reflrrselect" v-model="searchform.ConUserId" style="width:100%">
-                    <el-option v-for="item in userlist" :label="item.Realname" :value="item.Id" :key="item.Id">
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <!-- <el-col :span="8">
-                <el-form-item label="负责人">
-                  <el-select v-model="searchform.ConUserBy" placeholder="请选择负责人" style="width: 100%;">
-                    <el-option v-for="item in acceptUsers" :key="item.id" :label="item.name" :value="item.id">
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col> -->
-            </el-row>
-            <el-row>
-              <el-col class="line" :span="24" style="background-color:lightgrey; line-height: 1px">&nbsp;</el-col>
-            </el-row>
-            <el-row :gutter="0" style="text-align:right;margin-top:10px;">
-              <el-button size="small" @click="seachdata" type="primary">查询</el-button>
-              <el-button type="primary" class="el-button--small" @click="clearSearch" style="margin-left:8px">重 置</el-button>
-            </el-row>
-          </el-form>
-        </el-collapse-item>
-      </el-collapse>
-      <el-table :data="protocolList" border style="width: 100%" @sort-change="orderby">
+
+      <el-table :data="protocolList" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;"
+        @sort-change="orderby">
         <el-table-column label="操作" width="80" align="center" fixed>
           <template slot-scope="scope">
             <el-button type="text" title="编辑" size="small" @click="editProtocol(scope.row)">
@@ -146,6 +90,65 @@
           <el-button type="primary" size="small" @click="shenhestepinfoShow = false">确 定</el-button>
         </div>
       </el-dialog>
+
+      <el-dialog title="高级查询" :visible.sync="dialogVisible" width="700px">
+        <el-form ref="advancedSearchForm" label-width="90px">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="签订日期">
+                <el-date-picker size="mini" v-model="ProtocolStart" type="daterange" style="width:100%" range-separator="至"
+                  start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="协议名称">
+                <el-input size="mini" v-model="searchform.protocolname" style="width:100%" placeholder="请输入协议名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="协议编码">
+                <el-input size="mini" v-model="searchform.protocolno" style="width:100%" placeholder="请输入协议编码"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="身份证号">
+                <el-input size="mini" v-model="searchform.idcard" style="width:100%" placeholder="请输入身份证号"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="姓名">
+                <el-input size="mini" v-model="searchform.name" style="width:100%" placeholder="请输入姓名"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="联系号码">
+                <el-input size="mini" v-model="searchform.telephone" style="width:100%" placeholder="请输入联系号码"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="负责人">
+                <el-select size="mini" ref="reflrrselect" v-model="searchform.ConUserBy" style="width:100%" clearable>
+                  <el-option v-for="item in userlist" :label="item.Realname" :value="item.Id" :key="item.Id">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="审核状态">
+                <el-select size="mini" ref="reflrrselect" v-model="searchform.ProtocolStatus" style="width:100%"
+                  clearable>
+                  <el-option label="未审核" value="0"></el-option>
+                  <el-option label="已审核" value="1"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+          <el-button size="mini" @click="dialogVisible = false">取 消</el-button>
+          <el-button size="mini" type="primary" @click="seachdata">查 询</el-button>
+        </span>
+      </el-dialog>
     </el-card>
   </div>
 </template>
@@ -163,6 +166,7 @@
     name: 'sampletype',
     data() {
       return {
+        dialogVisible: false,
         searchform: {
           protocolname: '',
           protocolno: '',
@@ -173,7 +177,7 @@
           ConUserBy: '', //负责人
           ConUserId: ''
         },
-        ProtocolStart: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()], // 签订日期
+        ProtocolStart: [new Date(new Date().getTime() - 6 * 30 * 24 * 60 * 60 * 1000), new Date()], // 签订日期
         shenhestepinfoShow: false, //审核信息弹窗
         currentItemCount: 0,
         currentPage: 1,
@@ -379,6 +383,14 @@
             console.error(err)
           })
       },
+
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
       clearSearch() {
         this.searchform.protocolname = ''
         this.searchform.protocolno = ''

+ 30 - 18
src/dashoo.cn/frontend_web/src/pages/biobank/protocol/protocoladd.vue

@@ -1,20 +1,31 @@
+<style>
+  .input-with-select .el-select .el-input {
+    width: 110px;
+  }
+  .input-with-select .el-input-group__append {
+    background-color: #fff;
+  }
+</style>
+
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/protocol' }">协议管理</el-breadcrumb-item>
-      <el-breadcrumb-item>添加协议</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> 添加协议
+    <el-card style="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: '/biobank/protocol' }">协议管理</el-breadcrumb-item>
+          <el-breadcrumb-item>添加协议</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
-          <el-button type="primary" @click="ProtocolNoTrue()" :disabled="add_flag" class="el-button--small">保存</el-button>
-          <el-button type="primary" class="el-button--small" onclick="window.history.go(-1)">返回</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="ProtocolNoTrue()"
+            :disabled="add_flag">保存</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" onclick="window.history.go(-1)">返回</el-button>
         </span>
       </div>
+
       <el-form :model="protocolForm" :rules="rulestestlistform" label-width="130px" ref="protocolForm">
         <el-row :gutter="20" class="protocoladdcss">
           <el-col :span="8">
@@ -29,12 +40,12 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="姓名" prop="CustomorId">
-              <el-select ref="customorselect" v-model="protocolForm.CustomorId" v-if="customor_flat == 1 " disabled style="width:100%"
-                clearable placeholder="请选择姓名">
+              <el-select ref="customorselect" v-model="protocolForm.CustomorId" v-if="customor_flat == 1 " disabled
+                style="width:100%" clearable placeholder="请选择姓名">
                 <el-option v-for="item in customorList" :key="item.value" :label="item.Name" :value="item.Id"></el-option>
               </el-select>
-              <el-select ref="customorselect" v-model="protocolForm.CustomorId" filterable v-if="customor_flat == 0 " @change="getIDCard" style="width:100%"
-                clearable placeholder="请选择姓名">
+              <el-select ref="customorselect" v-model="protocolForm.CustomorId" filterable v-if="customor_flat == 0 "
+                @change="getIDCard" style="width:100%" clearable placeholder="请选择姓名">
                 <el-option v-for="item in customorList" :key="item.value" :label="item.Name" :value="item.Id"></el-option>
               </el-select>
             </el-form-item>
@@ -46,7 +57,8 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="协议期限">
-              <el-date-picker v-model="CreateOn" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width:100%"></el-date-picker>
+              <el-date-picker v-model="CreateOn" type="daterange" range-separator="至" start-placeholder="开始日期"
+                end-placeholder="结束日期" style="width:100%"></el-date-picker>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -89,8 +101,8 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="文档上传" prop="Diseaseinfo">
-              <el-upload style="margin-top: 10px;" multiple="false" action="" :limit="1" ref="refuploadattach" :http-request="uploadrequest"
-                class="attach-uploader" :show-file-list="true" :before-upload="beforeAvatarUpload">
+              <el-upload style="margin-top: 10px;" multiple="false" action="" :limit="1" ref="refuploadattach"
+                :http-request="uploadrequest" class="attach-uploader" :show-file-list="true" :before-upload="beforeAvatarUpload">
                 <i class="el-icon-plus attach-uploader-icon"></i>
               </el-upload>
             </el-form-item>

+ 28 - 17
src/dashoo.cn/frontend_web/src/pages/biobank/sampletest/_opera/operation.vue

@@ -1,27 +1,37 @@
+<style>
+  .input-with-select .el-select .el-input {
+    width: 110px;
+  }
+  .input-with-select .el-input-group__append {
+    background-color: #fff;
+  }
+</style>
+
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/sampletest' }">样本检测</el-breadcrumb-item>
-      <el-breadcrumb-item>{{breadcrumb}}</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card>
-      <div slot="header">
-        <span>
-          <i class="icon icon-file-text"> 检测单信息</i>
+    <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: '/biobank/sampletest' }">样本检测</el-breadcrumb-item>
+          <el-breadcrumb-item>{{breadcrumb}}</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
-          <el-button type="primary" v-if="pageflag == 'editsampletest'" :disabled="mainForm.AuditorFlag != 0 || !authoer_flag"
-            @click="auditorShow=true" class="el-button--small">审核</el-button>
-          <el-button type="primary" class="el-button--small" v-if="pageflag == 'addsampletest'" @click="savemain">保存</el-button>
-          <el-button type="primary" class="el-button--small" v-if="pageflag == 'editsampletest'" :disabled="mainForm.AuditorFlag != 0"
-            @click="editmain">保存</el-button>
-          <el-button type="primary" class="el-button--small" v-if="back_flat == 0" style="margin-left: 8px" @click="goback">返回</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" v-if="pageflag == 'editsampletest'"
+            :disabled="mainForm.AuditorFlag != 0 || !authoer_flag" @click="auditorShow=true">审核</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" v-if="pageflag == 'addsampletest'"
+            @click="savemain">保存</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" v-if="pageflag == 'editsampletest'"
+            :disabled="mainForm.AuditorFlag != 0" @click="editmain">保存</el-button>
           <router-link :to="'/biobank/source/'+DonorsId+'/operation'">
-            <el-button type="primary" v-if="back_flat == 1" style="margin-left: 8px" class="el-button--small">返回</el-button>
+            <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" v-if="back_flat == 1">返回</el-button>
           </router-link>
         </span>
       </div>
+
       <el-form :model="mainForm" :rules="mainrules" ref="mainForm" label-width="100px">
         <el-row :gutter="20">
           <el-col :span="24">
@@ -96,7 +106,7 @@
                   </el-date-picker>
                 </el-form-item>
               </el-col>
-              <el-col :span="8" v-if="pageflag == 'editsampletest'">
+              <el-col :span="8">
                 <el-form-item label="录入人">
                   <el-input v-model="mainForm.CreateBy" placeholder="请输入录入人" disabled></el-input>
                 </el-form-item>
@@ -418,6 +428,7 @@
       if (_this.MainId && _this.MainId == 'add') {
         _this.breadcrumb = '新增样本检测'
         _this.pageflag = 'addsampletest'
+        _this.mainForm.CreateBy = this.authUser.Profile.Realname
         _this.getInspectionNum() //获取检测单号
         _this.getallpackage() //获取检验套餐
       } else if (typeof (_this.MainId) != 'undefined' && _this.MainId != '0') {

+ 88 - 83
src/dashoo.cn/frontend_web/src/pages/biobank/sampletest/index.vue

@@ -1,86 +1,39 @@
 <template>
-  <div v-loading="exportloading" element-loading-text="数据准备中,请稍候。。。">
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/sampletest' }">样本检测</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> 样本检测
+  <div>
+    <el-card class="box-card" style="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>样本检测</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
-          <el-button type="primary" size="small" @click="exportExcel">导出</el-button>
-          <el-button type="primary" size="small" @click="addsampletest">添加</el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出</el-button>
+          <router-link :to="'/biobank/sampletest/add/operation'">
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
+          </router-link>
         </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="检测时间">
+            <el-date-picker size="mini" style="width: 220px" v-model="searchform.CheckTime" type="daterange"
+              range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-dropdown split-button type="primary" size="mini" @click="seachdata" @command="searchCommand">
+              查询
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="search">高级查询</el-dropdown-item>
+                <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </el-form-item>
+        </el-form>
       </div>
-      <el-collapse>
-        <el-collapse-item title="查询" name="1">
-          <el-form ref="form" label-width="90px">
-            <el-row :gutter="20">
-              <el-col :span="8">
-                <el-form-item label="检测单号">
-                  <el-input type=" " v-model="searchform.InspectionNum" placeholder="请输入检测单号"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="身份证号">
-                  <el-input type=" " v-model="searchform.SourceIdCard" placeholder="请输入身份证号"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="姓名">
-                  <el-input type=" " v-model="searchform.SourceName" placeholder="请输入姓名"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="样本条码">
-                  <el-input type=" " v-model="searchform.BarCode" placeholder="请输入样本条码"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="检测时间">
-                  <el-date-picker v-model="searchform.CheckTime" type="daterange" range-separator="至" start-placeholder="开始日期"
-                    end-placeholder="结束日期" style="width:100%"></el-date-picker>
-                </el-form-item>
-              </el-col>
-              <!-- <el-col :span="8">
-                <el-form-item label="异常状态">
-                  <el-select v-model="searchform.JudgmentFlag" style="width:100%" clearable placeholder="请选择处理状态">
-                    <el-option label="正常" value="0"></el-option>
-                    <el-option label="异常" value="1"></el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col> -->
-              <!-- <el-col :span="8">
-                <el-form-item label="处理状态">
-                  <el-select v-model="searchform.HandleFlag" style="width:100%" clearable placeholder="请选择处理状态">
-                    <el-option label="未处理" value="0"></el-option>
-                    <el-option label="已处理" value="1"></el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col> -->
-              <el-col :span="8">
-                <el-form-item label="审核状态">
-                  <el-select v-model="searchform.AuditorFlag" style="width:100%" clearable placeholder="请选择审核状态">
-                    <el-option label="未审核" value="0"></el-option>
-                    <el-option label="已审核" value="1"></el-option>
-                    <el-option label="审核异常" value="2"></el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row>
-              <el-col class="line" :span="24" style="background-color:lightgrey; line-height: 1px">&nbsp;</el-col>
-            </el-row>
-            <el-row :gutter="0" style="text-align:right;margin-top:10px;">
-              <el-button size="small" @click="seachdata" type="primary">查询</el-button>
-              <el-button type="primary" class="el-button--small" @click="clearSearch" style="margin-left:8px">重 置</el-button>
-            </el-row>
-          </el-form>
-        </el-collapse-item>
-      </el-collapse>
-      <el-table :data="list" border style="width: 100%" @sort-change="orderby">
+
+      <el-table :data="list" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;"
+        @sort-change="orderby">
         <el-table-column label="操作" width="100" align="center" fixed>
           <template slot-scope="scope">
             <el-button type="text" title="编辑" size="small" @click="editsampletest(scope.row)">
@@ -103,6 +56,7 @@
             {{ jstimehandle(scope.row.CheckTime+'') }}
           </template>
         </el-table-column>
+        <el-table-column sortable min-width="90" align="center" show-overflow-tooltip prop="CreateBy" label="录入人"></el-table-column>
         <!-- <el-table-column sortable min-width="120" align="center" prop="HandleFlag" label="处理状态">
           <template slot-scope="scope">
             <el-tag v-show="scope.row.HandleFlag=='0'" type="warning">未处理</el-tag>
@@ -129,6 +83,52 @@
         :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
       </el-pagination>
     </el-card>
+
+    <el-dialog title="高级查询" :visible.sync="dialogVisible" width="700px">
+      <el-form ref="advancedSearchForm" label-width="90px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="检测时间">
+              <el-date-picker size="mini" v-model="searchform.CheckTime" type="daterange" style="width:100%"
+                range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="检测单号">
+              <el-input size="mini" v-model="searchform.InspectionNum" style="width:100%" placeholder="请输入检测单号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="身份证号">
+              <el-input size="mini" v-model="searchform.SourceIdCard" style="width:100%" placeholder="请输入身份证号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="姓名">
+              <el-input size="mini" v-model="searchform.SourceName" style="width:100%" placeholder="请输入姓名"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="样本条码">
+              <el-input size="mini" v-model="searchform.BarCode" style="width:100%" placeholder="请输入样本条码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="审核状态">
+              <el-select size="mini" ref="reflrrselect" v-model="searchform.AuditorFlag" style="width:100%" clearable>
+                <el-option label="未审核" value="0"></el-option>
+                <el-option label="已审核" value="1"></el-option>
+                <el-option label="审核异常" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="dialogVisible = false">取 消</el-button>
+        <el-button size="mini" type="primary" @click="seachdata">查 询</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -144,13 +144,14 @@
     name: 'sampletest',
     data() {
       return {
+        dialogVisible: false,
         exportloading: false,
         searchform: {
           InspectionNum: '', //检测单号
           SourceIdCard: '', //身份证
           SourceName: '', //姓名
           BarCode: '', //样本条码
-          CheckTime: new Date(), //检测时间
+          CheckTime: [new Date(new Date().getTime() - 6 * 30 * 24 * 60 * 60 * 1000), new Date()], //检测时间
           HandleFlag: '', //是否处理,是否结果已出:0,未处理;1,结果已出
           JudgmentFlag: '', //异常标志,结果里是否有异常项:0,正常;1,异常
           AuditorFlag: '' //审核状态:0:未审核;1:已审核
@@ -211,11 +212,8 @@
             console.log(error);
           });
       },
-      addsampletest() {
-        this.$router.push('/sampletest/add/operation')
-      },
       editsampletest(row) {
-        let url = '/sampletest/' + row.Id + '/operation'
+        let url = '/biobank/sampletest/' + row.Id + '/operation'
         this.$router.push(url)
       },
       deletedata(val) {
@@ -349,6 +347,13 @@
         minute = minute < 10 ? ('0' + minute) : minute;
         return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
       },
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
       clearSearch() {
         this.searchform.InspectionNum = ''
         this.searchform.SourceIdCard = ''

+ 25 - 16
src/dashoo.cn/frontend_web/src/pages/biobank/service/_opera/operation.vue

@@ -1,23 +1,32 @@
+<style>
+  .input-with-select .el-select .el-input {
+    width: 110px;
+  }
+  .input-with-select .el-input-group__append {
+    background-color: #fff;
+  }
+</style>
+
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/service' }">客服订单</el-breadcrumb-item>
-      <el-breadcrumb-item>客户信息</el-breadcrumb-item>
-      <el-breadcrumb-item>{{pagetitle}}</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> {{pagetitle}}
+    <el-card style="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: '/lims/tasksentrust' }">客服订单</el-breadcrumb-item>
+          <el-breadcrumb-item>{{pagetitle}}</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
           <router-link :to="'/biobank/protocol/protocoladd?ServiceId='+ ServiceId">
-            <el-button type="primary" class="el-button--small" style="margin-right:10px">签订协议</el-button>
+            <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px">签订协议</el-button>
           </router-link>
-          <el-button type="primary" class="el-button--small" onclick="window.history.go(-1)">返回</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" onclick="window.history.go(-1)">返回</el-button>
         </span>
       </div>
+
       <el-form :model="customorForm" :rules="rulestestlistform" label-width="130px" ref="customorForm">
         <el-tabs type="border-card" v-model="Tabs">
           <el-tab-pane label="交流记录" name="communication">
@@ -170,7 +179,7 @@
       </el-form>
     </el-card>
 
-    <el-dialog :title="Title" :visible.sync="addCommunicationShow" width="80%">
+    <el-dialog :title="Title" :visible.sync="addCommunicationShow" width="1000px">
       <el-form :model="communicationForm" label-width="90px">
         <el-row>
           <el-col :span="8">
@@ -358,13 +367,13 @@
       let _this = this
       this.ServiceId = this.$route.params.opera
       if (this.ServiceId == 'addsercive') {
-        this.pagetitle = '添加客户信息'
+        this.pagetitle = '添加客服记录'
         this.service_flag = 'addservice'
         this.Tabs = 'basic'
         this.customorForm.ConUserId = this.authUser.Profile.Id
         //this.initdata()
       } else if (this.ServiceId != '0') {
-        this.pagetitle = '编辑客户信息'
+        this.pagetitle = '编辑客服记录'
         this.service_flag = 'editsercive'
         this.Tabs = 'communication'
         this.com_flag = false
@@ -629,7 +638,7 @@
         this.communicationForm.Id = ''
         this.communicationForm.ConType = ''
         this.communicationForm.ConDate = new Date(),
-        this.communicationForm.Detail = ''
+          this.communicationForm.Detail = ''
         this.communicationForm.ConUserId = this.authUser.Profile.Id
       },
       getuserlist() {

+ 76 - 65
src/dashoo.cn/frontend_web/src/pages/biobank/service/complated.vue

@@ -1,70 +1,33 @@
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/service' }">客服订单</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> 客服订单
-        </span>
-        <span style="float: right;">
-          <router-link :to="'/biobank/service/addsercive/operation'">
-            <el-button type="primary" size="small">添加</el-button>
-          </router-link>
+    <el-card class="box-card" style="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>协议客户</el-breadcrumb-item>
+        </el-breadcrumb>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="咨询日期">
+            <el-date-picker size="mini" style="width: 220px" v-model="ConsultDate" type="daterange" range-separator="至"
+              start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-dropdown split-button type="primary" size="mini" @click="seachdata" @command="searchCommand">
+              查询
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="search">高级查询</el-dropdown-item>
+                <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </el-form-item>
+        </el-form>
       </div>
-      <el-collapse>
-        <el-collapse-item title="查询" name="1">
-          <el-form ref="form" label-width="90px">
-            <el-row :gutter="0">
-              <el-col :span="8">
-                <el-form-item label="身份证号">
-                  <el-input type=" " v-model="searchform.idcard" placeholder="请输入身份证号"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="客户名称">
-                  <el-input type=" " v-model="searchform.name" placeholder="请输入客户名称"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="协议条码">
-                  <el-input type=" " v-model="searchform.protocolno" placeholder="请输入协议条码"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="联系号码">
-                  <el-input type=" " v-model="searchform.telephone" placeholder="请输入联系号码"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="咨询日期">
-                  <el-date-picker v-model="ConsultDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
-                    style="width:100%"></el-date-picker>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="负责人">
-                  <el-select v-model="searchform.ConUserBy" placeholder="请选择负责人" style="width: 100%;">
-                    <el-option v-for="item in acceptUsers" :key="item.id" :label="item.name" :value="item.id">
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row>
-              <el-col class="line" :span="24" style="background-color:lightgrey; line-height: 1px">&nbsp;</el-col>
-            </el-row>
-            <el-row :gutter="0" style="text-align:right;margin-top:10px;">
-              <el-button size="small" @click="seachdata" type="primary">查询</el-button>
-              <el-button type="primary" class="el-button--small" @click="clearSearch" style="margin-left:8px">重 置</el-button>
-            </el-row>
-          </el-form>
-        </el-collapse-item>
-      </el-collapse>
-      <el-table :data="customorList" border style="width: 100%" @sort-change="orderby">
+
+      <el-table :data="customorList" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;"
+        @sort-change="orderby">
         <el-table-column label="操作" width="80" align="center" fixed>
           <template slot-scope="scope">
             <router-link :to="'/biobank/service/'+scope.row.Id+'/operation'">
@@ -87,10 +50,50 @@
         <el-table-column prop="ConUserBy" sortable min-width="80" align="center" label="负责人" show-overflow-tooltip></el-table-column>
         <el-table-column prop="Remark" sortable align="center" label="备注" min-width="100" show-overflow-tooltip></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">
+      <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">
       </el-pagination>
     </el-card>
+
+    <el-dialog title="高级查询" :visible.sync="dialogVisible" width="700px">
+      <el-form ref="advancedSearchForm" label-width="90px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="咨询日期">
+              <el-date-picker size="mini" v-model="ConsultDate" type="daterange" style="width:100%" range-separator="至"
+                start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="身份证号">
+              <el-input size="mini" v-model="searchform.idcard" style="width:100%" placeholder="请输入身份证号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="姓名">
+              <el-input size="mini" v-model="searchform.name" style="width:100%" placeholder="请输入姓名"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="联系号码">
+              <el-input size="mini" v-model="searchform.telephone" style="width:100%" placeholder="请输入联系号码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="负责人">
+              <el-select size="mini" ref="reflrrselect" v-model="searchform.ConUserBy" style="width:100%" clearable>
+                <el-option v-for="item in acceptUsers" :key="item.id" :label="item.name" :value="item.id">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="dialogVisible = false">取 消</el-button>
+        <el-button size="mini" type="primary" @click="seachdata">查 询</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -107,6 +110,7 @@
     name: 'sampletype',
     data() {
       return {
+        dialogVisible: false,
         searchform: {
           idcard: '',
           name: '',
@@ -244,6 +248,13 @@
         this.currentPage = value
         this.initdata()
       },
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
       clearSearch() {
         this.searchform.idcard = ''
         this.searchform.name = ''

+ 90 - 67
src/dashoo.cn/frontend_web/src/pages/biobank/service/index.vue

@@ -1,65 +1,38 @@
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/biobank/service' }">客服订单</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> 客服订单
+    <el-card class="box-card" style="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>客服记录</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
           <router-link :to="'/biobank/service/addsercive/operation'">
-            <el-button type="primary" size="small">添加</el-button>
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
           </router-link>
         </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="咨询日期">
+            <el-date-picker size="mini" style="width: 220px" v-model="ConsultDate" type="daterange" range-separator="至"
+              start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-dropdown split-button type="primary" size="mini" @click="seachdata" @command="searchCommand">
+              查询
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="search">高级查询</el-dropdown-item>
+                <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </el-form-item>
+        </el-form>
       </div>
-      <el-collapse>
-        <el-collapse-item title="查询" name="1">
-          <el-form ref="form" label-width="90px">
-            <el-row :gutter="0">
-              <el-col :span="8">
-                <el-form-item label="身份证号">
-                  <el-input type=" " v-model="searchform.idcard" placeholder="请输入身份证号"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="姓名">
-                  <el-input type=" " v-model="searchform.name" placeholder="请输入姓名"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="联系号码">
-                  <el-input type=" " v-model="searchform.telephone" placeholder="请输入联系号码"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="咨询日期">
-                  <el-date-picker v-model="ConsultDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
-                    style="width:100%"></el-date-picker>
-                </el-form-item>
-              </el-col>
-              <el-col :span="8">
-                <el-form-item label="负责人">
-                  <el-select v-model="searchform.ConUserBy" placeholder="请选择负责人" style="width: 100%;">
-                    <el-option v-for="item in acceptUsers" :key="item.id" :label="item.name" :value="item.id">
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row>
-              <el-col class="line" :span="24" style="background-color:lightgrey; line-height: 1px">&nbsp;</el-col>
-            </el-row>
-            <el-row :gutter="0" style="text-align:right;margin-top:10px;">
-              <el-button size="small" @click="seachdata" type="primary">查询</el-button>
-              <el-button type="primary" class="el-button--small" @click="clearSearch" style="margin-left:8px">重 置</el-button>
-            </el-row>
-          </el-form>
-        </el-collapse-item>
-      </el-collapse>
-      <el-table :data="customorList" border style="width: 100%" @sort-change="orderby">
+
+      <el-table :data="customorList" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;"
+        @sort-change="orderby">
         <el-table-column label="操作" width="80" align="center" fixed>
           <template slot-scope="scope">
             <router-link :to="'/biobank/service/'+scope.row.Id+'/operation'">
@@ -79,10 +52,50 @@
         <el-table-column prop="ConUserBy" sortable min-width="80" align="center" label="负责人" show-overflow-tooltip></el-table-column>
         <el-table-column prop="Remark" sortable align="center" label="备注" min-width="100" show-overflow-tooltip></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">
+      <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">
       </el-pagination>
     </el-card>
+
+    <el-dialog title="高级查询" :visible.sync="dialogVisible" width="700px">
+      <el-form ref="advancedSearchForm" label-width="90px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="咨询日期">
+              <el-date-picker size="mini" v-model="ConsultDate" type="daterange" style="width:100%" range-separator="至"
+                start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="身份证号">
+              <el-input size="mini" v-model="searchform.idcard" style="width:100%" placeholder="请输入身份证号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="姓名">
+              <el-input size="mini" v-model="searchform.name" style="width:100%" placeholder="请输入姓名"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="联系号码">
+              <el-input size="mini" v-model="searchform.telephone" style="width:100%" placeholder="请输入联系号码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="负责人">
+              <el-select size="mini" ref="reflrrselect" v-model="searchform.ConUserBy" style="width:100%" clearable>
+                <el-option v-for="item in acceptUsers" :key="item.id" :label="item.name" :value="item.id">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="dialogVisible = false">取 消</el-button>
+        <el-button size="mini" type="primary" @click="seachdata">查 询</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -99,15 +112,16 @@
     name: 'sampletype',
     data() {
       return {
+        dialogVisible: false,
         searchform: {
           idcard: '',
           name: '',
           telephone: '',
           ConUserBy: '', //负责人
-          ConUserId:''
+          ConUserId: ''
         },
         customorList: [],
-        ConsultDate: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()], // 录入时期
+        ConsultDate: [new Date(new Date().getTime() - 6 * 30 * 24 * 60 * 60 * 1000), new Date()], // 录入时期
         shenhestepinfoShow: false, //审核信息弹窗
         currentItemCount: 0,
         currentPage: 1,
@@ -165,7 +179,7 @@
           ProtocolStatus: 0,
         }
         Object.assign(params, this.searchform)
-         _this.$axios.get('/samplescustomor/samplescustomorlist?ConsultDate=' + ConsultDate.join(','), {
+        _this.$axios.get('/samplescustomor/samplescustomorlist?ConsultDate=' + ConsultDate.join(','), {
             params
           })
           .then(function (response) {
@@ -233,6 +247,22 @@
             console.error(err)
           })
       },
+
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+      clearSearch() {
+        this.searchform.idcard = ''
+        this.searchform.name = ''
+        this.searchform.telephone = ''
+        this.ConsultDate = []
+        this.searchform.ConUserBy = ''
+        this.initdata()
+      },
       seachdata() {
         this.currentPage = 1
         this.initdata()
@@ -246,14 +276,7 @@
         this.currentPage = value
         this.initdata()
       },
-      clearSearch() {
-        this.searchform.idcard = ''
-        this.searchform.name = ''
-        this.searchform.telephone = ''
-        this.ConsultDate = []
-        this.searchform.ConUserBy = ''
-        this.initdata()
-      },
+
       jstimehandle(val) {
         if (val === '') {
           return '----'

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

@@ -167,7 +167,7 @@
               <legend style="color:#436EEE"></legend>
               <i class="icon icon-paragraph-justify"> 检验信息</i>
               <span style="float: right;">
-                <router-link :to="'/sampletest/add/operation?Id='+pid">
+                <router-link :to="'/biobank/sampletest/add/operation?Id='+pid">
                   <el-button type="primary" :disabled="check_falg" class="el-button--mini">添加</el-button>
                 </router-link>
               </span>