Explorar o código

首页,登录界面

shihang %!s(int64=6) %!d(string=hai) anos
pai
achega
a6f2d52c03

+ 8 - 7
src/dashoo.cn/backend/api/conf/app.conf

@@ -17,18 +17,18 @@ orderurl=http://uid.labsop.cn:8182/worker/2
 [db]
 type=mysql
 
-#阿里云BioBank服务器
-name=BiobankDB
-host=121.42.244.202
-user=biobank
-pwd=biobank@234@qwsdashoo
-
 #本地测试服务器
 #name=IxCellDB
 #host=192.168.0.252
 #user=ixcell
 #pwd=ixcell123456
 
+#AWS BioBank服务器
+name=BiobankDB
+host=mydb01.cnbkzlqg5w7l.rds.cn-north-1.amazonaws.com.cn
+user=mydb01_user
+pwd=mydb01_user58717168
+
 #临沂 BioBank服务器
 #name=BiobankDB
 #host=188.188.30.89
@@ -52,4 +52,5 @@ type=mysql
 name=casbin
 host=47.92.212.59
 user=root
-pwd=zks123456
+pwd=zks123456
+domain=biobank

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

@@ -11,9 +11,9 @@ import (
 
 	"github.com/astaxie/beego"
 
-	"dashoo.cn/business2/userRole"
 	"dashoo.cn/backend/api/business/material"
 	"dashoo.cn/backend/api/models"
+	"dashoo.cn/business2/userRole"
 	"dashoo.cn/utils"
 	"dashoo.cn/utils/redis"
 )

+ 121 - 15
src/dashoo.cn/backend/api/controllers/casbin/user.go

@@ -1,16 +1,22 @@
 package casbin
 
 import (
-	"dashoo.cn/backend/api/business/organize"
-	"dashoo.cn/business2/userRole"
-	"dashoo.cn/business2/permission"
-	"dashoo.cn/backend/api/models"
 	"encoding/json"
 	"strings"
 
+	"dashoo.cn/backend/api/business/equipment"
+	"dashoo.cn/backend/api/business/flupplan"
+	"dashoo.cn/backend/api/business/organize"
+	"dashoo.cn/backend/api/business/role"
+	"dashoo.cn/backend/api/business/samplesapply"
+	"dashoo.cn/backend/api/business/samplesfileinfo"
+	"dashoo.cn/backend/api/business/samplesinfo"
+	"dashoo.cn/backend/api/models"
+	"dashoo.cn/business2/permission"
+	"dashoo.cn/business2/userRole"
+
 	. "dashoo.cn/backend/api/controllers"
 	"dashoo.cn/utils"
-
 )
 
 // Operations about Users
@@ -34,6 +40,11 @@ type UserModel struct {
 	Sign           string `json:"sign"`
 }
 
+type UserModuleModel struct {
+	A1list string `json:"a1"` // 第一级菜单
+	A2list string `json:"a2"` // 第二级菜单
+}
+
 // @Title get
 // @Description get user by token
 // @Param	uid		path 	string	true		"The key for staticblock"
@@ -43,6 +54,7 @@ type UserModel struct {
 func (this *UserController) Get() {
 	svc := userRole.GetUserService(utils.DBE)
 	usermodel := svc.GetUserInfoSelf(this.User.Username)
+
 	//	var companyentity company.Base_Company
 	//	svc.GetEntityById(usermodel.AccCode, &companyentity)
 	var user models.User
@@ -60,8 +72,7 @@ func (this *UserController) Get() {
 	user.Profile.AccCode = usermodel.AccCode
 	user.Profile.DepartmentId = usermodel.Departmentid
 	user.Profile.Id = usermodel.Id
-	// todo 从this.User获取用户名,再查询出具体用户
-	//	user := models.User{"user01", "张三", models.Profile{Gender: "male", Age: 20, Address: "china", Email: "123zs@gmail.com", Realname: "ppppppp"}}
+
 	this.Data["json"] = user
 	this.ServeJSON()
 }
@@ -70,14 +81,14 @@ func (this *UserController) Get() {
 // @Description 获取用户菜单权限
 // @Success	200	{object} controllers.Request
 // @router /getusermodule [get]
-func (this *UserController) GetUserModule() {
-	//svc := permission.GetPermissionService(utils.DBE)
-	//var model UserModuleModel
-	//model.A1list = svc.GetModuleAllNamesByCode(this.User.Id, "A1")
-	//model.A2list = svc.GetModuleAllNamesByCode(this.User.Id, "A2")
-	//this.Data["json"] = model
-	//this.ServeJSON()
-}
+//func (this *UserController) GetUserModule() {
+//	svc := permission.GetPermissionService(utils.DBE)
+//	var model UserModuleModel
+//	model.A1list = svc.GetModuleAllNamesByCode(this.User.Id, "A1")
+//	model.A2list = svc.GetModuleAllNamesByCode(this.User.Id, "A2")
+//	this.Data["json"] = model
+//	this.ServeJSON()
+//}
 
 // @Title 获取用户菜单权限
 // @Description 获取用户菜单权限
@@ -164,6 +175,7 @@ func (this *UserController) UserPowerPostRole() {
 		this.ServeJSON()
 	}
 }
+
 // @Title 创建用户
 // @Description 创建用户
 // @Param	body	body	business.device.DeviceChannels	"传感器信息"
@@ -351,3 +363,97 @@ func (this *UserController) Delete() {
 		this.ServeJSON()
 	}
 }
+
+//############获取账户信息
+type AccountTjModel struct {
+	DeviceTotal int64
+	YILRTotal   int64
+	YULRTotal   int64
+	DFCTotal    int64
+	YGDTotal    int64
+	SFTotal     int64
+	RKTotal     int64
+	RKlist      []samplesapply.SamplesApply
+	CKTotal     int64
+	CKlist      []samplesapply.SamplesApply
+}
+
+// @Title 获取账户统计信息
+// @Description 获取账户统计信息
+// @Success	200	{object} controllers.Request
+// @router /getaccountinfo [get]
+func (this *UserController) GetAccountInfo() {
+	svcs := equipment.GetEquipmentService(utils.DBE)
+	svcrole := role.GetRoleService(utils.DBE)
+	roleids := svcrole.GetRoleidsByuid(utils.ToStr(this.User.Id))
+	where := " a.AccCode = '" + this.User.AccCode + "'"
+	where = where + " and (a.CreateUserId=" + utils.ToStr(this.User.Id) + " or a.Id in (select EquipmentId Id FROM Base_RoleEquipment where RoleId in (" + strings.Join(roleids, ",") + ")))"
+
+	devicetotal, _ := svcs.GetEquipmenViewtList(1, 1, "a.Id", where)
+
+	//已录入样本
+	where1 := " IState =1 and DeletionStateCode=0 "
+
+	poweeids := svcs.GetPowerEquipmentids(this.User.AccCode, utils.ToStr(this.User.Id))
+	where1 = where1 + " and  a.EquipmentId in(" + strings.Join(poweeids, ",") + ")"
+	svc := samplesinfo.GetSamplesInfoService(utils.DBE)
+	yilurutotal, _ := svc.GetPagingEntitiesWithOrderSearch(this.User.AccCode, 1, 1, "Id desc", where1)
+	// 预录入
+	where2 := " a.IState in (2,3,4,7,8) and a.DeletionStateCode=0 "
+	yulurutotal, _ := svc.GetPagingEntitiesWithOrderSearch(this.User.AccCode, 1, 1, "Id desc", where2)
+
+	//待复存
+	where3 := " DeletionStateCode=0 and (IState=6 or ( IState=5 and a.EquipmentId in(" + strings.Join(poweeids, ",") + ")))"
+	daifuchuntotal, _ := svc.GetPagingEntitiesWithOrderSearch(this.User.AccCode, 1, 1, "Id desc", where3)
+
+	//已归档
+	svcf := samplesfileinfo.GetSamplesFileInfoService(utils.DBE)
+	where4 := " DeletionStateCode=0  "
+	yiguidangtotal, _ := svcf.GetPagingEntitiesWithOrderSearch(this.User.AccCode, 1, 1, "Id desc", where4)
+
+	//待办事项
+	svcw := samplesapply.GetSamplesApplyService(utils.DBE)
+	where_rk := " ApplyType = 1 and ApplyStatus = 0 "
+	rktotal, rklist := svcw.GetApplyViewtList(1, 1, this.User.AccCode+SamplesApplyName, "Id", where_rk)
+	where_ck := " ApplyType = 2 and ApplyStatus = 0 "
+	cktotal, cklist := svcw.GetApplyViewtList(1, 1, this.User.AccCode+SamplesApplyName, "Id", where_ck)
+
+	//待随访
+	svcsf := flupplan.GetFlupPlanService(utils.DBE)
+	where_sf := " a.AccCode='" + this.User.AccCode + "' and a.DeletionStateCode=0 "
+	sftotal, _ := svcsf.GetPagingEntitiesWithOrderSearch(1, 1, "a.Id desc", where_sf, this.User.AccCode+DonorstbName)
+
+	this.Data["json"] = AccountTjModel{devicetotal, yilurutotal, yulurutotal, daifuchuntotal, yiguidangtotal, sftotal, rktotal, rklist, cktotal, cklist}
+	this.ServeJSON()
+}
+
+// @Title 按样本类型统计样本数量
+// @Description 按样本类型统计样本数量
+// @Success	200	{object} controllers.Request
+// @router /totalbysampletype [get]
+func (this *UserController) GetTotalByGroupbysampletype() {
+	diseases := this.GetString("diseases")
+	svc := samplesinfo.GetSamplesInfoService(utils.DBE)
+	where := " a.DeletionStateCode=0 "
+	if diseases != "" {
+		where = where + " and c.PathologicalNum = '" + diseases + "'"
+	}
+	this.Data["json"] = svc.GetTJBysampletype(this.User.AccCode, where)
+	this.ServeJSON()
+}
+
+// @Title 按设备统计样本数量
+// @Description 按设备统计样本数量
+// @Success	200	{object} controllers.Request
+// @router /totalbyeuipment [get]
+func (this *UserController) GetTotalByGroupbydevice() {
+	svcrole := role.GetRoleService(utils.DBE)
+	roleids := svcrole.GetRoleidsByuid(utils.ToStr(this.User.Id))
+	where := " a.AccCode = '" + this.User.AccCode + "'"
+	where = where + " and b.IState =1 and b.DeletionStateCode=0 and (a.CreateUserId=" + utils.ToStr(this.User.Id) + " or a.Id in (select EquipmentId Id FROM Base_RoleEquipment where RoleId in (" + strings.Join(roleids, ",") + ")))"
+
+	svc := samplesinfo.GetSamplesInfoService(utils.DBE)
+
+	this.Data["json"] = svc.GetTJBydevice(this.User.AccCode, where)
+	this.ServeJSON()
+}

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

@@ -11,10 +11,10 @@ import (
 
 	"dashoo.cn/backend/api/business/coderule"
 	"dashoo.cn/backend/api/business/printscheme"
+	"dashoo.cn/backend/api/business/samplesgroup"
 	"dashoo.cn/backend/api/business/samplesubpackage"
 	"dashoo.cn/backend/api/business/sampletype"
 	. "dashoo.cn/backend/api/controllers"
-	"dashoo.cn/cellbank/backend/api/business/samplesgroup"
 	"dashoo.cn/utils"
 )
 

+ 1 - 1
src/dashoo.cn/backend/api/controllers/token.go

@@ -6,9 +6,9 @@ import (
 
 	"github.com/astaxie/beego"
 
+	"dashoo.cn/backend/api/models"
 	"dashoo.cn/business2/auth"
 	"dashoo.cn/business2/userRole"
-	"dashoo.cn/backend/api/models"
 	"dashoo.cn/utils"
 )
 

+ 1 - 1
src/dashoo.cn/backend/api/main.go

@@ -15,7 +15,7 @@ func main() {
 	utils.InitDb()
 
 	// Initialize casbin.
-	//utils.InitCasbin()
+	utils.InitCasbin()
 
 	//	controllers.InitRedis()
 

+ 90 - 2
src/dashoo.cn/backend/api/routers/router.go

@@ -5,12 +5,14 @@ package routers
 
 import (
 	"dashoo.cn/backend/api/controllers"
+	"dashoo.cn/backend/api/controllers/biobank"
 	"dashoo.cn/backend/api/controllers/casbin"
 	"dashoo.cn/backend/api/controllers/document"
 	"dashoo.cn/backend/api/controllers/equipment"
 	"dashoo.cn/backend/api/controllers/instrument"
 	"dashoo.cn/backend/api/controllers/logs"
 	"dashoo.cn/backend/api/controllers/material"
+	"dashoo.cn/backend/api/controllers/samplesinfo"
 	"dashoo.cn/backend/api/controllers/setting"
 	"dashoo.cn/backend/api/controllers/system"
 	"dashoo.cn/backend/api/controllers/trigger"
@@ -43,6 +45,7 @@ func init() {
 				&controllers.TokenController{},
 			),
 		),
+
 		beego.NSNamespace("/users",
 			beego.NSInclude(
 				&casbin.UserController{},
@@ -194,6 +197,93 @@ func init() {
 				&instrument.InstrumentController{},
 			),
 		),
+		//样本管理
+		beego.NSNamespace("/sampletype",
+			beego.NSInclude(
+				&samplesinfo.SampleTypeController{},
+			),
+		),
+		beego.NSNamespace("/samplepreinput",
+			beego.NSInclude(
+				&samplesinfo.SamplespreinputController{},
+			),
+		),
+		beego.NSNamespace("/sampleinput",
+			beego.NSInclude(
+				&samplesinfo.SamplesinputController{},
+			),
+		),
+		beego.NSNamespace("/sampleoperation",
+			beego.NSInclude(
+				&samplesinfo.SampleorganController{},
+			),
+		),
+		beego.NSNamespace("/sampleorgan",
+			beego.NSInclude(
+				&samplesinfo.SampleorganController{},
+			),
+		),
+		beego.NSNamespace("/samplesfiles",
+			beego.NSInclude(
+				&samplesinfo.SamplesfilesController{},
+			),
+		),
+		beego.NSNamespace("/samplesubpackage",
+			beego.NSInclude(
+				&samplesinfo.SampleSubpackageController{},
+			),
+		),
+		beego.NSNamespace("/samplesunsave",
+			beego.NSInclude(
+				&samplesinfo.SamplesunsaveController{},
+			),
+		),
+		beego.NSNamespace("/sampleimporttemplate",
+			beego.NSInclude(
+				&samplesinfo.SampleimporttemplateController{},
+			),
+		),
+		//业务
+		beego.NSNamespace("/samplesapply",
+			beego.NSInclude(
+				&biobank.SamplesApplyController{},
+			),
+		),
+		beego.NSNamespace("/samplesbook",
+			beego.NSInclude(
+				&biobank.SamplesBookController{},
+			),
+		),
+		beego.NSNamespace("/samplescustomor",
+			beego.NSInclude(
+				&biobank.SamplesCustomorController{},
+			),
+		),
+		beego.NSNamespace("/samplesgroup",
+			beego.NSInclude(
+				&biobank.SamplesGroupController{},
+			),
+		),
+		beego.NSNamespace("/samplesprotocol",
+			beego.NSInclude(
+				&biobank.SamplesProtocolController{},
+			),
+		),
+		beego.NSNamespace("/samplessource",
+			beego.NSInclude(
+				&biobank.SamplesSourceController{},
+			),
+		),
+		beego.NSNamespace("/sampletest",
+			beego.NSInclude(
+				&biobank.SampleTestController{},
+			),
+		),
+		beego.NSNamespace("/sampletest_v",
+			beego.NSInclude(
+				&biobank.SampleTest_vController{},
+			),
+		),
 		//文件管理
 		beego.NSNamespace("/document",
 			beego.NSInclude(
@@ -237,8 +327,6 @@ func init() {
 				&controllers.UploadController{},
 			),
 		),
-
-
 	)
 	beego.AddNamespace(ns)
 }

+ 79 - 84
src/dashoo.cn/frontend_web/src/components/Headbar.vue

@@ -1,48 +1,39 @@
 <template>
   <header class="header">
-    <!-- <h1 class="brand" style="text-align:center;margin-left:10px;margin-right:1px;">
+    <h1 class="brand" style="text-align:center;margin-left:10px;margin-right:1px;">
       <router-link to="/">
         <img src="~/assets/img/logo.png" style="height:32px;">
       </router-link>
-    </h1> -->
-    <div v-if="!isMenuHidden" class="brand" style="background-color:#002140;padding-top:7px;padding-left:20px;width:180px;">
-      <router-link to="/">
-        <img src="../assets/img/logo_dagang2.png" style="height:35px;" />
+    </h1>
+    <!-- <h1 class="brand" style="text-align:center;margin-left:10px;margin-right:1px;margin-top:10px;">
+      <router-link to="/indexlims">
+        <img src="/img/logo_dagang.png" style="height:26px;">
       </router-link>
-    </div>
-    <div v-if="isMenuHidden" class="brand" style="background-color:#002140;padding-top:7px;padding-left:20px;width:36px;">
-      <router-link to="/">
-        <img src="../assets/img/title.png" style="height:35px;" />
-      </router-link>
-    </div>
-    <nav class="toolbar" style="margin-top: 3px;">
-      <img src="../assets/img/title_right.png" style="height:35px;padding-top:5px;" />
+    </h1> -->
+    <nav class="toolbar">
       <div style="margin: 10px 0px 0px 20px;"></div>
-      <el-tag type="text" size="mini" style="margin-top:12px">{{department}}</el-tag>
-
-      <ul class="list" style="background: #FFF;color: blue">
-        <li class="item" style="background: #FFF">
-          <a style="font-size: 90%;background: #FFF;color: #1D8CE0; font-weight: bold" href="#" v-if="authUser">
-            <span style="margin-right: 20px;">
-              <el-button type="text" icon="icon icon-shrink" v-if="fullscreen" @click="handleFullScreen"></el-button>
-              <el-button type="text" icon="icon icon-enlarge" v-if="!fullscreen" @click="handleFullScreen"></el-button>
-            </span>
-            您好, {{ authUser.Profile.Realname }}
-            <img v-if="authUser.Profile.Photo" style="background: #FFF; border: hidden" :src="'http://'+authUser.Profile.Host+authUser.Profile.Photo" class="avatar">
-            <img v-else class="avatar" style="background: #FFF; border: hidden" src="~/assets/img/avatar.svg" :alt="authUser.name">
+      <!--<menu-list :items="header.menus"/>
+      <input type="text" class="headerseach" @keydown="show($event)"  v-model="sampcode" placeholder="样本搜索" >
+      <span class="headerseachclose" :class="{ headerclosehavetxt: sampcode != ''}" onclick="headclearsearch()">x</span>-->
+      <input type="text" class="headerseach" @keydown="show($event)" v-model="sampcode" placeholder="样本搜索">
+      <span class="headerseachclose" :class="{ headerclosehavetxt: sampcode != ''}" @click="headclearsearch()"></span>
+      <ul class="list">
+        <li class="item">
+          <a style="font-size: 90%" href="#" v-if="authUser">您好, {{department}}{{ authUser.Profile.Realname }}
+            <img v-if="authUser.Profile.Photo" :src="'http://'+authUser.Profile.Host+authUser.Profile.Photo" class="avatar">
+            <img v-else class="avatar" src="~/assets/img/avatar.svg" :alt="authUser.name">
           </a>
-          <ul class="list" style="text-align: center;background: #FFF;">
+          <ul class="list" style="text-align: center;">
             <li class="item">
-              <router-link to="/usersetting" style="color: #1F2D3D; font-weight: bold">账户设置</router-link>
+              <router-link to="/usersetting">账户设置</router-link>
             </li>
-            <li class="divider" style="color: ActiveBorder;"></li>
+            <li class="divider"></li>
             <li class="item">
-              <a href="#" style="color: #1F2D3D; font-weight: bold" @click.prevent="logout">注销登录</a>
+              <a href="#" @click.prevent="logout">注销登录</a>
             </li>
           </ul>
         </li>
       </ul>
-
     </nav>
   </header>
 </template>
@@ -62,69 +53,73 @@
     },
     data() {
       return {
-
-        fullscreen: false,
         sampcode: '',
         department: ''
       }
     },
     created () {
-      this.getdepartment()
     },
     methods: {
-       handleFullScreen(){
-                let element = document.documentElement;
-                if (this.fullscreen) {
-                    if (document.exitFullscreen) {
-                        document.exitFullscreen();
-                    } else if (document.webkitCancelFullScreen) {
-                        document.webkitCancelFullScreen();
-                    } else if (document.mozCancelFullScreen) {
-                        document.mozCancelFullScreen();
-                    } else if (document.msExitFullscreen) {
-                        document.msExitFullscreen();
-                    }
-                } else {
-                    if (element.requestFullscreen) {
-                        element.requestFullscreen();
-                    } else if (element.webkitRequestFullScreen) {
-                        element.webkitRequestFullScreen();
-                    } else if (element.mozRequestFullScreen) {
-                        element.mozRequestFullScreen();
-                    } else if (element.msRequestFullscreen) {
-                        // IE11
-                        element.msRequestFullscreen();
-                    }
-                }
-                this.fullscreen = !this.fullscreen;
-            },
-     getdepartment(){
-         if (this.authUser.Profile.DepartmentId == "100000054") {
-          this.department = '欢迎使用'
-        } else{
-           this.$axios.get('/limsentrust/getshow')
-          .then(res => {
-            if(res.data.items === ''){
-              this.department = '欢迎使用'
-            } else if (res.data.items === 'yx') {
-              this.department = '宇信公司'
-            } else if  (res.data.items === 'tjz') {
-              this.department = '特检站'
-            } else if  (res.data.items === 'jlny') {
-              this.department = '计量能源站'
-            }else if  (res.data.items === 'gcjd') {
-              this.department = '工程监督中心'
-            }else if  (res.data.items === 'zj') {
-              this.department = '质检中心'
-            }else if  (res.data.items === 'zj') {
-              this.department = '物资商品检验所'
+      show: function (ev) {
+        let _this = this
+        if (process.env.appclient == 'lims') {
+          if (ev.keyCode === 13) {
+            if (_this.sampcode !== '') {
+              _this.$axios.get('testsample/judgesampleexist/' + _this.sampcode, {})
+                .then(res => {
+                  if (res.data.items === true) {
+                    _this.$router.push({
+                      path: `/positivereport/detectionresult?SampleCode=${_this.sampcode}`,
+                    })
+                  } else {
+                    _this.$message({
+                      type: 'warning',
+                      message: '该样本编码不存在!'
+                    })
+                  }
+                })
+                .catch(_ => {
+                  // handle error
+                  _this.$message({
+                    type: 'warning',
+                    message: '查询故障!请检查网络是否正常!'
+                  })
+                })
+            }
+          }
+        } else {
+          if (ev.keyCode === 13) {
+            if (_this.sampcode !== '') {
+              _this.$axios.get('sampleoperation/getstationbycode?code=' + _this.sampcode, {})
+                .then(res => {
+                  if (res.data.code === 0) {
+                    let val = res.data.item
+                    let stationstr =
+                      `${val.ShelfX};${val.ShelfY};${val.BoxX};${val.BoxY};${val.Position};${val.Id}`
+                    _this.$router.push({
+                      path: `/equipment/${val.EquipmentId}/manage`,
+                      query: {
+                        station: stationstr
+                      }
+                    })
+                  } else {
+                    _this.$message({
+                      type: 'warning',
+                      message: res.data.message
+                    })
+                  }
+                })
+                .catch(_ => {
+                  // handle error
+                  _this.$message({
+                    type: 'warning',
+                    message: '查询故障!请检查网络是否正常!'
+                  })
+                })
             }
-          })
-          .catch(err => {
-            console.error(err)
-          })
+          }
         }
-       },
+      },
       headclearsearch() {
         this.sampcode = ''
       }

+ 33 - 31
src/dashoo.cn/frontend_web/src/pages/index.vue

@@ -205,7 +205,7 @@
     },
     created() {
       this.getstylebyuser()
-      this.getdiseaseslist()
+      this.getDiseasesList()
       this.getPermissions() //权限
       let _this = this
       _this.user.photo = _this.authUser.Profile.Photo
@@ -236,13 +236,13 @@
       },
       initData() {
         let _this = this
-        this.$axios.get('users/getaccountingo', {})
+        this.$axios.get('users/getaccountinfo', {})
           .then(res => {
             _this.usertotal = res.data
             _this.RKList = res.data.RKlist
             _this.CKList = res.data.CKlist
-            _this.getgroupzzqg()
-            _this.getgroupdevice()
+            _this.getBySampleType()
+            _this.getByEquipment()
           })
           .catch(err => {
             // handle error
@@ -256,7 +256,7 @@
         let params = {
           percodes: `'${this.permissionscode.rkapprove}','${this.permissionscode.ckapprove}'`
         }
-        this.$axios.get('/permissions/isauths', {
+        this.$axios.get('/permission/isauths', {
             params
           })
           .then(res => {
@@ -273,7 +273,7 @@
           })
       },
       //获取编码规则疾病类型
-      getdiseaseslist() {
+      getDiseasesList() {
         // 获取疾病类型
         let _this = this
         _this.$axios.get('/sampletype/diseaseslist', {})
@@ -283,14 +283,15 @@
       },
       changePie() {
         this.tjzzdata = []
-        this.getgroupzzqg()
+        this.getBySampleType()
       },
-      getgroupzzqg() {
+      // 统计样本总数的饼状图
+      getBySampleType() {
         let _this = this
         let params = {
           diseases: this.Diseases,
         }
-        _this.$axios.get('users/gettotalbysampletype', {
+        _this.$axios.get('users/totalbysampletype', {
             params
           })
           .then(res => {
@@ -329,28 +330,6 @@
             console.error(err)
           })
       },
-      getgroupdevice() {
-        let _this = this
-        _this.$axios.get('users/gettotalbygroupbydevice', {})
-          .then(res => {
-            for (var i = 0; i < res.data.length; i++) {
-              if (res.data[i].Name === '') {
-                res.data[i].Name = '未知'
-              }
-              if (i > 12) {
-                _this.tjdevicecolor.push(_this.tjdevicecolor[i % 12])
-              }
-              _this.tjdevicex.push(res.data[i].Name)
-              _this.tjdevicey.push(res.data[i].Num)
-            }
-            _this.drawBarChart()
-          })
-          .catch(err => {
-            // handle error
-            console.error(err)
-          })
-      },
-      // 统计样本总数的饼状图
       drawPieChart() {
         var chartPie = echarts.init(document.getElementById('deviceChartPie'))
         chartPie.setOption({
@@ -382,6 +361,29 @@
           }]
         })
       },
+
+      //统计样本总数柱状图
+      getByEquipment() {
+        let _this = this
+        _this.$axios.get('users/totalbyeuipment', {})
+          .then(res => {
+            for (var i = 0; i < res.data.length; i++) {
+              if (res.data[i].Name === '') {
+                res.data[i].Name = '未知'
+              }
+              if (i > 12) {
+                _this.tjdevicecolor.push(_this.tjdevicecolor[i % 12])
+              }
+              _this.tjdevicex.push(res.data[i].Name)
+              _this.tjdevicey.push(res.data[i].Num)
+            }
+            _this.drawBarChart()
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
       drawBarChart() {
         let _this = this
         var chartBar = echarts.init(document.getElementById('deviceChartBar'))

+ 43 - 85
src/dashoo.cn/frontend_web/src/pages/login.vue

@@ -1,39 +1,26 @@
 <template>
-
-  <div style="height: calc(100vh); width: 100%; background-color:#FFFFFF" >
-    <img src="../assets/img/title_gongfang.png" style="height:50px; margin-top: 20px;margin-left: 100px;"  >
-    <div class="back-width">
-      <div class="login-body">
-        <section class="login">
-          <!--<header class="login-header">
-            <h1 style="text-align:center;margin-top:70px;margin-bottom:40px;"><router-link to="/"><img src="../assets/img/logo.png" style="height:80px;"></router-link></h1>
-            <el-alert v-if="error" :title="error.title" type="warning" :description="error.message" show-icon/>
-          </header>-->
-          <el-form class="login-form" auto-complete="off" :model="model" :rules="rules" ref="user" label-position="top">
-            <h2 class="heading">登录</h2>
-            <el-form-item label="用户名" prop="username">
-              <el-input type="text" v-model="model.username" placeholder="请输入用户名">
-                <el-select v-model="loginMode" slot="append" placeholder="登录类型" style="width: 110px;">
-                  <el-option label="普通账户" :value="1"></el-option>
-                  <el-option label="PTR认证" :value="2"></el-option>
-                </el-select>
-              </el-input>
-            </el-form-item>
-            <el-form-item label="密码" prop="password">
-              <el-input type="password" v-model="model.password" placeholder="请输入密码" @keyup.enter.native="login()" />
-            </el-form-item>
-            <el-button type="primary" :loading="loading" @click="login()">{{ loading ? '登录中...' : '登录' }}</el-button>
-          </el-form>
-
-
-        </section>
-      </div>
-    </div>
-    <div >
-      <footer class="login-footer" style="color:#A9A9A9">
-        ©大港油田信息中心 版权所有
+  <div class="login-body">
+    <section class="login">
+      <header class="login-header">
+        <h1 style="text-align:center;margin-top:70px;margin-bottom:40px;">
+          <router-link to="/"><img src="../assets/img/logo.png" style="height:80px;"></router-link>
+        </h1>
+        <el-alert v-if="error" :title="error.title" type="warning" :description="error.message" show-icon />
+      </header>
+      <el-form class="login-form" auto-complete="off" :model="model" :rules="rules" ref="user" label-position="top">
+        <h2 class="heading">登录</h2>
+        <el-form-item label="用户名" prop="username">
+          <el-input type="text" v-model="model.username" placeholder="请输入用户名" />
+        </el-form-item>
+        <el-form-item label="密码" prop="password">
+          <el-input type="password" v-model="model.password" placeholder="请输入密码" @keyup.enter.native="login()" />
+        </el-form-item>
+        <el-button type="primary" :loading="loading" @click="login()">{{ loading ? '登录中...' : '登录' }}</el-button>
+      </el-form>
+      <footer class="login-footer">
+        Copyright © 2018 labsop.
       </footer>
-    </div>
+    </section>
   </div>
 </template>
 
@@ -62,7 +49,6 @@
       }
 
       return {
-        loginMode: 1,
         model: model,
         rules: rules,
         error: null,
@@ -86,7 +72,7 @@
               }
             })
             if (process.env.appclient == 'lims') {
-              this.$router.push(this.$route.query.page || '/')
+              this.$router.push(this.$route.query.page || '/indexlims')
             } else if (process.env.appclient == 'cellbank') {
               this.$router.push(this.$route.query.page || '/indexdqm')
             } else {
@@ -111,69 +97,31 @@
 <style lang="scss">
   @import '../assets/styles/base/variables';
 
-  .back-width {
-    background-color: #2F79F6;
-    position: fixed;
-    margin: auto;
-    left: 0;
-    right: 0;
-    top: 70px;
-    width: 100%;
-    height: 550px;
-  }
-
   .login-body {
-
-    background: url("../assets/img/tian.png") no-repeat left 50%;
+    background: url("../assets/img/login_bg1.jpg") no-repeat 0 0;
+    // background: url("../assets/img/logo_01.jpg") no-repeat 0 0;
     font-family: 'Open Sans', sans-serif;
-    background-color: #2469E8;
     background-size: cover;
-
-    /*background-size: cover;
     -webkit-background-size: cover;
     -moz-background-size: cover;
-    -o-background-size: cover;*/
-    /*min-height: 1050px;*/
-
+    -o-background-size: cover;
+    min-height: 1050px;
+    height: 500px;
+    background-size: cover;
     position: absolute;
-
-    margin: auto;
-    left: -400px;
-    right: 0;
-    bottom: 0;
-    width: 899px;
-    height: 550px;
-    /*
     top: 0;
     right: 0;
     bottom: 0;
-    left: 0;*/
-  }
-
-  .login-footer {
-    font-size: 10px;
-    clear: both;
-    display: block;
-    text-align: center;
-    margin: 0px auto;
-    position: absolute;
-    bottom: 10px;
-    width: 100%;
-
-    a {
-      color: $brand-color;
-    }
+    left: 0;
   }
 
   .login {
-    /*flex: 1;
-    width: 100%;*/
-    position: relative;
+    flex: 1;
+    width: 100%;
     max-width: 22rem;
-    top: 60px;
-    left: 850px;
+    margin: 0 auto;
     font-size: 0.875rem;
-    opacity: 0.9;
+    opacity: 0.8;
 
     &-header {
       margin-bottom: 1rem;
@@ -214,7 +162,17 @@
       }
     }
 
+    &-footer {
+      margin-bottom: 1rem;
+      padding: 0.625rem;
+      // border: 0.0625rem solid $brand-color;
+      font-size: 0.75rem;
+      text-align: center;
 
+      a {
+        color: $brand-color;
+      }
+    }
   }
 
   .nuxt-progress {