Ver código fonte

登录界面,获取容器方法

shihang 7 anos atrás
pai
commit
6a5c8c48b8
46 arquivos alterados com 3987 adições e 2338 exclusões
  1. 11 6
      src/dashoo.cn/backend/api/controllers/biobank/samplesgroup.go
  2. 2 3
      src/dashoo.cn/backend/api/controllers/equipment/equipment.go
  3. 17 13
      src/dashoo.cn/backend/api/controllers/samplesinfo/samplesinput.go
  4. 0 21
      src/dashoo.cn/backend/api/controllers/samplesinfo/sampletype.go
  5. 0 0
      src/dashoo.cn/frontend_web/src/assets/img/basic.png
  6. BIN
      src/dashoo.cn/frontend_web/src/assets/img/bio.jpg
  7. BIN
      src/dashoo.cn/frontend_web/src/assets/img/major.png
  8. 0 0
      src/dashoo.cn/frontend_web/src/assets/img/special.png
  9. 0 0
      src/dashoo.cn/frontend_web/src/assets/img/std.png
  10. BIN
      src/dashoo.cn/frontend_web/src/assets/img/zhuanye.png
  11. 1 1
      src/dashoo.cn/frontend_web/src/components/Headbar.vue
  12. 223 221
      src/dashoo.cn/frontend_web/src/components/triggers/operation_dialog.vue
  13. 1 16
      src/dashoo.cn/frontend_web/src/pages/biobank/allsearch/index.vue
  14. 1514 235
      src/dashoo.cn/frontend_web/src/pages/equipment/_opera/manage.vue
  15. 27 25
      src/dashoo.cn/frontend_web/src/pages/equipment/_opera/manage11.vue
  16. 0 6
      src/dashoo.cn/frontend_web/src/pages/equipment/index.vue
  17. 218 85
      src/dashoo.cn/frontend_web/src/pages/login.vue
  18. 115 125
      src/dashoo.cn/frontend_web/src/pages/login_basic.vue
  19. 115 125
      src/dashoo.cn/frontend_web/src/pages/login_special.vue
  20. 115 125
      src/dashoo.cn/frontend_web/src/pages/login_std.vue
  21. 0 0
      src/dashoo.cn/frontend_web/src/pages/projectmanage/_opera/_operation.vue
  22. 120 29
      src/dashoo.cn/frontend_web/src/pages/projectmanage/_opera/detail.vue
  23. 100 71
      src/dashoo.cn/frontend_web/src/pages/projectmanage/index.vue
  24. 20 14
      src/dashoo.cn/frontend_web/src/pages/samples/archived/_opera/detailed.vue
  25. 1 1
      src/dashoo.cn/frontend_web/src/pages/samples/archived/index.vue
  26. 9 7
      src/dashoo.cn/frontend_web/src/pages/samples/prerecorded/_opera/detailed.vue
  27. 2 4
      src/dashoo.cn/frontend_web/src/pages/samples/prerecorded/_opera/operation.vue
  28. 1 1
      src/dashoo.cn/frontend_web/src/pages/samples/prerecorded/_opera/prerecordedadd.vue
  29. 1 1
      src/dashoo.cn/frontend_web/src/pages/samples/prerecorded/index.vue
  30. 31 18
      src/dashoo.cn/frontend_web/src/pages/samples/stored/_opera/detailed.vue
  31. 22 17
      src/dashoo.cn/frontend_web/src/pages/samples/stored/_opera/edit.vue
  32. 2 14
      src/dashoo.cn/frontend_web/src/pages/samples/stored/index.vue
  33. 9 7
      src/dashoo.cn/frontend_web/src/pages/samples/waitingstore/_opera/detailed.vue
  34. 1 1
      src/dashoo.cn/frontend_web/src/pages/samples/waitingstore/index.vue
  35. 29 13
      src/dashoo.cn/frontend_web/src/pages/setting/paramset/index.vue
  36. 94 75
      src/dashoo.cn/frontend_web/src/pages/setting/printscheme/_opera/printschemeedit.vue
  37. 46 42
      src/dashoo.cn/frontend_web/src/pages/setting/printscheme/index.vue
  38. 91 71
      src/dashoo.cn/frontend_web/src/pages/setting/printscheme/printschemeadd.vue
  39. 84 71
      src/dashoo.cn/frontend_web/src/pages/setting/sampletemplate/_opera/sampletemplateedit.vue
  40. 85 84
      src/dashoo.cn/frontend_web/src/pages/setting/sampletemplate/index.vue
  41. 114 101
      src/dashoo.cn/frontend_web/src/pages/setting/sampletemplate/sampletemplateadd.vue
  42. 332 298
      src/dashoo.cn/frontend_web/src/pages/setting/sampletype/_opera/sampletypeedit.vue
  43. 3 4
      src/dashoo.cn/frontend_web/src/pages/setting/sampletype/_opera/stypeitem.vue
  44. 347 317
      src/dashoo.cn/frontend_web/src/pages/setting/sampletype/sampletypeadd.vue
  45. 42 35
      src/dashoo.cn/frontend_web/src/pages/setting/triggers/actions.vue
  46. 42 35
      src/dashoo.cn/frontend_web/src/pages/setting/triggers/triggers.vue

+ 11 - 6
src/dashoo.cn/backend/api/controllers/biobank/samplesgroup.go

@@ -9,9 +9,9 @@ import (
 	//"fmt"
 
 	//	"dashoo.cn/business/organize"
-	//	"dashoo.cn/business/permission"
+	"dashoo.cn/business2/permission"
 	//	"dashoo.cn/business/userRole"
-	"dashoo.cn/backend/api/business/equipment"
+	//	"dashoo.cn/backend/api/business/equipment"
 	"dashoo.cn/backend/api/business/items"
 	"dashoo.cn/backend/api/business/samplesgroup"
 	"dashoo.cn/backend/api/business/samplesinfo"
@@ -86,11 +86,16 @@ func (this *SamplesGroupController) GetSamplesLIst() {
 	svc := samplesgroup.GetSamplesGroupService(utils.DBE)
 	has := svc.GetEntityByWhere(this.User.AccCode+GroupDetailName, where, &model)
 
-	where_samples := " IState =1 and DeletionStateCode=0 and g.GroupType = 'SampleGroup'"
 	//设备权限
-	svcs := equipment.GetEquipmentService(utils.DBE)
-	poweeids := svcs.GetPowerEquipmentids(this.User.AccCode, utils.ToStr(this.User.Id))
-	where_samples = where_samples + " and  a.EquipmentId in(" + strings.Join(poweeids, ",") + ")"
+	svcPermission := permission.GetPermissionService(utils.DBE)
+	eids := svcPermission.GetEquipmentIdById(utils.ToStr(this.User.Id))
+	where_samples := " IState =1 and DeletionStateCode=0 and g.GroupType = 'SampleGroup'"
+	where_samples = where_samples + " and  a.EquipmentId in(" + eids + ")"
+
+	//	svcs := equipment.GetEquipmentService(utils.DBE)
+	//	poweeids := svcs.GetPowerEquipmentids(this.User.AccCode, utils.ToStr(this.User.Id))
+	//	where_samples = where_samples + " and  a.EquipmentId in(" + strings.Join(poweeids, ",") + ")"
+
 	//条件查询
 	sampleCode := this.GetString("SampleCode")
 	if sampleCode != "" {

+ 2 - 3
src/dashoo.cn/backend/api/controllers/equipment/equipment.go

@@ -71,8 +71,8 @@ type EquipmentModel struct {
 	DItem        int      `json:"DItem,omitempty"`        // 设备类型19:贝尔Cryobiobank13K液氮罐;20:贝尔Cryobiobank13K_BloodBag液氮罐
 }
 
-// @Title 报警项目列表
-// @Description 报警项目列表
+// @Title 容器列表
+// @Description 容器列表
 // @Success 200 {object} business.device.DeviceChannels
 // @router /list [get]
 func (this *EquipmentController) List() {
@@ -80,7 +80,6 @@ func (this *EquipmentController) List() {
 	svc := equipment.GetEquipmentService(utils.DBE)
 	svcPermission := permission.GetPermissionService(utils.DBE)
 	eids := svcPermission.GetEquipmentIdById(utils.ToStr(this.User.Id))
-
 	where := " a.AccCode = '" + this.User.AccCode + "'"
 	if eids != "" {
 		where = where + " and (a.CreateUserId= " + utils.ToStr(this.User.Id) + " or a.Id in (" + eids + "))"

+ 17 - 13
src/dashoo.cn/backend/api/controllers/samplesinfo/samplesinput.go

@@ -7,6 +7,7 @@ import (
 	"time"
 
 	. "dashoo.cn/backend/api/controllers"
+	"dashoo.cn/business2/permission"
 	"github.com/astaxie/beego"
 
 	"dashoo.cn/backend/api/business/approveinfo"
@@ -25,7 +26,6 @@ import (
 	"dashoo.cn/backend/api/business/shelfset"
 	"dashoo.cn/backend/api/business/stypenoteitem"
 	"dashoo.cn/backend/api/mydb"
-	"dashoo.cn/business/permission"
 	"dashoo.cn/utils"
 	"github.com/tealeg/xlsx"
 )
@@ -65,9 +65,13 @@ func (this *SamplesinputController) List() {
 	svc := samplesinfo.GetSamplesInfoService(utils.DBE)
 	where := " IState =1 and DeletionStateCode=0 "
 	//设备权限
-	svcs := equipment.GetEquipmentService(utils.DBE)
-	poweeids := svcs.GetPowerEquipmentids(this.User.AccCode, utils.ToStr(this.User.Id))
-	where = where + " and  a.EquipmentId in(" + strings.Join(poweeids, ",") + ")"
+	svcPermission := permission.GetPermissionService(utils.DBE)
+	eids := svcPermission.GetEquipmentIdById(utils.ToStr(this.User.Id))
+	if eids != "" {
+		where = where + " and (f.CreateUserId= " + utils.ToStr(this.User.Id) + " or a.EquipmentId in (" + eids + "))"
+	} else {
+		where = where + "and f.CreateUserId= " + utils.ToStr(this.User.Id)
+	}
 
 	sampleCode := this.GetString("SampleCode")
 	if sampleCode != "" {
@@ -180,11 +184,16 @@ func (this *SamplesinputController) List() {
 // @router /getlist [get]
 func (this *SamplesinputController) GetList() {
 	svc := samplesinfo.GetSamplesInfoService(utils.DBE)
-	where := " IState =1 and DeletionStateCode=0 "
+
 	//设备权限
-	svcs := equipment.GetEquipmentService(utils.DBE)
-	poweeids := svcs.GetPowerEquipmentids(this.User.AccCode, utils.ToStr(this.User.Id))
-	where = where + " and  a.EquipmentId in(" + strings.Join(poweeids, ",") + ")"
+	svcPermission := permission.GetPermissionService(utils.DBE)
+	eids := svcPermission.GetEquipmentIdById(utils.ToStr(this.User.Id))
+	where := " IState =1 and DeletionStateCode=0 "
+	if eids != "" {
+		where = where + " and (f.CreateUserId= " + utils.ToStr(this.User.Id) + " or a.EquipmentId in (" + eids + "))"
+	} else {
+		where = where + "and f.CreateUserId= " + utils.ToStr(this.User.Id)
+	}
 
 	equipmentId := this.GetString("EquipmentId")
 	if equipmentId != "" {
@@ -234,11 +243,6 @@ func (this *SamplesinputController) GetList() {
 	}
 	page := this.GetString("SamplePage")
 	size := this.GetString("TestNum")
-	//	//支持从样本来源详情处跳转
-	//	ssouceid := this.GetString("sourceid")
-	//	if ssouceid != "" {
-	//		where = where + " and  SourceId = " + ssouceid + ""
-	//	}
 
 	var list []samplesinfo.SamplesInfoList
 	total, list := svc.GetPagingEntitiesSearch(this.User.AccCode, page, size, "Position desc", where)

+ 0 - 21
src/dashoo.cn/backend/api/controllers/samplesinfo/sampletype.go

@@ -6,7 +6,6 @@ import (
 	"strings"
 	"time"
 
-	"dashoo.cn/backend/api/business/equipment"
 	"dashoo.cn/backend/api/business/items"
 	"dashoo.cn/backend/api/business/samplenoteitem"
 	"dashoo.cn/backend/api/business/samplesinfo"
@@ -248,30 +247,10 @@ func (this *SampleTypeController) GetModel() {
 	var sampletype_edit sampletype.SampleType
 	svc := sampletype.GetSampleTypeService(utils.DBE)
 	svc.GetEntityById(id, &sampletype_edit) //修改时获取用户列表
-	//	this.Data["entity"] = sampletype_edit
-	//	svc_img := sampletypeimgpublic.GetSampleTypeImgPublicService(utils.DBE)
-	//	list_img := svc_img.ListSampleTypeImgPublic("'1==1'")
-	//	this.Data["list_img"] = list_img
-	//	svcType := items.GetItemsService(utils.DBE)
-	//	var list_sunit []items.KeyValue
-	//	list_sunit = svcType.GetKeyValueItems("SUnit", this.User.AccCode)
-	//	this.Data["entityunit"] = list_sunit
 	this.Data["json"] = &sampletype_edit
 	this.ServeJSON()
 }
 
-// @Title get
-// @Description get user by token
-// @Success 200 {object} models.User
-// @Failure 403 :uid is empty
-// @router /shebeilist [get]
-func (this *SampleTypeController) GetSensors() {
-	svc := equipment.GetEquipmentService(utils.DBE)
-	list := svc.GetPowerEquipmentList(this.User.AccCode, utils.ToStr(this.User.Id), "CreateOn")
-	this.Data["json"] = list
-	this.ServeJSON()
-}
-
 // @Title get
 // @Description get user by token
 // @Success 200 {object} models.User

+ 0 - 0
src/dashoo.cn/frontend_web/src/assets/img/jichu.png → src/dashoo.cn/frontend_web/src/assets/img/basic.png


BIN
src/dashoo.cn/frontend_web/src/assets/img/bio.jpg


BIN
src/dashoo.cn/frontend_web/src/assets/img/major.png


+ 0 - 0
src/dashoo.cn/frontend_web/src/assets/img/dingzhi.png → src/dashoo.cn/frontend_web/src/assets/img/special.png


+ 0 - 0
src/dashoo.cn/frontend_web/src/assets/img/biaozhun.png → src/dashoo.cn/frontend_web/src/assets/img/std.png


BIN
src/dashoo.cn/frontend_web/src/assets/img/zhuanye.png


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

@@ -62,7 +62,7 @@
 
         fullscreen: false,
         sampcode: '',
-        department: '欢迎使用'
+        department: '专业版'
       }
     },
     created() {},

+ 223 - 221
src/dashoo.cn/frontend_web/src/components/triggers/operation_dialog.vue

@@ -1,245 +1,247 @@
 <template>
-<div>
-  <el-dialog :title="title" :visible.sync="visible" top="5vh">
-    <el-form :model="modelform" :rules="rules" ref="trigger-form">
-      <el-form-item label="提前天数" prop="value" label-width="120px" required>
-        <el-input v-model="modelform.value" placeholder="请输入提前天数" auto-complete="off" style="width:216px;"></el-input>
-      </el-form-item>
-      <el-form-item label="报警项目" label-width="120px" prop="aid" required>
-        <el-select v-model="modelform.aid" placeholder="请选择报警项目" multiple>
-          <el-option v-for="item in actions" :label="item.name" :value="item.id + ''" :key="item">
-            <el-tag type="primary" v-if="item.item === 1">邮 &nbsp; 件</el-tag>
-            <el-tag type="success" v-if="item.item === 5">短 &nbsp; 信</el-tag>
-            <span>{{ item.name }}</span>
-          </el-option>
-        </el-select>
-        可在
-        <router-link to="/actions">
-          报警项目
-        </router-link>
-        中管理报警项目
-      </el-form-item>
-      <el-form-item label="报警时间" label-width="120px" required prop="rangeweek" style="margin-top:-10px;">
-        <el-checkbox-group v-model="modelform.rangeweek">
-          <el-checkbox label="1">周一</el-checkbox>
-          <el-checkbox label="2">周二</el-checkbox>
-          <el-checkbox label="3">周三</el-checkbox>
-          <el-checkbox label="4">周四</el-checkbox>
-          <el-checkbox label="5">周五</el-checkbox>
-          <el-checkbox label="6">周六</el-checkbox>
-          <el-checkbox label="7">周天</el-checkbox>
-        </el-checkbox-group>
-        <el-row :gutter="15">
-          <el-col :span="16">
-            <el-slider v-model="modelform.rangetime" range show-stops :max="96" :format-tooltip="formatTooltip">
-            </el-slider>
-          </el-col>
-          <el-col :span="8">
-            <div style="color:#F6931F">{{gettimelab(modelform.rangetime[0])}} - {{gettimelab(modelform.rangetime[1])}}</div>
-          </el-col>
-        </el-row>
+  <div>
+    <el-dialog :title="title" :visible.sync="visible" top="5vh">
+      <el-form :model="modelform" :rules="rules" ref="trigger-form">
+        <el-form-item label="提前天数" prop="value" label-width="120px" required>
+          <el-input v-model="modelform.value" placeholder="请输入提前天数" auto-complete="off" style="width:216px;"></el-input>
+        </el-form-item>
+        <el-form-item label="报警项目" label-width="120px" prop="aid" required>
+          <el-select v-model="modelform.aid" placeholder="请选择报警项目" multiple>
+            <el-option v-for="item in actions" :label="item.name" :value="item.id + ''" :key="item">
+              <el-tag type="primary" v-if="item.item === 1">邮 &nbsp; 件</el-tag>
+              <el-tag type="success" v-if="item.item === 5">短 &nbsp; 信</el-tag>
+              <span>{{ item.name }}</span>
+            </el-option>
+          </el-select>
+          可在
+          <router-link to="/setting/triggers/actions">
+            报警项目
+          </router-link>
+          中管理报警项目
+        </el-form-item>
+        <el-form-item label="报警时间" label-width="120px" required prop="rangeweek" style="margin-top:-10px;">
+          <el-checkbox-group v-model="modelform.rangeweek">
+            <el-checkbox label="1">周一</el-checkbox>
+            <el-checkbox label="2">周二</el-checkbox>
+            <el-checkbox label="3">周三</el-checkbox>
+            <el-checkbox label="4">周四</el-checkbox>
+            <el-checkbox label="5">周五</el-checkbox>
+            <el-checkbox label="6">周六</el-checkbox>
+            <el-checkbox label="7">周天</el-checkbox>
+          </el-checkbox-group>
+          <el-row :gutter="15">
+            <el-col :span="16">
+              <el-slider v-model="modelform.rangetime" range show-stops :max="96" :format-tooltip="formatTooltip">
+              </el-slider>
+            </el-col>
+            <el-col :span="8">
+              <div style="color:#F6931F">{{gettimelab(modelform.rangetime[0])}} - {{gettimelab(modelform.rangetime[1])}}
+              </div>
+            </el-col>
+          </el-row>
 
-      </el-form-item>
-      <el-form-item label="报警状态" label-width="120px" required style="margin-top:-5px;">
-        <el-radio-group v-model="modelform.enabled">
-          <el-radio class="radio" label="1">启用</el-radio>
-          <el-radio class="radio" label="0">禁用</el-radio>
-        </el-radio-group>
-      </el-form-item>
-    </el-form>
-    <div slot="footer" class="dialog-footer" style="margin-top:-50px;">
-      <el-button @click="selfVisible = false">取 消</el-button>
-      <el-button type="primary" @click="handleOk">确 定</el-button>
-    </div>
-  </el-dialog>
-</div>
+        </el-form-item>
+        <el-form-item label="报警状态" label-width="120px" required style="margin-top:-5px;">
+          <el-radio-group v-model="modelform.enabled">
+            <el-radio class="radio" label="1">启用</el-radio>
+            <el-radio class="radio" label="0">禁用</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer" style="margin-top:-50px;">
+        <el-button @click="selfVisible = false">取 消</el-button>
+        <el-button type="primary" @click="handleOk">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
-export default {
-  name: 'TriggerDialog',
-  props: {
-    visible: {
-      type: Boolean,
-      default: false
+  export default {
+    name: 'TriggerDialog',
+    props: {
+      visible: {
+        type: Boolean,
+        default: false
+      },
+      act: {
+        type: String,
+        default: 'new'
+      },
+      model: {}
     },
-    act: {
-      type: String,
-      default: 'new'
+    computed: {
+      title() {
+        if (this.act === 'new') {
+          return `新增-样本过期报警`
+        } else {
+          return `编辑-样本过期报警`
+        }
+      }
     },
-    model: {}
-  },
-  computed: {
-    title() {
-      if (this.act === 'new') {
-        return `新增-样本过期报警`
-      } else {
-        return `编辑-样本过期报警`
+    watch: {
+      visible(val) {
+        this.selfVisible = val
+      },
+      selfVisible(val) {
+        if (this.act === 'new') {
+          this.modelform = {
+            value: '',
+            aid: [],
+            rangeweek: ['1', '2', '3', '4', '5', '6', '7'],
+            rangetime: [0, 48],
+            enabled: '1',
+            id: 0
+          }
+          // this.$refs['trigger-form'].resetFields()
+        } else {
+          this.modelform = {
+            value: this.model.value + '',
+            aid: this.model.aid.split(','),
+            rangeweek: this.model.rangeweek.split(''),
+            rangetime: [this.model.rangestartint, this.model.rangeendint],
+            enabled: this.model.enabled + '',
+            id: this.model.id
+          }
+        }
+        this.$emit('update:visible', val)
       }
-    }
-  },
-  watch: {
-    visible(val) {
-      this.selfVisible = val
     },
-    selfVisible(val) {
-      if (this.act === 'new') {
-        this.modelform = {
+    data() {
+      var checkTriggerCvalue = (rule, value, callback) => {
+        if (!isNaN(parseFloat(value)) && !isNaN(value)) {
+          callback()
+        } else {
+          callback(new Error('请输入正确数字值'))
+        }
+      }
+      return {
+        selfVisible: this.visible, // 避免vue双向绑定警告
+        actions: [],
+        modelform: {
           value: '',
           aid: [],
           rangeweek: ['1', '2', '3', '4', '5', '6', '7'],
           rangetime: [0, 48],
           enabled: '1',
           id: 0
+        },
+        rules: {
+          value: [{
+            required: true,
+            message: '请输入提前天数',
+            trigger: 'blur'
+          }, {
+            validator: checkTriggerCvalue,
+            trigger: 'blur'
+          }],
+          rangeweek: [{
+            type: 'array',
+            required: true,
+            message: '请选择报警时间',
+            trigger: 'change'
+          }],
+          aid: [{
+            type: 'array',
+            required: true,
+            message: '请选择报警项目',
+            trigger: 'change'
+          }]
         }
-        // this.$refs['trigger-form'].resetFields()
-      } else {
-        this.modelform = {
-          value: this.model.value + '',
-          aid: this.model.aid.split(','),
-          rangeweek: this.model.rangeweek.split(''),
-          rangetime: [this.model.rangestartint, this.model.rangeendint],
-          enabled: this.model.enabled + '',
-          id: this.model.id
-        }
-      }
-      this.$emit('update:visible', val)
-    }
-  },
-  data() {
-    var checkTriggerCvalue = (rule, value, callback) => {
-      if (!isNaN(parseFloat(value)) && !isNaN(value)) {
-        callback()
-      } else {
-        callback(new Error('请输入正确数字值'))
-      }
-    }
-    return {
-      selfVisible: this.visible, // 避免vue双向绑定警告
-      actions: [],
-      modelform: {
-        value: '',
-        aid: [],
-        rangeweek: ['1', '2', '3', '4', '5', '6', '7'],
-        rangetime: [0, 48],
-        enabled: '1',
-        id: 0
-      },
-      rules: {
-        value: [{
-          required: true,
-          message: '请输入提前天数',
-          trigger: 'blur'
-        }, {
-          validator: checkTriggerCvalue,
-          trigger: 'blur'
-        }],
-        rangeweek: [{
-          type: 'array',
-          required: true,
-          message: '请选择报警时间',
-          trigger: 'change'
-        }],
-        aid: [{
-          type: 'array',
-          required: true,
-          message: '请选择报警项目',
-          trigger: 'change'
-        }]
       }
-    }
-  },
-  created() {
-    this.getactions()
-  },
-  methods: {
-    handleOk() {
-      let _this = this
-      this.$refs['trigger-form'].validate((valid) => {
-        if (valid) {
-          if (_this.act === 'new') {
-            _this.$axios.post('triggers',_this.modelform)
-              .then(res => {
-                // response
-                if (res.data.code === 0) {
-                  _this.$message({
-                    type: 'success',
-                    message: res.data.message
-                  })
-                  _this.selfVisible = false
-                  _this.$emit('close')
-                } else {
-                  _this.$message({
-                    type: 'warning',
-                    message: res.data.message
-                  })
-                }
-              })
-              .catch(err => {
-                // handle error
-                console.error(err)
-              })
-          } else if (_this.act === 'edit') {
-            _this.$axios.put('triggers/'+_this.modelform.id, _this.modelform)
-              .then(res => {
-                // response
-                if (res.data.code === 0) {
-                  _this.$message({
-                    type: 'success',
-                    message: res.data.message
-                  })
-                  _this.selfVisible = false
-                  _this.$emit('close')
-                } else {
-                  _this.$message({
-                    type: 'warning',
-                    message: res.data.message
-                  })
-                }
-              })
-              .catch(() => {})
+    },
+    created() {
+      this.getactions()
+    },
+    methods: {
+      handleOk() {
+        let _this = this
+        this.$refs['trigger-form'].validate((valid) => {
+          if (valid) {
+            if (_this.act === 'new') {
+              _this.$axios.post('triggers', _this.modelform)
+                .then(res => {
+                  // response
+                  if (res.data.code === 0) {
+                    _this.$message({
+                      type: 'success',
+                      message: res.data.message
+                    })
+                    _this.selfVisible = false
+                    _this.$emit('close')
+                  } else {
+                    _this.$message({
+                      type: 'warning',
+                      message: res.data.message
+                    })
+                  }
+                })
+                .catch(err => {
+                  // handle error
+                  console.error(err)
+                })
+            } else if (_this.act === 'edit') {
+              _this.$axios.put('triggers/' + _this.modelform.id, _this.modelform)
+                .then(res => {
+                  // response
+                  if (res.data.code === 0) {
+                    _this.$message({
+                      type: 'success',
+                      message: res.data.message
+                    })
+                    _this.selfVisible = false
+                    _this.$emit('close')
+                  } else {
+                    _this.$message({
+                      type: 'warning',
+                      message: res.data.message
+                    })
+                  }
+                })
+                .catch(() => {})
+            }
+          } else {
+            return false
           }
+        })
+      },
+      gettimelab(i) {
+        let daytag = ''
+        if (i > 48) {
+          i = i - 48
+          daytag = '(2)'
+        }
+        let tint = parseInt(i / 2)
+        let isyu = i % 2
+        let tstr = ''
+        if (tint < 10) {
+          tstr = '0' + tint
         } else {
-          return false
+          tstr = tint + ''
         }
-      })
-    },
-    gettimelab(i) {
-      let daytag = ''
-      if (i > 48) {
-        i = i - 48
-        daytag = '(2)'
-      }
-      let tint = parseInt(i / 2)
-      let isyu = i % 2
-      let tstr = ''
-      if (tint < 10) {
-        tstr = '0' + tint
-      } else {
-        tstr = tint + ''
-      }
-      if (isyu === 0) {
-        return (daytag + tstr + ':00:00')
-      } else {
-        return (daytag + tstr + ':30:00')
-      }
-    },
-    formatTooltip(val) {
-      return this.gettimelab(val)
-    },
-    getactions() {
-      const params = {
-        _currentPage: -1
+        if (isyu === 0) {
+          return (daytag + tstr + ':00:00')
+        } else {
+          return (daytag + tstr + ':30:00')
+        }
+      },
+      formatTooltip(val) {
+        return this.gettimelab(val)
+      },
+      getactions() {
+        const params = {
+          _currentPage: -1
+        }
+        // request
+        this.$axios.get('actions/list', {
+            params
+          })
+          .then(res => {
+            this.actions = res.data.items
+          })
+          .catch(() => {})
       }
-      // request
-      this.$axios.get('actions/list', {
-          params
-        })
-        .then(res => {
-          this.actions = res.data.items
-        })
-        .catch(() => {})
     }
   }
-}
+
 </script>

+ 1 - 16
src/dashoo.cn/frontend_web/src/pages/biobank/allsearch/index.vue

@@ -437,19 +437,7 @@
           Extension: '',
         },
         orAnd: "and",
-        searchTemplates: [
-          /*{
-                    Name: "search1",
-                    Fields: [
-                      {
-                        Field: "BarCode",
-                        Name: "样本编码",
-                        Value: "123",
-                        OrAnd: "or", // 0-or, 1-and
-                      }
-                    ],
-                  }*/
-        ],
+        searchTemplates: [],
         orAndData: [{
             name: "并且",
             value: "and",
@@ -628,7 +616,6 @@
             columnwidth: 200
           })
         }
-        // paginate
         let params = {
           _currentPage: this.currentPage,
           _size: this.size,
@@ -668,9 +655,7 @@
             params
           })
           .then(res => {
-            // response
             _this.list = res.data.items
-            // toggle loading
             _this.currentItemCount = res.data.currentItemCount
           })
           .catch(err => {

Diferenças do arquivo suprimidas por serem muito extensas
+ 1514 - 235
src/dashoo.cn/frontend_web/src/pages/equipment/_opera/manage.vue


+ 27 - 25
src/dashoo.cn/frontend_web/src/pages/equipment/_opera/manage11.vue

@@ -57,9 +57,9 @@
                 <span slot="title">{{ column.Realname }}</span>
               </el-menu-item>
             </template>
-          </el-submenu> 
- 
-       </template>
+          </el-submenu>
+
+        </template>
       </el-menu>
     </el-card>
     <el-card v-if="Apply_flag" class="box-card" style="margin-top: 8px;min-width: 1150px;" id="equiinfocard">
@@ -215,7 +215,7 @@
               </el-upload>
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="acc =='sryms'">
+          <el-col :span="8">
             <el-form-item label="所属分组">
               <el-select ref="refGroup" multiple filterable default-first-option v-model="GroupIdOption"
                 placeholder="请选择" style="width: 100%" :disabled="disabledgroup || contains('1,2', batchitem)">
@@ -329,12 +329,16 @@
     </el-dialog>
 
     <preoperation-dialog @close="custompreoperaDialogCallback" :visible.sync="dialogFormVisible"></preoperation-dialog>
-    <choose-source-dialog @close="customsampsourceDialogCallback" :visible.sync="dialogFormVisible2"></choose-source-dialog>
+    <choose-source-dialog @close="customsampsourceDialogCallback" :visible.sync="dialogFormVisible2">
+    </choose-source-dialog>
     <choose-animal-dialog @close="animalDialogCallback" :visible.sync="animalSourceVisible"></choose-animal-dialog>
     <choose-micro-dialog @close="microDialogCallback" :visible.sync="microSourceVisible"></choose-micro-dialog>
-    <recoverydialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogfusuVisible"></recoverydialog>
-    <packingdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogfenzhuangVisible"></packingdialog>
-    <abstractdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogtiquVisible"></abstractdialog>
+    <recoverydialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogfusuVisible">
+    </recoverydialog>
+    <packingdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail"
+      :visible.sync="dialogfenzhuangVisible"></packingdialog>
+    <abstractdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogtiquVisible">
+    </abstractdialog>
   </div>
 </template>
 
@@ -604,7 +608,7 @@
         samplelist: [], // 新增,新的冰箱list和冻存盒list以及冻存盒样本list
         selectedBox: [],
         boxSample: [],
-        
+
         COLORARR: ['#EAEAEA', '#13CE66', '#FF4949', '#D1EEEE', '#20A0FF', '#836FFF', '#000080'],
         selectedorgan: [], // 级联所选组织结构
         sampleorganprops: {
@@ -671,8 +675,8 @@
           this.Apply_flag = false
         }
       }
-     
-      this.getfridgeimg()     
+
+      this.getfridgeimg()
       this.getsametypetreelist()
       this.getType()
       // 获取公共扩展
@@ -696,21 +700,21 @@
         let _this = this
         _this.$axios.get('/shelfset/equipmentdraw/' + _this.eid, {})
           .then(res => {
-            _this.downloading = false       
-            for(var i = res.data.dimension[0]; i > 0; i --){
-               _this.columnList.unshift({
-              'Id': i,
-              'Realname':"第"+ i + "列"
+            _this.downloading = false
+            for (var i = res.data.dimension[0]; i > 0; i--) {
+              _this.columnList.unshift({
+                'Id': i,
+                'Realname': "第" + i + "列"
               })
             }
-            for(var n = res.data.dimension[1]; n > 0; n --){
-               _this.layerList.unshift({
-              'Id': n,
-              'Realname':"第"+ n + "层",
-              'Children':_this.columnList
+            for (var n = res.data.dimension[1]; n > 0; n--) {
+              _this.layerList.unshift({
+                'Id': n,
+                'Realname': "第" + n + "层",
+                'Children': _this.columnList
               })
             }
-            _this.samplelist = res.data.items   
+            _this.samplelist = res.data.items
             // _this.colorTableHeight = res.data.dimension[1] //列
             // _this.colorTableWidth = res.data.dimension[0] //层
             // _this.location()
@@ -1415,9 +1419,7 @@
               _this.publickzlist[i].FieldDefault = res.data[_this.publickzlist[i].FieldName]
             }
             //获取所属分组
-            if (_this.acc == 'sryms') {
-              _this.getGroup(res.data.BarCode)
-            }
+            _this.getGroup(res.data.BarCode)
             // 获取特有扩展并给特有扩展信息赋值
             _this.gettykzandtovalue(res.data)
             //获取附件信息

+ 0 - 6
src/dashoo.cn/frontend_web/src/pages/equipment/index.vue

@@ -120,32 +120,26 @@
     methods: {
       initData() {
         let _this = this
-        // paginate
         const params = {
           _currentPage: this.currentPage,
           _size: this.size,
           searchkey: this.keyword
         }
-        // request
         this.$axios.get('/equipment/list', {
             params
           })
           .then(res => {
             _this.downloading = false
-            // response
             _this.list = res.data.items
             if (_this.list === null || _this.list.length === 0) {
               _this.isnodata = true
             } else {
               _this.isnodata = false
             }
-            // toggle loading
-            // _this.loading = false
             _this.currentItemCount = res.data.currentItemCount
             _this.loadsensordataall()
           })
           .catch(err => {
-            // handle error
             console.error(err)
             _this.downloading = false
           })

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

@@ -1,26 +1,78 @@
 <template>
-  <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.
+  <div class="nav">
+    <header>
+      <a href="/" class="nav-logo leftpadding" alt="egg"><img src="../assets/img/logo.png" style="height:55px;"></a>
+      <ul class="nav-item">
+        <li><a href="http://www.dashoo.cn/product-3-1.html" alt="介绍">产品中心</a></li>
+        <li><a href="http://www.dashoo.cn/service-2-1.html" alt="其他">解决方案</a></li>
+        <li><a href="http://www.dashoo.cn/news-4-1.html" alt="API">科技资讯</a></li>
+        <li><a href="http://www.dashoo.cn" alt="其他">其他</a></li>
+        <li>
+        <li class="translations">
+          <!-- <a class="nav-link">切换语言</a> -->
+          <!-- <span class="arrow"></span><ul id="dropdownContent" class="dropdown-content"><li><a id="zh-cn" href="/" style="color: #22ab28">中文</a></li><li><a id="en" href="/">English</a></li></ul> -->
+        </li>
+      </ul>
+    </header>
+
+    <div class="container">
+      <el-row>
+        <el-col :span="15">
+          <div class="leftpadding">
+            <img src="../assets/img/major.png" class="intelligent-img" /> </div>
+        </el-col>
+        <el-col :span="9">
+          <el-card class="box-card" style="width: 300px;margin-top: 160px;height: 350px;">
+            <el-form class="login-form" auto-complete="off" :model="model" :rules="rules" ref="user">
+              <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>
+          </el-card>
+
+        </el-col>
+      </el-row>
+    </div>
+
+    <div class="footer">
+      <footer style="background: #F9F9F9;">
+        <el-row>
+          <el-col :span="12">
+            <div class="login_bg4">
+              <img src="../assets/img/logo2.png" class="logolabsop-img">
+            </div>
+          </el-col>
+          <el-col :span="10">
+            <div>
+              <el-row class="coptright">
+                <a href="http://www.dashoo.cn" target="_blank">关于我们</a>
+                <a href="http://www.dashoo.cn" target="_blank">公司简介</a>
+                <a href="http://www.dashoo.cn" target="_blank">免责声明</a>
+                <a href="http://www.dashoo.cn" target="_blank">隐私政策</a>
+              </el-row>
+              <el-row>
+                <div class="license">青岛大数华创科技有限公司版权所有 Coptright @ 2019 DASHOO.</div>
+              </el-row>
+            </div>
+          </el-col>
+          <el-col :span="2">
+            <div class="login_bg5">
+              <img src="../assets/img/QRcode.png" class="weixin-img">
+            </div>
+          </el-col>
+        </el-row>
       </footer>
-    </section>
+    </div>
   </div>
 </template>
 
@@ -49,6 +101,7 @@
       }
 
       return {
+        loginMode: 1,
         model: model,
         rules: rules,
         error: null,
@@ -97,86 +150,166 @@
 <style lang="scss">
   @import '../assets/styles/base/variables';
 
-  .login-body {
-    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-size: cover;
-    -webkit-background-size: cover;
-    -moz-background-size: cover;
-    -o-background-size: cover;
-    min-height: 1050px;
-    height: 500px;
-    background-size: cover;
-    position: absolute;
+  .nav {
+    background: #fff;
+    border-bottom: 1px solid rgba(230, 230, 230, 0.99);
+    z-index: 2;
+    width: 100%;
+    position: fixed;
     top: 0;
-    right: 0;
-    bottom: 0;
-    left: 0;
   }
 
-  .login {
-    flex: 1;
+  .nav {
+    min-width: 1100px;
+    min-height: 600px;
+  }
+
+  .nav .nav-logo {
+    padding-top: 2px;
+    padding-left: 35px;
+  }
+
+  .nav-logo {
+    margin: 0;
+    display: inline-block;
+    float: left;
+    padding-top: 2px;
+  }
+
+  .nav header {
+    padding: 0px 0 0px;
+    min-width: 1100px;
+    margin: 0 auto;
+  }
+
+  .nav header .search-query {
+    height: 30px;
+    line-height: 32px;
+    box-sizing: border-box;
+    border: 1px solid #e6e6e6;
+    border-radius: 15px;
+    outline: none;
+    padding: 0 15px 0 32px;
+    background-size: 20px;
+  }
+
+  .nav ul.nav-item {
+    height: 32px;
+    float: right;
+    line-height: 32px;
+    padding-right: 0px;
+  }
+
+  .nav ul.nav-item li {
+    display: inline-block;
+    margin-left: 40px;
+  }
+
+  .nav ul.nav-item a {
+    display: inline-block;
+    color: #3c3c3c;
+    letter-spacing: 0.5px;
+    font-weight: 500;
+  }
+
+  .container {
+    text-align: center;
+    background: url("../assets/img/Background.png");
     width: 100%;
-    max-width: 22rem;
+    height: 150%;
     margin: 0 auto;
-    font-size: 0.875rem;
-    opacity: 0.8;
+    background-size: cover;
+  }
+
+  .leftpadding {
+    padding-left: 0px;
+    padding-top: 130px;
+  }
+
+  .intelligent-img {
+    width: 650px;
+    margin-top: -50px;
+  }
 
-    &-header {
-      margin-bottom: 1rem;
+  .box-card {
+    margin-bottom: 2.5rem;
+    color: $login-form-color;
+  }
 
-      .brand {
-        margin: 4.5rem 0 3.5rem;
-        text-align: center;
-        letter-spacing: 0.125rem;
+  .footer {
+    min-width: 1100px;
+    width: 100%;
+  }
 
-        a {
-          margin: 0;
-          color: $brand-color;
-          font: 300 3rem sans-serif;
+  .footer a {
+    color: #6E717C;
+  }
 
-          &:hover {
-            color: $brand-hover-color;
-            text-shadow: 0 0 1rem $brand-hover-color;
-          }
-        }
-      }
-    }
+  .footer footer {
+    overflow: hidden;
+    // max-width: 1136px;
+    max-width: 1480px;
+    margin: 0 auto;
+    padding-top: 0px;
+    padding-bottom: 30px;
+  }
 
-    &-form {
-      margin-bottom: 2.5rem;
-      padding: 1.875rem 1.25rem;
-      background: $login-form-background;
-      color: $login-form-color;
+  .coptright {
+    padding-top: 40px;
+    padding-left: 150px;
+  }
 
-      .heading {
-        margin: 0 0 1rem;
-        font-weight: 400;
-        font-size: 1.5rem;
-      }
+  .login_bg4 {
+    padding-left: 100px;
+    padding-top: 5%;
+  }
 
-      .el-button {
-        margin-top: 0.5rem;
-        width: 100%;
-      }
-    }
+  .logolabsop-img {
+    width: 400px;
+  }
 
-    &-footer {
-      margin-bottom: 1rem;
-      padding: 0.625rem;
-      // border: 0.0625rem solid $brand-color;
-      font-size: 0.75rem;
-      text-align: center;
+  .license {
+    padding-top: 10px;
+    padding-left: 22px;
+    font-family: sans-serif;
+    font-size: 15px;
+    color: #C7C7C7;
+  }
 
-      a {
-        color: $brand-color;
-      }
-    }
+  .login_bg5 {
+    padding-right: 10px;
+    float: left;
+    padding-top: 10px;
+  }
+
+  .weixin-img {
+    width: 77px;
   }
 
-  .nuxt-progress {
-    display: none;
+  .nav ul.nav-item {
+    height: 32px;
+    float: left;
+    line-height: 32px;
+    padding-left: 350px;
   }
 
+  // .logu {
+
+  //   margin-top: 100px;
+  //   // padding-left: 120px;
+  // }
+
+
+
+  // .login {
+  //   &-form {
+  //     // position: absolute;
+
+  //     .el-button {
+  //       margin-top: 0.5rem;
+  //       width: 100%;
+  //     }
+  //   }
+  // }
+
 </style>

+ 115 - 125
src/dashoo.cn/frontend_web/src/pages/login_jichu.vue → src/dashoo.cn/frontend_web/src/pages/login_basic.vue

@@ -1,37 +1,51 @@
 <template>
-  <div >
+  <div class="nav">
+    <header>
+      <a href="/" class="nav-logo leftpadding" alt="egg"><img src="../assets/img/logo.png" style="height:55px;"></a>
+      <ul class="nav-item">
+        <li><a href="http://www.dashoo.cn/product-3-1.html" alt="介绍">产品中心</a></li>
+        <li><a href="http://www.dashoo.cn/service-2-1.html" alt="其他">解决方案</a></li>
+        <li><a href="http://www.dashoo.cn/news-4-1.html" alt="API">科技资讯</a></li>
+        <li><a href="http://www.dashoo.cn" alt="其他">其他</a></li>
+        <li>
+        <li class="translations">
+          <!-- <a class="nav-link">切换语言</a> -->
+          <!-- <span class="arrow"></span><ul id="dropdownContent" class="dropdown-content"><li><a id="zh-cn" href="/" style="color: #22ab28">中文</a></li><li><a id="en" href="/">English</a></li></ul> -->
+        </li>
+      </ul>
+    </header>
 
     <div class="container">
       <el-row>
         <el-col :span="15">
           <div class="leftpadding">
-            <img src="../assets/img/jichu.png" class="intelligent-img" /> </div>
+            <img src="../assets/img/basic.png" class="intelligent-img" /> </div>
         </el-col>
         <el-col :span="9">
-          <el-card class="box-card">
-         <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>
+          <el-card class="box-card" style="width: 300px;margin-top: 160px;height: 350px;">
+            <el-form class="login-form" auto-complete="off" :model="model" :rules="rules" ref="user">
+              <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>
           </el-card>
-          
+
         </el-col>
       </el-row>
     </div>
 
     <div class="footer">
-      <footer>
+      <footer style="background: #F9F9F9;">
         <el-row>
           <el-col :span="12">
             <div class="login_bg4">
@@ -87,6 +101,7 @@
       }
 
       return {
+        loginMode: 1,
         model: model,
         rules: rules,
         error: null,
@@ -144,35 +159,45 @@
     top: 0;
   }
 
+  .nav {
+    min-width: 1100px;
+    min-height: 600px;
+  }
+
   .nav .nav-logo {
     padding-top: 2px;
     padding-left: 35px;
   }
 
+  .nav-logo {
+    margin: 0;
+    display: inline-block;
+    float: left;
+    padding-top: 2px;
+  }
+
   .nav header {
-    /*shift way to clear float because of the overflow hidden will hide the algolia*/
     padding: 0px 0 0px;
-    // max-width: 1136px;
-    min-width: 1300px;
+    min-width: 1100px;
     margin: 0 auto;
   }
-      .heading {
-        margin: 0 0 1rem;
-        font-weight: 400;
-        font-size: 1.5rem;
-      }
 
-  .nav ul.nav-item {
-    height: 32px;
-    float: left;
+  .nav header .search-query {
+    height: 30px;
     line-height: 32px;
-    padding-left: 350px;
+    box-sizing: border-box;
+    border: 1px solid #e6e6e6;
+    border-radius: 15px;
+    outline: none;
+    padding: 0 15px 0 32px;
+    background-size: 20px;
   }
 
-  .logu {
-
-    margin-top: 100px;
-    // padding-left: 120px;
+  .nav ul.nav-item {
+    height: 32px;
+    float: right;
+    line-height: 32px;
+    padding-right: 0px;
   }
 
   .nav ul.nav-item li {
@@ -187,139 +212,104 @@
     font-weight: 500;
   }
 
-  .nav-logo {
-    margin: 0;
-    display: inline-block;
-    float: left;
-    padding-top: 2px;
-  }
-
   .container {
     text-align: center;
     background: url("../assets/img/Background.png");
-    // min-width: 1300px;
     width: 100%;
-    height: 100%;
+    height: 150%;
     margin: 0 auto;
     background-size: cover;
-    // background-position: center;
-    // position: relative;
-  }
-
-  .nav {
-    // max-width: 100%;
-    min-width: 1100px;
-    min-height: 600px;
   }
 
-  .license {
-    padding-top: 10px;
-    font-family: sans-serif;
-    font-size: 14px;
-    color: #C7C7C7;
+  .leftpadding {
+    padding-left: 0px;
+    padding-top: 130px;
   }
 
-  .footer a {
-    color: #6E717C;
+  .intelligent-img {
+    width: 650px;
+    margin-top: -40px;
   }
 
-  .nav header .search-query {
-    height: 30px;
-    line-height: 32px;
-    box-sizing: border-box;
-    border: 1px solid #e6e6e6;
-    border-radius: 15px;
-    outline: none;
-    padding: 0 15px 0 32px;
-    background-size: 20px;
+  .box-card {
+    margin-bottom: 2.5rem;
+    color: $login-form-color;
   }
 
   .footer {
     min-width: 1100px;
-    background: #F9F9F9;
-    border-top: 1px solid rgba(230, 230, 230, 0.99);
     width: 100%;
-    height: 18%;
   }
 
-  .intelligent-img {
-    width: 650px;
-    // max-width: 800px;
-    //  min-width: 20%;
+  .footer a {
+    color: #6E717C;
   }
 
-  .weixin-img {
-    width: 77px;
+  .footer footer {
+    overflow: hidden;
+    // max-width: 1136px;
+    max-width: 1480px;
+    margin: 0 auto;
+    padding-top: 0px;
+    padding-bottom: 30px;
   }
 
-  .leftpadding {
-    padding-left: 0px;
-    padding-top: 100px;
-    // padding-left: 10%;
-    // padding-top: 100px;
+  .coptright {
+    padding-top: 40px;
+    padding-left: 150px;
   }
 
   .login_bg4 {
-    padding-left: 20px;
+    padding-left: 100px;
     padding-top: 5%;
   }
 
-  .coptright {
-    padding-top: 40px;
-    padding-left: 150px;
+  .logolabsop-img {
+    width: 400px;
   }
 
   .license {
     padding-top: 10px;
-    padding-left: 50px;
+    padding-left: 22px;
     font-family: sans-serif;
-    font-size: 14px;
+    font-size: 15px;
     color: #C7C7C7;
   }
 
-  .login_bg5 {
-    padding-left: 10px;
-    // padding-top: 20px;
-  }
-
   .login_bg5 {
     padding-right: 10px;
     float: left;
-    // float: top;
-    padding-top: 20px;
-    // padding: 15;
+    padding-top: 10px;
   }
 
-  .logolabsop-img {
-    width: 400px;
+  .weixin-img {
+    width: 77px;
   }
 
-  .footer footer {
-    overflow: hidden;
-    max-width: 1136px;
-    margin: 0 auto;
-    padding-top: 0px;
-    padding-bottom: 30px;
-  }
-  .box-card {
-      margin-top: 140px;
-      width: 300px;
-      height: 350px;
-      margin-bottom: 2.5rem;
-      // padding: 0 1.25rem;
-       background: $login-form-background;
-      color: $login-form-color;
-  }
-  .login {
-    &-form {
-      // position: absolute;
-      
-
-      .el-button {
-        margin-top: 0.5rem;
-        width: 100%;
-      }
-    }
+  .nav ul.nav-item {
+    height: 32px;
+    float: left;
+    line-height: 32px;
+    padding-left: 350px;
   }
 
+  // .logu {
+
+  //   margin-top: 100px;
+  //   // padding-left: 120px;
+  // }
+
+
+
+  // .login {
+  //   &-form {
+  //     // position: absolute;
+
+  //     .el-button {
+  //       margin-top: 0.5rem;
+  //       width: 100%;
+  //     }
+  //   }
+  // }
+
 </style>

+ 115 - 125
src/dashoo.cn/frontend_web/src/pages/login_dingzhi.vue → src/dashoo.cn/frontend_web/src/pages/login_special.vue

@@ -1,37 +1,51 @@
 <template>
-  <div >
+  <div class="nav">
+    <header>
+      <a href="/" class="nav-logo leftpadding" alt="egg"><img src="../assets/img/logo.png" style="height:55px;"></a>
+      <ul class="nav-item">
+        <li><a href="http://www.dashoo.cn/product-3-1.html" alt="介绍">产品中心</a></li>
+        <li><a href="http://www.dashoo.cn/service-2-1.html" alt="其他">解决方案</a></li>
+        <li><a href="http://www.dashoo.cn/news-4-1.html" alt="API">科技资讯</a></li>
+        <li><a href="http://www.dashoo.cn" alt="其他">其他</a></li>
+        <li>
+        <li class="translations">
+          <!-- <a class="nav-link">切换语言</a> -->
+          <!-- <span class="arrow"></span><ul id="dropdownContent" class="dropdown-content"><li><a id="zh-cn" href="/" style="color: #22ab28">中文</a></li><li><a id="en" href="/">English</a></li></ul> -->
+        </li>
+      </ul>
+    </header>
 
     <div class="container">
       <el-row>
         <el-col :span="15">
           <div class="leftpadding">
-            <img src="../assets/img/dingzhi.png" class="intelligent-img" /> </div>
+            <img src="../assets/img/special.png" class="intelligent-img" /> </div>
         </el-col>
         <el-col :span="9">
-          <el-card class="box-card">
-         <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>
+          <el-card class="box-card" style="width: 300px;margin-top: 160px;height: 350px;">
+            <el-form class="login-form" auto-complete="off" :model="model" :rules="rules" ref="user">
+              <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>
           </el-card>
-          
+
         </el-col>
       </el-row>
     </div>
 
     <div class="footer">
-      <footer>
+      <footer style="background: #F9F9F9;">
         <el-row>
           <el-col :span="12">
             <div class="login_bg4">
@@ -87,6 +101,7 @@
       }
 
       return {
+        loginMode: 1,
         model: model,
         rules: rules,
         error: null,
@@ -144,35 +159,45 @@
     top: 0;
   }
 
+  .nav {
+    min-width: 1100px;
+    min-height: 600px;
+  }
+
   .nav .nav-logo {
     padding-top: 2px;
     padding-left: 35px;
   }
 
+  .nav-logo {
+    margin: 0;
+    display: inline-block;
+    float: left;
+    padding-top: 2px;
+  }
+
   .nav header {
-    /*shift way to clear float because of the overflow hidden will hide the algolia*/
     padding: 0px 0 0px;
-    // max-width: 1136px;
-    min-width: 1300px;
+    min-width: 1100px;
     margin: 0 auto;
   }
-      .heading {
-        margin: 0 0 1rem;
-        font-weight: 400;
-        font-size: 1.5rem;
-      }
 
-  .nav ul.nav-item {
-    height: 32px;
-    float: left;
+  .nav header .search-query {
+    height: 30px;
     line-height: 32px;
-    padding-left: 350px;
+    box-sizing: border-box;
+    border: 1px solid #e6e6e6;
+    border-radius: 15px;
+    outline: none;
+    padding: 0 15px 0 32px;
+    background-size: 20px;
   }
 
-  .logu {
-
-    margin-top: 100px;
-    // padding-left: 120px;
+  .nav ul.nav-item {
+    height: 32px;
+    float: right;
+    line-height: 32px;
+    padding-right: 0px;
   }
 
   .nav ul.nav-item li {
@@ -187,139 +212,104 @@
     font-weight: 500;
   }
 
-  .nav-logo {
-    margin: 0;
-    display: inline-block;
-    float: left;
-    padding-top: 2px;
-  }
-
   .container {
     text-align: center;
     background: url("../assets/img/Background.png");
-    // min-width: 1300px;
     width: 100%;
-    height: 100%;
+    height: 150%;
     margin: 0 auto;
     background-size: cover;
-    // background-position: center;
-    // position: relative;
-  }
-
-  .nav {
-    // max-width: 100%;
-    min-width: 1100px;
-    min-height: 600px;
   }
 
-  .license {
-    padding-top: 10px;
-    font-family: sans-serif;
-    font-size: 14px;
-    color: #C7C7C7;
+  .leftpadding {
+    padding-left: 0px;
+    padding-top: 130px;
   }
 
-  .footer a {
-    color: #6E717C;
+  .intelligent-img {
+    width: 650px;
+    margin-top: -40px;
   }
 
-  .nav header .search-query {
-    height: 30px;
-    line-height: 32px;
-    box-sizing: border-box;
-    border: 1px solid #e6e6e6;
-    border-radius: 15px;
-    outline: none;
-    padding: 0 15px 0 32px;
-    background-size: 20px;
+  .box-card {
+    margin-bottom: 2.5rem;
+    color: $login-form-color;
   }
 
   .footer {
     min-width: 1100px;
-    background: #F9F9F9;
-    border-top: 1px solid rgba(230, 230, 230, 0.99);
     width: 100%;
-    height: 18%;
   }
 
-  .intelligent-img {
-    width: 650px;
-    // max-width: 800px;
-    //  min-width: 20%;
+  .footer a {
+    color: #6E717C;
   }
 
-  .weixin-img {
-    width: 77px;
+  .footer footer {
+    overflow: hidden;
+    // max-width: 1136px;
+    max-width: 1480px;
+    margin: 0 auto;
+    padding-top: 0px;
+    padding-bottom: 30px;
   }
 
-  .leftpadding {
-    padding-left: 0px;
-    padding-top: 100px;
-    // padding-left: 10%;
-    // padding-top: 100px;
+  .coptright {
+    padding-top: 40px;
+    padding-left: 150px;
   }
 
   .login_bg4 {
-    padding-left: 20px;
+    padding-left: 100px;
     padding-top: 5%;
   }
 
-  .coptright {
-    padding-top: 40px;
-    padding-left: 150px;
+  .logolabsop-img {
+    width: 400px;
   }
 
   .license {
     padding-top: 10px;
-    padding-left: 50px;
+    padding-left: 22px;
     font-family: sans-serif;
-    font-size: 14px;
+    font-size: 15px;
     color: #C7C7C7;
   }
 
-  .login_bg5 {
-    padding-left: 10px;
-    // padding-top: 20px;
-  }
-
   .login_bg5 {
     padding-right: 10px;
     float: left;
-    // float: top;
-    padding-top: 20px;
-    // padding: 15;
+    padding-top: 10px;
   }
 
-  .logolabsop-img {
-    width: 400px;
+  .weixin-img {
+    width: 77px;
   }
 
-  .footer footer {
-    overflow: hidden;
-    max-width: 1136px;
-    margin: 0 auto;
-    padding-top: 0px;
-    padding-bottom: 30px;
-  }
-  .box-card {
-      margin-top: 140px;
-      width: 300px;
-      height: 350px;
-      margin-bottom: 2.5rem;
-      // padding: 0 1.25rem;
-       background: $login-form-background;
-      color: $login-form-color;
-  }
-  .login {
-    &-form {
-      // position: absolute;
-      
-
-      .el-button {
-        margin-top: 0.5rem;
-        width: 100%;
-      }
-    }
+  .nav ul.nav-item {
+    height: 32px;
+    float: left;
+    line-height: 32px;
+    padding-left: 350px;
   }
 
+  // .logu {
+
+  //   margin-top: 100px;
+  //   // padding-left: 120px;
+  // }
+
+
+
+  // .login {
+  //   &-form {
+  //     // position: absolute;
+
+  //     .el-button {
+  //       margin-top: 0.5rem;
+  //       width: 100%;
+  //     }
+  //   }
+  // }
+
 </style>

+ 115 - 125
src/dashoo.cn/frontend_web/src/pages/login_zhuanye.vue → src/dashoo.cn/frontend_web/src/pages/login_std.vue

@@ -1,37 +1,51 @@
 <template>
-  <div >
+  <div class="nav">
+    <header>
+      <a href="/" class="nav-logo leftpadding" alt="egg"><img src="../assets/img/logo.png" style="height:55px;"></a>
+      <ul class="nav-item">
+        <li><a href="http://www.dashoo.cn/product-3-1.html" alt="介绍">产品中心</a></li>
+        <li><a href="http://www.dashoo.cn/service-2-1.html" alt="其他">解决方案</a></li>
+        <li><a href="http://www.dashoo.cn/news-4-1.html" alt="API">科技资讯</a></li>
+        <li><a href="http://www.dashoo.cn" alt="其他">其他</a></li>
+        <li>
+        <li class="translations">
+          <!-- <a class="nav-link">切换语言</a> -->
+          <!-- <span class="arrow"></span><ul id="dropdownContent" class="dropdown-content"><li><a id="zh-cn" href="/" style="color: #22ab28">中文</a></li><li><a id="en" href="/">English</a></li></ul> -->
+        </li>
+      </ul>
+    </header>
 
     <div class="container">
       <el-row>
         <el-col :span="15">
           <div class="leftpadding">
-            <img src="../assets/img/zhuanye.png" class="intelligent-img" /> </div>
+            <img src="../assets/img/std.png" class="intelligent-img" /> </div>
         </el-col>
         <el-col :span="9">
-          <el-card class="box-card">
-         <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>
+          <el-card class="box-card" style="width: 300px;margin-top: 160px;height: 350px;">
+            <el-form class="login-form" auto-complete="off" :model="model" :rules="rules" ref="user">
+              <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>
           </el-card>
-          
+
         </el-col>
       </el-row>
     </div>
 
     <div class="footer">
-      <footer>
+      <footer style="background: #F9F9F9;">
         <el-row>
           <el-col :span="12">
             <div class="login_bg4">
@@ -87,6 +101,7 @@
       }
 
       return {
+        loginMode: 1,
         model: model,
         rules: rules,
         error: null,
@@ -144,35 +159,45 @@
     top: 0;
   }
 
+  .nav {
+    min-width: 1100px;
+    min-height: 600px;
+  }
+
   .nav .nav-logo {
     padding-top: 2px;
     padding-left: 35px;
   }
 
+  .nav-logo {
+    margin: 0;
+    display: inline-block;
+    float: left;
+    padding-top: 2px;
+  }
+
   .nav header {
-    /*shift way to clear float because of the overflow hidden will hide the algolia*/
     padding: 0px 0 0px;
-    // max-width: 1136px;
-    min-width: 1300px;
+    min-width: 1100px;
     margin: 0 auto;
   }
-      .heading {
-        margin: 0 0 1rem;
-        font-weight: 400;
-        font-size: 1.5rem;
-      }
 
-  .nav ul.nav-item {
-    height: 32px;
-    float: left;
+  .nav header .search-query {
+    height: 30px;
     line-height: 32px;
-    padding-left: 350px;
+    box-sizing: border-box;
+    border: 1px solid #e6e6e6;
+    border-radius: 15px;
+    outline: none;
+    padding: 0 15px 0 32px;
+    background-size: 20px;
   }
 
-  .logu {
-
-    margin-top: 100px;
-    // padding-left: 120px;
+  .nav ul.nav-item {
+    height: 32px;
+    float: right;
+    line-height: 32px;
+    padding-right: 0px;
   }
 
   .nav ul.nav-item li {
@@ -187,139 +212,104 @@
     font-weight: 500;
   }
 
-  .nav-logo {
-    margin: 0;
-    display: inline-block;
-    float: left;
-    padding-top: 2px;
-  }
-
   .container {
     text-align: center;
     background: url("../assets/img/Background.png");
-    // min-width: 1300px;
     width: 100%;
-    height: 100%;
+    height: 150%;
     margin: 0 auto;
     background-size: cover;
-    // background-position: center;
-    // position: relative;
-  }
-
-  .nav {
-    // max-width: 100%;
-    min-width: 1100px;
-    min-height: 600px;
   }
 
-  .license {
-    padding-top: 10px;
-    font-family: sans-serif;
-    font-size: 14px;
-    color: #C7C7C7;
+  .leftpadding {
+    padding-left: 0px;
+    padding-top: 130px;
   }
 
-  .footer a {
-    color: #6E717C;
+  .intelligent-img {
+    width: 650px;
+    margin-top: -40px;
   }
 
-  .nav header .search-query {
-    height: 30px;
-    line-height: 32px;
-    box-sizing: border-box;
-    border: 1px solid #e6e6e6;
-    border-radius: 15px;
-    outline: none;
-    padding: 0 15px 0 32px;
-    background-size: 20px;
+  .box-card {
+    margin-bottom: 2.5rem;
+    color: $login-form-color;
   }
 
   .footer {
     min-width: 1100px;
-    background: #F9F9F9;
-    border-top: 1px solid rgba(230, 230, 230, 0.99);
     width: 100%;
-    height: 18%;
   }
 
-  .intelligent-img {
-    width: 650px;
-    // max-width: 800px;
-    //  min-width: 20%;
+  .footer a {
+    color: #6E717C;
   }
 
-  .weixin-img {
-    width: 77px;
+  .footer footer {
+    overflow: hidden;
+    // max-width: 1136px;
+    max-width: 1480px;
+    margin: 0 auto;
+    padding-top: 0px;
+    padding-bottom: 30px;
   }
 
-  .leftpadding {
-    padding-left: 0px;
-    padding-top: 100px;
-    // padding-left: 10%;
-    // padding-top: 100px;
+  .coptright {
+    padding-top: 40px;
+    padding-left: 150px;
   }
 
   .login_bg4 {
-    padding-left: 20px;
+    padding-left: 100px;
     padding-top: 5%;
   }
 
-  .coptright {
-    padding-top: 40px;
-    padding-left: 150px;
+  .logolabsop-img {
+    width: 400px;
   }
 
   .license {
     padding-top: 10px;
-    padding-left: 50px;
+    padding-left: 22px;
     font-family: sans-serif;
-    font-size: 14px;
+    font-size: 15px;
     color: #C7C7C7;
   }
 
-  .login_bg5 {
-    padding-left: 10px;
-    // padding-top: 20px;
-  }
-
   .login_bg5 {
     padding-right: 10px;
     float: left;
-    // float: top;
-    padding-top: 20px;
-    // padding: 15;
+    padding-top: 10px;
   }
 
-  .logolabsop-img {
-    width: 400px;
+  .weixin-img {
+    width: 77px;
   }
 
-  .footer footer {
-    overflow: hidden;
-    max-width: 1136px;
-    margin: 0 auto;
-    padding-top: 0px;
-    padding-bottom: 30px;
-  }
-  .box-card {
-      margin-top: 140px;
-      width: 300px;
-      height: 350px;
-      margin-bottom: 2.5rem;
-      // padding: 0 1.25rem;
-       background: $login-form-background;
-      color: $login-form-color;
-  }
-  .login {
-    &-form {
-      // position: absolute;
-      
-
-      .el-button {
-        margin-top: 0.5rem;
-        width: 100%;
-      }
-    }
+  .nav ul.nav-item {
+    height: 32px;
+    float: left;
+    line-height: 32px;
+    padding-left: 350px;
   }
 
+  // .logu {
+
+  //   margin-top: 100px;
+  //   // padding-left: 120px;
+  // }
+
+
+
+  // .login {
+  //   &-form {
+  //     // position: absolute;
+
+  //     .el-button {
+  //       margin-top: 0.5rem;
+  //       width: 100%;
+  //     }
+  //   }
+  // }
+
 </style>

+ 0 - 0
src/dashoo.cn/frontend_web/src/pages/projectmanage/_opera/_operation.vue


+ 120 - 29
src/dashoo.cn/frontend_web/src/pages/projectmanage/_opera/detail.vue

@@ -1,19 +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" id="topdiv">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/projectmanage' }">项目管理</el-breadcrumb-item>
-      <el-breadcrumb-item >项目详情</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-file-text"> 项目详情</i>
-          <span style="float: right;">
-            <el-button type="primary" size="small" style="margin-left:0px;" onclick="window.history.go(-1)">返回</el-button>
-          </span>
+    <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: '/projectmanage' }">课题管理</el-breadcrumb-item>
+          <el-breadcrumb-item>详细信息</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+            onclick="window.history.go(-1)">返回</el-button>
         </span>
       </div>
+
       <el-card class="box-card samplesinputmaincard" style="margin-top:-10px;">
         <div slot="header">
           <legend style="color:#436EEE"></legend>
@@ -104,52 +117,130 @@
     name: 'projectdetail',
     data() {
       return {
-        list: [{BarCode: 'xq11111-1', SampleCode: 'xq11111', Name: '试用样本', SampleTypeName: '血清', status: 1, Capacity: 2, Unit: 'ml', SamplingOrganName: '静脉', SamplingSiteName: '肺循环静脉', ValidityDate: '2017-11-01T14:28:10+08:21', ReceiveDate: '2017-11-01T14:27:36+08:21'},
-        {BarCode: 'xq11111-2', SampleCode: 'xq11111', Name: '完整样本1', SampleTypeName: '血清', status: 2, Capacity: 3, Unit: 'ml', SamplingOrganName: '静脉', SamplingSiteName: '肺循环静脉', ValidityDate: '2017-04-05T14:39:07+08:21', ReceiveDate: '2017-04-05T14:27:36+08:21'},
-        {BarCode: 'BB160900008-1', SampleCode: 'BB160900008', Name: '张红军全血样本', SampleTypeName: '全血', status: 3, Capacity: 5, Unit: 'ml', SamplingOrganName: '静脉', SamplingSiteName: '体循环静脉', ValidityDate: '2017-04-05T16:37:04+08:21', ReceiveDate: '2017-04-05T14:28:20+08:21'},
-        {BarCode: 'BE160900010-1', SampleCode: 'BE160900010', Name: '张红军红细胞样本', SampleTypeName: '红细胞', status: 4, Capacity: 3, Unit: 'ml', SamplingOrganName: '静脉', SamplingSiteName: '体循环静脉', ValidityDate: '2016-10-05T14:18:21+08:21', ReceiveDate: '2017-04-05T12:34:04+08:21'}],
+        list: [{
+            BarCode: 'xq11111-1',
+            SampleCode: 'xq11111',
+            Name: '试用样本',
+            SampleTypeName: '血清',
+            status: 1,
+            Capacity: 2,
+            Unit: 'ml',
+            SamplingOrganName: '静脉',
+            SamplingSiteName: '肺循环静脉',
+            ValidityDate: '2017-11-01T14:28:10+08:21',
+            ReceiveDate: '2017-11-01T14:27:36+08:21'
+          },
+          {
+            BarCode: 'xq11111-2',
+            SampleCode: 'xq11111',
+            Name: '完整样本1',
+            SampleTypeName: '血清',
+            status: 2,
+            Capacity: 3,
+            Unit: 'ml',
+            SamplingOrganName: '静脉',
+            SamplingSiteName: '肺循环静脉',
+            ValidityDate: '2017-04-05T14:39:07+08:21',
+            ReceiveDate: '2017-04-05T14:27:36+08:21'
+          },
+          {
+            BarCode: 'BB160900008-1',
+            SampleCode: 'BB160900008',
+            Name: '张红军全血样本',
+            SampleTypeName: '全血',
+            status: 3,
+            Capacity: 5,
+            Unit: 'ml',
+            SamplingOrganName: '静脉',
+            SamplingSiteName: '体循环静脉',
+            ValidityDate: '2017-04-05T16:37:04+08:21',
+            ReceiveDate: '2017-04-05T14:28:20+08:21'
+          },
+          {
+            BarCode: 'BE160900010-1',
+            SampleCode: 'BE160900010',
+            Name: '张红军红细胞样本',
+            SampleTypeName: '红细胞',
+            status: 4,
+            Capacity: 3,
+            Unit: 'ml',
+            SamplingOrganName: '静脉',
+            SamplingSiteName: '体循环静脉',
+            ValidityDate: '2016-10-05T14:18:21+08:21',
+            ReceiveDate: '2017-04-05T12:34:04+08:21'
+          }
+        ],
         Pid: 0,
-        mainlist: [{id: 1, name: '携带EGFR敏感突变的脑转移非小细胞肺癌研究', manager: '张国华', createon: '2017-01-06T12:34:27+08:21', status: 1},
-        {id: 2, name: '克唑替尼适应症扩展研究', manager: '李斌', createon: '2016-11-03T22:55:07+12:34', status: 3},
-        {id: 3, name: '携带RET融合的NSCLC治疗', manager: '宋波涛', createon: '2017-10-24T05:22:05+02:56', status: 2}]
+        mainlist: [{
+            id: 1,
+            name: '携带EGFR敏感突变的脑转移非小细胞肺癌研究',
+            manager: '张国华',
+            createon: '2017-01-06T12:34:27+08:21',
+            status: 1
+          },
+          {
+            id: 2,
+            name: '克唑替尼适应症扩展研究',
+            manager: '李斌',
+            createon: '2016-11-03T22:55:07+12:34',
+            status: 3
+          },
+          {
+            id: 3,
+            name: '携带RET融合的NSCLC治疗',
+            manager: '宋波涛',
+            createon: '2017-10-24T05:22:05+02:56',
+            status: 2
+          }
+        ]
       }
     },
-    created () {
+    created() {
       this.Pid = this.$route.params.opera
       this.initData()
     },
     methods: {
-      initData () {
-      },
-      jstimehandle (val) {
+      initData() {},
+      jstimehandle(val) {
         val = val.replace('T', ' ')
         return val.substring(0, 19)
       }
     }
   }
+
 </script>
 
-<style lang="scss" >
-.r{position:fixed; bottom:0;}
- .el-pagination {
+<style lang="scss">
+  .r {
+    position: fixed;
+    bottom: 0;
+  }
+
+  .el-pagination {
     margin: 1rem 0 2rem;
     text-align: right;
   }
-  .samplesinputmaincard:not(:first-child){
-    margin-top:8px;
+
+  .samplesinputmaincard:not(:first-child) {
+    margin-top: 8px;
   }
+
   .samplesinputmaincard .el-card__header {
     padding: 5px 10px;
     font-size: 10px;
   }
+
   .samplesinputmaincard .el-card__body {
     padding: 5px;
     margin: -11px 0;
   }
+
   .sampledetailcardinfodiv {
     margin: 8px 0 15px 0;
   }
-  .sampledetailcardinfodiv .el-row .el-col.el-col-6{
+
+  .sampledetailcardinfodiv .el-row .el-col.el-col-6 {
     padding: 8px 5px 0 0;
   }
+
 </style>

+ 100 - 71
src/dashoo.cn/frontend_web/src/pages/projectmanage/index.vue

@@ -1,47 +1,47 @@
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</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 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">添加</el-button>
+          <router-link :to="'/projectmanage/addproject/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-input size="mini" v-model="searchform.projectname" style="width:100%" placeholder="请输入课题名称"></el-input>
+          </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="110px">
-            <el-row :gutter="0">
-              <el-col :span="8">
-                <el-form-item label="项目名称">
-                  <el-input v-model="searchform.projectname" placeholder="请输入项目名"></el-input>
-                </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 type="primary" size="small" style="margin-top:0px"  @click="seachdata">查询</el-button>
-            </el-row>
-          </el-form>
-        </el-collapse-item>
-      </el-collapse>
-      <el-table ref="multipleTable" border :data="list" tooltip-effect="dark" style="width: 100%">
-        <el-table-column type="selection" ></el-table-column>
+
+      <el-table ref="multipleTable" :data="list" bordertooltip-effect="dark" border height="calc(100vh - 230px)"
+        style="width: 100%;">
+        <el-table-column type="selection"></el-table-column>
         <el-table-column label="操作" width="130">
           <template slot-scope="scope">
             <router-link :to="'projectmanage/'+scope.row.id + '/detail'">
-              <el-button size="small" type="text" title="编辑" icon="el-icon-edit" ></el-button>
+              <el-button size="small" type="text" title="编辑" icon="el-icon-edit"></el-button>
             </router-link>
             <el-button size="small" type="text" title="删除" icon="el-icon-delete"></el-button>
             <router-link :to="'projectmanage/'+scope.row.id + '/detail'">
-              <el-button type="text" size="small" title="详情" style="margin-left:0px;" ><i class="icon icon-eye"></i></el-button>
+              <el-button type="text" size="small" title="详情" style="margin-left:0px;"><i class="icon icon-eye"></i>
+              </el-button>
             </router-link>
           </template>
         </el-table-column>
@@ -60,12 +60,9 @@
           </template>
         </el-table-column>
       </el-table>
-      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 15, 20]"
-          :page-size="size"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="list.length">
+      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+        :page-sizes="[10, 15, 20]" :page-size="size" layout="total, sizes, prev, pager, next, jumper"
+        :total="list.length">
       </el-pagination>
     </el-card>
   </div>
@@ -74,55 +71,87 @@
   export default {
     name: 'projectmanage',
     data() {
-    return {
-      currentItemCount: 0, // 当前页显示数量
-      currentPage: 1, // 当前页
-      size: 10, // 每页显示数量
-      list: [{id: 1, name: '携带EGFR敏感突变的脑转移非小细胞肺癌研究', manager: '张国华', createon: '2017-01-06T12:34:27+08:21', status: 1},
-      {id: 2, name: '克唑替尼适应症扩展研究', manager: '李斌', createon: '2016-11-03T22:55:07+12:34', status: 3},
-      {id: 3, name: '携带RET融合的NSCLC治疗', manager: '宋波涛', createon: '2017-10-24T05:22:05+02:56', status: 2}], // table显示数据集
-      searchform: {
-        projectname: '' // 项目名
+      return {
+        currentItemCount: 0, // 当前页显示数量
+        currentPage: 1, // 当前页
+        size: 10, // 每页显示数量
+        list: [{
+            id: 1,
+            name: '携带EGFR敏感突变的脑转移非小细胞肺癌研究',
+            manager: '张国华',
+            createon: '2017-01-06T12:34:27+08:21',
+            status: 1
+          },
+          {
+            id: 2,
+            name: '克唑替尼适应症扩展研究',
+            manager: '李斌',
+            createon: '2016-11-03T22:55:07+12:34',
+            status: 3
+          },
+          {
+            id: 3,
+            name: '携带RET融合的NSCLC治疗',
+            manager: '宋波涛',
+            createon: '2017-10-24T05:22:05+02:56',
+            status: 2
+          }
+        ], // table显示数据集
+        searchform: {
+          projectname: '' // 项目名
+        }
       }
-    }
-  },
-  created () {
-    // initial data
-    this.initData()
-  },
-  methods: {
-    initData () {
-    },
-    seachdata () {
-      this.currentPage = 1
-      this.initData()
-    },
-    jstimehandle (val) {
-      val = val.replace('T', ' ')
-      return val.substring(0, 19)
     },
-    handleSizeChange (value) {
-      this.size = value
-      this.currentPage = 1
+    created() {
+      // initial data
       this.initData()
     },
-    handleCurrentChange (value) {
-      this.currentPage = value
-      this.initData()
+    methods: {
+      initData() {},
+      seachdata() {
+        this.currentPage = 1
+        this.initData()
+      },
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+      clearSearch() {
+        this.searchform.projectname = ''
+      },
+      jstimehandle(val) {
+        val = val.replace('T', ' ')
+        return val.substring(0, 19)
+      },
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initData()
+      },
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initData()
+      }
     }
   }
-}
+
 </script>
 
 <style lang="scss">
- .el-pagination {
+  .el-pagination {
     margin: 1rem 0 2rem;
     text-align: right;
   }
+
   .sampledetailcardinfodiv {
     margin: 8px 0 15px 0;
   }
+
   .sampledetailcardinfodiv .el-row {
     padding: 8px 5px 0 0;
   }
+
 </style>

+ 20 - 14
src/dashoo.cn/frontend_web/src/pages/samples/archived/_opera/detailed.vue

@@ -2,9 +2,11 @@
   .input-with-select .el-select .el-input {
     width: 110px;
   }
+
   .input-with-select .el-input-group__append {
     background-color: #fff;
   }
+
 </style>
 
 <template>
@@ -20,8 +22,10 @@
           <el-breadcrumb-item>已归档样本详情</el-breadcrumb-item>
         </el-breadcrumb>
         <span style="float: right;">
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="resultshow">追加</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="resultshow">追加
+          </el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回
+          </el-button>
         </span>
       </div>
 
@@ -106,7 +110,7 @@
             </el-col>
           </el-row>
           <el-row>
-            <el-col :span="6" v-if="acc == 'sryms'">
+            <el-col :span="6">
               <label>所属分组 : {{ GroupName }}</label>
             </el-col>
             <el-col :span="6">
@@ -188,17 +192,20 @@
               <template slot-scope="scope">
                 <el-button type="text" title="编辑" size="small" icon="el-icon-edit" @click="resultdetail(scope.row)">
                 </el-button>
-                <el-button type="text" title="删除" size="small" icon="el-icon-delete" @click="delrecord(scope.row)"></el-button>
+                <el-button type="text" title="删除" size="small" icon="el-icon-delete" @click="delrecord(scope.row)">
+                </el-button>
               </template>
             </el-table-column>
-            <el-table-column prop="CZType" label="操作名称" width="150" show-overflow-tooltip align="center" header-align="center"></el-table-column>
+            <el-table-column prop="CZType" label="操作名称" width="150" show-overflow-tooltip align="center"
+              header-align="center"></el-table-column>
             <el-table-column prop="RecordTime" sortable label="记录时间" width="190" show-overflow-tooltip align="center"
               header-align="center">
               <template slot-scope="scope">
                 {{ jstimehandle(scope.row.RecordTime+'') }}
               </template>
             </el-table-column>
-            <el-table-column prop="RecordBy" label="记录人" width="120" show-overflow-tooltip align="center" header-align="center"></el-table-column>
+            <el-table-column prop="RecordBy" label="记录人" width="120" show-overflow-tooltip align="center"
+              header-align="center"></el-table-column>
             <el-table-column prop="Record" label="操作结果" min-width="160" show-overflow-tooltip align="center"
               header-align="center"></el-table-column>
           </el-table>
@@ -216,13 +223,14 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="记录时间">
-              <el-date-picker v-model="resultForm.RecordTime" type="datetime" style="width:100%" placeholder="请选择记录时间"></el-date-picker>
+              <el-date-picker v-model="resultForm.RecordTime" type="datetime" style="width:100%" placeholder="请选择记录时间">
+              </el-date-picker>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="记录人">
               <el-select ref="reflrrselect" v-model="resultForm.RecordId" style="width:100%">
-                <el-option v-for="item in userlist" :label="item.Realname" :value="item.Id" :key="item.Id"  >
+                <el-option v-for="item in userlist" :label="item.Realname" :value="item.Id" :key="item.Id">
                 </el-option>
               </el-select>
             </el-form-item>
@@ -304,11 +312,8 @@
         // request
         this.$axios.get('/samplesfiles/detailed/' + _this.Pid, null)
           .then(res => {
-            // response
             _this.sampleinfodetail = res.data.items
-            if (_this.acc == 'sryms') {
-              _this.getGroup(res.data.items.BarCode)
-            }
+            _this.getGroup(res.data.items.BarCode)
             this.getusedrecord()
             // this.getpublicextends(_this.sampleinfodetail)
             // 加载特有扩展
@@ -347,8 +352,9 @@
               // 给扩展信息赋值
               for (let i = 0; i < this.typetykzlist.length; i++) {
                 if (this.typetykzlist[i].FieldType == '4') {
-                  this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName).substr(
-                    0, 24)
+                  this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName)
+                    .substr(
+                      0, 24)
                 } else {
                   this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName)
                 }

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

@@ -168,7 +168,7 @@
             <el-form-item label="特有检索">
               <el-input v-model="Stnotevalue" placeholder="输入检索内容" size="mini" style="width:100%"></el-input>
             </el-form-item>
-            <el-form-item label="所属分组" v-if="acc =='sryms'">
+            <el-form-item label="所属分组">
               <el-input v-model="GroupName" placeholder="输入所属分组" size="mini" style="width:100%"></el-input>
             </el-form-item>
           </el-col>

+ 9 - 7
src/dashoo.cn/frontend_web/src/pages/samples/prerecorded/_opera/detailed.vue

@@ -2,9 +2,11 @@
   .input-with-select .el-select .el-input {
     width: 110px;
   }
+
   .input-with-select .el-input-group__append {
     background-color: #fff;
   }
+
 </style>
 
 <template>
@@ -20,7 +22,8 @@
           <el-breadcrumb-item>样本预录入详情</el-breadcrumb-item>
         </el-breadcrumb>
         <span style="float: right;">
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回
+          </el-button>
         </span>
       </div>
 
@@ -97,7 +100,7 @@
             <el-col :span="6">
               <label>冻融次数 : {{ sampleinfodetail.FreezingNum }}</label>
             </el-col>
-            <el-col :span="6" v-if="acc == 'sryms'">
+            <el-col :span="6">
               <label>所属分组 : {{ GroupName }}</label>
             </el-col>
             <el-col :span="6">
@@ -258,9 +261,7 @@
           .then(res => {
             // response
             _this.sampleinfodetail = res.data.items
-            if (_this.acc == 'sryms') {
-              _this.getGroup(res.data.items.BarCode)
-            }
+            _this.getGroup(res.data.items.BarCode)
             this.getrelationSamples(_this.sampleinfodetail.BarCode, _this.sampleinfodetail.SampleCode)
             this.getusedrecord()
             // this.getpublicextends(_this.sampleinfodetail)
@@ -322,8 +323,9 @@
               // 给扩展信息赋值
               for (let i = 0; i < this.typetykzlist.length; i++) {
                 if (this.typetykzlist[i].FieldType == '4') {
-                  this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName).substr(
-                    0, 24)
+                  this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName)
+                    .substr(
+                      0, 24)
                 } else {
                   this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName)
                 }

+ 2 - 4
src/dashoo.cn/frontend_web/src/pages/samples/prerecorded/_opera/operation.vue

@@ -149,7 +149,7 @@
               </el-checkbox>
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="acc =='sryms'">
+          <el-col :span="8">
             <el-form-item label="所属分组">
               <el-select ref="refGroup" multiple filterable default-first-option v-model="GroupIdOption"
                 placeholder="请选择" style="width: 100%">
@@ -713,9 +713,7 @@
             // }
             // 获取特有扩展并给特有扩展信息赋值
             _this.getItemGroupName(res.data)
-            if (_this.acc == 'sryms') {
-              _this.getGroup(res.data.BarCode)
-            }
+            _this.getGroup(res.data.BarCode)
           })
       },
       getautocodedata() {

+ 1 - 1
src/dashoo.cn/frontend_web/src/pages/samples/prerecorded/_opera/prerecordedadd.vue

@@ -144,7 +144,7 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="acc =='sryms'">
+          <el-col :span="8">
             <el-form-item label="所属分组">
               <el-select ref="refGroup" multiple filterable default-first-option v-model="GroupIdOption" placeholder="请选择"
                 style="width: 100%">

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

@@ -164,7 +164,7 @@
             <el-form-item label="特有检索">
               <el-input v-model="Stnotevalue" placeholder="输入检索内容" size="mini" style="width:100%"></el-input>
             </el-form-item>
-            <el-form-item label="所属分组" v-if="acc =='sryms'">
+            <el-form-item label="所属分组">
               <el-input v-model="GroupName" placeholder="输入所属分组" size="mini" style="width:100%"></el-input>
             </el-form-item>
           </el-col>

+ 31 - 18
src/dashoo.cn/frontend_web/src/pages/samples/stored/_opera/detailed.vue

@@ -2,9 +2,11 @@
   .input-with-select .el-select .el-input {
     width: 110px;
   }
+
   .input-with-select .el-input-group__append {
     background-color: #fff;
   }
+
 </style>
 
 <template>
@@ -20,11 +22,16 @@
           <el-breadcrumb-item>已存储样本详情</el-breadcrumb-item>
         </el-breadcrumb>
         <span style="float: right;">
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="dialogfusuVisible=true">复苏</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="dialogfenzhuangVisible = true">分装</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="dialogtiquVisible = true">提取</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="dialoguploadVisible = true">上传附件</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+            @click="dialogfusuVisible=true">复苏</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+            @click="dialogfenzhuangVisible = true">分装</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+            @click="dialogtiquVisible = true">提取</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+            @click="dialoguploadVisible = true">上传附件</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回
+          </el-button>
         </span>
       </div>
 
@@ -33,7 +40,8 @@
           <legend style="color:#436EEE"></legend>
           <i class="icon icon-paragraph-justify"> 样本主信息</i>
           <span style="float: right;">
-            <router-link :to="'/samples/stored/samplechart?samplecode='+sampleinfodetail.SampleCode+'_6&eid='+sampleinfodetail.EquipmentId+'&sampledetailid='+sampleinfodetail.Id+'&barcode='+sampleinfodetail.BarCode">
+            <router-link
+              :to="'/samples/stored/samplechart?samplecode='+sampleinfodetail.SampleCode+'_6&eid='+sampleinfodetail.EquipmentId+'&sampledetailid='+sampleinfodetail.Id+'&barcode='+sampleinfodetail.BarCode">
               <el-button type="text" class="el-button--mini" title="温度曲线">
                 <i class="icon icon-stats-dots"></i>
               </el-button>
@@ -114,7 +122,7 @@
             <el-col :span="6">
               <label>冻融次数 : {{ sampleinfodetail.FreezingNum }}</label>
             </el-col>
-            <el-col :span="6" v-if="acc == 'sryms'">
+            <el-col :span="6">
               <label>所属分组 : {{ GroupName }}</label>
             </el-col>
             <el-col :span="6">
@@ -186,7 +194,8 @@
                 '0') }}列 。</label>
             </el-col>
             <el-col :span="6">
-              <router-link :to="`/equipment/${sampleinfodetail.EquipmentId}/manage?station=${sampleinfodetail.ShelfX};${sampleinfodetail.ShelfY};${sampleinfodetail.BoxX};${sampleinfodetail.BoxY};${sampleinfodetail.Position};${sampleinfodetail.Id}`">
+              <router-link
+                :to="`/equipment/${sampleinfodetail.EquipmentId}/manage?station=${sampleinfodetail.ShelfX};${sampleinfodetail.ShelfY};${sampleinfodetail.BoxX};${sampleinfodetail.BoxY};${sampleinfodetail.Position};${sampleinfodetail.Id}`">
                 <a>定位到位置:
                   <i class="icon icon-location"></i>
                 </a>
@@ -235,7 +244,8 @@
           <el-table :data="achmentlist" bordertooltip-effect="dark" style="width: 100%">
             <el-table-column label="操作" width="65">
               <template slot-scope="scope">
-                <el-button size="small" type="text" icon="el-icon-delete" title="删除" @click="deleteupattachdata(scope.row)"></el-button>
+                <el-button size="small" type="text" icon="el-icon-delete" title="删除"
+                  @click="deleteupattachdata(scope.row)"></el-button>
               </template>
             </el-table-column>
             <el-table-column label="附件名">
@@ -297,10 +307,14 @@
         </div>
       </el-card>
     </el-card>
-    <recoverydialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogfusuVisible"></recoverydialog>
-    <packingdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogfenzhuangVisible"></packingdialog>
-    <abstractdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogtiquVisible"></abstractdialog>
-    <uploadattachdialog @close="uploaddialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialoguploadVisible"></uploadattachdialog>
+    <recoverydialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogfusuVisible">
+    </recoverydialog>
+    <packingdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail"
+      :visible.sync="dialogfenzhuangVisible"></packingdialog>
+    <abstractdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogtiquVisible">
+    </abstractdialog>
+    <uploadattachdialog @close="uploaddialogcallback" :sampleinfo="sampleinfodetail"
+      :visible.sync="dialoguploadVisible"></uploadattachdialog>
   </div>
 </template>
 <script>
@@ -386,9 +400,7 @@
             // response
             _this.sampleinfodetail = res.data.items
             _this.SampleCode = _this.sampleinfodetail.SampleCode
-            if (_this.acc == 'sryms') {
-              _this.getGroup(res.data.items.BarCode)
-            }
+            _this.getGroup(res.data.items.BarCode)
             // this.getpublicextends(_this.sampleinfodetail)
             this.getusedrecord()
             this.getrelationSamples(_this.sampleinfodetail.BarCode, _this.SampleCode)
@@ -430,8 +442,9 @@
               // 给扩展信息赋值
               for (let i = 0; i < this.typetykzlist.length; i++) {
                 if (this.typetykzlist[i].FieldType == '4') {
-                  this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName).substr(
-                    0, 24)
+                  this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName)
+                    .substr(
+                      0, 24)
                 } else {
                   this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName)
                 }

+ 22 - 17
src/dashoo.cn/frontend_web/src/pages/samples/stored/_opera/edit.vue

@@ -2,9 +2,11 @@
   .input-with-select .el-select .el-input {
     width: 110px;
   }
+
   .input-with-select .el-input-group__append {
     background-color: #fff;
   }
+
 </style>
 
 <template>
@@ -20,8 +22,10 @@
           <el-breadcrumb-item>编辑已存储样本</el-breadcrumb-item>
         </el-breadcrumb>
         <span style="float: right;">
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="saveeditdata">保存</el-button>
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="saveeditdata">
+            保存</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回
+          </el-button>
         </span>
       </div>
 
@@ -92,10 +96,10 @@
               <el-input v-model="EditForm.InnerCode"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="acc =='sryms'">
+          <el-col :span="8">
             <el-form-item label="所属分组">
-              <el-select ref="refGroup" multiple filterable default-first-option v-model="GroupIdOption" placeholder="请选择"
-                style="width: 100%" disabled>
+              <el-select ref="refGroup" multiple filterable default-first-option v-model="GroupIdOption"
+                placeholder="请选择" style="width: 100%" disabled>
                 <el-option v-for="item in groupList" :key="item.Key" :label="item.Value" :value="item.Id">
                 </el-option>
               </el-select>
@@ -118,19 +122,21 @@
                       <el-input v-model="item.FieldDefault" v-if="item.FieldType === '1'" :placeholder="'请输入'+item.Name"
                         auto-complete="off"></el-input>
 
-                      <el-select v-model="item.FieldDefault" v-if="item.FieldType === '2'" clearable :placeholder="'请选择'+item.Name"
-                        style="width:100%">
-                        <el-option :label="v" :value="v" :key="v" v-for=" v in item.FieldContent.split(',')"></el-option>
+                      <el-select v-model="item.FieldDefault" v-if="item.FieldType === '2'" clearable
+                        :placeholder="'请选择'+item.Name" style="width:100%">
+                        <el-option :label="v" :value="v" :key="v" v-for=" v in item.FieldContent.split(',')">
+                        </el-option>
                       </el-select>
 
                       <el-input v-model="item.FieldDefault" v-if="item.FieldType === '3'" :placeholder="'请输入'+item.Name"
                         type="textarea" :rows=3 auto-complete="off"></el-input>
 
-                      <el-date-picker v-model="item.FieldDefault" v-if="item.FieldType === '4'" type="datetime" style="width:100%"
-                        placeholder="选择日期"></el-date-picker>
+                      <el-date-picker v-model="item.FieldDefault" v-if="item.FieldType === '4'" type="datetime"
+                        style="width:100%" placeholder="选择日期"></el-date-picker>
 
-                      <el-button plain v-model="item.FieldDefault" v-if="item.FieldType === '5'" type="primary" size="mini"
-                        class="el-button--small" style="margin-left: 8px" @click="getitem(item)">上传图片</el-button>
+                      <el-button plain v-model="item.FieldDefault" v-if="item.FieldType === '5'" type="primary"
+                        size="mini" class="el-button--small" style="margin-left: 8px" @click="getitem(item)">上传图片
+                      </el-button>
                     </el-form-item>
                   </el-col>
                 </template>
@@ -190,8 +196,9 @@
     </el-card>
 
     <el-dialog :title="ImageTitle" width="80%" :visible.sync="imageDialog">
-      <el-upload action="" :before-upload="beforeAvatarUpload" :on-preview="handlePictureCardPreview" :http-request="uploadrequest"
-        :on-success="handleAvatarSuccess" :on-remove="handleRemove" :file-list="imagefilelist" list-type="picture">
+      <el-upload action="" :before-upload="beforeAvatarUpload" :on-preview="handlePictureCardPreview"
+        :http-request="uploadrequest" :on-success="handleAvatarSuccess" :on-remove="handleRemove"
+        :file-list="imagefilelist" list-type="picture">
         <el-button size="small" type="primary">点击上传</el-button>
         <div slot="tip" class="el-upload__tip">只能上传jpg/png文件</div>
       </el-upload>
@@ -281,9 +288,7 @@
             _this.EditForm.id = _this.sampleinfo.Id
             _this.ReceiveDate = _this.jstimehandle(_this.sampleinfo.ReceiveDate)
             _this.ValidityDate = _this.jstimehandle(_this.sampleinfo.ValidityDate)
-            if (_this.acc == 'sryms') {
-              _this.getGroup(res.data.items.BarCode)
-            }
+            _this.getGroup(res.data.items.BarCode)
             // _this.getpublicextends(_this.sampleinfo)
             // 加载特有扩展
             _this.getItemGroupName(_this.sampleinfo)

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

@@ -183,7 +183,7 @@
               <el-form-item label="特有检索">
                 <el-input v-model="Stnotevalue" placeholder="输入检索内容" size="mini" style="width:100%"></el-input>
               </el-form-item>
-              <el-form-item label="所属分组" v-if="acc =='sryms'">
+              <el-form-item label="所属分组">
                 <el-input v-model="GroupName" placeholder="输入所属分组" size="mini" style="width:100%"></el-input>
               </el-form-item>
             </el-col>
@@ -450,19 +450,7 @@
           GroupName: '', //所属分组
         },
         orAnd: "and",
-        searchTemplates: [
-          /*{
-                    Name: "search1",
-                    Fields: [
-                      {
-                        Field: "BarCode",
-                        Name: "样本编码",
-                        Value: "123",
-                        OrAnd: "or", // 0-or, 1-and
-                      }
-                    ],
-                  }*/
-        ],
+        searchTemplates: [],
         orAndData: [{
             name: "并且",
             value: "and",

+ 9 - 7
src/dashoo.cn/frontend_web/src/pages/samples/waitingstore/_opera/detailed.vue

@@ -2,9 +2,11 @@
   .input-with-select .el-select .el-input {
     width: 110px;
   }
+
   .input-with-select .el-input-group__append {
     background-color: #fff;
   }
+
 </style>
 
 <template>
@@ -20,7 +22,8 @@
           <el-breadcrumb-item>待复存样本详情</el-breadcrumb-item>
         </el-breadcrumb>
         <span style="float: right;">
-          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回
+          </el-button>
         </span>
       </div>
 
@@ -105,7 +108,7 @@
             </el-col>
           </el-row>
           <el-row>
-            <el-col :span="6" v-if="acc == 'sryms'">
+            <el-col :span="6">
               <label>所属分组 : {{ GroupName }}</label>
             </el-col>
             <el-col :span="6">
@@ -270,9 +273,7 @@
             // 加载特有扩展
             _this.getgroupname(_this.sampleinfodetail)
 
-            if (_this.acc == 'sryms') {
-              _this.getGroup(res.data.items.BarCode)
-            }
+            _this.getGroup(res.data.items.BarCode)
             // toggle loading
           })
           .catch(err => {
@@ -306,8 +307,9 @@
               // 给扩展信息赋值
               for (let i = 0; i < this.typetykzlist.length; i++) {
                 if (this.typetykzlist[i].FieldType == '4') {
-                  this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName).substr(
-                    0, 24)
+                  this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName)
+                    .substr(
+                      0, 24)
                 } else {
                   this.typetykzlist[i].FieldDefault = foo.eval('typetykzsampedit.' + this.typetykzlist[i].FieldName)
                 }

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

@@ -165,7 +165,7 @@
             <el-form-item label="特有检索">
               <el-input v-model="Stnotevalue" placeholder="输入检索内容" size="mini" style="width:100%"></el-input>
             </el-form-item>
-            <el-form-item label="所属分组" v-if="acc =='sryms'">
+            <el-form-item label="所属分组">
               <el-input v-model="GroupName" placeholder="输入所属分组" size="mini" style="width:100%"></el-input>
             </el-form-item>
           </el-col>

+ 29 - 13
src/dashoo.cn/frontend_web/src/pages/setting/paramset/index.vue

@@ -1,19 +1,34 @@
+<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>系统参数</el-breadcrumb-item>
-    </el-breadcrumb>
-    <el-card class="box-card">
-      <div slot="header">
-        <span>
-          <i class="icon icon-file-text"> </i> 系统参数设置
-          <span style="float: right;">
-            <el-button type="primary" @click="submitForm" class="el-button--small">保存</el-button>
-            <el-button type="primary" class="el-button--small" onclick="window.history.go(-1)">返回</el-button>
-          </span>
+    <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: '/setting/paramset' }">系统参数</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="submitForm()">
+            保存
+          </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-row>
         <el-col :span="4">&nbsp;
         </el-col>
@@ -23,7 +38,8 @@
               <el-switch on-text="是" off-text="否" on-color="#13ce66" v-model="parameterform.isGetBarCode"></el-switch>
             </el-form-item>
             <el-form-item label="录入样本时是否自动打印标签 ">
-              <el-switch on-text="是" off-text="否" on-color="#13ce66" v-model="parameterform.isAutoPrintSample"></el-switch>
+              <el-switch on-text="是" off-text="否" on-color="#13ce66" v-model="parameterform.isAutoPrintSample">
+              </el-switch>
             </el-form-item>
             <el-form-item label="随访提前提醒天数 " prop="newpass" v-if="!yeartest">
               <el-input-number v-model="parameterform.sFlupFrontDay" :min="0" style="width:100%"></el-input-number>

+ 94 - 75
src/dashoo.cn/frontend_web/src/pages/setting/printscheme/_opera/printschemeedit.vue

@@ -1,74 +1,84 @@
+<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: '/setting/printscheme' }">打印方案</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> 编辑打印方案
+  <div>
+    <el-card style="min-height: calc(100vh - 92px);">
+      <div slot="header" style="height: 20px;">
+        <span style="float: left;">
+          <i class="icon icon-table2"></i>
         </span>
+        <el-breadcrumb class="heading" style="float: left; margin-left: 5px">
+          <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+          <el-breadcrumb-item :to="{ path: '/setting/printscheme' }">打印方案</el-breadcrumb-item>
+          <el-breadcrumb-item>编辑打印方案</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
-          <el-button type="primary" class="el-button--small"  @click="addsave()">确定</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="addsave()">确定
+          </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="printschemeinfoform" label-width="180px" :rules="rulesprintschemeinfoform" ref="printschemeinfoform">
-      <el-row>
-        <el-col :span="8">
-          <el-form-item label="功能编码" required>
-            <el-select v-model="printschemeinfoform.FunCode" disabled style="width:100%" placeholder="请选择功能编码">
-              <el-option label="样本" value="样本"></el-option>
-              <el-option label="冻存盒" value="冻存盒"></el-option>
-              <el-option label="冻存架" value="冻存架"></el-option>
-              <el-option label="设备" value="设备"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="方案名称" prop="Name">
-            <el-input v-model="printschemeinfoform.Name" placeholder="方案名称"></el-input>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="16">
-          <el-form-item label="描述">
-            <el-input v-model="printschemeinfoform.Remark" type="textarea"  :rows=2 placeholder="描述"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="16">
-          <el-form-item label="上传打印模板【.fr3格式】">
-            <el-upload 
-              ref="upload"
-              class="printscheme-uploader"
-              :action="filehost + '/api/uploads/printschemefr3'"
-              :show-file-list="false"
-              :data="uploadprintparam"
-              :auto-upload="false"
-              :on-change="handlechangeavatar"
-              :on-success="handleAvatarSuccess"
-              :before-upload="beforeAvatarUpload">
-              <img v-if="uploadstate===1" :src="fileimg" class="printschemefile">
-              <i v-else class="el-icon-plus printscheme-uploader-icon"></i>
-            </el-upload>
-            <div style="margin-top:-20px;text-align:center;width:88px">{{printschemeinfoform.FileName}}</div>
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
-  </el-card>
+      </div>
+
+      <el-form :model="printschemeinfoform" label-width="180px" :rules="rulesprintschemeinfoform"
+        ref="printschemeinfoform">
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="功能编码" required>
+              <el-select v-model="printschemeinfoform.FunCode" disabled style="width:100%" placeholder="请选择功能编码">
+                <el-option label="样本" value="样本"></el-option>
+                <el-option label="冻存盒" value="冻存盒"></el-option>
+                <el-option label="冻存架" value="冻存架"></el-option>
+                <el-option label="设备" value="设备"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="方案名称" prop="Name">
+              <el-input v-model="printschemeinfoform.Name" placeholder="方案名称"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="描述">
+              <el-input v-model="printschemeinfoform.Remark" type="textarea" :rows=2 placeholder="描述"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="16">
+            <el-form-item label="上传打印模板【.fr3格式】">
+              <el-upload ref="upload" class="printscheme-uploader" :action="filehost + '/api/uploads/printschemefr3'"
+                :show-file-list="false" :data="uploadprintparam" :auto-upload="false" :on-change="handlechangeavatar"
+                :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
+                <img v-if="uploadstate===1" :src="fileimg" class="printschemefile">
+                <i v-else class="el-icon-plus printscheme-uploader-icon"></i>
+              </el-upload>
+              <div style="margin-top:-20px;text-align:center;width:88px">{{printschemeinfoform.FileName}}</div>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-card>
 
   </div>
 
 </template>
 
 <script>
-  import { mapGetters } from 'vuex'
+  import {
+    mapGetters
+  } from 'vuex'
   export default {
-  name: 'printschemeedit',
+    name: 'printschemeedit',
     computed: mapGetters({
       authUser: 'authUser'
     }),
@@ -90,22 +100,24 @@
           Remark: ''
         },
         rulesprintschemeinfoform: {
-          Name: [
-            { required: true, message: '请输入名称', trigger: 'blur' }
-          ]
+          Name: [{
+            required: true,
+            message: '请输入名称',
+            trigger: 'blur'
+          }]
         }
       }
     },
-    created () {
+    created() {
       this.filehost = process.env.imgserverhost
       this.fileimg = process.env.imgserverhost + '/static/img/print.png'
       let pid = this.$route.params.opera
-        // initial data
+      // initial data
       this.initData(pid)
       this.accode = this.authUser.Profile.AccCode
     },
-     methods: {
-      initData (pid) {
+    methods: {
+      initData(pid) {
         let _this = this
         // paginate
         this.$axios.get('printscheme/getmodel/' + pid, {})
@@ -120,11 +132,11 @@
             console.error(err)
           })
       },
-      savedata (formName) {
+      savedata(formName) {
         let _this = this
         this.$refs[formName].validate((valid) => {
           if (valid) {
-            _this.$axios.put('printscheme/'+_this.printschemeinfoform.Id, _this.printschemeinfoform)
+            _this.$axios.put('printscheme/' + _this.printschemeinfoform.Id, _this.printschemeinfoform)
               .then(res => {
                 // response
                 if (res.data.code === 0) {
@@ -132,9 +144,8 @@
                     type: 'success',
                     message: res.data.message
                   })
-                   window.history.go(-1)
-                } else {
-                }
+                  window.history.go(-1)
+                } else {}
               })
               .catch(() => {})
           } else {
@@ -164,7 +175,10 @@
             this.$refs.upload.uploadFiles = []
           }
         } else {
-          this.uploadprintparam = {accode: this.accode, name: file.name}
+          this.uploadprintparam = {
+            accode: this.accode,
+            name: file.name
+          }
           this.printschemeinfoform.FileName = file.name.substring(0, i)
           this.uploadstate = 1
           this.$refs.upload.uploadFiles = [file]
@@ -196,18 +210,21 @@
       }
     }
   }
+
 </script>
 
 <style lang="scss">
-.printscheme-uploader .el-upload {
+  .printscheme-uploader .el-upload {
     border: 1px dashed #63B8FF;
     cursor: pointer;
     position: relative;
     overflow: hidden;
   }
+
   .printscheme-uploader .el-upload:hover {
     border-color: #228B22;
   }
+
   .printscheme-uploader-icon {
     font-size: 28px;
     color: #63B8FF;
@@ -216,13 +233,15 @@
     line-height: 88px;
     text-align: center;
   }
+
   .printscheme-uploader-icon:hover {
     color: #228B22;
   }
+
   .printschemefile {
     width: 88px;
     height: 88px;
     display: block;
   }
-</style>
 
+</style>

+ 46 - 42
src/dashoo.cn/frontend_web/src/pages/setting/printscheme/index.vue

@@ -1,54 +1,53 @@
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/setting/printscheme' }">打印方案</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="'printscheme/printschemeadd'">
-            <el-button type="primary" style="margin-right: 10px" size="small">添加</el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="downloadprintrar">
+            打印程序下载</el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="downloadfangan">
+            打印方案同步</el-button>
+          <router-link :to="'/setting/printscheme/printschemeadd'">
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
           </router-link>
-          <el-button type="primary" @click="downloadprintrar" size="small">打印程序下载</el-button>
-          <el-button type="primary" size="small" @click="downloadfangan">打印方案同步</el-button>
         </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="方案名称">
+            <el-input size="mini" v-model="keyword" style="width:100%" placeholder="请输入方案名称"></el-input>
+          </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" :rules="rulessampletypeinfo" label-width="90px">
-            <el-row :gutter="0">
-              <el-col :span="8">
-                <el-form-item label="名称">
-                  <el-input type=" " v-model="keyword" placeholder="输入名称"></el-input>
-                </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%">
+
+      <el-table :data="list" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;">
         <el-table-column label="操作" width="80px" align="center">
           <template slot-scope="scope">
             <router-link :to="'/setting/printscheme/'+scope.row.Id +'/printschemeedit'" v-if="scope.row.IsSystem === 0">
               <el-button size="small" type="text" icon="el-icon-edit" title="编辑"></el-button>
             </router-link>
-            <el-button size="small" type="text" style="margin-left: 3px" v-if="scope.row.IsSystem === 0" icon="el-icon-delete" title="删除"
-              @click="deletedata(scope.row)"></el-button>
-            <el-button v-if="scope.row.IsDefault === 1" size="small" type="text" style="margin-left:3px" title="取消默认" @click="setitdefault(scope.row,scope.$index,1)">
+            <el-button size="small" type="text" style="margin-left: 3px" v-if="scope.row.IsSystem === 0"
+              icon="el-icon-delete" title="删除" @click="deletedata(scope.row)"></el-button>
+            <el-button v-if="scope.row.IsDefault === 1" size="small" type="text" style="margin-left:3px" title="取消默认"
+              @click="setitdefault(scope.row,scope.$index,1)">
               <i class="icon icon-checkmark" style="color:#EE7942"></i>
             </el-button>
-            <el-button v-if="scope.row.IsDefault === 0" size="small" type="text" style="margin-left:3px" title="设置默认" @click="setitdefault(scope.row,scope.$index,0)">
+            <el-button v-if="scope.row.IsDefault === 0" size="small" type="text" style="margin-left:3px" title="设置默认"
+              @click="setitdefault(scope.row,scope.$index,0)">
               <i class="icon icon-checkmark2"></i>
             </el-button>
           </template>
@@ -58,8 +57,9 @@
         <el-table-column prop="FileName" align="center" label="文件名称"></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>
 
@@ -213,13 +213,17 @@
       downloadprintrar() {
         window.location = this.filehost + '/static/bmisrep/bmisrep.rar'
       },
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
       clearSearch() {
         this.keyword = ''
         this.initData()
       }
-
-
-
     }
   }
 

+ 91 - 71
src/dashoo.cn/frontend_web/src/pages/setting/printscheme/printschemeadd.vue

@@ -1,74 +1,84 @@
+<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: '/setting/printscheme' }">打印方案</el-breadcrumb-item>
-    <el-breadcrumb-item :to="{ path: '/setting/printschemeadd' }">添加打印方案</el-breadcrumb-item>
-  </el-breadcrumb>
-  <el-card class="box-card">
-    <div slot="header">
-        <span>
-          <i class="icon icon-table2"></i> 添加打印方案
+  <div>
+    <el-card style="min-height: calc(100vh - 92px);">
+      <div slot="header" style="height: 20px;">
+        <span style="float: left;">
+          <i class="icon icon-table2"></i>
         </span>
-        <span style="float: right;">      
-          <el-button  type="primary" @click="addsave()" class="el-button--small">保存</el-button>
-          <el-button  type="primary" class="el-button--small" onclick="window.history.go(-1)">返回</el-button>
-      </span>
-    </div>
-    <el-form :model="printschemeinfoform" label-width="180px" :rules="rulesprintschemeinfoform" ref="printschemeinfoform">
-      <el-row>
-        <el-col :span="8">
-          <el-form-item label="功能编码" required>
-            <el-select v-model="printschemeinfoform.FunCode" style="width:100%" placeholder="请选择功能编码">
-              <el-option label="样本" value="样本"></el-option>
-              <el-option label="冻存盒" value="冻存盒"></el-option>
-              <el-option label="冻存架" value="冻存架"></el-option>
-              <el-option label="设备" value="设备"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="方案名称" prop="Name" >
-            <el-input v-model="printschemeinfoform.Name" placeholder="方案名称"></el-input>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="16">
-          <el-form-item label="描述">
-            <el-input v-model="printschemeinfoform.Remark" type="textarea"  :rows=2 placeholder="描述"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="16">
-          <el-form-item label="上传打印模板【.fr3格式】">
-            <el-upload 
-              ref="upload"
-              class="printscheme-uploader"
-              :action="filehost + '/api/uploads/printschemefr3'"
-              :show-file-list="false"
-              :data="uploadprintparam"
-              :auto-upload="false"
-              :on-change="handlechangeavatar"
-              :on-success="handleAvatarSuccess"
-              :before-upload="beforeAvatarUpload">
-              <img v-if="uploadstate===1" :src="fileimg" class="printschemefile">
-              <i v-else class="el-icon-plus printscheme-uploader-icon"></i>
-            </el-upload>
-            <div style="margin-top:-20px;text-align:center;width:88px">{{printschemeinfoform.FileName}}</div>
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
-  </el-card>
+        <el-breadcrumb class="heading" style="float: left; margin-left: 5px">
+          <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+          <el-breadcrumb-item :to="{ path: '/setting/printscheme' }">打印方案</el-breadcrumb-item>
+          <el-breadcrumb-item>添加打印方案</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="addsave()">确定
+          </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="printschemeinfoform" label-width="180px" :rules="rulesprintschemeinfoform"
+        ref="printschemeinfoform">
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="功能编码" required>
+              <el-select v-model="printschemeinfoform.FunCode" style="width:100%" placeholder="请选择功能编码">
+                <el-option label="样本" value="样本"></el-option>
+                <el-option label="冻存盒" value="冻存盒"></el-option>
+                <el-option label="冻存架" value="冻存架"></el-option>
+                <el-option label="设备" value="设备"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="方案名称" prop="Name">
+              <el-input v-model="printschemeinfoform.Name" placeholder="方案名称"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="16">
+            <el-form-item label="描述">
+              <el-input v-model="printschemeinfoform.Remark" type="textarea" :rows=2 placeholder="描述"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="16">
+            <el-form-item label="上传打印模板【.fr3格式】">
+              <el-upload ref="upload" class="printscheme-uploader" :action="filehost + '/api/uploads/printschemefr3'"
+                :show-file-list="false" :data="uploadprintparam" :auto-upload="false" :on-change="handlechangeavatar"
+                :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
+                <img v-if="uploadstate===1" :src="fileimg" class="printschemefile">
+                <i v-else class="el-icon-plus printscheme-uploader-icon"></i>
+              </el-upload>
+              <div style="margin-top:-20px;text-align:center;width:88px">{{printschemeinfoform.FileName}}</div>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-card>
 
   </div>
 
 </template>
 
 <script>
-  import { mapGetters } from 'vuex'
+  import {
+    mapGetters
+  } from 'vuex'
   export default {
-  name: 'printschemeadd',
+    name: 'printschemeadd',
     computed: mapGetters({
       authUser: 'authUser'
     }),
@@ -90,23 +100,25 @@
           Remark: ''
         },
         rulesprintschemeinfoform: {
-          Name: [
-            { required: true, message: '请输入名称', trigger: 'blur' }
-          ]
+          Name: [{
+            required: true,
+            message: '请输入名称',
+            trigger: 'blur'
+          }]
         }
       }
     },
-    created () {
+    created() {
       this.filehost = process.env.imgserverhost
       this.fileimg = process.env.imgserverhost + '/static/img/print.png'
       this.accode = this.authUser.Profile.AccCode
     },
     methods: {
-      savedata (formName) {
+      savedata(formName) {
         let _this = this
         this.$refs[formName].validate((valid) => {
           if (valid) {
-            _this.$axios.post('printscheme',_this.printschemeinfoform)
+            _this.$axios.post('printscheme', _this.printschemeinfoform)
               .then(res => {
                 // response
                 console.log(res)
@@ -127,7 +139,7 @@
                 // handle error
                 console.error(err)
               })
-            } else {
+          } else {
             return false
           }
         })
@@ -154,7 +166,10 @@
             this.$refs.upload.uploadFiles = []
           }
         } else {
-          this.uploadprintparam = {accode: this.accode, name: file.name}
+          this.uploadprintparam = {
+            accode: this.accode,
+            name: file.name
+          }
           this.printschemeinfoform.FileName = file.name.substring(0, i)
           this.uploadstate = 1
           this.$refs.upload.uploadFiles = [file]
@@ -186,6 +201,7 @@
       }
     }
   }
+
 </script>
 
 <style lang="scss">
@@ -195,9 +211,11 @@
     position: relative;
     overflow: hidden;
   }
+
   .printscheme-uploader .el-upload:hover {
     border-color: #228B22;
   }
+
   .printscheme-uploader-icon {
     font-size: 28px;
     color: #63B8FF;
@@ -206,13 +224,15 @@
     line-height: 88px;
     text-align: center;
   }
+
   .printscheme-uploader-icon:hover {
     color: #228B22;
   }
+
   .printschemefile {
     width: 88px;
     height: 88px;
     display: block;
   }
-</style>
 
+</style>

+ 84 - 71
src/dashoo.cn/frontend_web/src/pages/setting/sampletemplate/_opera/sampletemplateedit.vue

@@ -1,28 +1,40 @@
+<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: '/setting/sampletemplate' }">样本导入模板</el-breadcrumb-item>
-    <el-breadcrumb-item :to="{ path: '/setting/sampletemplateadd' }">添加样本导入模板</el-breadcrumb-item>
+    <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: '/setting/sampletemplate' }">样本导入模板</el-breadcrumb-item>
+          <el-breadcrumb-item>编辑样本导入模板</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+            @click="savedata('dataform')">保存</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-breadcrumb>
-  <el-card class="box-card">
-    <div slot="header">
-      <span>
-        <i class="icon icon-table2"></i> 添加样本导入模板
-      </span>
-      <span style="float: right;">      
-          <el-button  type="primary" @click="savedata('dataform')" class="el-button--small">保存</el-button>
-          <el-button  type="primary" class="el-button--small" onclick="window.history.go(-1)">返回</el-button>
-      </span>
-    </div>
-    <div class="heading">
-    </div>
-      <el-form ref="dataform" required  :model="dataform" :rules="rulesdataform" label-width="130px">
+      <el-form ref="dataform" required :model="dataform" :rules="rulesdataform" label-width="130px">
         <el-row>
           <el-col :span="24">
-            <el-form-item label="模板名称" prop="Name" >
-              <el-input v-model="dataform.Name" placeholder="请输入名称" style="width:50%"></el-input></el-form-item>
+            <el-form-item label="模板名称" prop="Name">
+              <el-input v-model="dataform.Name" placeholder="请输入名称" style="width:50%"></el-input>
+            </el-form-item>
             <el-form-item label="模板字段" required>
               <draggable v-model="showcolumn">
                 <transition-group class="sampshowfiledsort_ul sampshowfiledsort_ul_tags" tag="ul">
@@ -64,59 +76,59 @@
         }
       }
     },
-    created () {
+    created() {
       let pid = this.$route.params.opera
       this.initData(pid)
       // initial data
       this.showcolumnarr = [{
-          filed: 'Name',
-          name: '名称'
-        }, {
-          filed: 'SamplingOrgan',
-          name: '组织器官Code'
-        }, {
-          filed: 'SamplingOrganName',
-          name: '组织器官名称'
-        }, {
-          filed: 'SamplingSite',
-          name: '取材部位Code'
-        }, {
-          filed: 'SamplingSiteName',
-          name: '取材部位名称'
-        }, {
-          filed: 'Capacity',
-          name: '可用容量'
-        },  {
-          filed: 'Unit',
-          name: '单位'
-        }, {
-          filed: 'ValidityDate',
-          name: '有效日期'
-        }, {
-          filed: 'ReceiveDate',
-          name: '接收日期'
-        }, {
-          filed: 'CreateBy',
-          name: '录入人'
-        }, {
-          filed: 'SourceName',
-          name: '样本来源姓名'
-        }, {
-          filed: 'SourceIdCard',
-          name: '样本来源身份证号'
-        }, {
-          filed: 'Remark',
-          name: '备注'
-        }, {
-          filed: 'ParentBarCode',
-          name: '父级编码'
-        }, {
-          filed: 'InnerCode',
-          name: '样本内码'
-        }]
+        filed: 'Name',
+        name: '名称'
+      }, {
+        filed: 'SamplingOrgan',
+        name: '组织器官Code'
+      }, {
+        filed: 'SamplingOrganName',
+        name: '组织器官名称'
+      }, {
+        filed: 'SamplingSite',
+        name: '取材部位Code'
+      }, {
+        filed: 'SamplingSiteName',
+        name: '取材部位名称'
+      }, {
+        filed: 'Capacity',
+        name: '可用容量'
+      }, {
+        filed: 'Unit',
+        name: '单位'
+      }, {
+        filed: 'ValidityDate',
+        name: '有效日期'
+      }, {
+        filed: 'ReceiveDate',
+        name: '接收日期'
+      }, {
+        filed: 'CreateBy',
+        name: '录入人'
+      }, {
+        filed: 'SourceName',
+        name: '样本来源姓名'
+      }, {
+        filed: 'SourceIdCard',
+        name: '样本来源身份证号'
+      }, {
+        filed: 'Remark',
+        name: '备注'
+      }, {
+        filed: 'ParentBarCode',
+        name: '父级编码'
+      }, {
+        filed: 'InnerCode',
+        name: '样本内码'
+      }]
     },
     methods: {
-      initData (id) {
+      initData(id) {
         let _this = this
         this.$axios.get('sampleimporttemplate/getmodel/' + id, {})
           .then(res => {
@@ -168,16 +180,16 @@
             }
           }).catch(() => {})
       },
-      resetForm (formName) {
+      resetForm(formName) {
         this.$refs[formName].resetFields()
       },
-      clearForm () {
+      clearForm() {
         this.dataform = {
           Name: '',
           Content: ''
         }
       },
-      savedata (formName) {
+      savedata(formName) {
         let _this = this
         this.$refs[formName].validate((valid) => {
           if (valid) {
@@ -231,6 +243,7 @@
       }
     }
   }
+
 </script>
 
 <style>
@@ -257,5 +270,5 @@
     transition: all 1s;
     list-style-type: none;
   }
-</style>
 
+</style>

+ 85 - 84
src/dashoo.cn/frontend_web/src/pages/setting/sampletemplate/index.vue

@@ -1,69 +1,57 @@
 <template>
   <div>
-  <el-breadcrumb class="heading">
-    <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-    <el-breadcrumb-item :to="{ path: '/setting/sampletemplate' }">样本导入模板</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="'/setting/sampletemplate/sampletemplateadd'">
-           <el-button type="primary" size="small"  >添加</el-button>
-        </router-link>
+          <router-link :to="'/setting/sampletemplate/sampletemplateadd'">
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
+          </router-link>
         </span>
-    </div>
-     <el-collapse>
-      <el-collapse-item title="查询" name="1">
-        <el-form ref="form" :rules="rulessampletypeinfo" label-width="90px">
-          <el-row :gutter="0">
-            <el-col :span="8">
-              <el-form-item label="模板名称:">
-                <el-input  type=" " v-model="keyword" placeholder="输入模板名称"></el-input>
-              </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="clicksearch"  type="primary">查询</el-button>
-          </el-row>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="模板名称">
+            <el-input size="mini" v-model="keyword" style="width:100%" placeholder="请输入模板名称"></el-input>
+          </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>
-      </el-collapse-item>
-      </el-collapse>
+      </div>
 
-    <el-table :data="list" border style="width: 100%">
-      <el-table-column label="操作" width="84px">
-        <template slot-scope="scope">
+      <el-table :data="list" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;">
+        <el-table-column label="操作" width="90px">
+          <template slot-scope="scope">
+            <router-link :to="'/setting/sampletemplate/'+scope.row.Id +'/sampletemplateedit'">
+              <el-button size="small" type="text" icon="el-icon-edit" title="编辑"></el-button>
+            </router-link>
+            <el-button size="small" type="text" style="margin-left:3px" icon="el-icon-delete" title="删除"
+              @click="deletedata(scope.row)"></el-button>
+          </template>
+        </el-table-column>
+        <el-table-column prop="Name" label="模板名称"></el-table-column>
+        <el-table-column label="编辑时间">
+          <template slot-scope="scope">
+            {{ jstimehandle(scope.row.ModifiedOn+'') }}
+          </template>
+        </el-table-column>
+      </el-table>
 
-              <router-link :to="'/setting/sampletemplate/'+scope.row.Id +'/sampletemplateedit'">
-                <el-button size="small" type="text" icon="el-icon-edit"  title="编辑"  ></el-button>
-              </router-link>
-
-              <el-button size="small" type="text"  style="margin-left:3px"  icon="el-icon-delete" title="删除" @click="deletedata(scope.row)"></el-button>
-
-        </template>
-      </el-table-column>
-      <el-table-column prop="Name" label="模板名称"></el-table-column>
-      <el-table-column label="编辑时间">
-        <template slot-scope="scope">
-          {{ jstimehandle(scope.row.ModifiedOn+'') }}
-        </template>
-      </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>
+      <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>
   </div>
 </template>
@@ -80,52 +68,63 @@
         keyword: ''
       }
     },
-    created () {
+    created() {
       // initial data
       this.initData()
     },
     methods: {
-      initData () {
+      initData() {
         let _this = this
         // paginate
-        const params = { _currentPage: this.currentPage, _size: this.size, searchkey: this.keyword }
+        const params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          searchkey: this.keyword
+        }
         // request
-        this.$axios.get('sampleimporttemplate/list', { params })
+        this.$axios.get('sampleimporttemplate/list', {
+            params
+          })
           .then(res => {
-            // response
             _this.list = res.data.items
             _this.currentItemCount = res.data.currentItemCount
           })
           .catch(err => {
-            // handle error
             console.error(err)
           })
       },
-      seachdata () {
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+      clearSearch() {
         this.currentPage = 1
         this.initData()
       },
-      handleSizeChange (value) {
-        this.size = value
+      seachdata() {
         this.currentPage = 1
         this.initData()
       },
-      handleCurrentChange (value) {
-          this.currentPage = value
-          this.initData()
-      },
-      clicksearch() {
+      handleSizeChange(value) {
+        this.size = value
         this.currentPage = 1
         this.initData()
       },
-      deletedata (val) {
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initData()
+      },
+      deletedata(val) {
         let _this = this
         _this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'warning'
         }).then(() => {
-          _this.$axios.delete('sampleimporttemplate/' +val.Id + '?name=' + val.Name, null)
+          _this.$axios.delete('sampleimporttemplate/' + val.Id + '?name=' + val.Name, null)
             .then(res => {
               // response
               if (res.data.code === 0) {
@@ -145,22 +144,24 @@
             .catch(() => {})
         }).catch(() => {})
       },
-      jstimehandle (val) {
+      jstimehandle(val) {
         val = val.replace('T', ' ')
         return val.substring(0, 19)
       }
     }
   }
+
 </script>
 
 <style lang="scss">
-   .el-pagination {
-      margin: 1rem 0 2rem;
-      text-align: right;
-    }
-   .plab {
-      font-size: 13px;
-      color: #999;
-   }
-</style>
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+
+  .plab {
+    font-size: 13px;
+    color: #999;
+  }
 
+</style>

+ 114 - 101
src/dashoo.cn/frontend_web/src/pages/setting/sampletemplate/sampletemplateadd.vue

@@ -1,28 +1,40 @@
+<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: '/setting/sampletemplate' }">样本导入模板</el-breadcrumb-item>
-    <el-breadcrumb-item :to="{ path: '/setting/sampletemplateadd' }">添加样本导入模板</el-breadcrumb-item>
+    <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: '/setting/sampletemplate' }">样本导入模板</el-breadcrumb-item>
+          <el-breadcrumb-item>添加样本导入模板</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+            @click="savedata('dataform')">保存</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-breadcrumb>
-  <el-card class="box-card">
-    <div slot="header">
-      <span>
-        <i class="icon icon-table2"></i> 添加样本导入模板
-      </span>
-      <span style="float: right;">      
-          <el-button  type="primary" @click="savedata('dataform')" class="el-button--small">保存</el-button>
-          <el-button  type="primary" class="el-button--small" onclick="window.history.go(-1)">返回</el-button>
-      </span>
-    </div>
-    <div class="heading">
-    </div>
-      <el-form ref="dataform" required  :model="dataform" :rules="rulesdataform" label-width="130px">
+      <el-form ref="dataform" required :model="dataform" :rules="rulesdataform" label-width="130px">
         <el-row>
           <el-col :span="24">
-            <el-form-item label="模板名称" prop="Name" >
-              <el-input v-model="dataform.Name" placeholder="请输入名称" style="width:50%"></el-input></el-form-item>
+            <el-form-item label="模板名称" prop="Name">
+              <el-input v-model="dataform.Name" placeholder="请输入名称" style="width:50%"></el-input>
+            </el-form-item>
             <el-form-item label="模板字段" required>
               <draggable v-model="showcolumn">
                 <transition-group class="sampshowfiledsort_ul sampshowfiledsort_ul_tags" tag="ul">
@@ -61,89 +73,89 @@
         }
       }
     },
-    created () {
+    created() {
       // initial data
       this.showcolumn = [{
-          filed: 'Name',
-          name: '名称',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SamplingOrgan',
-          name: '组织器官Code',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SamplingOrganName',
-          name: '组织器官名称',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SamplingSite',
-          name: '取材部位Code',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SamplingSiteName',
-          name: '取材部位名称',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'Capacity',
-          name: '可用容量',
-          show: true,
-          kuoz: false
-        },  {
-          filed: 'Unit',
-          name: '单位',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'ValidityDate',
-          name: '有效日期',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'ReceiveDate',
-          name: '接收日期',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'CreateBy',
-          name: '录入人',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SourceName',
-          name: '样本来源姓名',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'SourceIdCard',
-          name: '样本来源身份证号',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'Remark',
-          name: '备注',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'ParentBarCode',
-          name: '父级编码',
-          show: true,
-          kuoz: false
-        }, {
-          filed: 'InnerCode',
-          name: '样本内码',
-          show: true,
-          kuoz: false
-        }]
+        filed: 'Name',
+        name: '名称',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'SamplingOrgan',
+        name: '组织器官Code',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'SamplingOrganName',
+        name: '组织器官名称',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'SamplingSite',
+        name: '取材部位Code',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'SamplingSiteName',
+        name: '取材部位名称',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'Capacity',
+        name: '可用容量',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'Unit',
+        name: '单位',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'ValidityDate',
+        name: '有效日期',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'ReceiveDate',
+        name: '接收日期',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'CreateBy',
+        name: '录入人',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'SourceName',
+        name: '样本来源姓名',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'SourceIdCard',
+        name: '样本来源身份证号',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'Remark',
+        name: '备注',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'ParentBarCode',
+        name: '父级编码',
+        show: true,
+        kuoz: false
+      }, {
+        filed: 'InnerCode',
+        name: '样本内码',
+        show: true,
+        kuoz: false
+      }]
       this.initData()
       this.getextends()
     },
     methods: {
-      initData () {
+      initData() {
         console.log('-')
       },
       getextends() {
@@ -166,16 +178,16 @@
             this.initData()
           }).catch(() => {})
       },
-      resetForm (formName) {
+      resetForm(formName) {
         this.$refs[formName].resetFields()
       },
-      clearForm () {
+      clearForm() {
         this.dataform = {
           Name: '',
           Content: ''
         }
       },
-      savedata (formName) {
+      savedata(formName) {
         let _this = this
         this.$refs[formName].validate((valid) => {
           if (valid) {
@@ -229,6 +241,7 @@
       }
     }
   }
+
 </script>
 
 <style>
@@ -255,5 +268,5 @@
     transition: all 1s;
     list-style-type: none;
   }
-</style>
 
+</style>

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

@@ -1,329 +1,363 @@
+<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: '/setting/sampletype' }">样本类型</el-breadcrumb-item>
-    <el-breadcrumb-item :to="{ path: '/setting/sampletype/sampletypeedit' }">编辑样本类型</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: '/setting/sampletype' }">样本类型</el-breadcrumb-item>
+          <el-breadcrumb-item>编辑样本类型</el-breadcrumb-item>
+        </el-breadcrumb>
         <span style="float: right;">
-            <el-button type="primary" size="small" @click="savedata('SampleTypeForm')">确 定</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="savedata('SampleTypeForm')">确定</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>
+      </div>
 
-      <el-form ref="SampleTypeForm" required  :model="SampleTypeForm" :rules="rulessampletypeinfo" label-width="130px">
-         <el-row>
+      <el-form ref="SampleTypeForm" required :model="SampleTypeForm" :rules="rulessampletypeinfo" label-width="130px">
+        <el-row>
           <el-col :span="8">
-           <el-form-item label="编码" prop="Code" ><el-input placeholder="请输入编码" style="width:100%" v-model="SampleTypeForm.Code"></el-input></el-form-item>
-              <el-form-item label="默认单位">
-                <el-select style="width:100%" v-model="SampleTypeForm.Unit" placeholder="请选择默认单位">
-                  <el-option v-for="item in sampeunitlist"
-                    :label="item.Value"
-                    :value="item.Value" :key="item.value">
-                  </el-option>
-                </el-select>
-              </el-form-item>
+            <el-form-item label="编码" prop="Code">
+              <el-input placeholder="请输入编码" style="width:100%" v-model="SampleTypeForm.Code"></el-input>
+            </el-form-item>
+            <el-form-item label="默认单位">
+              <el-select style="width:100%" v-model="SampleTypeForm.Unit" placeholder="请选择默认单位">
+                <el-option v-for="item in sampeunitlist" :label="item.Value" :value="item.Value" :key="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
           </el-col>
 
-      
-            <el-col :span="8">
-              <el-form-item label="名称" prop="Name" ><el-input placeholder="请输入名称" v-model="SampleTypeForm.Name"></el-input></el-form-item>
-              <el-form-item label="默认容量">
-                  <el-input v-model="SampleTypeForm.DefaultCapacity" placeholder="请输入默认容量"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
+
+          <el-col :span="8">
+            <el-form-item label="名称" prop="Name">
+              <el-input placeholder="请输入名称" v-model="SampleTypeForm.Name"></el-input>
+            </el-form-item>
+            <el-form-item label="默认容量">
+              <el-input v-model="SampleTypeForm.DefaultCapacity" placeholder="请输入默认容量"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
             <el-form-item label="分装份数" required>
-              <el-input-number v-model="SampleTypeForm.SubpackageNum" style="width:100%" :min="1" :max="30"></el-input-number>
+              <el-input-number v-model="SampleTypeForm.SubpackageNum" style="width:100%" :min="1" :max="30">
+              </el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="分装容量" required>
+              <el-input v-model="SampleTypeForm.SubpackageCapacity" placeholder="分装容量"></el-input>
             </el-form-item>
           </el-col>
-           <el-col :span="8">
-                <el-form-item label="分装容量" required>
-                  <el-input v-model="SampleTypeForm.SubpackageCapacity" placeholder="分装容量"></el-input>  
-                </el-form-item>
-              </el-col>
 
-            <el-col :span="8">
-              <el-form-item label="有效期 (小时)">
-                <el-input-number :disabled="SampleTypeForm.Timelong" v-model="SampleTypeForm.ValidityHours"    :min="0" ></el-input-number>
-                <el-checkbox style="float:right" v-model="SampleTypeForm.Timelong">永久</el-checkbox>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-form-item label="描述" ><el-input type="textarea" placeholder="请输入描述" :rows=2 v-model="SampleTypeForm.Remark"></el-input></el-form-item>
-          <el-form-item label="图片类型">
-            <el-radio class="radio" v-model="imgtype" label="0">本地图库</el-radio>
-            <el-radio class="radio" v-model="imgtype" label="1">上传图片【图片格式:分辨率50*50,png类型。否则会影响显示效果】</el-radio>
-            <div v-show="imgtype === '0'">
-              <el-row>
-                <el-col :span="2" v-for="item in systemqiguanimglist" :key="item">
-                  <div class="sampletypelist" v-bind:class="{'sampleselectedcss': selectsametyped == item.Id}" @click="selectsampletype(item.Id, item.ImgAddr)">
-                    <img :src="imghost + item.ImgAddr">
-                  </div>
-                </el-col>
-              </el-row>
-            </div>
-            <el-upload v-show="imgtype === '1'" style="margin-top: 10px;"
-              class="samptypeimg-uploader"
-              :action="imghost + '/api/uploads/samplestypeimg'"
-              :show-file-list="false"
-              :on-success="handleAvatarSuccess"
-              :before-upload="beforeAvatarUpload">
-              <img v-if="imageUrl" :src="imageUrl" class="uploadsampletypeimg">
-              <i v-else class="el-icon-plus samptypeimg-uploader-icon"></i>
-            </el-upload>
-          </el-form-item>
-        </el-form>
-        <span slot="footer" class="dialog-footer">
-          <el-button @click="dialogFormVisible = false">取 消</el-button>
-          <el-button type="primary" @click="savedata('SampleTypeForm')">确 定</el-button>
-        </span>
+          <el-col :span="8">
+            <el-form-item label="有效期 (小时)">
+              <el-input-number :disabled="SampleTypeForm.Timelong" v-model="SampleTypeForm.ValidityHours" :min="0">
+              </el-input-number>
+              <el-checkbox style="float:right" v-model="SampleTypeForm.Timelong">永久</el-checkbox>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="描述">
+          <el-input type="textarea" placeholder="请输入描述" :rows=2 v-model="SampleTypeForm.Remark"></el-input>
+        </el-form-item>
+        <el-form-item label="图片类型">
+          <el-radio class="radio" v-model="imgtype" label="0">本地图库</el-radio>
+          <el-radio class="radio" v-model="imgtype" label="1">上传图片【图片格式:分辨率50*50,png类型。否则会影响显示效果】</el-radio>
+          <div v-show="imgtype === '0'">
+            <el-row>
+              <el-col :span="2" v-for="item in systemqiguanimglist" :key="item">
+                <div class="sampletypelist" v-bind:class="{'sampleselectedcss': selectsametyped == item.Id}"
+                  @click="selectsampletype(item.Id, item.ImgAddr)">
+                  <img :src="imghost + item.ImgAddr">
+                </div>
+              </el-col>
+            </el-row>
+          </div>
+          <el-upload v-show="imgtype === '1'" style="margin-top: 10px;" class="samptypeimg-uploader"
+            :action="imghost + '/api/uploads/samplestypeimg'" :show-file-list="false" :on-success="handleAvatarSuccess"
+            :before-upload="beforeAvatarUpload">
+            <img v-if="imageUrl" :src="imageUrl" class="uploadsampletypeimg">
+            <i v-else class="el-icon-plus samptypeimg-uploader-icon"></i>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="savedata('SampleTypeForm')">确 定</el-button>
+      </span>
     </el-card>
 
 
   </div>
 </template>
 <script>
-export default {
-  name: "sampletypeedit",
-  data() {
-    return {
-      imghost: "",
-      rulessampletypeinfo: {
-        Code: [{ required: true, message: "请输入编码", trigger: "blur" }],
-        Name: [{ required: true, message: "请输入姓名", trigger: "blur" }]
-      },
-      validityhours: 0,
-      currentItemCount: 0,
-      currentPage: 1,
-      size: 10,
-      list: [],
-      keyword: "",
-      dialogFormVisible: false,
-      dialogtitle: "",
-      operatingitem: 0,
-      isIndeterminate: true,
-      selectdevices: [],
-      showquerydiv: false,
-      systemqiguanimglist: [],
-      imgtype: "0",
-      selectsametyped: 0,
-      imageUrl: "",
-      SampleTypeForm: {
-        Name: "",
-        Code: "",
-        DefaultCapacity: "",
-        Unit: "",
-        ValidityHours: 0,
-        Timelong: false,
-        id: 0,
-        Remark: "",
-        Sensors: [],
-        Photo: "",
-        PhotoType: 0,
-        SubpackageCapacity: "", // 分装容量
-        SubpackageNum: 1
-      },
-      sampeunitlist: [] // 样本单位
-    };
-  },
-  created() {
-    this.imghost = process.env.imgserverhost;
-    let pid = this.$route.params.opera;
-    // initial data
-    this.initData(pid);
-    // 加载单位
-    this.getsampetypeunit();
-  },
-  methods: {
-    initData(pid) {
-      let _this = this;
-      // get 图片
-      this.$axios
-        .get("sampletype/imglist", { _currentPage: -1 })
-        .then(res => {
-          this.systemqiguanimglist = res.data;
-        })
-        .catch(() => {});
-      this.$axios
-        .get("sampletype/getmodel/" + pid, {})
-        .then(res => {
-          // response
-          this.SampleTypeForm = res.data;
-          // 有效期处理
-          if (this.SampleTypeForm.ValidityHours === -100) {
-            this.SampleTypeForm.Timelong = true;
-          }
-          // 选中图片
-          _this.imgtype = _this.SampleTypeForm.PhotoType + "";
-          if (_this.SampleTypeForm.PhotoType === 1) {
-            _this.imageUrl = _this.imghost + _this.SampleTypeForm.Photo;
-          } else {
-            for (var i = 0; i < _this.systemqiguanimglist.length; i++) {
-              if (
-                _this.systemqiguanimglist[i].ImgAddr ===
-                _this.SampleTypeForm.Photo
-              ) {
-                _this.selectsametyped = _this.systemqiguanimglist[i].Id;
-                break;
-              }
-            }
-          }
-        })
-        .catch(err => {
-          // handle error
-          console.error(err);
-        });
-    },
-    getsampetypeunit() {
-      // 获取样本单位
-      let _this = this;
-      _this.$axios.get("sampletype/sunitajax", {}).then(res => {
-        _this.sampeunitlist = res.data;
-      });
-    },
-    handleAvatarSuccess(res, file) {
-      console.log(file);
-      this.SampleTypeForm.Photo = res;
-      this.imageUrl = URL.createObjectURL(file.raw);
-    },
-    beforeAvatarUpload(file) {
-      console.log(file);
-      const isimg = file.type.indexOf("image/") === 0;
-      const isLt50k = file.size / 1024 / 50 < 1;
-      if (!isimg) {
-        this.$message.error("上传图片只能是 图片 格式!");
-        return false;
-      }
-      if (!isLt50k) {
-        this.$message.error("上传图片大小不能超过 50kb!");
-        return false;
-      }
-      return true;
+  export default {
+    name: "sampletypeedit",
+    data() {
+      return {
+        imghost: "",
+        rulessampletypeinfo: {
+          Code: [{
+            required: true,
+            message: "请输入编码",
+            trigger: "blur"
+          }],
+          Name: [{
+            required: true,
+            message: "请输入姓名",
+            trigger: "blur"
+          }]
+        },
+        validityhours: 0,
+        currentItemCount: 0,
+        currentPage: 1,
+        size: 10,
+        list: [],
+        keyword: "",
+        dialogFormVisible: false,
+        dialogtitle: "",
+        operatingitem: 0,
+        isIndeterminate: true,
+        selectdevices: [],
+        showquerydiv: false,
+        systemqiguanimglist: [],
+        imgtype: "0",
+        selectsametyped: 0,
+        imageUrl: "",
+        SampleTypeForm: {
+          Name: "",
+          Code: "",
+          DefaultCapacity: "",
+          Unit: "",
+          ValidityHours: 0,
+          Timelong: false,
+          id: 0,
+          Remark: "",
+          Sensors: [],
+          Photo: "",
+          PhotoType: 0,
+          SubpackageCapacity: "", // 分装容量
+          SubpackageNum: 1
+        },
+        sampeunitlist: [] // 样本单位
+      };
     },
-    selectsampletype(v, imgpath) {
-      if (v === this.selectsametyped) {
-        this.selectsametyped = 0;
-        this.SampleTypeForm.Photo = "";
-      } else {
-        this.selectsametyped = v;
-        this.SampleTypeForm.Photo = imgpath;
-      }
+    created() {
+      this.imghost = process.env.imgserverhost;
+      let pid = this.$route.params.opera;
+      // initial data
+      this.initData(pid);
+      // 加载单位
+      this.getsampetypeunit();
     },
-    resetForm(formName) {
-      this.$refs[formName].resetFields();
-    },
-    savedata(formName) {
-      let _this = this;
-      this.$refs[formName].validate(valid => {
-        if (valid) {
-          if (_this.SampleTypeForm.Photo === "") {
-            _this.$message({
-              type: "warning",
-              message: "请选择样本图片!"
-            });
-            return;
-          }
-          this.SampleTypeForm.id = this.$route.params.opera;
-          _this.SampleTypeForm.PhotoType = parseInt(_this.imgtype);
-          _this.SampleTypeForm.DefaultCapacity = parseFloat(
-            _this.SampleTypeForm.DefaultCapacity
-          );
-          _this.SampleTypeForm.SubpackageCapacity = parseFloat(
-            _this.SampleTypeForm.SubpackageCapacity
-          );
-          console.log("________________---------",_this.SampleTypeForm)
-          _this.$axios
-            .put("sampletype/" + _this.SampleTypeForm.id, _this.SampleTypeForm)
-            .then(res => {
-              // response
-              if (res.data.code === 0) {
-                _this.$message({
-                  type: "success",
-                  message: res.data.message
-                });
-                // 返回
-                window.history.go(-1);
-              } else {
-                _this.$message({
-                  type: "warning",
-                  message: res.data.message
-                });
+    methods: {
+      initData(pid) {
+        let _this = this;
+        // get 图片
+        this.$axios
+          .get("sampletype/imglist", {
+            _currentPage: -1
+          })
+          .then(res => {
+            this.systemqiguanimglist = res.data;
+          })
+          .catch(() => {});
+        this.$axios
+          .get("sampletype/getmodel/" + pid, {})
+          .then(res => {
+            // response
+            this.SampleTypeForm = res.data;
+            // 有效期处理
+            if (this.SampleTypeForm.ValidityHours === -100) {
+              this.SampleTypeForm.Timelong = true;
+            }
+            // 选中图片
+            _this.imgtype = _this.SampleTypeForm.PhotoType + "";
+            if (_this.SampleTypeForm.PhotoType === 1) {
+              _this.imageUrl = _this.imghost + _this.SampleTypeForm.Photo;
+            } else {
+              for (var i = 0; i < _this.systemqiguanimglist.length; i++) {
+                if (
+                  _this.systemqiguanimglist[i].ImgAddr ===
+                  _this.SampleTypeForm.Photo
+                ) {
+                  _this.selectsametyped = _this.systemqiguanimglist[i].Id;
+                  break;
+                }
               }
-            })
-            .catch(() => {});
-        } else {
+            }
+          })
+          .catch(err => {
+            // handle error
+            console.error(err);
+          });
+      },
+      getsampetypeunit() {
+        // 获取样本单位
+        let _this = this;
+        _this.$axios.get("sampletype/sunitajax", {}).then(res => {
+          _this.sampeunitlist = res.data;
+        });
+      },
+      handleAvatarSuccess(res, file) {
+        console.log(file);
+        this.SampleTypeForm.Photo = res;
+        this.imageUrl = URL.createObjectURL(file.raw);
+      },
+      beforeAvatarUpload(file) {
+        console.log(file);
+        const isimg = file.type.indexOf("image/") === 0;
+        const isLt50k = file.size / 1024 / 50 < 1;
+        if (!isimg) {
+          this.$message.error("上传图片只能是 图片 格式!");
           return false;
         }
-      });
-    },
-    handleCheckedCitiesChange(value) {
-      let checkedCount = value.length;
-      this.checkAll = checkedCount === this.cities.length;
-      this.isIndeterminate =
-        checkedCount > 0 && checkedCount < this.cities.length;
-    },
-    handleCheckAllChange(val) {
-      let _this = this;
-      _this.selectdevices = [];
-      if (val) {
-        _this.devicelist.forEach((item, k) => {
-          _this.selectdevices.push(item.Id);
+        if (!isLt50k) {
+          this.$message.error("上传图片大小不能超过 50kb!");
+          return false;
+        }
+        return true;
+      },
+      selectsampletype(v, imgpath) {
+        if (v === this.selectsametyped) {
+          this.selectsametyped = 0;
+          this.SampleTypeForm.Photo = "";
+        } else {
+          this.selectsametyped = v;
+          this.SampleTypeForm.Photo = imgpath;
+        }
+      },
+      resetForm(formName) {
+        this.$refs[formName].resetFields();
+      },
+      savedata(formName) {
+        let _this = this;
+        this.$refs[formName].validate(valid => {
+          if (valid) {
+            if (_this.SampleTypeForm.Photo === "") {
+              _this.$message({
+                type: "warning",
+                message: "请选择样本图片!"
+              });
+              return;
+            }
+            this.SampleTypeForm.id = this.$route.params.opera;
+            _this.SampleTypeForm.PhotoType = parseInt(_this.imgtype);
+            _this.SampleTypeForm.DefaultCapacity = parseFloat(
+              _this.SampleTypeForm.DefaultCapacity
+            );
+            _this.SampleTypeForm.SubpackageCapacity = parseFloat(
+              _this.SampleTypeForm.SubpackageCapacity
+            );
+            console.log("________________---------", _this.SampleTypeForm)
+            _this.$axios
+              .put("sampletype/" + _this.SampleTypeForm.id, _this.SampleTypeForm)
+              .then(res => {
+                // response
+                if (res.data.code === 0) {
+                  _this.$message({
+                    type: "success",
+                    message: res.data.message
+                  });
+                  // 返回
+                  window.history.go(-1);
+                } else {
+                  _this.$message({
+                    type: "warning",
+                    message: res.data.message
+                  });
+                }
+              })
+              .catch(() => {});
+          } else {
+            return false;
+          }
         });
+      },
+      handleCheckedCitiesChange(value) {
+        let checkedCount = value.length;
+        this.checkAll = checkedCount === this.cities.length;
+        this.isIndeterminate =
+          checkedCount > 0 && checkedCount < this.cities.length;
+      },
+      handleCheckAllChange(val) {
+        let _this = this;
+        _this.selectdevices = [];
+        if (val) {
+          _this.devicelist.forEach((item, k) => {
+            _this.selectdevices.push(item.Id);
+          });
+        }
+        this.isIndeterminate = false;
       }
-      this.isIndeterminate = false;
     }
-  }
-};
+  };
+
 </script>
 
 <style>
-.samptypeimg-uploader .el-upload {
-  border: 1px dashed #63b8ff;
-  cursor: pointer;
-  position: relative;
-  overflow: hidden;
-}
-.samptypeimg-uploader .el-upload:hover {
-  border-color: #228b22;
-}
-.samptypeimg-uploader-icon {
-  font-size: 28px;
-  color: #63b8ff;
-  width: 88px;
-  height: 88px;
-  line-height: 88px;
-  text-align: center;
-}
-.samptypeimg-uploader-icon:hover {
-  color: #228b22;
-}
-.uploadsampletypeimg {
-  width: 88px;
-  height: 88px;
-  display: block;
-}
-.sampletypelist {
-  display: flex;
-  justify-content: center;
-  background: #add8e6;
-  margin: 5px 3px 0 3px;
-  min-height: 50px;
-  min-width: 50px;
-  max-height: 50px;
-}
-.sampletypelist:hover {
-  box-shadow: 2px 0 8px rgba(0, 0, 0, 0.4);
-  transform: scale(1.15);
-}
-.sampleselectedcss {
-  background: #228b22;
-}
-</style>
+  .samptypeimg-uploader .el-upload {
+    border: 1px dashed #63b8ff;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+
+  .samptypeimg-uploader .el-upload:hover {
+    border-color: #228b22;
+  }
+
+  .samptypeimg-uploader-icon {
+    font-size: 28px;
+    color: #63b8ff;
+    width: 88px;
+    height: 88px;
+    line-height: 88px;
+    text-align: center;
+  }
+
+  .samptypeimg-uploader-icon:hover {
+    color: #228b22;
+  }
+
+  .uploadsampletypeimg {
+    width: 88px;
+    height: 88px;
+    display: block;
+  }
+
+  .sampletypelist {
+    display: flex;
+    justify-content: center;
+    background: #add8e6;
+    margin: 5px 3px 0 3px;
+    min-height: 50px;
+    min-width: 50px;
+    max-height: 50px;
+  }
 
+  .sampletypelist:hover {
+    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.4);
+    transform: scale(1.15);
+  }
+
+  .sampleselectedcss {
+    background: #228b22;
+  }
+
+</style>

+ 3 - 4
src/dashoo.cn/frontend_web/src/pages/setting/sampletype/_opera/stypeitem.vue

@@ -59,7 +59,7 @@
       </el-pagination>
     </el-card>
 
-    <el-dialog title="扩展项目" :visible.sync="ItemListDialog" width="80%">
+    <el-dialog title="扩展项目" :visible.sync="ItemListDialog" width="700px">
       <el-form :model="StypeitemForm" ref="StypeitemForm">
         <el-form-item>
           <div style="border: 1px solid rgb(204, 204, 204); overflow: auto; height: 120px;" label-width="130px">
@@ -77,7 +77,7 @@
       </div>
     </el-dialog>
 
-    <el-dialog title="编辑样本扩展" :visible.sync="ItemDialog" width="80%">
+    <el-dialog title="编辑样本扩展" :visible.sync="ItemDialog" width="700px">
       <el-form :model="stypenItemForm" ref="stypenItemForm">
         <el-form-item label="分组名称:" prop="GroupName" label-width="120px">
           <a>{{stypenItemForm.GroupName}}</a>
@@ -106,7 +106,7 @@
       </div>
     </el-dialog>
 
-    <el-dialog title="自定义排序" :visible.sync="orderDialog" top="5vh">
+    <el-dialog title="自定义排序" :visible.sync="orderDialog" width="700px">
       <draggable v-model="alllist">
         <transition-group class="stypemoteiemsort_ul_tags" tag="ul">
           <li v-for="item in alllist" :key="item.Id">
@@ -362,7 +362,6 @@
         let _this = this
         this.$axios.get('stypenoteitem/getlist/' + this.pid, {})
           .then(res => {
-            // response
             _this.alllist = res.data.items
           })
           .catch(err => {

+ 347 - 317
src/dashoo.cn/frontend_web/src/pages/setting/sampletype/sampletypeadd.vue

@@ -1,72 +1,87 @@
+<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: '/setting/sampletype' }">样本类型</el-breadcrumb-item>
-    <el-breadcrumb-item :to="{ path: '/setting/sampletype/sampletypeadd' }">添加样本类型</el-breadcrumb-item>
+    <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: '/setting/sampletype' }">样本类型</el-breadcrumb-item>
+          <el-breadcrumb-item>添加样本类型</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
+            @click="savedata('SampleTypeForm')">确定</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-breadcrumb>
-  <el-card class="box-card">
-    <div slot="header">
-      <span>
-        <i class="icon icon-table2"></i> 添加样本类型
-      </span>
-      <span style="float: right;">      
-          <el-button  type="primary" @click="savedata('SampleTypeForm')" class="el-button--small">保存</el-button>
-          <el-button  type="primary" class="el-button--small" onclick="window.history.go(-1)">返回</el-button>
-      </span>
-    </div>
-    <div class="heading">
-    </div>
-      <el-form ref="SampleTypeForm" required  :model="SampleTypeForm" :rules="rulessampletypeinfo" label-width="130px">
+      <el-form ref="SampleTypeForm" required :model="SampleTypeForm" :rules="rulessampletypeinfo" label-width="130px">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="编码" prop="Code" >
-              <el-input  style="width:100%" v-model="SampleTypeForm.Code" placeholder="请输入编码"></el-input>
+            <el-form-item label="编码" prop="Code">
+              <el-input style="width:100%" v-model="SampleTypeForm.Code" placeholder="请输入编码"></el-input>
             </el-form-item>
             <el-form-item label="默认单位">
               <el-select style="width:100%" v-model="SampleTypeForm.Unit" placeholder="请选择默认单位">
-                <el-option v-for="item in sampeunitlist"
-                  :label="item.Value"
-                  :value="item.Value" :key="item.value">
+                <el-option v-for="item in sampeunitlist" :label="item.Value" :value="item.Value" :key="item.value">
                 </el-option>
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="名称" prop="Name" ><el-input v-model="SampleTypeForm.Name" placeholder="请输入名称"></el-input></el-form-item>
+            <el-form-item label="名称" prop="Name">
+              <el-input v-model="SampleTypeForm.Name" placeholder="请输入名称"></el-input>
+            </el-form-item>
             <el-form-item label="默认容量">
-                <el-input v-model="SampleTypeForm.DefaultCapacity" placeholder="请输入默认容量"></el-input>
+              <el-input v-model="SampleTypeForm.DefaultCapacity" placeholder="请输入默认容量"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="分装份数" required>
-              <el-input-number v-model="SampleTypeForm.SubpackageNum" style="width:100%" :min="1" :max="30"></el-input-number>
+              <el-input-number v-model="SampleTypeForm.SubpackageNum" style="width:100%" :min="1" :max="30">
+              </el-input-number>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="分装容量" required>
+              <el-input v-model="SampleTypeForm.SubpackageCapacity" placeholder="分装容量"></el-input>
             </el-form-item>
           </el-col>
-           <el-col :span="8">
-                <el-form-item label="分装容量" required>
-                  <el-input v-model="SampleTypeForm.SubpackageCapacity" placeholder="分装容量"></el-input>  
-                </el-form-item>
-              </el-col>
           <el-col :span="8">
             <el-form-item label="有效期 (小时)">
-              <el-input-number :disabled="SampleTypeForm.Timelong" v-model="SampleTypeForm.ValidityHours" :min="0" ></el-input-number>
+              <el-input-number :disabled="SampleTypeForm.Timelong" v-model="SampleTypeForm.ValidityHours" :min="0">
+              </el-input-number>
               <el-checkbox style="float:right" v-model="SampleTypeForm.Timelong">永久</el-checkbox>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="描述" >
+        <el-form-item label="描述">
           <el-input type="textarea" placeholder="请输入描述" :rows=2 v-model="SampleTypeForm.Remark"></el-input>
         </el-form-item>
 
         <el-form-item label="应用到设备">
           <div style="border: 1px solid rgb(204, 204, 204); overflow: auto; height: 120px;" label-width="130px">
             <el-checkbox-group v-model="selectdevices">
-              <el-checkbox v-for="v in devicelist" @change="handleCheckeddeviceChange" style="margin-left:8px;" :label="v.Id+''" :key="v">{{v.Name}}</el-checkbox>
+              <el-checkbox v-for="v in devicelist" @change="handleCheckeddeviceChange" style="margin-left:8px;"
+                :label="v.Id+''" :key="v">{{v.Name}}</el-checkbox>
             </el-checkbox-group>
           </div>
-          <el-checkbox style="margin-left:0px" v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange">全选</el-checkbox>
+          <el-checkbox style="margin-left:0px" v-model="checkAll" :indeterminate="isIndeterminate"
+            @change="handleCheckAllChange">全选</el-checkbox>
         </el-form-item>
         <el-form-item label="图片类型">
           <el-radio class="radio" v-model="imgtype" label="0">本地图库</el-radio>
@@ -74,17 +89,15 @@
           <div v-show="imgtype === '0'">
             <el-row>
               <el-col :span="2" v-for="item in systemqiguanimglist" :key="item">
-                <div class="sampletypelist" v-bind:class="{'sampleselectedcss': selectsametyped == item.Id}" @click="selectsampletype(item.Id, item.ImgAddr)">
+                <div class="sampletypelist" v-bind:class="{'sampleselectedcss': selectsametyped == item.Id}"
+                  @click="selectsampletype(item.Id, item.ImgAddr)">
                   <img :src="imghost + item.ImgAddr">
                 </div>
               </el-col>
             </el-row>
           </div>
-          <el-upload v-show="imgtype === '1'" style="margin-top: 10px;"
-            class="samptypeimg-uploader"
-            :action="imghost + '/api/uploads/samplestypeimg'"
-            :show-file-list="false"
-            :on-success="handleAvatarSuccess"
+          <el-upload v-show="imgtype === '1'" style="margin-top: 10px;" class="samptypeimg-uploader"
+            :action="imghost + '/api/uploads/samplestypeimg'" :show-file-list="false" :on-success="handleAvatarSuccess"
             :before-upload="beforeAvatarUpload">
             <img v-if="imageUrl" :src="imageUrl" class="uploadsampletypeimg">
             <i v-else class="el-icon-plus samptypeimg-uploader-icon"></i>
@@ -95,292 +108,309 @@
   </div>
 </template>
 <script>
-export default {
-  name: "sampletypeadd",
-  data() {
-    return {
-      imghost: "",
-      rulessampletypeinfo: {
-        Code: [{ required: true, message: "请输入编码", trigger: "blur" }],
-        Name: [{ required: true, message: "请输入姓名", trigger: "blur" }]
-      },
-      currentItemCount: 0,
-      currentPage: 1,
-      size: 10,
-      list: [],
-      devicelist: [],
-      checkAll: false,
-      keyword: "",
-      dialogtitle: "",
-      operatingitem: 0,
-      isIndeterminate: false,
-      selectdevices: [],
-      showquerydiv: false,
-      systemqiguanimglist: [],
-      imgtype: "0",
-      selectsametyped: 0,
-      imageUrl: "",
-      SampleTypeForm: {
-        Name: "",
-        Code: "",
-        DefaultCapacity: "",
-        Unit: "",
-        ValidityHours: 0,
-        Timelong: false,
-        id: 0,
-        Remark: "",
-        Sensors: [],
-        Photo: "",
-        PhotoType: 0,
-        SubpackageCapacity: "", // 分装容量
-        SubpackageNum: 1,
-      },
-      checked: false,
-      num1: 1,
-      sampeunitlist: [] // 样本单位
-    };
-  },
-  created() {
-    this.imghost = process.env.imgserverhost;
-    // initial data
-    this.initData();
-    // 加载单位
-    this.getsampetypeunit();
-  },
-  methods: {
-    initData() {
-      let _this = this;
-      // paginate
-      const params = {
-        _currentPage: this.currentPage,
-        _size: this.size,
-        keyword: this.keyword
+  export default {
+    name: "sampletypeadd",
+    data() {
+      return {
+        imghost: "",
+        rulessampletypeinfo: {
+          Code: [{
+            required: true,
+            message: "请输入编码",
+            trigger: "blur"
+          }],
+          Name: [{
+            required: true,
+            message: "请输入姓名",
+            trigger: "blur"
+          }]
+        },
+        currentItemCount: 0,
+        currentPage: 1,
+        size: 10,
+        list: [],
+        devicelist: [],
+        checkAll: false,
+        keyword: "",
+        dialogtitle: "",
+        operatingitem: 0,
+        isIndeterminate: false,
+        selectdevices: [],
+        showquerydiv: false,
+        systemqiguanimglist: [],
+        imgtype: "0",
+        selectsametyped: 0,
+        imageUrl: "",
+        SampleTypeForm: {
+          Name: "",
+          Code: "",
+          DefaultCapacity: "",
+          Unit: "",
+          ValidityHours: 0,
+          Timelong: false,
+          id: 0,
+          Remark: "",
+          Sensors: [],
+          Photo: "",
+          PhotoType: 0,
+          SubpackageCapacity: "", // 分装容量
+          SubpackageNum: 1,
+        },
+        checked: false,
+        num1: 1,
+        sampeunitlist: [] // 样本单位
       };
-      // request
-      this.$axios
-        .get("sampletype/list", { params })
-        .then(res => {
-          // response
-          _this.list = res.data.items;
-          // toggle loading
-          // _this.loading = false
-          _this.currentItemCount = res.data.currentItemCount;
-        })
-        .catch(err => {
-          // handle error
-          console.error(err);
-        });
-      this.$axios
-        .get("sampletype/shebeilist", { _currentPage: -1 })
-        .then(res => {
-          _this.devicelist = res.data;
-        })
-        .catch(() => {});
-      this.$axios
-        .get("sampletype/imglist", { _currentPage: -1 })
-        .then(res => {
-          console.log("1111111111111",res.data)
-          _this.systemqiguanimglist = res.data;
-        })
-        .catch(() => {});
-      this.$axios
-        .get("channels/list", { _currentPage: -1 })
-        .then(res => {
-          // response
-          _this.devices = res.data.items;
-          _this.devices.forEach((item, k) => {
-            _this.devicesallid.push(item.Id);
-          });
-        })
-        .catch(() => {});
     },
-    getsampetypeunit() {
-      // 获取样本单位
-      let _this = this;
-      _this.$axios.get("sampletype/sunitajax", {}).then(res => {
-        _this.sampeunitlist = res.data;
-      });
+    created() {
+      this.imghost = process.env.imgserverhost;
+      // initial data
+      this.initData();
+      // 加载单位
+      this.getsampetypeunit();
     },
-    handleAvatarSuccess(res, file) {
-      this.SampleTypeForm.Photo = res;
-      this.imageUrl = URL.createObjectURL(file.raw);
-    },
-    beforeAvatarUpload(file) {
-      const isimg = file.type.indexOf("image/") === 0;
-      const isLt50k = file.size / 1024 / 50 < 1;
-      if (!isimg) {
-        this.$message.error("上传图片只能是 图片 格式!");
-        return false;
-      }
-      if (!isLt50k) {
-        this.$message.error("上传图片大小不能超过 50kb!");
-        return false;
-      }
-      return true;
-    },
-    selectsampletype(v, imgpath) {
-      if (v === this.selectsametyped) {
-        this.selectsametyped = 0;
-        this.SampleTypeForm.Photo = "";
-      } else {
-        this.selectsametyped = v;
-        this.SampleTypeForm.Photo = imgpath;
-      }
-    },
-    resetForm(formName) {
-      this.$refs[formName].resetFields();
-    },
-    clearForm() {
-      this.SampleTypeForm = {
-        Code: "",
-        Name: "",
-        DefaultCapacity: "",
-        Unit: "",
-        ValidityHours: "",
-        Remark: "",
-        Sensors: [],
-        Timelong: false,
-        SubpackageCapacity: "", // 分装容量
-        SubpackageNum: 1,
-      };
-    },
-    savedata(formName) {
-      let _this = this;
-      this.$refs[formName].validate(valid => {
-        if (valid) {
-          if (_this.SampleTypeForm.Photo === "") {
-            _this.$message({
-              type: "warning",
-              message: "请选择样本图片!"
-            });
-            return;
-          }
-          _this.SampleTypeForm.Sensors = _this.selectdevices;
-          _this.SampleTypeForm.PhotoType = parseInt(_this.imgtype);
-          _this.SampleTypeForm.DefaultCapacity = parseFloat(
-            _this.SampleTypeForm.DefaultCapacity
-          );
-          _this.SampleTypeForm.SubpackageCapacity = parseFloat(
-            _this.SampleTypeForm.SubpackageCapacity
-          );
-          _this.$axios
-            .post("sampletype", _this.SampleTypeForm)
-            .then(res => {
-              // response
-              if (res.data.code === 0) {
-                _this.$message({
-                  type: "success",
-                  message: res.data.message
-                });
-                window.history.go(-1);
-              } else {
-                _this.$message({
-                  type: "warning",
-                  message: res.data.message
-                });
-              }
-            })
-            .catch(err => {
-              // handle error
-              console.error(err);
+    methods: {
+      initData() {
+        let _this = this;
+        const params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          keyword: this.keyword
+        };
+        this.$axios
+          .get("sampletype/list", {
+            params
+          })
+          .then(res => {
+            _this.list = res.data.items;
+            _this.currentItemCount = res.data.currentItemCount;
+          })
+          .catch(err => {
+            console.error(err);
+          });
+        this.$axios
+          .get("equipment/elist", {
+            _currentPage: -1
+          })
+          .then(res => {
+            _this.devicelist = res.data;
+          })
+          .catch(() => {});
+        this.$axios
+          .get("sampletype/imglist", {
+            _currentPage: -1
+          })
+          .then(res => {
+            _this.systemqiguanimglist = res.data;
+          })
+          .catch(() => {});
+        this.$axios
+          .get("channels/list", {
+            _currentPage: -1
+          })
+          .then(res => {
+            // response
+            _this.devices = res.data.items;
+            _this.devices.forEach((item, k) => {
+              _this.devicesallid.push(item.Id);
             });
-        } else {
+          })
+          .catch(() => {});
+      },
+      getsampetypeunit() {
+        // 获取样本单位
+        let _this = this;
+        _this.$axios.get("sampletype/sunitajax", {}).then(res => {
+          _this.sampeunitlist = res.data;
+        });
+      },
+      handleAvatarSuccess(res, file) {
+        this.SampleTypeForm.Photo = res;
+        this.imageUrl = URL.createObjectURL(file.raw);
+      },
+      beforeAvatarUpload(file) {
+        const isimg = file.type.indexOf("image/") === 0;
+        const isLt50k = file.size / 1024 / 50 < 1;
+        if (!isimg) {
+          this.$message.error("上传图片只能是 图片 格式!");
           return false;
         }
-      });
-    },
-    deletedata(val) {
-      let _this = this;
-      _this
-        .$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-        .then(() => {
-          _this.$axios
-            .delete("sampletype" + val.Id, null)
-            .then(res => {
-              // response
-              if (res.data.code === 0) {
-                _this.$message({
-                  type: "success",
-                  message: res.data.message
-                });
-                // 更新界面
-                this.initData();
-              } else {
-                _this.$message({
-                  type: "warning",
-                  message: res.data.message
-                });
-              }
-            })
-            .catch(() => {});
-        })
-        .catch(() => {});
-    },
-    handleCheckeddeviceChange() {
-      let checkedCount = this.selectdevices.length;
-      this.checkAll = checkedCount === this.devicelist.length;
-      this.isIndeterminate =
-        checkedCount > 0 && checkedCount < this.devicelist.length;
-    },
-    handleCheckAllChange(val) {
-      let _this = this;
-      _this.selectdevices = [];
-      if (val) {
-        _this.devicelist.forEach((item, k) => {
-          _this.selectdevices.push(item.Id + "");
+        if (!isLt50k) {
+          this.$message.error("上传图片大小不能超过 50kb!");
+          return false;
+        }
+        return true;
+      },
+      selectsampletype(v, imgpath) {
+        if (v === this.selectsametyped) {
+          this.selectsametyped = 0;
+          this.SampleTypeForm.Photo = "";
+        } else {
+          this.selectsametyped = v;
+          this.SampleTypeForm.Photo = imgpath;
+        }
+      },
+      resetForm(formName) {
+        this.$refs[formName].resetFields();
+      },
+      clearForm() {
+        this.SampleTypeForm = {
+          Code: "",
+          Name: "",
+          DefaultCapacity: "",
+          Unit: "",
+          ValidityHours: "",
+          Remark: "",
+          Sensors: [],
+          Timelong: false,
+          SubpackageCapacity: "", // 分装容量
+          SubpackageNum: 1,
+        };
+      },
+      savedata(formName) {
+        let _this = this;
+        this.$refs[formName].validate(valid => {
+          if (valid) {
+            if (_this.SampleTypeForm.Photo === "") {
+              _this.$message({
+                type: "warning",
+                message: "请选择样本图片!"
+              });
+              return;
+            }
+            _this.SampleTypeForm.Sensors = _this.selectdevices;
+            _this.SampleTypeForm.PhotoType = parseInt(_this.imgtype);
+            _this.SampleTypeForm.DefaultCapacity = parseFloat(
+              _this.SampleTypeForm.DefaultCapacity
+            );
+            _this.SampleTypeForm.SubpackageCapacity = parseFloat(
+              _this.SampleTypeForm.SubpackageCapacity
+            );
+            _this.$axios
+              .post("sampletype", _this.SampleTypeForm)
+              .then(res => {
+                // response
+                if (res.data.code === 0) {
+                  _this.$message({
+                    type: "success",
+                    message: res.data.message
+                  });
+                  window.history.go(-1);
+                } else {
+                  _this.$message({
+                    type: "warning",
+                    message: res.data.message
+                  });
+                }
+              })
+              .catch(err => {
+                // handle error
+                console.error(err);
+              });
+          } else {
+            return false;
+          }
         });
+      },
+      deletedata(val) {
+        let _this = this;
+        _this
+          .$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            _this.$axios
+              .delete("sampletype" + val.Id, null)
+              .then(res => {
+                // response
+                if (res.data.code === 0) {
+                  _this.$message({
+                    type: "success",
+                    message: res.data.message
+                  });
+                  // 更新界面
+                  this.initData();
+                } else {
+                  _this.$message({
+                    type: "warning",
+                    message: res.data.message
+                  });
+                }
+              })
+              .catch(() => {});
+          })
+          .catch(() => {});
+      },
+      handleCheckeddeviceChange() {
+        let checkedCount = this.selectdevices.length;
+        this.checkAll = checkedCount === this.devicelist.length;
+        this.isIndeterminate =
+          checkedCount > 0 && checkedCount < this.devicelist.length;
+      },
+      handleCheckAllChange(val) {
+        let _this = this;
+        _this.selectdevices = [];
+        if (val) {
+          _this.devicelist.forEach((item, k) => {
+            _this.selectdevices.push(item.Id + "");
+          });
+        }
+        this.isIndeterminate = false;
       }
-      this.isIndeterminate = false;
     }
-  }
-};
+  };
+
 </script>
 
 <style>
-.samptypeimg-uploader .el-upload {
-  border: 1px dashed #63b8ff;
-  cursor: pointer;
-  position: relative;
-  overflow: hidden;
-}
-.samptypeimg-uploader .el-upload:hover {
-  border-color: #228b22;
-}
-.samptypeimg-uploader-icon {
-  font-size: 28px;
-  color: #63b8ff;
-  width: 88px;
-  height: 88px;
-  line-height: 88px;
-  text-align: center;
-}
-.samptypeimg-uploader-icon:hover {
-  color: #228b22;
-}
-.uploadsampletypeimg {
-  width: 88px;
-  height: 88px;
-  display: block;
-}
-.sampletypelist {
-  display: flex;
-  justify-content: center;
-  background: #add8e6;
-  margin: 5px 3px 0 3px;
-  min-height: 50px;
-  min-width: 50px;
-  max-height: 50px;
-}
-.sampletypelist:hover {
-  box-shadow: 2px 0 8px rgba(0, 0, 0, 0.4);
-  transform: scale(1.15);
-}
-.sampleselectedcss {
-  background: #228b22;
-}
-</style>
+  .samptypeimg-uploader .el-upload {
+    border: 1px dashed #63b8ff;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
 
+  .samptypeimg-uploader .el-upload:hover {
+    border-color: #228b22;
+  }
+
+  .samptypeimg-uploader-icon {
+    font-size: 28px;
+    color: #63b8ff;
+    width: 88px;
+    height: 88px;
+    line-height: 88px;
+    text-align: center;
+  }
+
+  .samptypeimg-uploader-icon:hover {
+    color: #228b22;
+  }
+
+  .uploadsampletypeimg {
+    width: 88px;
+    height: 88px;
+    display: block;
+  }
+
+  .sampletypelist {
+    display: flex;
+    justify-content: center;
+    background: #add8e6;
+    margin: 5px 3px 0 3px;
+    min-height: 50px;
+    min-width: 50px;
+    max-height: 50px;
+  }
+
+  .sampletypelist:hover {
+    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.4);
+    transform: scale(1.15);
+  }
+
+  .sampleselectedcss {
+    background: #228b22;
+  }
+
+</style>

+ 42 - 35
src/dashoo.cn/frontend_web/src/pages/setting/triggers/actions.vue

@@ -1,43 +1,41 @@
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/setting/triggers/actions' }">报警项目设置</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="opendatadialog(1,null,-1);resetForm('actionform')">添加</el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;"
+            @click="opendatadialog(1,null,-1);resetForm('actionform')">添加</el-button>
         </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="报警项目">
+            <el-input size="mini" v-model="keyword" style="width:100%" placeholder="请输入报警项目"></el-input>
+          </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" :rules="rulessampletypeinfo" label-width="90px">
-            <el-row :gutter="0">
-              <el-col :span="8">
-                <el-form-item label="报警项目:">
-                  <el-input type=" " v-model="keyword" placeholder="输入报警项目"></el-input>
-                </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">
+
+      <el-table :data="list" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;">
         <el-table-column label="操作" width="80" align="center">
           <template slot-scope="scope">
-            <el-button size="small" type="text" title="编辑" icon="el-icon-edit" @click="opendatadialog(2,scope.row,scope.$index);resetForm('channelform')"></el-button>
-            <el-button size="small" type="text" title="删除" icon="el-icon-delete" style="margin-left:3px;" @click="deletedata(scope.row)"></el-button>
+            <el-button size="small" type="text" title="编辑" icon="el-icon-edit"
+              @click="opendatadialog(2,scope.row,scope.$index);resetForm('channelform')"></el-button>
+            <el-button size="small" type="text" title="删除" icon="el-icon-delete" style="margin-left:3px;"
+              @click="deletedata(scope.row)"></el-button>
           </template>
         </el-table-column>
         <el-table-column prop="name" label="项目名称" align="center" width="300" show-overflow-tooltip></el-table-column>
@@ -54,8 +52,9 @@
           </template>
         </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>
 
@@ -72,7 +71,8 @@
         </el-form-item>
         <el-form-item label="发送对象" label-width="120px" required prop="sendto">
           <el-input v-model="actionform.sendto" auto-complete="off"></el-input>
-          <div style="color:#7A7A7A" v-show="actionform.item === '1' || actionform.item === '5' || actionform.item === '6'">
+          <div style="color:#7A7A7A"
+            v-show="actionform.item === '1' || actionform.item === '5' || actionform.item === '6'">
             提示:录入多个{{actionform.item ==='1' ? '邮箱' : actionform.item ==='5' ? '手机号码' : '电话号码'}}请使用 “,” 逗号分隔
           </div>
           <div style="color:#7A7A7A" v-show="actionform.item === '2'">
@@ -364,6 +364,13 @@
             .catch(() => {})
         }).catch(() => {})
       },
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
       clearSearch() {
         this.keyword = ''
         this.initData()

+ 42 - 35
src/dashoo.cn/frontend_web/src/pages/setting/triggers/triggers.vue

@@ -1,43 +1,41 @@
 <template>
   <div>
-    <el-breadcrumb class="heading">
-      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/setting/triggers/triggers' }">报警设置</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="opendatadialog(1,null,-1);">添加</el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;"
+            @click="opendatadialog(1,null,-1);">添加</el-button>
         </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="报警项目">
+            <el-input size="mini" v-model="keyword" style="width:100%" placeholder="请输入报警项目"></el-input>
+          </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" :rules="rulessampletypeinfo" label-width="90px">
-            <el-row :gutter="0">
-              <el-col :span="8">
-                <el-form-item label="报警项目:">
-                  <el-input type=" " v-model="keyword" placeholder="输入报警项目"></el-input>
-                </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">
+
+      <el-table :data="list" bordertooltip-effect="dark" border height="calc(100vh - 230px)" style="width: 100%;">
         <el-table-column label="操作" width="80" align="center">
           <template slot-scope="scope">
-            <el-button size="small" type="text" title="编辑" icon="el-icon-edit" @click="opendatadialog(2,scope.row,scope.$index);"></el-button>
-            <el-button size="small" type="text" title="删除" icon="el-icon-delete" style="margin-left:3px;" @click="deletedata(scope.row)"></el-button>
+            <el-button size="small" type="text" title="编辑" icon="el-icon-edit"
+              @click="opendatadialog(2,scope.row,scope.$index);"></el-button>
+            <el-button size="small" type="text" title="删除" icon="el-icon-delete" style="margin-left:3px;"
+              @click="deletedata(scope.row)"></el-button>
           </template>
         </el-table-column>
         <el-table-column label="描述" align="center" width="300" show-overflow-tooltip>
@@ -57,12 +55,14 @@
           </template>
         </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>
 
-    <triggersoperation @close="triggerDialogCallback" :model="triggeritem" :act="dialogAct" :visible.sync="triggerdialogVisible"></triggersoperation>
+    <triggersoperation @close="triggerDialogCallback" :model="triggeritem" :act="dialogAct"
+      :visible.sync="triggerdialogVisible"></triggersoperation>
   </div>
 </template>
 
@@ -187,6 +187,13 @@
           return val.substring(0, 19)
         }
       },
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
       clearSearch() {
         this.keyword = ''
         this.initData()

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff