瀏覽代碼

Merge branch 'test' into master

luolei 4 年之前
父節點
當前提交
e18ef299ee

+ 10 - 7
src/App.vue

@@ -45,25 +45,28 @@ export default {
       },
       error => {
         if (error.response) {
-          console.log(error.response,'error.response');
+          console.log(error.response, 'error.response');
           switch (error.response.status) {
             case 401:
               // 返回 401 清除token信息并跳转到登录页面
               localStorage.removeItem('token');
               this.logOut();
-              return Promise.reject({code:"900010001",msg: '账号失效,请重新登录'})
+              return Promise.reject({
+                code: '900010001',
+                msg: '账号失效,请重新登录'
+              });
               // break
-              return;         
+              return;
             case 500:
               // 返回 500
               this.message({
                 message: '该服务正在升级,请稍后再试',
                 type: 'warning'
               });
-              break
-              // return;
-            default: 
-              return 
+              break;
+            // return;
+            default:
+              return;
           }
         }
         return Promise.reject(error); // 返回接口返回的错误信息

+ 386 - 335
src/components/common/HomePage.vue

@@ -1,390 +1,441 @@
 <template>
-    <el-container :class="getRole">
-        <el-aside>
-            <div class="logo">
-                <p v-if="userLoginDTO&&userLoginDTO.type=='0'"><b>医院知识库后台管理系统</b></p>
-            </div>
-            <lt-menu v-if="menuWrappers&&menuWrappers.length" v-bind:role="getRole" v-bind:data="menuWrappers"></lt-menu>
-        </el-aside>
-        <el-container>
-            <el-header class="clearfix">
-                <div class="title fl">
-                    <h2>{{organization&&organization.name}}</h2>
-                </div>
-                <div class="userInfo fr">
-                    <span class="username" @click="goCenter">
-                      <i>{{userLoginDTO&&userLoginDTO.linkman}}</i>
-                      <img class="actionDo" src="../../images/arrow_down.png" />
-                    </span>
-                    <ul class="action">
-                      <li @click="changeWords">修改密码</li>
-                      <li @click="logout">退出系统</li>
-                    </ul>
-                </div>
-            </el-header>
-            <el-main>
-              <router-view v-if="ok" v-on:status-change="changeStatus"></router-view>
-            </el-main>
-        </el-container>
-        <el-dialog
-          title="修改密码"
-          class="changewords"
-          :visible.sync="changePassWord"
-          width="600"
-          top="20vh"
-          center>
-          <el-form :model="ruleForm2" :rules="rules2" ref="ruleForm2" label-width="100px" class="demo-ruleForm">
-            <el-form-item label="旧密码:" prop="oldpass">
-              <el-input type="password" placeholder="请输入旧密码" @keyup.enter.native="submitForm('ruleForm2')" v-model.trim="ruleForm2.oldpass" auto-complete="off"></el-input>
-            </el-form-item>            
-            <el-form-item label="新密码:" prop="pass">
-              <el-input type="password" placeholder="6-20位,可输入字符、数字或符号" @keyup.enter.native="submitForm('ruleForm2')" v-model.trim="ruleForm2.pass" auto-complete="off"></el-input>
-            </el-form-item>
-            <el-form-item label="再次输入新密码:" prop="checkPass">
-              <el-input type="password" placeholder="6-20位,可输入字符、数字或符号" @keyup.enter.native="submitForm('ruleForm2')" v-model.trim="ruleForm2.checkPass" auto-complete="off"></el-input>
-            </el-form-item>
-          </el-form>
-          <span slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="submitForm('ruleForm2')">确 定</el-button>
+  <el-container :class="getRole">
+    <el-aside>
+      <div class="logo">
+        <p v-if="userLoginDTO&&userLoginDTO.type=='0'">
+          <b>医院知识库后台管理系统</b>
+        </p>
+      </div>
+      <lt-menu
+        v-if="menuWrappers&&menuWrappers.length"
+        v-bind:role="getRole"
+        v-bind:data="menuWrappers"
+      ></lt-menu>
+    </el-aside>
+    <el-container>
+      <el-header class="clearfix">
+        <div class="title fl">
+          <h2>{{organization&&organization.name}}</h2>
+        </div>
+        <div class="userInfo fr">
+          <span class="username" @click="goCenter">
+            <i>{{userLoginDTO&&userLoginDTO.linkman}}</i>
+            <img class="actionDo" src="../../images/arrow_down.png" />
           </span>
-        </el-dialog>
+          <ul class="action">
+            <li @click="changeWords">修改密码</li>
+            <li @click="logout">退出系统</li>
+          </ul>
+        </div>
+      </el-header>
+
+      <el-main ref="main">
+        <!-- <el-scrollbar style="height: 100%"> -->
+          <router-view v-if="ok" v-on:status-change="changeStatus"></router-view>
+        <!-- </el-scrollbar> -->
+      </el-main>
     </el-container>
+    <el-dialog
+      title="修改密码"
+      class="changewords"
+      :visible.sync="changePassWord"
+      width="600"
+      top="20vh"
+      center
+    >
+      <el-form
+        :model="ruleForm2"
+        :rules="rules2"
+        ref="ruleForm2"
+        label-width="100px"
+        class="demo-ruleForm"
+      >
+        <el-form-item label="旧密码:" prop="oldpass">
+          <el-input
+            type="password"
+            placeholder="请输入旧密码"
+            @keyup.enter.native="submitForm('ruleForm2')"
+            v-model.trim="ruleForm2.oldpass"
+            auto-complete="off"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="新密码:" prop="pass">
+          <el-input
+            type="password"
+            placeholder="6-20位,可输入字符、数字或符号"
+            @keyup.enter.native="submitForm('ruleForm2')"
+            v-model.trim="ruleForm2.pass"
+            auto-complete="off"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="再次输入新密码:" prop="checkPass">
+          <el-input
+            type="password"
+            placeholder="6-20位,可输入字符、数字或符号"
+            @keyup.enter.native="submitForm('ruleForm2')"
+            v-model.trim="ruleForm2.checkPass"
+            auto-complete="off"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm('ruleForm2')">确 定</el-button>
+      </span>
+    </el-dialog>
+  </el-container>
 </template>
 
 <script>
-  import LtMenu from '../common/Menu.vue';
-  import api from '@api/index.js';
-  import newIcon from '../../images/new.png';
-  import md5 from 'js-md5'
-  export default {
-    name: 'homepage',
-    components: {
-      'lt-menu': LtMenu,
-    },
-    data() {
-      var validatePass1 = (rule, value, callback) => {
-        if (value === '') {
-          callback(new Error('请输入旧密码'));
-        } else {
-          callback();
-        }
-      };
-      var validatePass = (rule, value, callback) => {
-        if (value === '') {
-          callback(new Error('请输入新密码'));
-        } else {
-          if (this.ruleForm2.checkPass !== '') {
-            this.$refs.ruleForm2.validateField('checkPass');
-          }
-          callback();
-        }
-      };
-      var validatePass2 = (rule, value, callback) => {
-        if (value === '') {
-          callback(new Error('请再次输入密码'));
-        } else if (value !== this.ruleForm2.pass) {
-          callback(new Error('两次输入密码不一致!'));
-        } else {
-          callback();
+import LtMenu from '../common/Menu.vue';
+import api from '@api/index.js';
+import newIcon from '../../images/new.png';
+import md5 from 'js-md5';
+export default {
+  name: 'homepage',
+  components: {
+    'lt-menu': LtMenu
+  },
+  data() {
+    var validatePass1 = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请输入旧密码'));
+      } else {
+        callback();
+      }
+    };
+    var validatePass = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请输入新密码'));
+      } else {
+        if (this.ruleForm2.checkPass !== '') {
+          this.$refs.ruleForm2.validateField('checkPass');
         }
-      };
-      return {
-        menuWrappers: null,
-        organization: null,
-        userLoginDTO: null,
-        authStatus: null,
-        authStatusName:'',
-        ok:false,           //是否已获取到菜单
-        versionName:'',
-        versionVisible:false,
-        versionInfo:'',
-        isNewV:false,
-        version:null,       //版本信息接口返回的数据
-        changePassWord: false,
+        callback();
+      }
+    };
+    var validatePass2 = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请再次输入密码'));
+      } else if (value !== this.ruleForm2.pass) {
+        callback(new Error('两次输入密码不一致!'));
+      } else {
+        callback();
+      }
+    };
+    return {
+      menuWrappers: null,
+      organization: null,
+      userLoginDTO: null,
+      authStatus: null,
+      authStatusName: '',
+      ok: false, //是否已获取到菜单
+      versionName: '',
+      versionVisible: false,
+      versionInfo: '',
+      isNewV: false,
+      version: null, //版本信息接口返回的数据
+      changePassWord: false,
 
-        ruleForm2: {
-          pass: '',
-          checkPass: '',
-          oldpass: ''
-        },
-        rules2: {
-          oldpass: [
-            { validator: validatePass1, trigger: 'change',required:true }
-          ],
-          pass: [
-            { min: 6, max: 20, message: '密码要求6-20位,可输入字母、数字或符号', trigger: 'blur' },
-            { validator: validatePass, trigger: 'blur',required:true }
-          ],
-          checkPass: [
-            { min: 6, max: 20, message: '密码要求6-20位,可输入字母、数字或符号', trigger: 'blur' },
-            { validator: validatePass2, trigger: 'blur',required:true }
-          ]
-        }
+      ruleForm2: {
+        pass: '',
+        checkPass: '',
+        oldpass: ''
+      },
+      rules2: {
+        oldpass: [
+          { validator: validatePass1, trigger: 'change', required: true }
+        ],
+        pass: [
+          {
+            min: 6,
+            max: 20,
+            message: '密码要求6-20位,可输入字母、数字或符号',
+            trigger: 'blur'
+          },
+          { validator: validatePass, trigger: 'blur', required: true }
+        ],
+        checkPass: [
+          {
+            min: 6,
+            max: 20,
+            message: '密码要求6-20位,可输入字母、数字或符号',
+            trigger: 'blur'
+          },
+          { validator: validatePass2, trigger: 'blur', required: true }
+        ]
       }
-    },
-    computed: {
-      getRole: function () {
-        return 'admin'
+    };
+  },
+  computed: {
+    getRole: function() {
+      return 'admin';
+    }
+  },
+  created() {
+    //获取菜单
+    this.getMenuList();
+  },
+  mounted() {},
+  watch: {
+    $route: function(to, from) {
+      if (from.name == 'login') {
+        this.getMenuList();
       }
+      if (to.path == '/') {
+        // 退出时清空菜单
+        this.menuWrappers = [];
+        this.isNewV = false;
+      }
+    }
+  },
+  methods: {
+    CalcuMD5(password) {
+      password = md5(password);
+      return password;
     },
-    created () {
-      //获取菜单
-      this.getMenuList();
-    },
-    watch:{
-      '$route': function(to,from){
-            if(from.name=='login'){
-              this.getMenuList();
-            }
-            if(to.path=='/'){       // 退出时清空菜单
-              this.menuWrappers=[];
-              this.isNewV = false;
-            }
-        }
-    },
-    methods: {
-      CalcuMD5(password){
-        password = md5(password);
-        return password;
-      },
-      submitForm(formName) {
-        this.$refs[formName].validate((valid) => {
-          if (valid) {
-            api.midifyPassword({
-              'password':this.CalcuMD5(this.ruleForm2.oldpass),
-              'modifyPassword':this.CalcuMD5(this.ruleForm2.pass)
-            }).then((res) => {
+    submitForm(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          api
+            .midifyPassword({
+              password: this.CalcuMD5(this.ruleForm2.oldpass),
+              modifyPassword: this.CalcuMD5(this.ruleForm2.pass)
+            })
+            .then(res => {
               if (res.data.code == '0') {
                 const data = res.data.data;
                 this.$refs['ruleForm2'].resetFields();
-                this.changePassWord = false
+                this.changePassWord = false;
                 this.$message({
-                  message: '修改成功',
+                  message: '修改成功,请重新登录',
                   type: 'success',
                   duration: 1500,
-                  onClose:()=>{
-                    this.logout()
+                  onClose: () => {
+                    this.logout();
                   }
-                })
-              } else if(res.data.code === '00020005'){
+                });
+              } else if (res.data.code === '00020005') {
                 console.log('原密码错误');
-                  this.$refs['ruleForm2'].clearValidate()
-                  // 手动操作校验、展示登录错误信息
-                  this.rules2.oldpass.push({ // js新增一个自定义校验
-                    validator: (rule, value, callback) => {
-                      callback('旧密码输入错误')
-                    },
-                    trigger: 'change'
-                  })
-                  this.$refs['ruleForm2'].validateField('oldpass') // 手动校验
-                  this.rules2.oldpass = this.rules2.oldpass.slice(0, 1) // 删除校验
-              }else{
+                this.$refs['ruleForm2'].clearValidate();
+                // 手动操作校验、展示登录错误信息
+                this.rules2.oldpass.push({
+                  // js新增一个自定义校验
+                  validator: (rule, value, callback) => {
+                    callback('旧密码输入错误');
+                  },
+                  trigger: 'change'
+                });
+                this.$refs['ruleForm2'].validateField('oldpass'); // 手动校验
+                this.rules2.oldpass = this.rules2.oldpass.slice(0, 1); // 删除校验
+              } else {
                 this.$message({
                   message: res.data.msg,
                   type: 'error',
-                  duration: 1000,
-                })
+                  duration: 1000
+                });
               }
-            }).catch((error) => {
+            })
+            .catch(error => {
               console.log(error);
             });
-          } else {
-            console.log('error submit!!');
-            return false;
-          }
-        });
-      },
-      resetForm(formName) {
-        this.$refs[formName].resetFields();
-      },
-      changeWords(){
-        this.changePassWord = true
-        this.$refs['ruleForm2'] && this.$refs['ruleForm2'].resetFields();
-      },
-      getMenuList(){
-        api.getAccessdMenu().then((res) => {
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields();
+    },
+    changeWords() {
+      this.changePassWord = true;
+      this.$refs['ruleForm2'] && this.$refs['ruleForm2'].resetFields();
+    },
+    getMenuList() {
+      api
+        .getAccessdMenu()
+        .then(res => {
           if (res.data.code == '0') {
             const data = res.data.data;
             this.ok = true;
-            const hasConcole=data.menuWrappers.find((it)=>{
-              return it.code.indexOf('-KZT')>-1;
+            const hasConcole = data.menuWrappers.find(it => {
+              return it.code.indexOf('-KZT') > -1;
             });
             this.menuWrappers = data.menuWrappers;
             this.organization = data.organization;
             this.userLoginDTO = data.userLoginDTO;
-            localStorage.setItem('userLoginDTO', JSON.stringify(data.userLoginDTO));
-            if(hasConcole){
+            localStorage.setItem(
+              'userLoginDTO',
+              JSON.stringify(data.userLoginDTO)
+            );
+            if (hasConcole) {
               const url = '/admin/LT-KZT';
-              this.$router.push({path:url});
+              this.$router.push({ path: url });
             }
           }
-        }).catch((error) => {
+        })
+        .catch(error => {
           console.log(error);
         });
-      },
-      isNewVersion(){           //判断是否为新版
-
-      },
-      changeStatus(text){       //账号信息中提交认证后修改状态
-        this.authStatus = 2;
-        this.authStatusName = text;
-      },
-      goCenter(){
-        
-      },
-      logout(){//退出
-        localStorage.removeItem('token');
-        this.$router.push({path:'/'});
-      }
+    },
+    isNewVersion() {
+      //判断是否为新版
+    },
+    changeStatus(text) {
+      //账号信息中提交认证后修改状态
+      this.authStatus = 2;
+      this.authStatusName = text;
+    },
+    goCenter() {},
+    logout() {
+      //退出
+      localStorage.removeItem('token');
+      this.$router.push({ path: '/' });
     }
   }
+};
 </script>
 
 <style lang="less">
+@import '../../less/common.less';
 
-    @import '../../less/common.less';
-
-    .user .el-menu-item.is-active {
-        color: @userBase;
-    }
+.user .el-menu-item.is-active {
+  color: @userBase;
+}
 
-    .admin .el-menu-item.is-active {
-        color: @adminBase;
-    }
-    .admin .username{
-        cursor: pointer;
-    }
-    .version-info h3{
-        font-size: 14px;
-        margin-bottom: 20px;
-        span{
-            float: right;
-            font-weight: normal;
-        }
-    }
+.admin .el-menu-item.is-active {
+  color: @adminBase;
+}
+.admin .username {
+  cursor: pointer;
+}
+.version-info h3 {
+  font-size: 14px;
+  margin-bottom: 20px;
+  span {
+    float: right;
+    font-weight: normal;
+  }
+}
 </style>
 <style lang="less" scoped>
-    @import '../../less/common.less';
-    .el-menu-vertical-demo.el-menu{
-        height: calc(100% - 120px);
-        overflow-y: auto;
-    }
-    .userInfo {
+@import '../../less/common.less';
+.el-menu-vertical-demo.el-menu {
+  height: calc(100% - 120px);
+  overflow-y: auto;
+}
+.userInfo {
+  position: relative;
+  padding-left: 20px;
+  cursor: pointer;
+  .username {
+    font-size: 14px;
+    color: #545455;
+    img {
+      width: 10px;
+      margin-left: 8px;
       position: relative;
-      padding-left: 20px;
+      bottom: 2px;
+    }
+  }
+  &:hover .action {
+    display: block;
+  }
+  .action {
+    width: 94px;
+    height: 70px;
+    box-shadow: 1px 2px 8px 1px #ccc;
+    border-radius: 3px;
+    position: absolute;
+    top: 50px;
+    right: -5px;
+    z-index: 999;
+    background-color: #fff;
+    color: #333;
+    font-size: 14px;
+    display: none;
+    li {
+      height: 35px;
+      line-height: 35px;
+      text-align: center;
       cursor: pointer;
-      .username {
-        font-size: 14px;
-        color: #545455;
-        img {
-          width: 10px;
-          margin-left: 8px;
-          position: relative;
-          bottom: 2px;
-        }
-      }
-      &:hover .action {
-          display: block;
+      &:hover {
+        background-color: #f2f2f2;
       }
-      .action {
-        width: 94px;
-        height: 70px;
-        box-shadow: 1px 2px 8px 1px #ccc;
-        border-radius: 3px;
-        position: absolute;
-        top: 50px;
-        right: -5px;
-        z-index: 999;
-        background-color: #fff;
-        color: #333;
-        font-size: 14px;
-        display: none;
-        li {
-          height: 35px;
-          line-height: 35px;
-          text-align: center;
-          cursor: pointer;
-          &:hover {
-            background-color: #F2F2F2;
-          }
-        }
-      }  
-    }
-    .version{
-        position: fixed;
-        bottom: 0;
-        width: @aside-width;
-        min-width: 270px;
-        font-size: 12px;
-        /*text-indent: 50px;*/
-        text-align: center;
-        height:54px;
-        line-height: 54px;
-        background: #fff;
-        i{
-            display: inline-block;
-            width: 20px;
-            height: 16px;
-            img{
-                vertical-align: text-top;
-            }
-        }
-    }
-    .user .version a{
-        color: @userBase;
-    }
-    .admin .version a{
-        color: @adminBase;
     }
-    .user .logo {
-        background: @userBase;
-
-    p {
-        font-size: 16px;
-        line-height: normal
-    }
-
-    }
-    .admin .logo {
-        background: @adminBase;
-
-    p {
-        font-size: 18px;
-        line-height: 40px;
-    }
-
+  }
+}
+.version {
+  position: fixed;
+  bottom: 0;
+  width: @aside-width;
+  min-width: 270px;
+  font-size: 12px;
+  /*text-indent: 50px;*/
+  text-align: center;
+  height: 54px;
+  line-height: 54px;
+  background: #fff;
+  i {
+    display: inline-block;
+    width: 20px;
+    height: 16px;
+    img {
+      vertical-align: text-top;
     }
-    .title {
+  }
+}
+.user .version a {
+  color: @userBase;
+}
+.admin .version a {
+  color: @adminBase;
+}
+.user .logo {
+  background: @userBase;
 
-    h2 {
-        display: inline-block;
-        line-height: 60px;
-        font-size: 18px;
-    }
+  p {
+    font-size: 16px;
+    line-height: normal;
+  }
+}
+.admin .logo {
+  background: @adminBase;
 
+  p {
+    font-size: 18px;
+    line-height: 40px;
+  }
+}
+.title {
+  h2 {
+    display: inline-block;
+    line-height: 60px;
+    font-size: 18px;
+  }
+}
+.block {
+  height: 40px;
+  width: 100%;
+  background: #fff;
+  box-shadow: 0px 1px 2px #c9c9c9;
+}
+.el-main {
+  padding: 0;
+}
+.el-button {
+  margin-left: 15px;
+}
+.changewords {
+  // /deep/ .el-icon-circle-close{
+  //   display: none;
+  // }
+  .dialog-footer {
+    .el-button {
+      // float: right;
+      position: relative;
+      left: 200px;
     }
-    .block {
-        height: 40px;
-        width: 100%;
-        background: #fff;
-        box-shadow: 0px 1px 2px #c9c9c9;
-    }
-		.el-main{
-			padding: 0;
-		}
-    .el-button{
-      margin-left: 15px;
-    }
-    .changewords{
-      // /deep/ .el-icon-circle-close{
-      //   display: none;
-      // }
-      .dialog-footer{
-        .el-button{
-          // float: right;
-          position: relative;
-          left: 200px;
-        }
-      }
-    }
+  }
+}
 </style>

+ 136 - 101
src/components/icss/AddMedicinePrompt.vue

@@ -1,98 +1,106 @@
 <template>
-  <div class="NoiseTemplateWrapper TemplateWrapper knowledgeWrapper">
-    <crumbs
-      :title="'医学术语静态知识维护-'+title"
-      class="topBack"
-      :param="$route.params"
-      linkTo="MedicinePrompt"
-    ></crumbs>
-    <div class="info-container">
-      <el-form :rules="rules" :model="form" label-width="160px" ref="groups">
-        <el-form-item v-if="!isEdit" label="选择标准术语:" prop="selectedTerm">
-          <el-select
-            v-model="form.selectedTerm"
-            filterable
-            remote
-            clearable
-            :loading="showDrop"
-            loading-text="加载中..."
-            @change="changeWord"
-            @visible-change="handleVisible"
-            value-key="conceptId"
-            @clear="handleClear"
-            ref="termName"
-            placeholder="搜索"
-            :remote-method="searchTerms"
+  <el-scrollbar style="height: 100%" ref="elscrollbar" id="message-container">
+    <div class="NoiseTemplateWrapper TemplateWrapper knowledgeWrapper">
+      <crumbs
+        :title="'医学术语静态知识维护-'+title"
+        class="topBack"
+        :param="$route.params"
+        linkTo="MedicinePrompt"
+      ></crumbs>
+      <div class="info-container">
+        <el-form :rules="rules" :model="form" label-width="160px" ref="groups">
+          <el-form-item v-if="!isEdit" label="选择标准术语:" prop="selectedTerm">
+            <el-select
+              v-model="form.selectedTerm"
+              filterable
+              remote
+              clearable
+              :loading="showDrop"
+              loading-text="加载中..."
+              @change="changeWord"
+              @visible-change="handleVisible"
+              value-key="conceptId"
+              @clear="handleClear"
+              ref="termName"
+              placeholder="搜索"
+              :remote-method="searchTerms"
+            >
+              <el-option
+                v-for="(term,idx) in terms"
+                :key="idx"
+                :label="term.name+(term.typeName?'('+term.typeName+')':'')"
+                :value="term"
+                :title="term.name+(term.typeName?'('+term.typeName+')':'')"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="已选择标准术语:" label-width="160px">{{form.selectedTermName}}</el-form-item>
+          <el-form-item
+            v-if="form.selectedTerm&&(form.typeId==1||form.typeId==3||form.typeId==4||form.typeId==5)"
+            :label="titleChange"
+            prop="titleChange"
+            label-width="160px"
           >
-            <el-option
-              v-for="(term,idx) in terms"
-              :key="idx"
-              :label="term.name+(term.typeName?'('+term.typeName+')':'')"
-              :value="term"
-              :title="term.name+(term.typeName?'('+term.typeName+')':'')"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="已选择标准术语:" label-width="160px">{{form.selectedTermName}}</el-form-item>
-        <el-form-item
-          v-if="form.selectedTerm&&(form.typeId==1||form.typeId==3||form.typeId==4||form.typeId==5)"
-          :label="titleChange"
-          prop="titleChange"
-          label-width="160px"
-        >
-          <el-input v-model="form.titleChange"></el-input>
-        </el-form-item>
-        <p class="line"></p>
-        <InfoParagraph
-          v-for="(f,i) in form.prags"
-          v-if="!upload"
-          :key="(i+1)*10000 + showType"
-          :data="f"
-          :index="i"
-          :total="form.prags.length"
-          :isEdit="isEdit"
-          ref="subForm"
-          @add="addParagraph(i)"
-          @del="delParagraph"
-          @reOrder="reOrder"
-          :showType="showType"
-        ></InfoParagraph>
-        <el-form-item v-if="upload" label="标题名称:" prop="fileTitle" label-width="160px">
-          <el-input v-model="form.fileTitle"></el-input>
-        </el-form-item>
-        <el-form-item v-if="upload" label="上传文件:" ref="upload" prop="fileList" label-width="160px">
-          <el-upload
-            @mouseenter.native="handleMouseenter"
-            @mouseleave.native="handleMouseleave"
-            class="upload-demo"
-            :action="config.urls.promptServer"
-            name="upfile"
-            :multiple="false"
-            :limit="1"
-            :on-preview="handlePreview"
-            :on-remove="handleRemove"
-            :before-upload="handleBeforeUpLoad"
-            :before-remove="beforeRemove"
-            :on-change="handleChange"
-            :on-success="handleSuccess"
-            :show-file-list="showFileList"
-            :file-list="form.fileList"
+            <el-input v-model="form.titleChange"></el-input>
+          </el-form-item>
+          <p class="line"></p>
+          <InfoParagraph
+            v-for="(f,i) in form.prags"
+            v-if="!upload"
+            :key="(i+1)*10000 + showType"
+            :data="f"
+            :index="i"
+            :total="form.prags.length"
+            :isEdit="isEdit"
+            ref="subForm"
+            @add="addParagraph(i)"
+            @del="delParagraph"
+            @reOrder="reOrder"
+            :showType="showType"
+          ></InfoParagraph>
+          <el-form-item v-if="upload" label="标题名称:" prop="fileTitle" label-width="160px">
+            <el-input v-model="form.fileTitle"></el-input>
+          </el-form-item>
+          <el-form-item
+            v-if="upload"
+            label="上传文件:"
+            ref="upload"
+            prop="fileList"
+            label-width="160px"
           >
-            <el-button size="small" type="primary" v-if="showUpLoad">点击上传</el-button>
-            <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
-          </el-upload>
-          <span class="tipInfo" v-show="isShowTip">{{form.fileList[0]&&form.fileList[0].name}}</span>
-          <!-- <el-button size="small" type="primary" >点击上传</el-button> -->
-        </el-form-item>
-        <el-form-item label-width="160px">
-          <div class="uploadInfo" v-if="isSuccessUpload===1">文件上传中,请稍等...</div>
-        </el-form-item>
-      </el-form>
-      <div class="btn">
-        <el-button type="primary" :disabled="saveDisable" @click="submitForm">确 定</el-button>
+            <el-upload
+              @mouseenter.native="handleMouseenter"
+              @mouseleave.native="handleMouseleave"
+              class="upload-demo"
+              :action="config.urls.promptServer"
+              name="upfile"
+              :multiple="false"
+              :limit="1"
+              :on-preview="handlePreview"
+              :on-remove="handleRemove"
+              :before-upload="handleBeforeUpLoad"
+              :before-remove="beforeRemove"
+              :on-change="handleChange"
+              :on-success="handleSuccess"
+              :show-file-list="showFileList"
+              :file-list="form.fileList"
+            >
+              <el-button size="small" type="primary" v-if="showUpLoad">点击上传</el-button>
+              <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
+            </el-upload>
+            <span class="tipInfo" v-show="isShowTip">{{form.fileList[0]&&form.fileList[0].name}}</span>
+            <!-- <el-button size="small" type="primary" >点击上传</el-button> -->
+          </el-form-item>
+          <el-form-item label-width="160px">
+            <div class="uploadInfo" v-if="isSuccessUpload===1">文件上传中,请稍等...</div>
+          </el-form-item>
+        </el-form>
+        <div class="btn">
+          <el-button type="primary" :disabled="saveDisable" @click="submitForm">确 定</el-button>
+        </div>
       </div>
     </div>
-  </div>
+  </el-scrollbar>
 </template>
 <script>
 /**
@@ -109,6 +117,7 @@ export default {
   },
   data() {
     return {
+      isFixedTop: true,
       isEdit: false,
       isCopy: false,
       title: '添加',
@@ -355,6 +364,8 @@ export default {
       }
     },
     reOrder(isUp, i) {
+      // isUp: 1 上升    0 下降
+      let div = this.$refs['elscrollbar'].$refs['wrap'];
       let temp = {},
         it = {};
       if (isUp === 1) {
@@ -365,10 +376,9 @@ export default {
         temp = Object.assign(this.form.prags[i - 1]);
         it = Object.assign(this.form.prags[i]);
         this.form.prags.splice(i - 1, 2, it, temp);
-        // this.$nextTick(() => {
-        //   console.log(this.$refs.subForm[i].$el);
-        //   this.$refs.subForm[i].$el.scrollIntoView()
-        // });
+        this.$nextTick(() => {
+          div.scrollTop = this.$refs.subForm[i-1].$el.offsetTop -48;
+        });
       } else {
         if (i === this.form.prags.length - 1) {
           this.warning('已经是最后一个,不能再降啦!');
@@ -429,7 +439,7 @@ export default {
     },
 
     // 额外的表单检验
-    formVal(){            
+    formVal() {
       let positiontemp = this.form.prags.map(item => {
         return [...item.position];
       });
@@ -457,8 +467,12 @@ export default {
 
         if (this.form.titleChange.trim() !== '') {
           // console.log('内容不为空');
-          return true
+          return true;
         } else {
+          var div = this.$refs['elscrollbar'].$refs['wrap'];
+          this.$nextTick(() => {
+            div.scrollTop = 0;
+          });
           return false;
         }
         // return;
@@ -475,8 +489,12 @@ export default {
 
         if (this.form.titleChange.trim() !== '') {
           // console.log('内容不为空');
-          return true
+          return true;
         } else {
+          var div = this.$refs['elscrollbar'].$refs['wrap'];
+          this.$nextTick(() => {
+            div.scrollTop = 0;
+          });
           return false;
         }
       }
@@ -487,31 +505,48 @@ export default {
         this.warning('文件上传中,请稍等');
         return;
       }
-      let flagVal = this.formVal()   // 额外的表单校验
-      // console.log(flagVal,'flagVal======================');
-      if(flagVal === false) return
+      let flagVal = this.formVal(); // 额外的表单校验
+      if (flagVal === false) return;
       //验证外层表单
       let goOn = true,
         it = null;
+      let outIsVia = true; // 外层验证是否通过
       this.$refs.groups.validate(valid => {
         if (!valid) {
           goOn = false;
+          outIsVia = false;
           return false;
         }
       });
       //验证段落表单
+      let viewHeight = 0; // 定位到表单校验的高度
+      let viewHeightArr = []; // 表单校验出错高度的所有数组
       if (this.form.typeId !== 82 && this.form.typeId !== 83) {
         for (let i = 0; i < this.$refs.subForm.length; i++) {
           it = this.$refs.subForm[i];
+          viewHeight += it.$el.offsetHeight;
           it.$refs.form.validate(valid => {
             if (!valid) {
               goOn = false;
+              viewHeightArr.push(viewHeight);
             }
           });
         }
       }
-
+      // console.log(viewHeightArr,'viewHeightArr');
       if (!goOn) {
+        var div = this.$refs['elscrollbar'].$refs['wrap'];
+        if (outIsVia) {
+          // 外层校验通过,跳转至下层校验具体位置
+          this.$nextTick(() => {
+            div.scrollTop = +viewHeightArr[0] - 150;
+          });
+        } else {
+          // 外层校验没通过,页面滚动到顶部
+          this.$nextTick(() => {
+            div.scrollTop = 0;
+          });
+        }
         return;
       }
       //通过必填验证,提交保存

+ 82 - 53
src/components/icss/MedicineInfoPg.vue

@@ -1,5 +1,11 @@
 <template>
-  <el-form :rules="rules" :model="data" ref="form" class="sub-form">
+  <el-form
+    :rules="rules"
+    :model="data"
+    ref="form"
+    class="sub-form"
+    :validate-on-rule-change="false"
+  >
     <!--<el-input v-model="form.orderNo" :value="index" type="hidden"></el-input>-->
     <!-- <el-form-item label="是否属于诊断依据:" prop="isReason" label-width="160px">
             <el-select v-model="data.isReason" placeholder="请选择">
@@ -103,29 +109,7 @@ export default {
       },
       positions: [], //位置列表
       rules: {
-        // isReason: [
-        //   { required: true, message: '请选择是否属于诊断', trigger: 'change' }
-        // ],
-        position: [
-          { required: true, message: '请选择内容类型', trigger: 'blur' }
-        ],
-        title: [
-          { required: true, message: '请输入段落标题', trigger: 'change' },
-          { max: 30, message: '标题名称不能超过30字', trigger: 'change' }
-          // {
-          //   validator: (rule, value, callback) => {
-          //     if (value.length > 30) {
-          //       callback(new Error('标题名称不能超过30字'));
-          //     } else {
-          //       callback();
-          //     }
-          //   },
-          //   trigger: 'change'
-          // }
-        ],
-        content: [
-          { required: true, message: '请输入段落内容', trigger: 'change' }
-        ]
+       
       }
     };
   },
@@ -134,7 +118,10 @@ export default {
       if (this.data.content !== '') {
         this.$refs.editor && this.$refs.editor.clearValidate(); // 清除校验
       }
-
+      if (this.data.content === ''){
+        // console.log('内容为空');
+        this.$refs['form'].validateField('content') // 手动校验
+      }
       this.data.text = this.$refs.quillEditor.quill.root.innerText;
     }
   },
@@ -143,26 +130,40 @@ export default {
     this.editorOption.modules.toolbar.container = this.toolbars[
       this.toolbarMode
     ];
-  },
-  mounted() {
-    //显示位置枚举列表
-    const pos = localStorage.getItem('knowledgeEnumsData');
-    let positions = config.contentTypes;
-    if (this.showType == 1) {
-      // 诊断
-      this.positions = positions.filter(item => item.key !== 2);
-    } else if (this.showType == 3 || this.showType == 4 || this.showType == 5) {
-      // 检验/检查
-      this.positions = positions.filter(item => {
-        return item.key <= 2;
-      });
-    } else if (this.showType == 2 || this.showType == 6) {
-      // 药品/手术
-      this.positions = positions.filter(item => item.key === 1);
-    } else {
-      this.positions = positions;
+    this.renderPositions();
+    if (this.isEdit) {
+      setTimeout(() => {
+        this.rules = {         
+          position: [
+            { required: true, message: '请选择内容类型', trigger: 'change' }
+          ],
+          title: [
+            { required: true, message: '请输入段落标题', trigger: 'change' },
+            { max: 30, message: '标题名称不能超过30字', trigger: 'change' }
+           
+          ],
+          content: [
+            { required: true, message: '请输入段落内容', trigger: 'change' }
+          ]
+        };
+      }, 100);
+    }else{
+      this.rules = {         
+          position: [
+            { required: true, message: '请选择内容类型', trigger: 'change' }
+          ],
+          title: [
+            { required: true, message: '请输入段落标题', trigger: 'change' },
+            { max: 30, message: '标题名称不能超过30字', trigger: 'change' }
+           
+          ],
+          content: [
+            { required: true, message: '请输入段落内容', trigger: 'change' }
+          ]
+        };
     }
   },
+  mounted() {},
   methods: {
     reOrder(i) {
       this.$emit('reOrder', i, this.index);
@@ -172,6 +173,30 @@ export default {
     },
     delEmit() {
       this.$emit('del', this.index);
+    },
+    // 渲染内容类型
+    renderPositions() {
+      //显示位置枚举列表
+      const pos = localStorage.getItem('knowledgeEnumsData');
+      let positions = config.contentTypes;
+      if (this.showType == 1) {
+        // 诊断
+        this.positions = positions.filter(item => item.key !== 2);
+      } else if (
+        this.showType == 3 ||
+        this.showType == 4 ||
+        this.showType == 5
+      ) {
+        // 检验/检查
+        this.positions = positions.filter(item => {
+          return item.key <= 2;
+        });
+      } else if (this.showType == 2 || this.showType == 6) {
+        // 药品/手术
+        this.positions = positions.filter(item => item.key === 1);
+      } else {
+        this.positions = positions;
+      }
     }
 
     /*emitVal(){
@@ -192,6 +217,7 @@ export default {
 </script>
 
 <style lang="less">
+
 .quill-editor.ql-editor {
   padding-left: 0 !important;
 }
@@ -224,16 +250,19 @@ export default {
 /**富文本编辑器样式修改***/
 .ql-snow .ql-picker.ql-size .ql-picker-label::before,
 .ql-snow .ql-picker.ql-size .ql-picker-item::before,
-.ql-snow .ql-picker.ql-header .ql-picker-label::before,
-.ql-snow .ql-picker.ql-header .ql-picker-item::before,
-.ql-snow .ql-picker.ql-font .ql-picker-label::before,
-.ql-snow .ql-picker.ql-font .ql-picker-item::before,
-.ql-snow .ql-color-picker .ql-picker-label svg,
-.ql-snow .ql-icon-picker .ql-picker-label svg {
-  vertical-align: top;
+.ql-snow .ql-picker.ql-header .ql-picker-label::before,it
+.ql-editor,.quill-editor{
+  padding-top: 0px !important;
+  margin-top: -8px;
+  min-height: 48px;
+  p{
+    padding-top: 8px;
+  }
 }
-
-.btns {
-  margin-top: 24px;
+.ql-editor.ql-blank::before{
+  padding-top: 0px
+}
+.btns{
+  margin-top: 20px;
 }
 </style>

+ 21 - 18
src/components/icss/MedicinePrompt.vue

@@ -15,7 +15,7 @@
         <el-form-item label="标准术语:">
           <el-input size="mini" maxlength="50" v-model="filter.term" placeholder="请输入" clearable></el-input>
         </el-form-item>
-        <el-form-item label="状态:"  class="selectMedicine">
+        <el-form-item label="状态:" class="selectMedicine">
           <el-select size="mini" v-model="filter.status" placeholder="请选择" clearable>
             <el-option v-for="item in stateList" :label="item.name" :value="item.id" :key="item.id"></el-option>
           </el-select>
@@ -34,25 +34,19 @@
     <div class="contents">
       <el-table :data="list" border style="width: 100%">
         <el-table-column type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
-        <el-table-column prop="gmtModified" label="操作时间" width="180" :show-overflow-tooltip="true"></el-table-column>
-        <el-table-column prop="name" label="标准术语"></el-table-column>
+        <el-table-column prop="gmtModified" label="操作时间" width="180" ></el-table-column>
+        <el-table-column prop="name" label="标准术语" :show-overflow-tooltip="true"></el-table-column>
         <el-table-column prop="typeName" label="术语分类" width="120"></el-table-column>
-        <el-table-column prop="title" label="内容概览" width="240"></el-table-column>
-        <el-table-column
-                        label="状态">
-                    <template slot-scope="scope">
-                        <span v-if="scope.row.status===1">启用</span>
-                        <span v-if="scope.row.status===0">禁用</span>
-                    </template>
+        <el-table-column prop="title" label="内容概览" width="240" :show-overflow-tooltip="true"></el-table-column>
+        <el-table-column label="状态" width="160">
+          <template slot-scope="scope">
+            <span v-if="scope.row.status===1">启用</span>
+            <span v-if="scope.row.status===0">禁用</span>
+          </template>
         </el-table-column>
         <el-table-column label="操作" width="140">
           <template slot-scope="scope">
-            <el-button
-              v-if="scope.row.status===0"
-              type="text"
-              size="small"
-              class="is-disabled"
-            >修改</el-button>
+            <el-button v-if="scope.row.status===0" type="text" size="small" class="is-disabled">修改</el-button>
             <el-button
               v-if="scope.row.status===1"
               type="text"
@@ -399,11 +393,20 @@ export default {
   }
 }
 
-.selectMedicine{
-  /deep/ .el-input__suffix-inner{
+.selectMedicine {
+  /deep/ .el-input__suffix-inner {
     position: relative;
     top: -1px;
   }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    top: -2px;
+  }
 }
 
+body {
+  .el-tooltip__popper{
+    max-width: 400px;
+  }
+}
 </style>

+ 10 - 0
src/components/icss/dept/AddDept.vue

@@ -417,6 +417,16 @@ body {
     ul {
       max-width: 300px;
     }
+
+    /deep/ .el-scrollbar {
+      border: 1px solid #dcdfe6;
+    }
+    /deep/ .popper__arrow {
+      border-bottom-color: #a5a5a5 !important;
+    }
+  }
+  /deep/ .el-popper[x-placement^='bottom'] {
+    margin-top: 8px !important;
   }
 }
 </style>

+ 12 - 12
src/components/icss/disease/AddChemicalAndCommonMapping.vue

@@ -411,16 +411,16 @@ export default {
     }
   }
 }
-body {
-  .el-select-dropdown {
-    /deep/ .el-select-dropdown__item {
-      span {
-        color: #333;
-      }
-    }
-    ul {
-      max-width: 200px;
-    }
-  }
-}
+// body {
+//   .el-select-dropdown {
+//     /deep/ .el-select-dropdown__item {
+//       span {
+//         color: #333;
+//       }
+//     }
+//     ul {
+//       max-width: 200px;
+//     }
+//   }
+// }
 </style>

+ 0 - 1
src/components/icss/disease/ChemicalAndCommonMapping.vue

@@ -30,7 +30,6 @@
       <el-table :data="list" border style="width: 100%">
         <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
         <el-table-column :resizable="false" prop="gmtModified" label="操作时间" width="180"></el-table-column>
-        <!-- <el-table-column :resizable="false" prop="mealName" label="化验大项" show-overflow-tooltip></el-table-column> -->
         <el-table-column :resizable="false" prop="hisName" label="医院诊断名称" show-overflow-tooltip></el-table-column>
         <el-table-column :resizable="false" prop="icdCode" label="ICD-10编码" show-overflow-tooltip></el-table-column>
         <el-table-column :resizable="false" prop="uniqueName" label="标准诊断名称" show-overflow-tooltip></el-table-column>

+ 0 - 1
src/components/icss/lis/Lis.vue

@@ -35,7 +35,6 @@
         <el-table-column :resizable="false" prop="gmtModified" label="操作时间" width="180"></el-table-column>
         <el-table-column :resizable="false" prop="hisName" label="检验套餐" show-overflow-tooltip></el-table-column>
         <el-table-column :resizable="false" prop="hisDetailName" label="检验细项" show-overflow-tooltip></el-table-column>
-        <!-- <el-table-column :resizable="false" prop="uniqueCode" label="对应项编码" show-overflow-tooltip></el-table-column> -->
         <el-table-column :resizable="false" prop="uniqueName" label="标准检验项" show-overflow-tooltip></el-table-column>
         <el-table-column :resizable="false" prop="operate" label="操作">
           <template slot-scope="scope">

+ 0 - 2
src/components/icss/operation/Operation.vue

@@ -30,9 +30,7 @@
       <el-table :data="list" border style="width: 100%">
         <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
         <el-table-column :resizable="false" prop="gmtModified" label="操作时间" width="180"></el-table-column>
-        <!-- <el-table-column :resizable="false" prop="mealName" label="化验大项" show-overflow-tooltip></el-table-column> -->
         <el-table-column :resizable="false" prop="hisName" label="医院手术/操作名称" show-overflow-tooltip></el-table-column>
-        <!-- <el-table-column :resizable="false" prop="uniqueCode" label="对应项编码" show-overflow-tooltip></el-table-column> -->
         <el-table-column
           :resizable="false"
           prop="uniqueName"

+ 0 - 2
src/components/icss/pacs/Pacs.vue

@@ -30,9 +30,7 @@
       <el-table :data="list" border style="width: 100%">
         <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
         <el-table-column :resizable="false" prop="gmtModified" label="操作时间" width="180"></el-table-column>
-        <!-- <el-table-column :resizable="false" prop="mealName" label="化验大项" show-overflow-tooltip></el-table-column> -->
         <el-table-column :resizable="false" prop="hisName" label="医院检查项目" show-overflow-tooltip></el-table-column>
-        <!-- <el-table-column :resizable="false" prop="uniqueCode" label="对应项编码" show-overflow-tooltip></el-table-column> -->
         <el-table-column :resizable="false" prop="uniqueName" label="标准检查项目" show-overflow-tooltip></el-table-column>
         <el-table-column :resizable="false" prop="operate" label="操作">
           <template slot-scope="scope">

+ 145 - 139
src/components/icss/plan/AddPlan.vue

@@ -1,150 +1,152 @@
 <template>
-  <div class="AddPlanWrapper clearfix" @click="close">
-    <crumbs
-      :title="isEdit ? '电子病历方案配置-修改方案' : '电子病历方案配置-添加方案'"
-      class="topBack"
-      :param="$route.params"
-      linkTo="Plan"
-    ></crumbs>
-    <div class="AddPlanBox">
-      <el-row :gutter="20">
-        <el-col :span="16">
-          <el-form ref="form" :model="form" label-width="80px" :rules="rules">
-            <el-form-item label="方案名称" prop="planName">
-              <el-input v-model="form.planName" placeholder="2-30位,可输入汉字、字母、数字和下划线"></el-input>
-            </el-form-item>
-            <el-form-item label="方案编码" prop="planCode">
-              <el-input v-model="form.planCode" placeholder="4-15位,可输入字母、数字和下划线"></el-input>
-            </el-form-item>
-            <el-form-item label="方案配置">
-              <ul>
-                <li>
-                  <div class="title">
-                    <div class="handleIcon" @click="openPlanItems">
-                      <img
-                        src="../../../images/multi.png"
-                        alt="辅助信息"
-                        :class="{'open' : isOpenCloseItems}"
-                      />
+  <el-scrollbar style="height: 100%" ref="elscrollbar">
+    <div class="AddPlanWrapper clearfix" @click="close">
+      <crumbs
+        :title="isEdit ? '电子病历方案配置-修改方案' : '电子病历方案配置-添加方案'"
+        class="topBack"
+        :param="$route.params"
+        linkTo="Plan"
+      ></crumbs>
+      <div class="AddPlanBox">
+        <el-row :gutter="20">
+          <el-col :span="16">
+            <el-form ref="form" :model="form" label-width="80px" :rules="rules">
+              <el-form-item label="方案名称" prop="planName">
+                <el-input v-model="form.planName" placeholder="2-30位,可输入汉字、字母、数字和下划线"></el-input>
+              </el-form-item>
+              <el-form-item label="方案编码" prop="planCode">
+                <el-input v-model="form.planCode" placeholder="4-15位,可输入字母、数字和下划线"></el-input>
+              </el-form-item>
+              <el-form-item label="方案配置">
+                <ul>
+                  <li>
+                    <div class="title">
+                      <div class="handleIcon" @click="openPlanItems">
+                        <img
+                          src="../../../images/multi.png"
+                          alt="辅助信息"
+                          :class="{'open' : isOpenCloseItems}"
+                        />
+                      </div>
+                      <h4>辅助信息</h4>
+                      <div class="titlwSwitch">
+                        <el-switch
+                          v-model="switchSubStatus"
+                          :active-value="1"
+                          :inactive-value="0"
+                          active-color="#4BC4D7"
+                          inactive-color="#BBBBBB"
+                        ></el-switch>
+                        <span class="titlwSwitchStatus">{{switchSubStatus === 1 ? '启用中' : '未启用'}}</span>
+                      </div>
                     </div>
-                    <h4>辅助信息</h4>
-                    <div class="titlwSwitch">
-                      <el-switch
-                        v-model="switchSubStatus"
-                        :active-value="1"
-                        :inactive-value="0"
-                        active-color="#4BC4D7"
-                        inactive-color="#BBBBBB"
-                      ></el-switch>
-                      <span class="titlwSwitchStatus">{{switchSubStatus === 1 ? '启用中' : '未启用'}}</span>
-                    </div>
-                  </div>
-                  <transition name="plus-icon">
-                    <div v-if="isOpenCloseItems">
-                      <ul class="sub" v-for="(item,index) in  planDefaultList" :key="item.id">
-                        <li class="planItem">
-                          <div class="sort">
-                            <div class="top">
-                              <img
-                                :src="isTopLight !== index ? require('../../../images/icon_default_top.png') : require('../../../images/icon_hover_top.png')"
-                                alt="上升"
-                                v-if="index !== 0"
-                                @click="sortPlan(item,index,'top')"
-                                @mouseover="handleMouseEnter1(index)"
-                                @mouseleave="handleMouseLeave1(index)"
-                              />
+                    <transition name="plus-icon">
+                      <div v-if="isOpenCloseItems">
+                        <ul class="sub" v-for="(item,index) in  planDefaultList" :key="item.id">
+                          <li class="planItem">
+                            <div class="sort">
+                              <div class="top">
+                                <img
+                                  :src="isTopLight !== index ? require('../../../images/icon_default_top.png') : require('../../../images/icon_hover_top.png')"
+                                  alt="上升"
+                                  v-if="index !== 0"
+                                  @click="sortPlan(item,index,'top')"
+                                  @mouseover="handleMouseEnter1(index)"
+                                  @mouseleave="handleMouseLeave1(index)"
+                                />
+                              </div>
+                              <div class="down">
+                                <img
+                                  :src="isDownLight !== index ? require('../../../images/icon_default_down.png') : require('../../../images/icon_hover_down.png')"
+                                  alt="下降"
+                                  v-if="index !== planDefaultList.length - 1"
+                                  @click="sortPlan(item,index,'down')"
+                                  @mouseover="handleMouseEnter(index)"
+                                  @mouseleave="handleMouseLeave(index)"
+                                />
+                              </div>
                             </div>
-                            <div class="down">
-                              <img
-                                :src="isDownLight !== index ? require('../../../images/icon_default_down.png') : require('../../../images/icon_hover_down.png')"
-                                alt="下降"
-                                v-if="index !== planDefaultList.length - 1"
-                                @click="sortPlan(item,index,'down')"
-                                @mouseover="handleMouseEnter(index)"
-                                @mouseleave="handleMouseLeave(index)"
-                              />
+                            <div class="openOrClose">
+                              <span class="planInfo">{{item.name}}</span>
+                              <div class="switch">
+                                <el-switch
+                                  v-model="item.status"
+                                  :active-value="1"
+                                  :inactive-value="0"
+                                  active-color="#4BC4D7"
+                                  inactive-color="#BBBBBB"
+                                ></el-switch>
+                              </div>
+                              <span class="planStatus">{{item.status === 1 ? '启用中' : '未启用'}}</span>
                             </div>
-                          </div>
-                          <div class="openOrClose">
-                            <span class="planInfo">{{item.name}}</span>
-                            <div class="switch">
-                              <el-switch
-                                v-model="item.status"
-                                :active-value="1"
-                                :inactive-value="0"
-                                active-color="#4BC4D7"
-                                inactive-color="#BBBBBB"
-                              ></el-switch>
+                            <div class="showNum" v-if="item.number">
+                              <span style="marginRight:8px;">默认显示个数</span>
+                              <el-select
+                                v-model="item.number"
+                                placeholder="请选择"
+                                size="small"
+                                :disabled="item.status !== 1 ? true: false"
+                              >
+                                <el-option label="1" value="1"></el-option>
+                                <el-option label="2" value="2"></el-option>
+                                <el-option label="3" value="3"></el-option>
+                                <el-option label="4" value="4"></el-option>
+                                <el-option label="5" value="5"></el-option>
+                                <el-option label="6" value="6"></el-option>
+                              </el-select>
                             </div>
-                            <span class="planStatus">{{item.status === 1 ? '启用中' : '未启用'}}</span>
-                          </div>
-                          <div class="showNum" v-if="item.number">
-                            <span style="marginRight:8px;">默认显示个数</span>
-                            <el-select
-                              v-model="item.number"
-                              placeholder="请选择"
-                              size="small"
-                              :disabled="item.status !== 1 ? true: false"
-                            >
-                              <el-option label="1" value="1"></el-option>
-                              <el-option label="2" value="2"></el-option>
-                              <el-option label="3" value="3"></el-option>
-                              <el-option label="4" value="4"></el-option>
-                              <el-option label="5" value="5"></el-option>
-                              <el-option label="6" value="6"></el-option>
-                            </el-select>
-                          </div>
-                        </li>
-                      </ul>
-                    </div>
-                  </transition>
-                </li>
-                <li>
-                  <div class="title">
-                    <div class="handleIcon">
-                      <img src="../../../images/multi.png" alt="医学知识" />
-                    </div>
-                    <h4>医学知识</h4>
-                    <div class="titlwSwitch">
-                      <el-switch
-                        v-model="switchMedStatus"
-                        :active-value="1"
-                        :inactive-value="0"
-                        active-color="#4BC4D7"
-                        inactive-color="#BBBBBB"
-                      ></el-switch>
-                      <span class="titlwSwitchStatus">{{switchMedStatus === 1 ? '启用中' : '未启用'}}</span>
+                          </li>
+                        </ul>
+                      </div>
+                    </transition>
+                  </li>
+                  <li>
+                    <div class="title">
+                      <div class="handleIcon">
+                        <img src="../../../images/multi.png" alt="医学知识" />
+                      </div>
+                      <h4>医学知识</h4>
+                      <div class="titlwSwitch">
+                        <el-switch
+                          v-model="switchMedStatus"
+                          :active-value="1"
+                          :inactive-value="0"
+                          active-color="#4BC4D7"
+                          inactive-color="#BBBBBB"
+                        ></el-switch>
+                        <span class="titlwSwitchStatus">{{switchMedStatus === 1 ? '启用中' : '未启用'}}</span>
+                      </div>
                     </div>
-                  </div>
-                </li>
-                <li>
-                  <div class="title">
-                    <div class="handleIcon">
-                      <img src="../../../images/multi.png" alt="医学知识" />
+                  </li>
+                  <li>
+                    <div class="title">
+                      <div class="handleIcon">
+                        <img src="../../../images/multi.png" alt="医学知识" />
+                      </div>
+                      <h4>随访计划</h4>
+                      <div class="titlwSwitch">
+                        <el-switch
+                          v-model="switchFollowStatus"
+                          :active-value="1"
+                          :inactive-value="0"
+                          active-color="#4BC4D7"
+                          inactive-color="#BBBBBB"
+                        ></el-switch>
+                        <span class="titlwSwitchStatus">{{switchFollowStatus === 1 ? '启用中' : '未启用'}}</span>
+                      </div>
                     </div>
-                    <h4>随访计划</h4>
-                    <div class="titlwSwitch">
-                      <el-switch
-                        v-model="switchFollowStatus"
-                        :active-value="1"
-                        :inactive-value="0"
-                        active-color="#4BC4D7"
-                        inactive-color="#BBBBBB"
-                      ></el-switch>
-                      <span class="titlwSwitchStatus">{{switchFollowStatus === 1 ? '启用中' : '未启用'}}</span>
-                    </div>
-                  </div>
-                </li>
-              </ul>
-            </el-form-item>
-            <el-form-item>
-              <el-button type="primary" @click="onSubmit" :disabled="saveDisable">确定</el-button>
-            </el-form-item>
-          </el-form>
-        </el-col>
-      </el-row>
+                  </li>
+                </ul>
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="onSubmit" :disabled="saveDisable">确定</el-button>
+              </el-form-item>
+            </el-form>
+          </el-col>
+        </el-row>
+      </div>
     </div>
-  </div>
+  </el-scrollbar>
 </template>
 <script>
 import api from '@api/icss.js';
@@ -510,6 +512,10 @@ export default {
           });
         } else {
           this.saveDisable = false;
+          var div = this.$refs['elscrollbar'].$refs['wrap'];
+          this.$nextTick(() => {
+            div.scrollTop = 0;
+          });
           return false;
         }
       });

+ 1 - 1
src/components/icss/plan/Plan.vue

@@ -14,7 +14,7 @@
     <div class="contents">
       <el-table :data="list" border style="width: 100%">
         <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
-        <el-table-column :resizable="false" prop="planName" label="方案名称"></el-table-column>
+        <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
         <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
         <el-table-column
           :resizable="false"