4
0
Selaa lähdekoodia

首页展示 分组柱状图

shihang 6 vuotta sitten
vanhempi
commit
b20b9f565f

+ 6 - 0
src/dashoo.cn/backend/api/business/samplesinfo/samplesinfo.go

@@ -645,3 +645,9 @@ type SamplesSearchTemplate struct {
 	Name     string `xorm:"VARCHAR(100)"` //模版名字
 	Template string `xorm:"TEXT"`         //模版内容
 }
+
+type GroupSamples struct {
+	IState int
+	Name   string
+	Num    int
+}

+ 13 - 0
src/dashoo.cn/backend/api/business/samplesinfo/samplesinfoService.go

@@ -1510,6 +1510,19 @@ func (s *SamplesInfoService) GetTJBydevice(acccode, where string) (list []TJGrou
 	return
 }
 
+//多中心管理分组统计
+func (s *SamplesInfoService) GetTJBygroup(acccode string, where string) (list []GroupSamples) {
+	tbldetail := acccode + SamplesDetailtbName
+	tbgroup := acccode + GroupDetailName
+
+	sql := `select * from (
+		 select a.IState ,c.GroupName as Name,count(1) Num from  ` + tbldetail + ` a 
+		 left join ` + tbgroup + ` c on c.SampleId = a.Id 
+		 where ` + where + ` group by IState,Name) m order by IState desc`
+	s.DBE.Sql(sql).Find(&list)
+	return
+}
+
 func (s *SamplesInfoService) GetStationByCode(acccode string, where string) SamplesInfoList {
 	if where == "" {
 		where = "1=1"

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

@@ -98,19 +98,6 @@ func (this *UserController) Get() {
 	this.ServeJSON()
 }
 
-// @Title 获取用户菜单权限
-// @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()
-//}
-
 // @Title 获取用户菜单权限
 // @Description 获取用户菜单权限
 // @Success	200	{object} controllers.Request
@@ -524,7 +511,6 @@ func (this *UserController) GetAccountInfo() {
 	svcw := samplesapply.GetSamplesApplyService(utils.DBE)
 	where_rk := " ApplyType = 1 and ApplyStatus = 0 "
 	rktotal, rklist := svcw.GetApplyViewtList(1, 100, this.User.AccCode+SamplesApplyName, "Id", where_rk)
-	fmt.Println("--------------", rklist)
 	where_ck := " ApplyType = 2 and ApplyStatus = 0 "
 	cktotal, cklist := svcw.GetApplyViewtList(1, 100, this.User.AccCode+SamplesApplyName, "Id", where_ck)
 
@@ -534,7 +520,6 @@ func (this *UserController) GetAccountInfo() {
 	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}
-	fmt.Println("-234444444--", this.Data["json"])
 	this.ServeJSON()
 }
 
@@ -569,6 +554,18 @@ func (this *UserController) GetTotalByGroupbydevice() {
 	this.ServeJSON()
 }
 
+// @Title 多中心分组统计各状态样本
+// @Description 多中心分组统计各状态样本
+// @Success	200	{object} controllers.Request
+// @router /samplebygroup [get]
+func (this *UserController) GetSampleByGroup() {
+	where := " 1 = 1 "
+	where += " and c.GroupType = 'SampleGroup' "
+	svc := samplesinfo.GetSamplesInfoService(utils.DBE)
+	this.Data["json"] = svc.GetTJBygroup(this.User.AccCode, where)
+	this.ServeJSON()
+}
+
 // @Title 注册管理账号
 // @Description 注册管理账号
 // @Param	body	body	business.device.DeviceChannels	"传感器信息"

+ 2 - 2
src/dashoo.cn/frontend_web/nuxt.config.js

@@ -159,8 +159,8 @@ module.exports = {
   },
 
   axios: {
-    // baseURL: '//localhost:9081/api/' // 本机开发使用
-    baseURL: '//47.92.238.200:9081/api/' // BioBank on ALi发布使用
+    baseURL: '//localhost:9081/api/' // 本机开发使用
+    // baseURL: '//47.92.238.200:9081/api/' // BioBank on ALi发布使用
     // baseURL: '//188.188.30.89:9081/api/' //临沂使用
     // baseURL: '//api09.labsop.cn/api/'
     // baseURL: '//192.168.0.211:10091/api/' // 花生所系统

+ 95 - 82
src/dashoo.cn/frontend_web/src/pages/equipment/_opera/manage_new.vue

@@ -23,24 +23,22 @@
           <el-breadcrumb-item>样本管理 {{equipName}}</el-breadcrumb-item>
         </el-breadcrumb>
 
-        <el-alert v-if="batchitem == '1'"
-          :title="'支持批量存储,多个样本存储时,系统自动根据所选位置为起始位置依次进行存储!本次将批量添加' + batchstorages.length + '个样本'" type="warning" center
-          show-icon style="margin-bottom:5px;min-width: 1150px"></el-alert>
         <span style="float: right;">
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
-            v-if="Apply_flag==false" @click="SaveApply">保存</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
-            @click="exportVisible = true">导入</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+          <el-button size="mini" type="primary" style="margin-left: 8px" v-if="Apply_flag==false" @click="SaveApply">保存</el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px" @click="exportVisible = true">导入</el-button>
+          <el-button size="mini" type="primary" style="margin-left: 8px"
             @click="showBoxTemplate()">下载冻存盒导入模板</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+          <el-button size="mini" type="primary" style="margin-left: 8px"
             @click="showEquipemplate()">下载设备模板</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="refreshcbc">
+          <el-button size="mini" type="primary" style="margin-left: 8px" @click="refreshcbc">
             刷新容量状态</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回
+          <el-button size="mini" type="primary" style="margin-left: 8px" @click="goback">返回
           </el-button>
         </span>
       </div>
+      <el-alert v-if="batchitem == '1'"
+          :title="'支持批量存储,多个样本存储时,系统自动根据所选位置为起始位置依次进行存储!本次将批量添加' + batchstorages.length + '个样本'" type="warning" center
+          show-icon style="margin-bottom:5px;min-width: 1150px"></el-alert>
 
       <div style="text-align:center;margin-top:-10px;margin-bottom:3px">
         <el-row>
@@ -155,7 +153,9 @@
       </div>
       <!--冰箱-->
       <el-row>
-        <el-col :span="11" style="margin-top: 20px">
+        <el-col :span="11" style="margin-top: 20px;">
+          <div class="slider" ref="slider">
+    <div class="slider-group" ref="sliderGroup" style="width:200px">
           <div class="tablebox">
             <table class="sampletablemanage"
               v-bind:style="{ width: yedanguanitem == 20 ? '80px' : 10*TableWidth + '%', height: yedanguanitem == 20 ? '70px' : 10*TableHeight + '%' }">
@@ -194,6 +194,8 @@
               </tbody>
             </table>
           </div>
+          </div>
+          </div>
         </el-col>
         <el-col :span="13">
           <el-card v-if="Apply_flag" class="box-card sampledetail" style="margin-top: 8px;" id="equiinfocard">
@@ -249,7 +251,7 @@
                     <label>样本条码 : {{ sampleForm.SampleCode }} </label>
                   </el-col>
                   <el-col :span="12">
-                    <label>可用容量 : {{ sampleForm.Capacity }} {{ sampleForm.Unit }} </label>
+                    <label>可用容量 : {{ sampleForm.Capacitystr }} {{ sampleForm.Unit }} </label>
                   </el-col>
                   <el-col :span="12">
                     <label>录入人 : {{ sampleForm.CreateBy }} </label>
@@ -311,8 +313,8 @@
       <el-form :model="sampleForm" ref="sampleForm" :rules="sampleformRule" label-width="120px" size="mini">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="样本类型" required prop="SampleType">
-              <el-select v-model="sampleForm.SampleType" clearable placeholder="请选择" style="width:100%"
+            <el-form-item label="样本类型" required prop="SampleTypestr">
+              <el-select v-model="sampleForm.SampleTypestr" clearable placeholder="请选择" style="width:100%"
                 @change="chooseSampleType" :disabled="disabledsampletype || batchitem == '1'">
                 <el-option v-for="item in sampleTypeList" :label="item.label" :key="item" :value="item.value">
                 </el-option>
@@ -373,8 +375,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="可用容量" prop="Capacity" placeholder="可用容量">
-              <el-input v-model="sampleForm.Capacity" :disabled="disabledcapacity" placeholder="可用容量">
+            <el-form-item label="可用容量" prop="Capacitystr" placeholder="可用容量">
+              <el-input v-model="sampleForm.Capacitystr" :disabled="disabledcapacity" placeholder="可用容量">
               </el-input>
             </el-form-item>
           </el-col>
@@ -669,12 +671,12 @@
         sampleForm: {
           BarCode: '', // 样本条码
           SampleCode: '', // 样本编码
-          SampleType: '', // 样本类型
+          SampleTypestr: '', // 样本类型
           SampleTypeName: '',
           SamplingSiteName: '',
           Name: '', // 名称
           ReceiveDate: new Date(), // 接收日期
-          Capacity: '', // 可用容量
+          Capacitystr: '', // 可用容量
           Unit: '', // 单位(容量)
           ValidityDate: '', // 有效日期
           InnerCode: '', // 样本内码
@@ -712,11 +714,11 @@
             validator: checkSampleCode,
             trigger: 'blur'
           }],
-          SampleType: [{
+          SampleTypestr: [{
             validator: checkSampleType,
             trigger: 'change'
           }],
-          Capacity: [{
+          Capacitystr: [{
             validator: checkCapacity,
             trigger: 'blur'
           }],
@@ -2648,8 +2650,10 @@
         } else { // 批量添加,如果点击的是空白位置会进入
           this.getSampleInfoByBatchs()
           this.extendList = []
-          this.sampleTitle = '新增样本'
-          this.sampleInfoDialog = true
+          if(this.Apply_flag == true) {
+            this.sampleTitle = '新增样本'
+            this.sampleInfoDialog = true
+          }        
         }
         this.dchxtable = y
         this.dchytable = x
@@ -2702,7 +2706,7 @@
             _this.sampleForm.BarCode = res.data.BarCode
             _this.sampleForm.SampleCode = res.data.SampleCode
             _this.sampleForm.SampleTypeName = res.data.SampleTypeName + ''
-            _this.sampleForm.SampleType = res.data.SampleType + ''
+            _this.sampleForm.SampleTypestr = res.data.SampleType + ''
             _this.sampleForm.Name = res.data.Name
             if (res.data.ReceiveDate.substring(0, 3) === '000') {
               _this.sampleForm.ReceiveDate = null
@@ -2724,7 +2728,7 @@
               _this.sampleForm.ValidityDate = new Date(res.data.ValidityDate)
               _this.ValidityDate = res.data.ValidityDate + ''
             }
-            _this.sampleForm.Capacity = res.data.Capacity + ''
+            _this.sampleForm.Capacitystr = res.data.Capacity + ''
             _this.sampleForm.Unit = res.data.Unit
             _this.sampleForm.InnerCode = res.data.InnerCode
             _this.sampleForm.Remark = res.data.Remark
@@ -2785,7 +2789,11 @@
                 .then(res => {
                   _this.extendList = res.data
                   for (let i = 0; i < this.extendList.length; i++) {
-                    this.extendList[i].FieldDefault = val[this.extendList[i].FieldName]          
+                    if (this.extendList[i].FieldType == '4') {
+                      this.extendList[i].FieldDefault = this.formatDateTime(val[this.extendList[i].FieldName])
+                    } else {
+                      this.extendList[i].FieldDefault = val[this.extendList[i].FieldName]
+                    }
                   }
                 })
             })
@@ -2814,9 +2822,9 @@
           let val = _this.batchstorages[0]
           _this.sampleForm.BarCode = val.BarCode
           _this.sampleForm.SampleCode = val.SampleCode
-          _this.sampleForm.SampleType = val.SampleTypeId + ''
+          _this.sampleForm.SampleTypestr = val.SampleTypeId + ''
           _this.sampleForm.SampleTypeName = val.SampleTypeName
-          _this.sampleForm.Capacity = val.SampleSize
+          _this.sampleForm.Capacitystr = val.SampleSize
           _this.sampleForm.Unit = val.SampleUnit
           _this.sampleForm.SourceId = val.SampleSourceId
           _this.sampleForm.SourceIdCard = val.IdCard
@@ -2855,7 +2863,7 @@
         let _this = this
         _this.$axios.get('/sampletype/sampletypeajax?id=' + v, {})
           .then(res => {
-            _this.sampleForm.Capacity = res.data.SampleType.DefaultCapacity + ''
+            _this.sampleForm.Capacitystr = res.data.SampleType.DefaultCapacity + ''
             if (res.data.VHours === '5000-1-1 23:59:59') {
               _this.sampleForm.Isyongjiu = true
             } else {
@@ -2888,7 +2896,7 @@
                 _this.disabledsourcebutton = true
                 _this.sampleForm.BarCode = ''
                 _this.sampleForm.SampleCode = res.data.SampleCode
-                _this.sampleForm.SampleType = res.data.SampleType + ''
+                _this.sampleForm.SampleTypestr = res.data.SampleType + ''
                 _this.sampleForm.Name = res.data.Name
                 _this.sampleForm.SourceId = res.data.SourceId
                 _this.sampleForm.SourceIdCard = res.data.SourceIdCard
@@ -2898,7 +2906,7 @@
                 } else {
                   _this.sampleForm.ReceiveDate = new Date(res.data.ReceiveDate)
                 }
-                _this.getSampleTypedata(_this.sampleForm.SampleType)
+                _this.getSampleTypedata(_this.sampleForm.SampleTypestr)
                 // 获取特有扩展并给特有扩展信息赋值
                 _this.getExtendValue(res.data)
               }
@@ -2931,7 +2939,7 @@
         this.sampleForm.SourceName = val.Name
       },
 
-      showDialog(){
+      showDialog() {
         this.sampleTitle = '编辑样本'
         this.sampleInfoDialog = true
       },
@@ -3038,43 +3046,41 @@
                     //清空缓存数据
                     _this.batchstorages = []
                     store.set('batchstorages', _this.batchstorages)
-                  } 
-                  // else if (res.data.code === 10 || res.data.code === 11) { // 保存成功后打印
-                  //   this.$message({
-                  //     type: 'success',
-                  //     message: res.data.message
-                  //   })
-                  //   _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
-                  //   // 自动打印
-                  //   if (res.data.item.Printmsg !== '') {
-                  //     let printparams = res.data.item.Printmsg.split(',')
-                  //     if (printparams.length === 3 && printparams[0] !== '' && printparams[1] !== '' &&
-                  //       printparams[2] !== '') {
-                  //       window.PrintReport(printparams[1], `samples,${printparams[2]},${printparams[0]}`)
-                  //     }
-                  //   }
-                  //   // 清空上传附件
-                  //   _this.$refs.refuploadattach.clearFiles()
-                  //   // 获取附件信息
-                  //   _this.getattachment(_this.sampleForm.BarCode, _this.sampleForm.SampleCode)
-                  //   //清空缓存数据
-                  //   _this.batchstorages = []
-                  //   store.set('batchstorages', _this.batchstorages)
-                  // } else if (res.data.code === 20) {
-                  //   this.$message({
-                  //     type: 'error',
-                  //     message: res.data.message
-                  //   })
-                  //   _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
-                  //   // 清空上传附件
-                  //   _this.$refs.refuploadattach.clearFiles()
-                  //   // 获取附件信息
-                  //   _this.getattachment(_this.sampleForm.BarCode, _this.sampleForm.SampleCode)
-                  //   //清空缓存数据
-                  //   _this.batchstorages = []
-                  //   store.set('batchstorages', _this.batchstorages)
-                  // } 
-                  else {
+                  } else if (res.data.code === 10 || res.data.code === 11) { // 保存成功后打印
+                    this.$message({
+                      type: 'success',
+                      message: res.data.message
+                    })
+                    _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
+                    // 自动打印
+                    if (res.data.item.Printmsg !== '') {
+                      let printparams = res.data.item.Printmsg.split(',')
+                      if (printparams.length === 3 && printparams[0] !== '' && printparams[1] !== '' &&
+                        printparams[2] !== '') {
+                        window.PrintReport(printparams[1], `samples,${printparams[2]},${printparams[0]}`)
+                      }
+                    }
+                    // 清空上传附件
+                    _this.$refs.refuploadattach.clearFiles()
+                    // 获取附件信息
+                    _this.getattachment(_this.sampleForm.BarCode, _this.sampleForm.SampleCode)
+                    //清空缓存数据
+                    _this.batchstorages = []
+                    store.set('batchstorages', _this.batchstorages)
+                  } else if (res.data.code === 20) {
+                    this.$message({
+                      type: 'error',
+                      message: res.data.message
+                    })
+                    _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
+                    // 清空上传附件
+                    _this.$refs.refuploadattach.clearFiles()
+                    // 获取附件信息
+                    _this.getattachment(_this.sampleForm.BarCode, _this.sampleForm.SampleCode)
+                    //清空缓存数据
+                    _this.batchstorages = []
+                    store.set('batchstorages', _this.batchstorages)
+                  } else {
                     this.$message({
                       type: 'warning',
                       message: res.data.message
@@ -3221,7 +3227,8 @@
             cancelButtonText: '取消',
             type: 'warning'
           }).then(() => {
-            _this.$axios.delete('sampleinput/' + _this.sampleinfoid + '?sampletype=' + _this.sampleForm.SampleType,
+            _this.$axios.delete('sampleinput/' + _this.sampleinfoid + '?sampletype=' + _this.sampleForm
+                .SampleTypestr,
                 null)
               .then(res => {
                 if (res.data.code === 0) {
@@ -3282,7 +3289,7 @@
         this.sampleForm.SourceName = ''
         this.sampleForm.InnerCode = ''
         this.sampleForm.SampleCode = ''
-        this.sampleForm.Capacity = ''
+        this.sampleForm.Capacitystr = ''
         this.sampleForm.Unit = ''
         this.sampleForm.CreateBy = ''
         this.sampleForm.ReceiveDate = new Date()
@@ -3291,7 +3298,7 @@
         this.ValidityDate = ''
         this.sampleForm.Isyongjiu = false
         this.GroupIdOption = []
-        this.sampleForm.SampleType = ''
+        this.sampleForm.SampleTypestr = ''
         this.sampleForm.Remark = ''
         this.sampleForm.type_flag = 'add'
         this.sampleinfoid = 0
@@ -3352,7 +3359,6 @@
             this.downloadBoxVisible = true
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -3364,7 +3370,6 @@
               1) + '_' + this.equipid + '_' + this.yshelf + '_' + this.xshelf + '_' + this.xbox + '_' + this.ybox +
             "?templateName=" + this.downloadTemplateName, {})
           .then(res => {
-            // response
             if (res.data.code === 0) {
               this.$message({
                 type: 'success',
@@ -3375,7 +3380,6 @@
             this.downloadEquipVisible = false
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -3386,7 +3390,6 @@
               1) + '_' + this.equipid + '_' + this.yshelf + '_' + this.xshelf + '_' + this.xbox + '_' + this.ybox +
             "?templateName=" + this.downloadTemplateName, {})
           .then(res => {
-            // response
             if (res.data.code === 0) {
               this.$message({
                 type: 'success',
@@ -3397,7 +3400,6 @@
             this.downloadBoxVisible = false
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -3434,7 +3436,6 @@
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -3463,10 +3464,8 @@
       refreshcbc() {
         let _this = this
         _this.downloading = true
-        // request
         this.$axios.put('/equipment/refresh', {})
           .then(res => {
-            // response
             this.$message({
               type: 'success',
               message: '刷新冻存盒状态完成!'
@@ -3474,7 +3473,6 @@
             _this.downloading = false
           })
           .catch(err => {
-            // handle error
             console.error(err)
             _this.downloading = false
           })
@@ -3603,7 +3601,22 @@
           return val.substring(0, 19)
         }
       },
-
+      formatDateTime(date) {
+        date = date.substring(4, 24)
+        return date
+        // var y = date.getFullYear();
+        // var m = date.getMonth() + 1;
+        // m = m < 10 ? ('0' + m) : m;
+        // var d = date.getDate();
+        // d = d < 10 ? ('0' + d) : d;
+        // var h = date.getHours();
+        // var minute = date.getMinutes();
+        // var second = date.getSeconds();
+        // minute = minute < 10 ? ('0' + minute) : minute;
+        // minute = second < 10 ? ('0' + second) : second;
+        // return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
+      },
+      
       getGrouplist() {
         let _this = this
         _this.$axios.get('/samplesgroup/grouplist', {})

+ 316 - 203
src/dashoo.cn/frontend_web/src/pages/index.vue

@@ -1,162 +1,192 @@
 <template>
-  <div>
+  <div slot="header" style="padding-top: 0px">
     <el-card>
-      <!--标题部分-->
-      <div slot="header" style="padding-top: 0px">
-        <el-row type="flex" align="middle">
-          <span>
-            <img v-if="user.photo" :src="'http://'+user.host+user.photo" class="avatar-index">
-            <img v-else class="avatar-index" src="../assets/img/avatar-default.jpg" :alt="user.name"> &nbsp;[
-            {{user.Realname}} ]
-          </span>
-          <div style="margin-left:10px;">
-            <router-link :to="'/equipment'">
-              <el-button type="primary" plain style="margin-right:5px;" size="mini">
-                容器总数
-                <span style="color:#0000FF">【{{usertotal.DeviceTotal}}】</span>
-              </el-button>
-            </router-link>
-            <router-link :to="'/samples/stored'">
-              <el-button type="primary" plain style="margin-right:5px;" size="mini">
-                已存储样本
-                <span style="color:#0000FF">【{{usertotal.YILRTotal}}】</span>
-              </el-button>
-            </router-link>
-            <router-link :to="'/samples/prerecorded'">
-              <el-button type="primary" plain style="margin-right:5px;" size="mini">
-                预录入样本
-                <span style="color:#0000FF">【{{usertotal.YULRTotal}}】</span>
-              </el-button>
-            </router-link>
-            <router-link :to="'/samples/waitingstore'">
-              <el-button type="primary" plain style="margin-right:5px;" size="mini">
-                待复存样本
-                <span style="color:#0000FF;">【{{usertotal.DFCTotal}}】</span>
-              </el-button>
-            </router-link>
-            <router-link :to="'/samples/archived'">
-              <el-button type="primary" plain style="margin-right:5px;" size="mini">
-                已归档样本
-                <span style="color:#0000FF">【{{usertotal.YGDTotal}}】</span>
-              </el-button>
-            </router-link>
-            <router-link :to="'/donors/flupplan'">
-              <el-button type="primary" plain style="margin-right:5px;" size="mini" v-if="acc =='s5OVE'">
-                待随访
-                <span style="color:#0000FF">【{{usertotal.SFTotal}}】</span>
-              </el-button>
-            </router-link>
-            <router-link :to="'/biobank/sampleRK'">
-              <el-button type="primary" plain style="margin-right:5px;" size="mini"
-                v-if="acc =='sgVEw' && permissions[permissionscode.rkapprove]">
-                待审核入库
-                <span style="color:#0000FF">【{{usertotal.RKTotal}}】</span>
-              </el-button>
-            </router-link>
-            <router-link :to="'/biobank/sampleCK'">
-              <el-button type="primary" plain style="margin-right:5px;" size="mini"
-                v-if="acc =='sgVEw' && permissions[permissionscode.ckapprove]">
-                待审核出库
-                <span style="color:#0000FF">【{{usertotal.CKTotal}}】</span>
-              </el-button>
-            </router-link>
-          </div>
-        </el-row>
-      </div>
-      <el-row :gutter="10" type="flex" justify="space-around" v-loading="downloading"
-        element-loading-text="数据拼命读取中,请稍候。。。">
-        <!--样本统计-->
-        <el-col :span="12">
-          <el-card>
-            <div slot="header">
-              <i class="icon icon-paragraph-justify"> 样本统计</i>
-              <span style="float: right;">
-                <el-select ref="refDiseases" style="margin-top: -10px;" size="mini" v-model="Diseases" clearable
-                  @change="changePie" placeholder="疾病类型">
-                  <el-option v-for="item in diseaseinfolist" :label="item.Value" :value="item.Id" :key="item.Id">
-                  </el-option>
-                </el-select>
-              </span>
-            </div>
-            <div v-if="sampleTitle.length === 0">无显示数据,可在
-              <router-link :to="'/samples/prerecorded'">样本管理</router-link> 中录入样本</div>
-            <div id="SamplePie" style="width:100%; height:366.5px;"></div>
-          </el-card>
-        </el-col>
-        <!--容器数据统计-->
-        <el-col :span="12">
-          <el-card>
-            <div slot="header">容器数据统计</div>
-            <div style="overflow-x:scroll; overflow-y:hidden;">
-              <div v-if="EquipmentX.length === 0">无显示数据,可在
-                <router-link :to="'/equipment'">容器管理</router-link> 模块增加容器</div>
-              <div id="EquipmentBar" style="height:380px;margin-left:5px;margin-top:-30px;min-width:400px;"
-                :style="{ width: usertotal.DeviceTotal * 30 + 'px' }"></div>
-            </div>
-          </el-card>
-        </el-col>
-      </el-row>
-      <br>
-      <el-row :gutter="10" type="flex" justify="space-around" v-loading="downloading"
-        element-loading-text="数据拼命读取中,请稍候。。。">
-        <!--待审核入库统计-->
-        <el-col :span="12">
-          <el-card class="box-card waitlist" style="height: calc(100vh - 410px);"
-            v-if="acc =='sgVEw' && permissions[permissionscode.rkapprove]">
-            <div slot="header">
-              <i class="icon icon-paragraph-justify"> 待审核入库</i>
-            </div>
-            <el-table :data="RKList" size="mini" height="calc(100vh - 470px)">
-              <el-table-column label="操作" width="70" align="center">
-                <template slot-scope="scope">
-                  <router-link :to="'/biobank/sampleRK/'+scope.row.Id+'/operation'">
-                    <el-button type="text" title="编辑" size="small" icon="el-icon-edit"></el-button>
-                  </router-link>
-                </template>
-              </el-table-column>
-              <el-table-column prop="EntryNo" sortable min-width="110" label="入库单号" align="center"
-                show-overflow-tooltip></el-table-column>
-              <el-table-column prop="OperationBy" sortable min-width="80" label="申请人" align="center"
-                show-overflow-tooltip></el-table-column>
-              <el-table-column prop="EntryTime" sortable min-width="110" label="入库时间" align="center"
-                show-overflow-tooltip>
-                <template slot-scope="scope">
-                  {{ jstimehandle(scope.row.EntryTime)}}
-                </template>
-              </el-table-column>
-              <el-table-column prop="Remark" sortable label="备注" align="center" show-overflow-tooltip></el-table-column>
-            </el-table>
-          </el-card>
-        </el-col>
-        <!--待审核出库统计-->
-        <el-col :span="12">
-          <el-card class="box-card waitlist" style="height: calc(100vh - 410px);"
-            v-if="acc =='sgVEw' && permissions[permissionscode.ckapprove]">
-            <div slot="header">待审核出库</div>
-            <el-table :data="CKList" size="mini" height="calc(100vh - 470px)">
-              <el-table-column label="操作" width="70" align="center">
-                <template slot-scope="scope">
-                  <router-link :to="'/biobank/sampleCK/'+scope.row.Id+'/operation'">
-                    <el-button type="text" title="编辑" size="small" icon="el-icon-edit"></el-button>
-                  </router-link>
-                </template>
-              </el-table-column>
-              <el-table-column prop="EntryNo" sortable min-width="110" label="出库单号" align="center"
-                show-overflow-tooltip></el-table-column>
-              <el-table-column prop="OperationBy" sortable min-width="80" label="申请人" align="center"
-                show-overflow-tooltip></el-table-column>
-              <el-table-column prop="EntryTime" sortable min-width="110" label="入库时间" align="center"
-                show-overflow-tooltip>
-                <template slot-scope="scope">
-                  {{ jstimehandle(scope.row.EntryTime)}}
-                </template>
-              </el-table-column>
-              <el-table-column prop="Remark" sortable label="备注" align="center" show-overflow-tooltip></el-table-column>
-            </el-table>
-          </el-card>
-        </el-col>
-      </el-row>
+      <span style="float: left; margin-top:10px;">
+        <img v-if="user.photo" :src="'http://'+user.host+user.photo" class="avatar-index">
+        <img v-else class="avatar-index" src="../assets/img/avatar-default.jpg" :alt="user.name">
+        &nbsp;[{{user.Realname}} ]
+      </span>
+      <el-form ref="form" :inline="true" style="float: left; margin-left:20px;">
+        <el-form-item>
+          <router-link :to="'/equipment'">
+            <el-button type="primary" plain style="margin-right:5px;" size="mini">
+              容器总数
+              <span style="color:#0000FF">【{{usertotal.DeviceTotal}}】</span>
+            </el-button>
+          </router-link>
+        </el-form-item>
+        <el-form-item>
+          <router-link :to="'/samples/stored'">
+            <el-button type="primary" plain style="margin-right:5px;" size="mini">
+              已存储样本
+              <span style="color:#0000FF">【{{usertotal.YILRTotal}}】</span>
+            </el-button>
+          </router-link>
+        </el-form-item>
+        <el-form-item>
+          <router-link :to="'/samples/prerecorded'">
+            <el-button type="primary" plain style="margin-right:5px;" size="mini">
+              预录入样本
+              <span style="color:#0000FF">【{{usertotal.YULRTotal}}】</span>
+            </el-button>
+          </router-link>
+        </el-form-item>
+        <el-form-item>
+          <router-link :to="'/samples/waitingstore'">
+            <el-button type="primary" plain style="margin-right:5px;" size="mini">
+              待复存样本
+              <span style="color:#0000FF;">【{{usertotal.DFCTotal}}】</span>
+            </el-button>
+          </router-link>
+        </el-form-item>
+        <el-form-item>
+          <router-link :to="'/samples/archived'">
+            <el-button type="primary" plain style="margin-right:5px;" size="mini">
+              已归档样本
+              <span style="color:#0000FF">【{{usertotal.YGDTotal}}】</span>
+            </el-button>
+          </router-link>
+        </el-form-item>
+        <el-form-item>
+          <router-link :to="'/donors/flupplan'">
+            <el-button type="primary" plain style="margin-right:5px;" size="mini" v-if="acc =='s5OVE'">
+              待随访
+              <span style="color:#0000FF">【{{usertotal.SFTotal}}】</span>
+            </el-button>
+          </router-link>
+        </el-form-item>
+        <el-form-item>
+          <router-link :to="'/biobank/sampleRK'">
+            <el-button type="primary" plain style="margin-right:5px;" size="mini"
+              v-if="acc =='sgVEw' && permissions[permissionscode.rkapprove]">
+              待审核入库
+              <span style="color:#0000FF">【{{usertotal.RKTotal}}】</span>
+            </el-button>
+          </router-link>
+        </el-form-item>
+        <el-form-item>
+          <router-link :to="'/biobank/sampleCK'">
+            <el-button type="primary" plain style="margin-right:5px;" size="mini"
+              v-if="acc =='sgVEw' && permissions[permissionscode.ckapprove]">
+              待审核出库
+              <span style="color:#0000FF">【{{usertotal.CKTotal}}】</span>
+            </el-button>
+          </router-link>
+        </el-form-item>
+      </el-form>
     </el-card>
+
+    <el-row>
+      <el-card style="margin-top: 5px; height:460.5px; width: 100%" v-if="acc =='sgVEw' && permissions[permissionscode.showbar]">
+        <div class="salesCard">
+          <el-col :span="16" style="margin-top: 20px">
+            <div v-if="groupList.length === 0">无显示数据,可在
+              <router-link :to="'/setting/systemitems'">数据字典</router-link> 中录入</div>
+            <div id="GroupBar" style="height:380px; margin-left:-25px; margin-top:10px; min-width:400px; width: 900px">
+            </div>
+          </el-col>
+          <!-- <el-col :span="8" style="float: right; margin-top: -10px">
+            <div v-if="ProjectList.length === 0">无显示数据</div>
+            <ranking-list title="检测报告" :list="GroupSamList" />
+          </el-col> -->
+        </div>
+      </el-card>
+    </el-row>
+
+    <el-row :gutter="5" type="flex" justify="space-around" v-loading="downloading" element-loading-text="数据拼命读取中,请稍候。。。"
+      style="margin-top:5px">
+      <!--样本统计-->
+      <el-col :span="12">
+        <el-card>
+          <div slot="header">
+            <i class="icon icon-paragraph-justify"> 样本统计</i>
+            <span style="float: right;">
+              <el-select ref="refDiseases" style="margin-top: -10px;" size="mini" v-model="Diseases" clearable
+                @change="changePie" placeholder="疾病类型">
+                <el-option v-for="item in diseaseinfolist" :label="item.Value" :value="item.Id" :key="item.Id">
+                </el-option>
+              </el-select>
+            </span>
+          </div>
+          <div v-if="sampleTitle.length === 0">无显示数据,可在
+            <router-link :to="'/samples/prerecorded'">样本管理</router-link> 中录入样本</div>
+          <div id="SamplePie" style="width:100%; height:366.5px;"></div>
+        </el-card>
+      </el-col>
+      <!--容器数据统计-->
+      <el-col :span="12">
+        <el-card>
+          <div slot="header">容器数据统计</div>
+          <div style="overflow-x:scroll; overflow-y:hidden;">
+            <div v-if="EquipmentX.length === 0">无显示数据,可在
+              <router-link :to="'/equipment'">容器管理</router-link> 模块增加容器</div>
+            <div id="EquipmentBar" style="height:380px;margin-left:5px;margin-top:-30px;min-width:400px;"
+              :style="{ width: usertotal.DeviceTotal * 30 + 'px' }"></div>
+          </div>
+        </el-card>
+      </el-col>
+    </el-row>
+
+    <el-row :gutter="5" type="flex" justify="space-around" v-loading="downloading" element-loading-text="数据拼命读取中,请稍候。。。"
+      style="margin-top:5px">
+      <!--待审核入库统计-->
+      <el-col :span="12">
+        <el-card class="box-card waitlist" style="height: calc(100vh - 410px);"
+          v-if="acc =='sgVEw' && permissions[permissionscode.rkapprove]">
+          <div slot="header">
+            <i class="icon icon-paragraph-justify"> 待审核入库</i>
+          </div>
+          <el-table :data="RKList" size="mini" height="calc(100vh - 470px)">
+            <el-table-column label="操作" width="70" align="center">
+              <template slot-scope="scope">
+                <router-link :to="'/biobank/sampleRK/'+scope.row.Id+'/operation'">
+                  <el-button type="text" title="编辑" size="small" icon="el-icon-edit"></el-button>
+                </router-link>
+              </template>
+            </el-table-column>
+            <el-table-column prop="EntryNo" sortable min-width="110" label="入库单号" align="center" show-overflow-tooltip>
+            </el-table-column>
+            <el-table-column prop="OperationBy" sortable min-width="80" label="申请人" align="center"
+              show-overflow-tooltip></el-table-column>
+            <el-table-column prop="EntryTime" sortable min-width="110" label="入库时间" align="center"
+              show-overflow-tooltip>
+              <template slot-scope="scope">
+                {{ jstimehandle(scope.row.EntryTime)}}
+              </template>
+            </el-table-column>
+            <el-table-column prop="Remark" sortable label="备注" align="center" show-overflow-tooltip></el-table-column>
+          </el-table>
+        </el-card>
+      </el-col>
+      <!--待审核出库统计-->
+      <el-col :span="12">
+        <el-card class="box-card waitlist" style="height: calc(100vh - 410px);"
+          v-if="acc =='sgVEw' && permissions[permissionscode.ckapprove]">
+          <div slot="header">待审核出库</div>
+          <el-table :data="CKList" size="mini" height="calc(100vh - 470px)">
+            <el-table-column label="操作" width="70" align="center">
+              <template slot-scope="scope">
+                <router-link :to="'/biobank/sampleCK/'+scope.row.Id+'/operation'">
+                  <el-button type="text" title="编辑" size="small" icon="el-icon-edit"></el-button>
+                </router-link>
+              </template>
+            </el-table-column>
+            <el-table-column prop="EntryNo" sortable min-width="110" label="出库单号" align="center" show-overflow-tooltip>
+            </el-table-column>
+            <el-table-column prop="OperationBy" sortable min-width="80" label="申请人" align="center"
+              show-overflow-tooltip></el-table-column>
+            <el-table-column prop="EntryTime" sortable min-width="110" label="入库时间" align="center"
+              show-overflow-tooltip>
+              <template slot-scope="scope">
+                {{ jstimehandle(scope.row.EntryTime)}}
+              </template>
+            </el-table-column>
+            <el-table-column prop="Remark" sortable label="备注" align="center" show-overflow-tooltip></el-table-column>
+          </el-table>
+        </el-card>
+      </el-col>
+    </el-row>
+    <!-- </el-card> -->
   </div>
 </template>
 
@@ -170,7 +200,6 @@
 
     data() {
       return {
-        // dimension 信息
         Diseases: '',
         diseaseinfolist: [], //疾病
         btndim: 2,
@@ -180,6 +209,7 @@
         // 饼状图&柱状图
         SamplePie: null,
         EquipmentBar: null,
+        GroupBar: null,
         num: 0,
         usertotal: {},
         user: {
@@ -192,25 +222,28 @@
         sampleData: [],
         EquipmentX: [],
         EquipmentY: [],
+        PreGroup: [],
+        StoGroup: [],
+        LockGroup: [],
         tjdevicecolor: [
           '#F5B132', '#E56C5A', '#8B9F74', '#EEA7A3', '#E94648', '#918E90', '#bbc8e6', '#004EA2',
           '#ffec47', '#c0a2c7', '#93ca76'
         ],
-        // tjdevicecolor: [
-        //   '#6A5ACD', '#B5C334', '#FCCE10', '#E87C25', '#27727B', '#FE8463', '#9BCA63', '#FAD860', '#F3A43B',
-        //   '#60C0DD', '#E87C25', '#27727B', '#FE8463'
-        // ],
         downloading: true,
         acc: '',
+        groupList: [], //多中心分组列表
+        GroupSamList: [], //多中心分组统计
         RKList: [],
         CKList: [],
         permissionscode: {
           rkapprove: 'biobank.sampleRK.approve',
           ckapprove: 'biobank.sampleCK.approve',
+          showbar: 'biobank.showbar',
         },
         permissions: {
           'biobank.sampleRK.approve': false,
           'biobank.sampleCK.approve': false,
+          'biobank.showbar': false,
         },
       }
     },
@@ -218,6 +251,7 @@
       this.getstylebyuser()
       this.getDiseasesList()
       this.getPermissions() //权限
+      this.getGroupList()
       let _this = this
       _this.user.photo = _this.authUser.Profile.Photo
       _this.user.name = _this.authUser.Profile.name
@@ -241,7 +275,6 @@
             }
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
@@ -254,45 +287,13 @@
             _this.CKList = res.data.CKlist
             _this.getBySampleType()
             _this.getByEquipment()
+            _this.getByGroup()
           })
           .catch(err => {
             console.error(err)
           })
       },
-      //获取权限
-      getPermissions() {
-        let _this = this
-        // request
-        let params = {
-          percodes: `'${this.permissionscode.rkapprove}','${this.permissionscode.ckapprove}'`
-        }
-        this.$axios.get('/permissions/isauths', {
-            params
-          })
-          .then(res => {
-            if (res.data instanceof Array && res.data.length > 0) {
-              console.log(res.data)
-              res.data.forEach(element => {
-                _this.permissions[element.Code] = element.Isperm
-              });
-            }
-          })
-          .catch(err => {
-            console.error(err)
-          })
-      },
-      //获取疾病类型
-      getDiseasesList() {
-        let _this = this
-        _this.$axios.get('/sampletype/diseaseslist', {})
-          .then(res => {
-            _this.diseaseinfolist = res.data
-          })
-      },
-      changePie() {
-        this.sampleData = []
-        this.getBySampleType()
-      },
+
       // 统计样本总数的饼状图
       getBySampleType() {
         let _this = this
@@ -357,8 +358,6 @@
           color: [
             '#F5B132', '#E56C5A', '#8B9F74', '#EEA7A3', '#E94648', '#918E90', '#bbc8e6', '#004EA2',
             '#ffec47', '#c0a2c7', '#93ca76'
-            // '#D1EEEE', '#FFE1FF', '#FFA500', '#6A5ACD', '#D1EEEE', '#CAE1FF', '#C0FF3E', '#1E90FF',
-            // '#000080'
           ],
           series: [{
             name: '样本类型',
@@ -415,10 +414,6 @@
           xAxis: {
             type: 'category',
             data: _this.EquipmentX,
-            // axisLabel: {
-            //   interval: 0,
-            //   rotate: 40
-            // }
           },
           yAxis: {
             type: 'value'
@@ -432,7 +427,6 @@
               }
             },
             data: _this.EquipmentY,
-            // data:[10, 52, 200, 334, 390, 330, 220],
             itemStyle: {
               normal: {
                 color: function (params) {
@@ -444,6 +438,125 @@
           }]
         })
       },
+
+      //多中心管理按分组统计柱状图
+      getByGroup() {
+        let _this = this
+        _this.$axios.get('users/samplebygroup', {})
+          .then(res => {
+            for (var i = 0; i < this.groupList.length; i++) {
+              for (var n = 0; n < res.data.length; n++) {
+                if (res.data[n].IState == '10') {
+                  if (res.data[n].Name == this.groupList[i]) {
+                    this.LockGroup.push(res.data[n].Num)
+                  } else {
+                    this.LockGroup.push(0)
+                  }
+                }
+                if (res.data[n].IState == '1') {
+                  if (res.data[n].Name == this.groupList[i]) {
+                    this.StoGroup.push(res.data[n].Num)
+                  } else {
+                    this.StoGroup.push(0)
+                  }
+                }
+                if (res.data[n].IState == '2') {
+                  if (res.data[n].Name == this.groupList[i]) {
+                    this.PreGroup.push(res.data[n].Num)
+                  } else {
+                    this.PreGroup.push(0)
+                  }
+                }
+              }
+            }
+            this.drawGroupChart()
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+      drawGroupChart() {
+        let _this = this
+        var chartBar = echarts.init(document.getElementById('GroupBar'))
+        chartBar.setOption({
+          title: {
+            text: '',
+          },
+          tooltip: {
+            trigger: 'axis'
+          },
+          legend: {
+            data: ['预录入', '已存储', '已锁定']
+          },
+          calculable: true,
+          xAxis: [{
+            type: 'category',
+            data: this.groupList,
+          }],
+          yAxis: [{
+            type: 'value'
+          }],
+          series: [{
+              name: '预录入',
+              type: 'bar',
+              data: this.PreGroup,
+            },
+            {
+              name: '已存储',
+              type: 'bar',
+              data: this.StoGroup,
+            },
+            {
+              name: '已锁定',
+              type: 'bar',
+              data: this.LockGroup,
+            }
+          ]
+        })
+      },
+
+      //获取疾病类型
+      getDiseasesList() {
+        let _this = this
+        _this.$axios.get('/sampletype/diseaseslist', {})
+          .then(res => {
+            _this.diseaseinfolist = res.data
+          })
+      },
+      changePie() {
+        this.sampleData = []
+        this.getBySampleType()
+      },
+      getGroupList() {
+        let _this = this
+        _this.$axios.get('/samplesgroup/grouplist', {})
+          .then(res => {
+            for (var i = 0; i < res.data.length; i++) {
+              _this.groupList.push(res.data[i].Key)
+            }
+          })
+      },
+      //获取权限
+      getPermissions() {
+        let _this = this
+        let params = {
+          percodes: `'${this.permissionscode.rkapprove}','${this.permissionscode.ckapprove}','${this.permissionscode.showbar}'`
+        }
+        this.$axios.get('/permissions/isauths', {
+            params
+          })
+          .then(res => {
+            if (res.data instanceof Array && res.data.length > 0) {
+              console.log(res.data)
+              res.data.forEach(element => {
+                _this.permissions[element.Code] = element.Isperm
+              });
+            }
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
       jstimehandle(val) {
         if (val === '') {
           return '----'

+ 13 - 14
src/dashoo.cn/frontend_web/src/pages/log/donorlog/_opera/detail.vue

@@ -27,18 +27,20 @@
         </span>
       </div>
 
-      <el-table ref="multipleTable" border :data="list2" tooltip-effect="dark" style="width: 100%"
-        v-if="list.OpType==1">
-        <el-table-column :label="'操作人: '+list.CreateBy">
-          <el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
-        </el-table-column>
-        <el-table-column :label="'操作类型: '+optype[list.OpType]">
-          <el-table-column prop="valueold" label="原始值" show-overflow-tooltip></el-table-column>
-        </el-table-column>
-        <el-table-column :label="'操作时间: '+jstimehandle(list.CreateOn)">
-          <el-table-column prop="valuenew" label="修改值" show-overflow-tooltip></el-table-column>
+      <el-table ref="multipleTable" :data="list2" tooltip-effect="dark" style="width: 100%" v-if="list.OpType==1">
+        <el-table-column>
+          <el-table-column :label="'操作人: '+list.CreateBy">
+            <el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
+          </el-table-column>
+          <el-table-column :label="'操作类型: '+optype[list.OpType]">
+            <el-table-column prop="valueold" label="原始值" show-overflow-tooltip></el-table-column>
+          </el-table-column>
+          <el-table-column :label="'操作时间: '+jstimehandle(list.CreateOn)">
+            <el-table-column prop="valuenew" label="修改值" show-overflow-tooltip></el-table-column>
+          </el-table-column>
         </el-table-column>
       </el-table>
+
       <el-table ref="multipleTable" border :data="list2" tooltip-effect="dark" style="width: 100%" v-else>
         <el-table-column :label="'操作时间: '+jstimehandle(list.CreateOn)">
           <el-table-column :label="'操作人: '+list.CreateBy">
@@ -76,23 +78,20 @@
         let params = {
           id: id
         }
-        // request
         this.$axios.get('loginfos/donorlist', {
             params
           })
           .then(res => {
-            // response
             _this.list = res.data.items[0]
+            console.log("[efffffffffffffffffffff", _this.list)
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
         this.$axios.get('loginfos/donorlistinfo', {
             params
           })
           .then(res => {
-            // response
             _this.list2 = res.data.items
             // 转化时间格式
             for (var i = 0; i < _this.list2.length; i++) {

+ 10 - 8
src/dashoo.cn/frontend_web/src/pages/log/operationlog/_opera/detail.vue

@@ -29,14 +29,16 @@
 
       <el-table ref="multipleTable" border :data="list2" tooltip-effect="dark" style="width: 100%"
         v-if="list.OpTage==1">
-        <el-table-column :label="'操作人: '+list.Createby">
-          <el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
-        </el-table-column>
-        <el-table-column label="操作类型: 修改">
-          <el-table-column prop="valueold" label="原始值" show-overflow-tooltip></el-table-column>
-        </el-table-column>
-        <el-table-column :label="'操作时间: '+jstimehandle(list.Createon)">
-          <el-table-column prop="valuenew" label="修改值" show-overflow-tooltip></el-table-column>
+        <el-table-column>
+          <el-table-column :label="'操作人: '+list.Createby">
+            <el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
+          </el-table-column>
+          <el-table-column label="操作类型: 修改">
+            <el-table-column prop="valueold" label="原始值" show-overflow-tooltip></el-table-column>
+          </el-table-column>
+          <el-table-column :label="'操作时间: '+jstimehandle(list.Createon)">
+            <el-table-column prop="valuenew" label="修改值" show-overflow-tooltip></el-table-column>
+          </el-table-column>
         </el-table-column>
       </el-table>
       <el-table ref="multipleTable" border :data="list2" tooltip-effect="dark" style="width: 100%" v-else>