3
2
Răsfoiți Sursa

添加LIMS的配置

yuedefeng 6 ani în urmă
părinte
comite
f5ae5a9a6e

+ 392 - 0
src/dashoo.cn/frontend_web/src/pages/setting/doctemplate/_opera/operation.vue

@@ -0,0 +1,392 @@
+<template>
+  <div>
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/setting/doctemplate' }">模板管理</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> 模板信息详情
+        </span>
+        <span>
+          <span style="float: right;">
+            <span style="float: right;">
+              <el-button type="primary" class="el-button--small" :disabled="mainForm.addflag" @click="opendatadialog(1,null,-1)">添加</el-button>
+              <el-button type="primary" class="el-button--small" onclick="window.history.go(-1)">返回</el-button>
+            </span>
+            <!-- <el-button v-if="flage=='add'" type="primary" class="el-button--small" @click="savedata()">保存</el-button>
+            <el-button v-if="flage=='edit'" type="primary" class="el-button--small" @click="editmodel()">保存</el-button>
+             -->
+          </span>
+        </span>
+      </div>
+      <el-row>
+        <el-table ref="templatedetaillist" :data="templatedetaillist" border tooltip-effect="dark" style="width: 100%">
+          <el-table-column label="操作" width="100" align="center" fixed>
+            <template slot-scope="scope">
+              <el-button type="text" title="编辑" size="small" @click="opendatadialog(2,scope.row,scope.$index)">
+                <i class="el-icon-edit"></i>
+              </el-button>
+              <el-button size="small" type="text" style="margin-left:3px" icon="el-icon-delete" title="删除" @click="deletetemplate(scope.row)"></el-button>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column prop="SampleCode" label="样本条码" align="center" header-align="center" show-overflow-tooltip></el-table-column> -->
+          <el-table-column prop="Name" label="模板名称" align="center" header-align="center" show-overflow-tooltip></el-table-column>
+          <el-table-column prop="Location" label="位置" align="center" header-align="center" show-overflow-tooltip></el-table-column>
+          <!-- <el-table-column prop="Content" label="内容" align="center" header-align="center" show-overflow-tooltip></el-table-column> -->
+          <!-- <el-table-column prop="ContentDetail" label="固定内容" align="center" header-align="center" show-overflow-tooltip></el-table-column> -->
+          <el-table-column prop="Remark" label="内容备注" align="center" header-align="center" show-overflow-tooltip></el-table-column>
+        </el-table>
+      </el-row>
+    </el-card>
+    <!--新增、编辑模板信息-->
+    <el-dialog :title="dialogtitle" :visible.sync="datadialogVisible" top="5vh">
+      <el-form ref="templateform">
+        <el-form-item label="模板名称" label-width="120px">
+          <el-input v-model="templateform.Name"></el-input>
+        </el-form-item>
+        <el-form-item label="位置" prop="Location" label-width="120px" placeholder="请填入位置">
+          <el-input v-model="templateform.Location"></el-input>
+        </el-form-item>
+        <el-form-item label="内容模块"  label-width="120px">
+                <el-select ref="TableName" v-model="templateform.TableName" style="width:100%" clearable placeholder="请选择" @change="selectContent">
+
+                  <el-option v-for="item in tableList" :value="item.value" :key="item.value" :label="item.label"></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="内容" label-width="120px">
+                <el-select ref="Content" v-model="templateform.Content" style="width:100%" clearable
+                  placeholder="请选择">
+                  <el-option v-for="item in contentList"  :value="item.value" :key="item.value" :label="item.label"></el-option>
+                </el-select>
+              </el-form-item>
+        <el-form-item label="备注" label-width="120px">
+          <el-input v-model="templateform.Remark"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="datadialogVisible = false">取 消</el-button>
+        <el-button v-if="this.service_flag=='add'" type="primary" @click="addmodel()">保 存</el-button>
+        <el-button v-if="this.service_flag=='edit'" type="primary" @click="editmodel()">保 存</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import axios from 'axios'
+  import uploadajax from '@/assets/js/uploadajax.js'
+import _default from 'vuex';
+  export default {
+    name: 'doctempalte',
+    data() {
+      return {
+        mainForm:{
+          addflag:false
+        },
+        tableList: [{
+          value: 'LimsTaskBalance',
+          label: '任务分配'
+        }, {
+          value: 'LimsEntrustMain',
+          label: '任务委托'
+        }],
+        contentList:[],
+        templatedetaillist:[],  //模板信息详情
+        title: '', //界面标题
+        datadialogVisible: false,
+        dialogtitle: '',
+        formtype: '1',
+        ServiceId: '',
+        TemplateId: '',
+        Name:'', //模板名称
+        service_flag:'',
+        templateform: {
+          Name: '', //模板名称
+          Location: '',
+          Content: '',
+          ContentDetail: '',
+          ContentId:'',
+          Remark: '',
+          TemplateId: ''
+        },
+        rulestestlistform: {
+
+          TempName: [{
+            required: true,
+            message: '请输入模板名',
+            trigger: 'blur'
+          }],
+          FileName: [{
+            required: true,
+            message: '请输入模板文件',
+            trigger: 'blur'
+          }]
+
+        },
+        list: [],
+        activities: [],
+        pid: 0,
+      }
+    },
+    created() {
+      this.ServiceId = this.$route.params.opera
+        this.TemplateId = this.ServiceId
+        this.initData(this.ServiceId)
+    },
+    methods: {
+      initData(id) {
+        let _this = this
+        _this.$axios.get('/doctemplate/doctemplatedetaillist/' + id, {})
+          .then(function (response) {
+            _this.templatedetaillist = response.data.items
+           if(response.data.items == ''){
+             _this.searchname(_this.ServiceId)
+           }else{
+              _this.Name = response.data.items[0].Name
+           }
+          })
+          .catch(function (error) {
+            console.log(error);
+          });
+      },
+      searchname(id){
+        let _this = this
+        _this.$axios.get('/doctemplate/getnamebyid/' + id, {})
+        .then(function (response) {
+            _this.Name = response.data.items[0].Name
+          })
+
+          .catch(function (error) {
+            console.log(error);
+          });
+      },
+       opendatadialog(item, v, index) {
+        this.operatingitem = item
+        this.datadialogVisible = true
+        let _this = this
+        _this.templateform.Location=""
+        _this.templateform.Content =""
+        _this.templateform.ContentDetail=""
+        _this.templateform.Remark=""
+        _this.templateform.ContentId=""
+        if (item === 1) {
+          _this.service_flag = 'add'
+          _this.dialogtitle = `新增模板`
+          _this.templateform.Name =  _this.Name
+        _this.templateform.TemplateId = _this.TemplateId
+        } else if (item === 2) {
+           _this.service_flag = 'edit'
+          _this.$axios.get('/doctemplate/templatedetaillist/' + v.Id, {})
+            .then(function (response) {
+              _this.dialogtitle = `编辑模板(${response.data.items[0].Name})`
+              _this.templateform = response.data.items[0]
+            })
+            .catch(function (error) {
+              console.log(error);
+            });
+        }
+      },
+      addmodel(templateform){
+        let _this = this
+        _this.templateform.TemplateId=parseInt(_this.templateform.TemplateId)
+        _this.$axios.post('/doctemplate/doctemplatedetaillistadd/', _this.templateform)
+          .then(res => {
+            // response
+            if (res.data.code === 0) {
+              _this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+              _this.datadialogVisible = false
+              _this.initData(_this.TemplateId)
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      editmodel() {
+        let _this = this
+        _this.$axios.put('/doctemplate/doctemplatedetailedit/' + _this.templateform.Id, _this.templateform)
+          .then(res => {
+            // response
+            if (res.data.code === 0) {
+              // _this.CollectionId = res.data.item
+              _this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+              _this.initData(_this.TemplateId)
+              _this.datadialogVisible =false
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      selectContent(val){
+        let balancelist =[{
+          value: 'EntrustNo',
+          label: '委托单号'
+        }, {
+          value: 'BalanceTime',
+          label: '截止时间'
+        },{
+          value: 'TaskTime',
+          label: '完成时间'
+        }, {
+          value: 'EntrustType',
+          label: '委托类型'
+        },{
+          value: 'TestDetail',
+          label: '任务分配'
+        }, {
+          value: 'ProjectType',
+          label: '检测明细项'
+        },{
+          value: 'DetectSample',
+          label: '样品名称'
+        }, {
+          value: 'Samples',
+          label: '该检测项样品数量'
+        },{
+          value: 'SampleRate',
+          label: '该检测项样品占比'
+        }, {
+          value: 'SampleCode',
+          label: '样品条码'
+        },{
+          value: 'BarCode',
+          label: '样品编码'
+        }, {
+          value: 'SampleNum',
+          label: '样品数量'
+        },{
+          value: 'Unit',
+          label: '样品单位'
+        },{
+          value: 'Equipment',
+          label: '设备'
+        },{
+          value: 'BalanceBy',
+          label: '分配人'
+        },{
+          value: 'Department',
+          label: '部门'
+        },{
+          value: 'ConUserBy',
+          label: '负责人'
+        }]
+        let entrustlist =[{
+          value: 'EntrustNo',
+          label: '委托单号'
+        }, {
+          value: 'EntrustTime',
+          label: '委托时间'
+        },{
+          value: 'EndTime',
+          label: '截止时间'
+        }, {
+          value: 'CustomerName',
+          label: '委托方名称'
+        },{
+          value: 'ProjectType',
+          label: '检测项目名称'
+        }, {
+          value: 'SampleNum',
+          label: '样品数量'
+        },{
+          value: 'Unit',
+          label: '样品单位'
+        },{
+          value: 'DetectSample',
+          label: '样品名称'
+        }]
+        if(val=="LimsTaskBalance"){
+          this.contentList = balancelist
+        }else{
+          this.contentList = entrustlist
+        }
+      },
+      deletetemplate(val) {
+        let _this = this;
+        _this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            _this.$axios.delete('doctemplate/doctemplatedetaildelete/' + val.Id, {})
+              .then(function (response) {
+                // response
+                if (response.data.code === 0) {
+                  _this.$message({
+                    type: "success",
+                    message: response.data.message
+                  });
+                  // 更新界面
+                  _this.initData(_this.TemplateId);
+                } else {
+                  _this.$message({
+                    type: "warning",
+                    message: response.data.message
+                  });
+                }
+              })
+              .catch(function (error) {
+                console.log(error);
+              });
+          })
+          .catch(() => {});
+      }
+
+    }
+  }
+
+</script>
+<style type="text/css">
+  .deviceaddsamptype {
+    margin-top: 2px;
+    margin-left: 1px;
+    border: 1px #CCCCCC solid;
+    overflow: auto;
+    height: 110px;
+    padding: 1px;
+  }
+
+  .deviceaddsamptype .el-checkbox {
+    margin-left: 4px;
+  }
+
+  .el-form-item__content .deviceaddsamptype {
+    line-height: 15px;
+  }
+
+  .deviceaddicebox {
+    text-align: center;
+    margin-top: -15px;
+    padding-left: 50px;
+  }
+
+  .materialstorehouseimg {
+    width: 120px;
+    height: 120px;
+    display: block;
+  }
+
+</style>

+ 532 - 0
src/dashoo.cn/frontend_web/src/pages/setting/doctemplate/index.vue

@@ -0,0 +1,532 @@
+<template>
+  <div v-loading="downloading" element-loading-text="数据拼命准备中,请稍候。。。">
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/setting/doctemplate' }">模板管理</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-card class="box-card">
+      <div slot="header" class="clearfix">
+        <span>
+          <i class="icon icon-table2"> 文档模板管理列表</i>
+        </span>
+        <span style="float: right; margin-top: -5px" class="cardrightform">
+          <!-- <router-link :to="'/setting/doctemplate/add/operation'">
+            <el-button type="primary" size="small">添加</el-button>
+          </router-link> -->
+          <el-button type="primary" class="el-button--small" @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" style="width: 165px;" v-model="searchForm.Name" placeholder="请输入文档名称" clearable></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="seachdata">查询</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-row :gutter="20">
+        <el-col :span="6">
+          <el-tree highlight-current=true :expand-on-click-node="true" node-key="id" :data="orgtreelist" :props="orgtreeprops"
+            :default-expanded-keys="userdepartment" @node-click="orgtreeNodeClick" ref="orgmanagetree">
+          </el-tree>
+        </el-col>
+        <el-col :span="18">
+          <el-table :data="list" border style="width: 100%" @sort-change="orderby">
+            <el-table-column label="操作" width="120" align="center" header-align="center">
+              <template slot-scope="scope">
+                <el-button type="text" title="编辑" size="small" style="margin-left:3px;" @click="opendatadialog(2,scope.row,scope.$index)">
+                  <i class="el-icon-edit"></i>
+                </el-button>
+                <router-link :to="'/setting/doctemplate/'+scope.row.Id+ '/operation'">
+                  <el-button size="small" style="margin-left:3px;" type="text" title="详情">
+                    <i class="icon icon-file-text"></i>
+                  </el-button>
+                </router-link>
+
+                <!-- <el-button size="small" type="text"  icon="el-icon-edit" title="详情"></el-button> -->
+                <!-- <router-link :to="'/documentmanage/'+scope.row.Id+'/dochistory'">
+                  <el-button size="small" style="margin-left:3px;" type="text" title="查看历史版本">
+                    <i class="icon icon-file-text"></i>
+                  </el-button>
+                </router-link> -->
+                <el-button size="small" style="margin-left:3px;" type="text" icon="el-icon-delete" title="删除" @click="deletetemplate(scope.row)"></el-button>
+              </template>
+            </el-table-column>
+            <el-table-column prop="Name" label="文档名称" align="center" header-align="center" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="Version" label="文档版本" align="center" header-align="center" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="AuthorBy" label="编辑人" align="center" header-align="center" show-overflow-tooltip></el-table-column>
+          </el-table>
+          <el-pagination  @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+          :page-size="size" :page-sizes="[10, 15, 20 ]" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+          </el-pagination>
+        </el-col>
+      </el-row>
+    </el-card>
+    <!--新增、编辑模板信息-->
+    <el-dialog :title="dialogtitle" :visible.sync="datadialogVisible" top="5vh">
+      <el-form :model="templateform" ref="templateform">
+        <el-form-item label="模板名称" prop="Name" label-width="120px">
+          <el-input v-model="templateform.Name" auto-complete="off" placeholder="请输入模板名称"></el-input>
+        </el-form-item>
+        <!-- <el-form-item label="模板类型" label-width="120px">
+                  <el-select v-model="searchForm.TemplateId" placeholder="请选择类型" style="width:100%">
+                    <el-option v-for="item in TemplateItems" :value="item.value" :key="item.value" :label="item.label">
+                    </el-option>
+                  </el-select>
+                </el-form-item> -->
+        <el-form-item label="模板类型" label-width="120px">
+          <el-select v-model="templateform.TemplateId" style="width:100%" placeholder="请选择模板类型">
+            <el-option label="数据录入模板" value="62"></el-option>
+            <el-option label="报告模板" value="63"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="模板编码" prop="TemplateCode" label-width="120px">
+          <el-input v-model="templateform.TemplateCode" placeholder="请输入模板编码"></el-input>
+        </el-form-item>
+        <el-form-item label="版本" prop="Version" label-width="120px">
+          <el-input v-model="templateform.Version" placeholder="请输入版本"></el-input>
+        </el-form-item>
+        <el-form-item label="数据开始页" prop="SheetNum" label-width="120px">
+          <el-input v-model="templateform.SheetNum" placeholder="请输入数据开始页"></el-input>
+        </el-form-item>
+        <el-form-item label="模板地址" prop="FileURL" label-width="120px">
+          <el-input v-model="templateform.FileURL" placeholder="请输入模板地址"></el-input>
+        </el-form-item>
+        <el-form-item label="描述" label-width="120px">
+          <el-input type="textarea" v-model="templateform.Remark" placeholder="请输入描述"></el-input>
+        </el-form-item>
+        <el-form-item label="模板上传" prop="TemplateInfo" label-width="120px">
+          <el-upload multiple="false" action="" :limit="1" ref="refuploadattach"
+            :http-request="uploadrequest" class="attach-uploader" :show-file-list="true" :before-upload="beforeAvatarUpload">
+             <i class="el-icon-upload attach-uploader-icon"></i>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="datadialogVisible = false">取 消</el-button>
+        <el-button v-if="this.service_flag=='add'" type="primary" @click="addmodel()">保 存</el-button>
+        <el-button v-if="this.service_flag=='edit'" type="primary" @click="editmodel()">保 存</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import Vue from 'vue'
+  import axios from 'axios'
+  import uploadajax from '../../../assets/js/uploadajax.js'
+  import {
+    mapGetters
+  } from 'vuex';
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      }),
+    },
+    data() {
+      return {
+        downloading: false,
+        currentItemCount: 0,
+        currentPage: 1,
+        size: 10,
+        orgtreelist: [],
+        operatingitem: 0,
+        orgtreeprops: {
+          value: 'id',
+          label: 'ItemName',
+          children: 'children'
+        },
+        //列表排序
+        Column: {
+          Order: '',
+          Prop: ''
+        },
+        //  TemplateItems: [{
+        //   value: '62',
+        //   label: '数据录入模板'
+        // }, {
+        //   value: '63',
+        //   label: '报告模板'
+        // }],
+        templateform: {
+          Name: '',
+          AuthorBy: '',
+          Remark: '',
+          Template: '',
+          TemplateId: '',
+          TemplateName: '',
+          Version: '',
+          FileURL: '',
+          TemplateCode:'',
+          SheetNum:2
+        },
+         waituploads: [], // 等待上传的附件列表
+        datadialogVisible: false,
+        dialogtitle: '',
+        service_flag: '',
+        userdepartment: [],
+        list: [],
+        exId: '', //当前选中结构ID
+        deletedialog: false, //删除选项弹窗
+        deleteForm: {
+          Name: '',
+          Id: '',
+          flag: 0
+        },
+        searchForm: {
+          Name: '' //文档名称
+        },
+      }
+    },
+    created() {
+      this.initData()
+      this.gettreelist(224)
+    },
+    methods: {
+      initData() {
+        let _this = this
+        const params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          Order: this.Column.Order,
+          Prop: this.Column.Prop,
+          Id: 224,
+          TemplateId: this.exId,
+          Name: this.searchForm.Name
+        }
+        this.$axios.get("/doctemplate/doctemplatelist", {
+            params
+          })
+          .then(function (response) {
+            _this.list = response.data.items
+            _this.currentItemCount = response.data.currentItemCount
+          })
+          .catch(function (error) {
+            console.log(error);
+          });
+      },
+      gettreelist(pid) {
+        let _this = this
+        let params = {
+          pid: pid + ''
+        }
+        _this.$axios.get('/items/gettreeitemsdetail', {
+            params
+          })
+          .then(res => {
+            _this.orgtreelist = window.toolfun_gettreejson(res.data.items, 'Id', 'ParentId', 'Id,ItemName')
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      //判断文件大小
+      beforeAvatarUpload(file) {
+        let isLt50m = file.size / 1024 / 1024 / 50 < 1
+        if (!isLt50m) {
+          this.$message.error('上传文件大小不能超过 50MB!')
+          return false
+        }
+        return true
+      },
+      // 判断附件是否上传成功
+      attachissuccess() {
+        if (this.$refs.refuploadattach.uploadFiles && this.$refs.refuploadattach.uploadFiles.length > 0) {
+          for (let i = 0; i < this.$refs.refuploadattach.uploadFiles.length; i++) {
+            if (this.$refs.refuploadattach.uploadFiles[i].status !== 'success') {
+              return false
+            }
+          }
+        }
+        return true
+      },
+      uploadrequest(option) {
+        let _this = this
+        axios.post(process.env.upfilehost, {})
+          .then(function (res) {
+            if (res.data && res.data.fid && res.data.fid !== '') {
+              option.action = `http://${res.data.url}/${res.data.fid}`
+              _this.waituploads.push({
+                uid: option.file.uid,
+                url: res.data.publicUrl,
+                fid: res.data.fid
+              })
+              uploadajax(option)
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: '未上传成功!请刷新界面重新上传!'
+              })
+            }
+          })
+          .catch(function (error) {
+            console.log(error)
+            _this.$message({
+              type: 'warning',
+              message: '未上传成功!请重新上传!'
+            })
+          })
+      },
+        getattachissuccess() {
+        this.templateform.FileURL = ''
+        if (this.$refs.refuploadattach.uploadFiles && this.$refs.refuploadattach.uploadFiles.length > 0) {
+          for (let i = 0; i < this.$refs.refuploadattach.uploadFiles.length; i++) {
+            if (this.$refs.refuploadattach.uploadFiles[i].status === 'success') {
+              for (let j = 0; j < this.waituploads.length; j++) {
+                if (this.waituploads[j].uid === this.$refs.refuploadattach.uploadFiles[i].uid) {
+                  this.templateform.FileURL =
+                    `${this.waituploads[j].url}/${this.waituploads[j].fid}|${this.$refs.refuploadattach.uploadFiles[i].name}`
+                }
+              }
+            }
+          }
+        }
+      },
+      opendatadialog(item, v, index) {
+        this.operatingitem = item
+        this.datadialogVisible = true
+        this.templateform.Name = ""
+        this.templateform.AuthorBy = ""
+        this.templateform.TemplateId = ""
+        this.templateform.TemplateName = ""
+        this.templateform.FileURL = ""
+        this.templateform.Version = ""
+        this.templateform.Remark = ""
+        this.templateform.SheetNum=""
+        this.templateform.Template = ""
+        this.templateform.TemplateCode = ""
+        //this.clearorganizeform()
+        let _this = this
+        if (item === 1) {
+          _this.service_flag = 'add'
+          _this.dialogtitle = `新增模板`
+
+        } else if (item === 2) {
+          _this.service_flag = 'edit'
+          _this.$axios.get('/doctemplate/templatedetaillistbyid/' + v.Id, {})
+            .then(function (response) {
+              _this.dialogtitle = `编辑模板(${response.data.items[0].Name})`
+              _this.templateform = response.data.items[0]
+              _this.templateform.TemplateId = response.data.items[0].TemplateName
+            })
+            .catch(function (error) {
+              console.log(error);
+            });
+        }
+      },
+      addmodel() {
+        this.templateform.SheetNum = parseInt(this.templateform.SheetNum)
+        this.templateform.TemplateId = parseInt(this.templateform.TemplateId)
+        if (this.templateform.TemplateId == 62) {
+          this.templateform.TemplateName = "数据录入模板"
+        } else {
+          this.templateform.TemplateName = "报告模板"
+        }
+        if (this.$refs.refuploadattach.uploadFiles && this.$refs.refuploadattach.uploadFiles.length > 0) {
+              // 上传附件是否完成判断
+              if (!this.attachissuccess()) {
+                this.$message.error('有附件未成功上传!不能保存数据')
+                return
+              }
+              this.getattachissuccess()
+            }
+        this.$axios.post('/doctemplate/doctemplatelistadd', this.templateform)
+          .then(res => {
+            // response
+            if (res.data.code === 0) {
+              this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+              this.datadialogVisible = false
+              this.initData()
+            } else {
+              this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      editmodel() {
+        this.templateform.SheetNum = parseInt(this.templateform.SheetNum)
+        this.templateform.TemplateId = parseInt(this.templateform.TemplateId)
+        if (this.$refs.refuploadattach.uploadFiles && this.$refs.refuploadattach.uploadFiles.length > 0) {
+              // 上传附件是否完成判断
+              if (!this.attachissuccess()) {
+                this.$message.error('有附件未成功上传!不能保存数据')
+                return
+              }
+              this.getattachissuccess()
+            }
+        this.$axios.put('/doctemplate/doctemplateedit/' + this.templateform.Id, this.templateform)
+          .then(res => {
+            // response
+            if (res.data.code === 0) {
+              // _this.CollectionId = res.data.item
+              this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+              this.initData()
+              this.datadialogVisible = false
+            } else {
+              this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      deletetemplate(val) {
+        let _this = this
+        _this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            _this.$axios.delete('doctemplate/doctemplatedelete/' + val.Id, {})
+              .then(function (response) {
+                // response
+                if (response.data.code === 0) {
+                  _this.$message({
+                    type: "success",
+                    message: response.data.message
+                  });
+                  // 更新界面
+                  _this.initData();
+                } else {
+                  _this.$message({
+                    type: "warning",
+                    message: response.data.message
+                  });
+                }
+              })
+              .catch(function (error) {
+                console.log(error);
+              });
+          })
+          .catch(() => {});
+      },
+
+      // //清空查询结构体
+      // clearSearch() {
+      //   this.searchForm.Name = ''
+      //   this.initData()
+      // },
+      seachdata() {
+        this.currentPage = 1
+        this.initData()
+      },
+      orgtreeNodeClick(data) {
+        if (data.id == 61) {
+          this.exId = ''
+        } else {
+          this.exId = data.id + ''
+        }
+        this.currentPage = 1
+        this.initData()
+      },
+      handleSizeChange(val) {
+        this.size = val
+        this.currentPage = 1
+        this.initData()
+      },
+      handleCurrentChange(val) {
+        this.currentPage = val
+        this.initData()
+      },
+      //列表排序功能
+      orderby(column) {
+        if (column.order == 'ascending') {
+          this.Column.Order = 'asc'
+        } else if (column.order == 'descending') {
+          this.Column.Order = 'desc'
+        }
+        this.Column.Prop = column.prop
+        this.initData()
+      },
+      jstimehandle(val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 19)
+        }
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss">
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+
+  .triggerone {
+    font-size: 13px;
+    margin-left: 80px;
+  }
+
+  .plab {
+    font-size: 13px;
+    color: #999;
+  }
+
+  .lookuptable {
+    font-size: 20px;
+
+    td {
+      padding-left: 10px;
+    }
+
+    tr:nth-child(even) {
+      background: #FFFFFF
+    }
+
+    tr:nth-child(odd) {
+      background: #F0F0F0
+    }
+  }
+    .attach-uploader .el-upload {
+    border: 1px dashed #63B8FF;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+    margin-bottom: -20px;
+  }
+
+  .attach-uploader .el-upload:hover {
+    border-color: #228B22;
+  }
+    .attach-uploader-icon {
+    font-size: 25px;
+    color: #63B8FF;
+    width: 50px;
+    height: 50px;
+    line-height: 50px;
+    text-align: center;
+  }
+
+  .attach-uploader-icon:hover {
+    color: #228B22;
+  }
+
+</style>

+ 555 - 0
src/dashoo.cn/frontend_web/src/pages/setting/limsample.vue

@@ -0,0 +1,555 @@
+<template>
+  <div v-loading="downloading" element-loading-text="数据拼命准备中,请稍候。。。">
+    <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" style="height: calc(100vh - 115px);">
+      <div slot="header">
+        <span>
+          <i class="icon icon-table2">样品类型</i>
+        </span>
+        <span style="float: right;">
+          <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" style="width: 165px;" v-model="keyword" placeholder="请输入样品名称" clearable></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="seachdata">查询</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-row :gutter="20">
+        <el-col :span="6">
+          <el-tabs tab-position="left" style="height: calc(100vh - 245px); margin-top: 5px; overflow: auto;">
+            <el-tab-pane label="样品类型">
+              <el-tree highlight-current :expand-on-click-node="true" node-key="id" :data="typeTreeList" :props="orgtreeprops"
+                :default-expanded-keys="userdepartment" @node-click="orgtreeNodeClick" ref="orgmanagetree">
+              </el-tree>
+            </el-tab-pane>
+          </el-tabs>
+        </el-col>
+        <el-col :span="18">
+          <el-table :data="tableList" border height="calc(100vh - 243px)">
+            <el-table-column label="操作" width="70" align="center" fixed>
+              <template slot-scope="scope">
+                <template v-if="scope.row.Parentid !== 0">
+                  <el-button size="small" type="text" @click="opendatadialog(2,scope.row,scope.$index)" icon="el-icon-edit"
+                    title="编辑"></el-button>
+                  <el-button size="small" type="text" @click="delSampleType(scope.row)" icon="el-icon-delete" title="删除"
+                    style="margin-left: 3px"></el-button>
+                </template>
+              </template>
+            </el-table-column>
+            <el-table-column prop="FullName" sortable min-width="100" label="样品名称" align="center" show-overflow-tooltip></el-table-column>
+            <el-table-column prop="Parentname" sortable min-width="100" label="样品类型" align="center"
+              show-overflow-tooltip></el-table-column>
+            <el-table-column prop="Description" sortable min-width="100" label="备注" align="center"
+              show-overflow-tooltip></el-table-column>
+          </el-table>
+        </el-col>
+      </el-row>
+      <!--分页-->
+      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+        :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+      </el-pagination>
+    </el-card>
+    <!--新增、编辑样品类型-->
+    <el-dialog :title="sampleTitle" :visible.sync="sampleTypeShow" size="small">
+      <el-form :model="sampleForm" :rules="rulesorganize" ref="sampleForm" label-width="120px">
+        <el-row>
+          <el-col :span="11">
+            <el-form-item label="检测报告">
+              <el-select ref="refProjectTypeId" v-model="sampleForm.ProjectTypeId" @change="chooseSampleType" clearable
+                filterable placeholder="请选择">
+                <el-option v-for="item in projectTypeList" :key="item.value" :label="item.FullName" :value="item.Id"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="11" v-if="parent_flag == 1">
+            <el-form-item label="样品类型">
+              <el-cascader :options="typeTreeList" :props="orgtreeprops" v-model="selectedorg" @change="getProject"
+                change-on-select :show-all-levels="false" placeholder="请选择组织" clearable filterable></el-cascader>
+            </el-form-item>
+          </el-col>
+          <el-col :span="22">
+            <el-form-item :label="(parent_flag =='1')?'样品名称':'样品类型'" prop="FullName">
+              <el-input v-model="sampleForm.FullName"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="5">
+            <el-form-item label="是否交接">
+              <el-checkbox v-model="sampleForm.ISdeliver" style="margin-left:20px"></el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="是否制备">
+              <el-checkbox v-model="sampleForm.ISprepare" style="margin-left:20px"></el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="11" v-if="sampleForm.ISprepare">
+            <el-form-item label="制备份数">
+              <el-input v-model="sampleForm.PrepareNum"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="11">
+            <el-form-item label="是否留样">
+              <el-checkbox v-model="sampleForm.ISreveive" style="margin-left:20px"></el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="11" v-if="sampleForm.ISreveive">
+            <el-form-item label="留样数量">
+              <el-input v-model="sampleForm.ReveiveNum"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="22">
+            <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="selectTestDetail">
+                  <el-checkbox v-for="v in sampleTypeList" @change="CheckTestDetail" :label="v.Id+','+v.FullName" style="margin-left:8px;margin-top:5px" :key="v">{{v.FullName}}</el-checkbox>
+                </el-checkbox-group>
+              </div>
+              <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="CheckTestDetailAll">全选</el-checkbox>
+            </el-form-item>
+          </el-col>
+          <el-col :span="22">
+            <el-form-item label="描述" prop="Sender">
+              <el-input type="textarea" v-model="sampleForm.description"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="sampleTypeShow = false">取 消</el-button>
+        <el-button type="primary" @click="addSampleType('sampleForm')">确 定</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+  import {
+    mapGetters
+  } from 'vuex'
+  export default {
+    name: 'organize',
+
+    data() {
+      return {
+        downloading: true,
+        currentItemCount: 0,
+        currentPage: 1,
+        size: 10,
+        tableList: [], // 处理分页用
+        keyword: '',
+        sampleTypeShow: false,
+        sampleTitle: '',
+        testTypeList: [],
+        projectTypeList: [], //检验项目大项
+        sampleTypeList: [], //检测项目 小项
+        selectTestDetail: [],
+        sampleForm: {
+          IsInnerOrganize: 1,
+          ProjectTypeId: '',
+          ProjectType: '',
+          TestDetailId: '',
+          ParentId: 0,
+          FullName: '',
+          FullNameOzId: '',
+          description: '',
+          id: 0,
+          ISdeliver: false,
+          ISprepare: false,
+          PrepareNum: 0,
+          ISreveive: false,
+          ReveiveNum: 0.0
+        },
+        rulesorganize: {
+          FullName: [{
+            required: true,
+            message: '请输入样品类型',
+            trigger: 'blur'
+          }]
+        },
+        operatingitem: 0,
+        permissiondialogtitle: '',
+        permissiondatadialogVisible: false,
+        binddevices: [],
+        devices: [],
+        devicesallid: [],
+        isIndeterminate: true,
+        checkAll: false,
+        update: true,
+        childArr: [],
+        parentArr: [],
+        // 级联选项
+        options: [],
+        currentOrgan: '请选择套餐名称',
+        havechild: false,
+        // 数据传输
+        currId: 0,
+        currOrganName: '',
+        typeTreeList: [],
+        orgtreeprops: {
+          value: 'id',
+          label: 'FullName',
+          children: 'children'
+        },
+        selectedorg: [],
+        userdepartment: [],
+        parent_flag: 1
+      }
+    },
+
+    created() {
+      this.initData()
+      this.getProjectType()
+      this.gettreelist()
+    },
+    updated() {},
+    watch: {},
+    computed: mapGetters({
+      authUser: 'authUser'
+    }),
+    methods: {
+      initData() {
+        let _this = this
+        // paginate
+        let params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          keyword: this.keyword,
+          parentId: this.parentId
+        }
+        // request
+        this.$axios.get('/limsampletype/smpletypelistbyorg', {
+            params
+          })
+          .then(res => {
+            // response
+            _this.tableList = res.data.items
+            _this.currentItemCount = res.data.currentItemCount
+            _this.downloading = false
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+
+      gettreelist() {
+        let _this = this
+        _this.$axios.get('/limsampletype/sampletypetreebyorg', {})
+          .then(res => {
+            _this.typeTreeList = window.toolfun_gettreejson(res.data.items, 'Id', 'ParentId',
+              'Id,FullName,ProjectType,ProjectTypeId')
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+
+      getProject() {
+        let _this = this
+        for (var i = 0; i < _this.typeTreeList.length; i++) {
+          if (_this.selectedorg == _this.typeTreeList[i].id) {
+            _this.sampleForm.ProjectTypeId = _this.typeTreeList[i].ProjectTypeId
+            _this.sampleForm.ProjectType = _this.typeTreeList[i].ProjectType
+            _this.chooseSampleType()
+          }
+        }
+      },
+
+      addSampleType(formName) {
+        let _this = this
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            _this.sampleForm.ProjectTypeId = parseInt(_this.sampleForm.ProjectTypeId)
+            _this.sampleForm.ProjectType = _this.$refs.refProjectTypeId.selectedLabel + ''
+            _this.sampleForm.ParentId = parseInt(_this.selectedorg[_this.selectedorg.length - 1])
+            if (_this.sampleForm.ISdeliver) {
+              _this.sampleForm.ISdeliver = 1
+            } else if (!_this.sampleForm.ISdeliver) {
+              _this.sampleForm.ISdeliver = 2
+            }
+            if (_this.sampleForm.ISprepare) {
+              _this.sampleForm.ISprepare = 1
+              _this.sampleForm.PrepareNum = parseInt(_this.sampleForm.PrepareNum)
+            } else if (!_this.sampleForm.ISprepare) {
+              _this.sampleForm.ISprepare = 2
+            }
+            if (_this.sampleForm.ISreveive) {
+              _this.sampleForm.ISreveive = 1
+              _this.sampleForm.ReveiveNum = parseFloat(_this.sampleForm.ReveiveNum)
+            } else if (!_this.sampleForm.ISreveive) {
+              _this.sampleForm.ISreveive = 2
+            }
+            if (_this.sampleForm.ParentId === _this.sampleForm.id) {
+              _this.$message({
+                type: 'warning',
+                message: '上一级组织不能为自身数据!'
+              })
+              return
+            }
+            if (_this.operatingitem === 1) {
+              _this.sampleForm.IsInnerOrganize = 1
+              _this.$axios.post('limsampletype/sampletypeadd/', _this.sampleForm)
+                .then(res => {
+                  // response
+                  if (res.data.code === 0) {
+                    _this.$message({
+                      type: 'success',
+                      message: res.data.message
+                    })
+                    _this.sampleTypeShow = false
+                    // 重新加载tree数据
+                    _this.initData()
+                    _this.gettreelist()
+                  } else {
+                    _this.$message({
+                      type: 'warning',
+                      message: res.data.message
+                    })
+                  }
+                })
+                .catch(err => {
+                  // handle error
+                  console.error(err)
+                })
+            } else if (_this.operatingitem === 2) {
+              _this.$axios.put('limsampletype/sampletypedit/' + _this.sampleForm.id, _this.sampleForm)
+                .then(res => {
+                  // response
+                  if (res.data.code === 0) {
+                    _this.$message({
+                      type: 'success',
+                      message: res.data.message
+                    })
+                    _this.sampleTypeShow = false
+                    // 更新界面
+                    _this.initData()
+                    _this.gettreelist()
+                  } else {
+                    _this.$message({
+                      type: 'warning',
+                      message: res.data.message
+                    })
+                  }
+                })
+                .catch(() => {})
+            }
+          } else {
+            return false
+          }
+        })
+      },
+
+      opendatadialog(item, v, index) {
+        this.operatingitem = item
+        this.parent_flag = 1
+        this.clearsampleForm()
+        this.sampleTypeShow = true
+        let _this = this
+        if (item === 1) {
+          _this.sampleTitle = `新增样品类型`
+          // 选中状态
+          _this.selectedorg = []
+        } else if (item === 2) {
+          _this.sampleTitle = `编辑样品类型(${v.FullName})`
+          _this.sampleForm.id = v.Id
+          _this.sampleForm.ProjectTypeId = v.ProjectTypeId
+          _this.sampleForm.ProjectType = v.ProjectType
+          //_this.sampleForm.ParentId = v.ParentId
+          if (v.ParentId && v.ParentId > 0) {
+            _this.sampleForm.ParentId = v.ParentId
+            _this.sampleForm.ParentName = v.Parentname
+          } else {
+            _this.parent_flag = 2
+          }
+          _this.sampleForm.FullName = v.FullName
+          _this.sampleForm.description = v.Description
+          //处理checkbox
+          if (v.ISdeliver == 1) {
+            _this.sampleForm.ISdeliver = true
+          } else if (v.ISdeliver == 2) {
+            _this.sampleForm.ISdeliver = false
+          }
+          if (v.ISprepare == 1) {
+            _this.sampleForm.ISprepare = true
+          } else if (v.ISprepare == 2) {
+            _this.sampleForm.ISprepare = false
+          }
+          if (v.ISreveive == 1) {
+            _this.sampleForm.ISreveive = true
+          } else if (v.ISreveive == 2) {
+            _this.sampleForm.ISreveive = false
+          }
+          _this.sampleForm.ReveiveNum = v.ReveiveNum
+          _this.sampleForm.PrepareNum = v.PrepareNum
+          //处理样品类型
+          _this.selectedorg = []
+          _this.selectedorg.push(v.ParentId)
+          //处理检测项目
+          _this.sampleForm.TestDetailId = v.TestDetailId
+          _this.selectTestDetail = _this.sampleForm.TestDetailId.split('/')
+          _this.chooseSampleType()
+        }
+      },
+
+      delSampleType(val) {
+        let _this = this
+        _this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            _this.$axios
+              .delete("limsampletype/deletesampletype/" + val.Id, {})
+              .then(function (response) {
+                // response
+                if (response.data.code === 0) {
+                  _this.$message({
+                    type: "success",
+                    message: response.data.message
+                  });
+                  // 更新界面
+                  _this.initData()
+                } else {
+                  _this.$message({
+                    type: "warning",
+                    message: response.data.message
+                  });
+                }
+              })
+              .catch(function (error) {
+                console.log(error)
+              });
+          })
+          .catch(() => {});
+      },
+
+      chooseSampleType() {
+        this.sampleTypeList = []
+        this.getSampleType()
+      },
+
+      //检验报告
+      getProjectType() {
+        let _this = this
+        _this.$axios.get('/testtype/testypetreebyorg', {})
+          .then(res => {
+            _this.testTypeList = res.data.items
+            for (var i = 0; i < _this.testTypeList.length; i++) {
+              if (_this.testTypeList[i].ParentId == 0) {
+                _this.projectTypeList.push(_this.testTypeList[i])
+              }
+            }
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+
+      //检测小项目
+      getSampleType() {
+        let _this = this
+        _this.sampleTypeList = []
+        for (var i = 0; i < _this.testTypeList.length; i++) {
+          if (_this.testTypeList[i].ParentId == _this.sampleForm.ProjectTypeId) {
+            _this.sampleTypeList.push(_this.testTypeList[i])
+          }
+        }
+        this.isIndeterminate = true
+      },
+
+      CheckTestDetail() {
+        let checkedCount = this.selectTestDetail.length
+        this.checkAll = checkedCount === this.sampleTypeList.length
+        this.isIndeterminate = checkedCount > 0 && checkedCount < this.sampleTypeList.length
+        this.chooseTestDetail()
+      },
+      CheckTestDetailAll(val) {
+        let _this = this
+        _this.selectTestDetail = []
+        if (val) {
+          _this.sampleTypeList.forEach((item, k) => {
+            _this.selectTestDetail.push(item.Id + ',' + item.FullName)
+          })
+          _this.sampleForm.TestDetailId = _this.selectTestDetail.join('/')
+          _this.isIndeterminate = false
+        }
+      },
+
+      chooseTestDetail() {
+        let _this = this
+        _this.sampleForm.TestDetailId = _this.selectTestDetail.join('/')
+      },
+
+      orgtreeNodeClick(data) {
+        this.parentId = data.id + ''
+        this.initData()
+        this.currentPage = 1
+      },
+      seachdata() {
+        this.currentPage = 1
+        this.initData()
+      },
+
+      clearsampleForm() {
+        this.sampleForm = {
+          id: 0,
+          FullName: '',
+          ParentId: 0,
+          ProjectType: '',
+          ProjectTypeId: '',
+          TestDetailId: '',
+          description: '',
+          ISdeliver: false,
+          ISprepare: false,
+          PrepareNum: '',
+          ISreveive: false,
+          ReveiveNum: 0.0,
+        }
+      },
+
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initData()
+      },
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initData()
+      },
+      jstimehandle(val) {
+        val = val.replace('T', ' ')
+        return val.substring(0, 19)
+      },
+    }
+  }
+
+</script>
+
+<style lang="scss">
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+
+  .triggerone {
+    font-size: 13px;
+    margin-left: 80px;
+  }
+
+  .plab {
+    font-size: 13px;
+    color: #999;
+  }
+
+</style>