Просмотр исходного кода

Merge branch 'lcq' into knowledgePlat

morphone1995 4 лет назад
Родитель
Сommit
77926d6813

Разница между файлами не показана из-за своего большого размера
+ 1030 - 0
src/components/basicKnow/AddTerm.vue


+ 264 - 0
src/components/basicKnow/BasicPartOfSpeech.vue

@@ -0,0 +1,264 @@
+<template>
+  <div>
+    <crumbs title="基础词性类型维护" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="关系名称:">
+          <el-input size="mini" v-model="filter.uniqueName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="数字编码:">
+          <el-input size="mini" v-model="filter.uniqueName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <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>
+        </el-form-item>
+        <el-form-item class="dododo">
+          <el-button size="mini" @click="filterDatas">搜索</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <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="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="uniqueName"
+          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="uniqueName" 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="uniqueName" 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">
+            <el-button @click="modifyRelation(scope.row)" type="text" size="small">修改</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination pagepage">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from '@api/icss.js';
+import config from '@api/config.js';
+import utils from '@api/utils.js';
+
+export default {
+  name: 'Fusion', //化验大小项和公表维护
+  data: function() {
+    return {
+      list: [],
+      searched: false,
+      filter: {
+        hisName: '', // 医院诊断名称
+        uniqueName: '', //标准诊断名称
+        status: ''
+      },
+      stateList: [
+        { id: 1, name: '启用' },
+        { id: 0, name: '禁用' }
+      ],
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      uploadInfo: '导入'
+    };
+  },
+  created() {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.clearFilter();
+      // that.getDataList();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取列表数据
+    getDataList(isTurnPage) {
+      const params = this.getFilterItems(isTurnPage);
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: 'Loading',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      });
+      api.getFusionPage(params).then(res => {
+        loading.close();
+        if (res.data.code === '0') {
+          this.list = res.data.data && res.data.data.records;
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 处理列表请求数据参数
+    getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        hisName: this.filter.hisName.trim(),
+        uniqueName: this.filter.uniqueName.trim(),
+        uniqueCode: ''
+      };
+      return param;
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+
+    // 跳转至编辑页面
+    modifyRelation(row) {
+      // const item = Object.assign({}, row);
+      // const pam = this.searched
+      //   ? {
+      //       currentPage: this.currentPage,
+      //       pageSize: this.pageSize,
+      //       filter: this.filter
+      //     }
+      //   : { currentPage: this.currentPage, pageSize: this.pageSize };
+      // this.$router.push({
+      //   name: 'AddFusion',
+      //   params: Object.assign(pam, { isEdit: true, data: item })
+      // });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: '',
+        uniqueName: ''
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || 'warning'
+      });
+    }
+  }
+};
+</script>
+
+
+<style lang="less">
+@import '../../less/admin.less';
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.downTemplate {
+  margin-right: 8px;
+  span {
+    color: #02a7f0;
+  }
+}
+#upFile {
+  display: none !important;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/.confirmC {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+}
+.exportBox6 {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    // text-align: center;
+  }
+  /deep/.leftbtn {
+    background-color: #d7d7d7;
+    border-color: transparent !important;
+  }
+  /deep/ .el-message-box__header {
+    border-bottom: 1px solid #dcdfe6;
+  }
+}
+</style>

+ 264 - 0
src/components/basicKnow/BasicRelationship.vue

@@ -0,0 +1,264 @@
+<template>
+  <div>
+    <crumbs title="基础关系类型维护" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="词性名称:">
+          <el-select size="mini" v-model="filter.hisName" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in typeList"
+              :label="item.name"
+              :value="item.orderNo"
+              :key="item.orderNo"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="数字编码:">
+          <el-input size="mini" v-model="filter.uniqueName" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <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>
+        </el-form-item>
+        <el-form-item class="dododo">
+          <el-button size="mini" @click="filterDatas">搜索</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <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="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="uniqueName" 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="uniqueName" label="操作时间" show-overflow-tooltip></el-table-column>
+        <el-table-column :resizable="false" prop="operate" label="操作">
+          <template slot-scope="scope">
+            <el-button @click="modifyRelation(scope.row)" type="text" size="small">修改</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination pagepage">
+        <el-pagination
+          :current-page.sync="currentPage"
+          @current-change="currentChange"
+          background
+          :page-size="pageSize"
+          :page-sizes="pageSizeArr"
+          @size-change="handleSizeChange"
+          :layout="pageLayout"
+          :total="total"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from '@api/icss.js';
+import config from '@api/config.js';
+import utils from '@api/utils.js';
+
+export default {
+  name: 'Fusion', //化验大小项和公表维护
+  data: function() {
+    return {
+      list: [],
+      typeList: [],
+      searched: false,
+      filter: {
+        hisName: '', // 医院诊断名称
+        uniqueName: '', //标准诊断名称
+        status: ''
+      },
+      stateList: [
+        { id: 1, name: '启用' },
+        { id: 0, name: '禁用' }
+      ],
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      uploadInfo: '导入'
+    };
+  },
+  created() {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.clearFilter();
+      // that.getDataList();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+
+    // 获取列表数据
+    getDataList(isTurnPage) {
+      const params = this.getFilterItems(isTurnPage);
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: 'Loading',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      });
+      api.getFusionPage(params).then(res => {
+        loading.close();
+        if (res.data.code === '0') {
+          this.list = res.data.data && res.data.data.records;
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 处理列表请求数据参数
+    getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        hisName: this.filter.hisName.trim(),
+        uniqueName: this.filter.uniqueName.trim(),
+        uniqueCode: ''
+      };
+      return param;
+    },
+
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+
+    // 跳转至编辑页面
+    modifyRelation(row) {
+      // const item = Object.assign({}, row);
+      // const pam = this.searched
+      //   ? {
+      //       currentPage: this.currentPage,
+      //       pageSize: this.pageSize,
+      //       filter: this.filter
+      //     }
+      //   : { currentPage: this.currentPage, pageSize: this.pageSize };
+      // this.$router.push({
+      //   name: 'AddFusion',
+      //   params: Object.assign(pam, { isEdit: true, data: item })
+      // });
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //     this.list = this.cacheData[next];
+      // } else {
+      //     this.getDataList();
+      // }
+    },
+    // 清空搜索参数
+    clearFilter() {
+      this.filter = {
+        hisName: '',
+        uniqueName: ''
+      };
+    },
+
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    getTagType(val) {
+      return val;
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || 'warning'
+      });
+    }
+  }
+};
+</script>
+
+
+<style lang="less">
+@import '../../less/admin.less';
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.downTemplate {
+  margin-right: 8px;
+  span {
+    color: #02a7f0;
+  }
+}
+#upFile {
+  display: none !important;
+}
+.el-message-box {
+  /deep/.cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/.confirmC {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+}
+.exportBox6 {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    // text-align: center;
+  }
+  /deep/.leftbtn {
+    background-color: #d7d7d7;
+    border-color: transparent !important;
+  }
+  /deep/ .el-message-box__header {
+    border-bottom: 1px solid #dcdfe6;
+  }
+}
+</style>

+ 377 - 0
src/components/basicKnow/BasicTermsMaintenance.vue

@@ -0,0 +1,377 @@
+<template>
+  <div>
+    <crumbs title="基础术语维护" minWidth="995px" class="knowledgeTitle">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="标准术语:">
+          <el-input size="mini" v-model="filter.term" placeholder="请输入术语"></el-input>
+        </el-form-item>
+        <el-form-item label="术语类型:">
+          <el-select v-model="filter.type" clearable filterable placeholder="请选择" size="mini">
+            <el-option
+              v-for="item in typeList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.name"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="同义词:">
+          <el-input size="mini" v-model="filter.libName" placeholder="输入同义词"></el-input>
+        </el-form-item>
+        <el-form-item label="状态:">
+          <el-select v-model="filter.isState" clearable placeholder="请选择" size="mini">
+            <el-option
+              v-for="item in stateSelect"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="mini" @click="filterDatas">搜索</el-button>
+        </el-form-item>
+      </el-form>
+      <el-form class="secLine">
+        <el-form-item>
+          <el-button
+            size="mini"
+            :type="reloadFlag?'danger':'info'"
+            @click="reloadLib"
+            style="margin:0 10px"
+          >加载词库</el-button>
+          <el-button size="mini" type="warning" @click="addMedicalName" style="margin:0 10px">新增术语</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents knowledgeContents">
+      <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="libName" label="医学标准术语" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="libType" label="术语类型"></el-table-column>
+        <el-table-column prop="otherNames" label="同义词" show-overflow-tooltip></el-table-column>
+        <el-table-column label="状态">
+          <template slot-scope="scope">
+            <span
+              :class="scope.row.isDeleted == 'N'?'':'delete'"
+            >{{scope.row.isDeleted == 'N'?'启用中':'已删除'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="operName" label="操作人"></el-table-column>
+        <el-table-column prop="operTime" label="操作时间" :show-overflow-tooltip="true"></el-table-column>
+        <el-table-column label="操作" width="160">
+          <template slot-scope="scope">
+            <el-button
+              type="text"
+              size="small"
+              :disabled="scope.row.isDeleted != 'N'"
+              @click="toEditProduct(scope.row)"
+            >修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :disabled="scope.row.isDeleted != 'N'"
+              @click="toEditProduct(scope.row,true)"
+            >复制</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              type="text"
+              size="small"
+              :class="scope.row.isDeleted == 'N'?'delete':'review'"
+              @click="showDelDialog(scope.row)"
+            >{{scope.row.isDeleted == 'N'?'删除':'恢复'}}</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        :current-page.sync="currentPage"
+        @current-change="currentChange"
+        background
+        :page-size="pageSize"
+        :page-sizes="pageSizeArr"
+        @size-change="handleSizeChange"
+        :layout="pageLayout"
+        :total="total"
+      ></el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from '@api/icss.js';
+import config from '@api/config.js';
+import utils from '@api/utils.js';
+
+export default {
+  name: 'BasicTermsMaintenance',
+  data: function() {
+    return {
+      list: [],
+      stateSelect: [
+        { id: 'N', name: '启用中' },
+        { id: 'Y', name: '已删除' }
+      ],
+      // isState:'',
+      cacheData: {}, //因为删除和恢复要及时更新,所以不做缓存
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      searched: false,
+      filter: {
+        term: '',
+        type: '',
+        libName: '',
+        isState: ''
+      },
+      typeList: [],
+      reloadFlag: true
+    };
+  },
+  created() {
+    // this.getDataList();
+    // this.getTypeList();
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      // that.getDataList();
+    });
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+    reloadLib() {
+      if (this.reloadFlag) {
+        this.reloadFlag = false;
+        api.reloadLib().then(res => {
+          if (res.data.code == 0) {
+            this.reloadFlag = true;
+          }
+        });
+      }
+    },
+    addMedicalName() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: 'AddTerm', params: pam });
+    },
+    toEditProduct(row, copy) {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: 'AddTerm',
+        // params: {info:row}
+        params: Object.assign(pam, { id: row.conceptId, copy: copy })
+      });
+    },
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    getDataList(isTurnPage) {
+      const param = this.getFilterItems(isTurnPage);
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: 'Loading',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      });
+      api
+        .knowledgeName(param)
+        .then(res => {
+          loading.close();
+          if (res.data.code == '0') {
+            const data = res.data.data;
+            this.list = data.records;
+            // this.cacheData[param.current] = data.records;
+            this.total = data.total;
+            if (this.inCurrentPage !== undefined) {
+              this.currentPage = this.inCurrentPage;
+              this.inCurrentPage = undefined;
+            }
+          }
+        })
+        .catch(error => {
+          console.log(error);
+        });
+    },
+    getTypeList() {
+      api
+        .allKnowledgeType({ name: '' })
+        .then(res => {
+          const data = res.data;
+          if (data.code == 0) {
+            this.typeList = data.data;
+          } else {
+            console.log(res.msg);
+          }
+        })
+        .catch(error => {
+          console.log(error);
+        });
+    },
+    /*getDetailList(id) {
+        this.$router.push({name:'DeptInfoDetail', params:{id: id}})
+      },*/
+    getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      const param = {
+        name: this.filter.term.trim(),
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        type: this.filter.type,
+        libName: this.filter.libName.trim(),
+        isDeleted: this.filter.isState
+      };
+      return param;
+    },
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+      //   this.list = this.cacheData[next];
+      // } else {
+      this.getDataList(true);
+      // }
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || 'warning'
+      });
+    },
+    showConfirmDialog(msg, resolve) {
+      this.$alert(msg, '提示', {
+        confirmButtonText: '确定',
+        type: 'warning'
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    showDelDialog(item) {
+      /*const param = {
+          term:item.term,
+          type:item.type,
+          id:item.id
+        }*/
+      const param = {
+        conceptId: item.conceptId,
+        isDeleted: item.isDeleted === 'N' ? 'Y' : 'N'
+      };
+      let waringTxt =
+        item.isDeleted === 'N'
+          ? '是否删除该标准术语?'
+          : '是否重新启用该条数据?';
+      this.showConfirmDialog(waringTxt, () => {
+        api
+          .deletMedicalName(param)
+          .then(res => {
+            if (res.data.code == '0') {
+              if (!this.searched) {
+                //未点确认时清空搜索条件
+                this.clearFilter();
+              }
+              if (item.isDeleted !== 'N') {
+                //恢复成功后跳转到筛选条件的首页
+                this.currentPage = 1;
+              } else {
+                if (this.filter.isState !== '' && this.list.length === 1) {
+                  //有启用状态筛选条件且当前页只有最后一条数据删除时,删除成功后跳转到前一页
+                  this.currentPage =
+                    this.currentPage === 1 ? 1 : this.currentPage - 1;
+                }
+              }
+              this.warning(res.data.msg || '操作成功', 'success');
+              this.getDataList();
+            } else {
+              this.warning(res.data.msg);
+            }
+          })
+          .catch(error => {
+            this.warning(error);
+          });
+      });
+    },
+    clearFilter() {
+      this.filter = {
+        term: '',
+        type: '',
+        libName: '',
+        isState: ''
+      };
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+@import '../../less/admin.less';
+/deep/ .container.knowledgeTitle {
+  height: 80px;
+}
+/deep/ .contents.knowledgeContents {
+  padding: 104px 20px 0;
+}
+/deep/ .secLine.el-form {
+  float: right;
+  display: block;
+  position: relative;
+  top: -5px;
+}
+.delete {
+  color: red;
+}
+.review {
+  color: #22ccc8;
+}
+.el-table .cell {
+  overflow: hidden;
+  white-space: nowrap;
+}
+#upFile {
+  display: none !important;
+}
+</style>

+ 116 - 0
src/components/basicKnow/SimilarListDrag.vue

@@ -0,0 +1,116 @@
+<template>
+    <div  
+    v-if="searchType ==='standard'&& similarList.length > 0&&isShow" 
+    class="similarBox clearfix"
+        id="dragModalWrap"
+    > 
+        <div class="tabTitle"  id="dragModalTitle" @mousedown="dragAdd($event)" @mouseup="dragDel">
+            相似词数据
+        </div>
+    
+        <div class="tableBox">
+            
+            <table class="similarTable">
+            <tr>
+                <td>序号</td>
+                <td>术语</td>
+                <td>归属</td>
+            </tr>
+            <tr v-for="(item,index) in similarList" :key="item.conceptId">
+                <td>{{index+1}}</td>
+                <td>{{item.name}}</td>
+                <td>({{item.libType}}){{item.isConceptRemark}}</td>
+            </tr>
+            </table>
+        </div>
+        <div class="closeTableBox"
+        >
+            <span class="closeTable"  @click="closeTable">关闭</span>
+        </div>
+    </div>
+</template>
+<script>
+import utils from '@api/utils.js';
+export default {
+    name: "SimilarListDrag",
+    props: ["searchType","similarList","isShow"],
+    data() {
+        return{
+
+        }
+    },
+    methods: {
+        dragAdd(ev){
+            utils.dragBox('dragModalWrap','dragModalTitle','add')
+        },
+        dragDel(){
+            utils.dragBox('dragModalWrap','dragModalTitle','del')
+        },
+        closeTable(){
+            this.$emit("closeTable")
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+.similarBox {
+    position: fixed;
+    background: #fff;
+    width: 400px;
+    max-height: 280px;
+    top: 350px;
+    // border: 1px solid #000;
+   
+     z-index: 10;
+     left: 660px;
+    //  top: 0;
+     box-shadow:0 0 12px #ccc;
+  }
+  .tabTitle {
+    width: 100%;
+    height: 40px;
+    line-height: 40px;
+    font-size: 16px;
+    font-weight: bold;
+    cursor: move;
+  }
+  .closeTableBox{
+    position: relative;
+    height: 35px;
+  }
+  .closeTable {
+    position: absolute;
+    display: inline-block;
+    width: 40px;
+    height: 24px;
+    line-height: 24px;
+    border-radius: 5px;
+    cursor: pointer;
+    border: 1px solid #000;
+    box-sizing: border-box;
+    right: 30px;
+    top: 5px;
+  }
+  .tableBox {
+    max-height: 200px;
+    overflow: auto;
+    padding: 0 30px;
+  }
+  .similarTable{
+          
+    width: 100%;
+    border-collapse: collapse;
+   
+    >tr{
+        height: 30px;
+    text-align: center;
+       border: 1px solid #000;
+      td{
+        border: 1px solid #000;
+        width: 135px;
+        position: relative;
+      }
+    }
+    
+  }
+</style>

+ 890 - 0
src/components/developKnow/AddDevKnow.vue

@@ -0,0 +1,890 @@
+<template>
+  <el-scrollbar style="height: 100%" ref="elscrollbar" id="message-container">
+    <div class="NoiseTemplateWrapper TemplateWrapper knowledgeWrapper">
+      <crumbs
+        :title="'医学术语静态知识维护-'+title"
+        class="topBack"
+        :param="$route.params"
+        linkTo="StaticInfo"
+      ></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||form.typeId==6)"
+            :label="titleChange"
+            prop="titleChange"
+            label-width="160px"
+          >
+            <el-input v-model="form.titleChange"></el-input>
+          </el-form-item>
+          <p class="line"></p>
+          <DevInfo
+            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"
+            :isCopy="isCopy"
+            ref="subForm"
+            @add="addParagraph(i)"
+            @del="delParagraph"
+            @reOrder="reOrder"
+            :showType="showType"
+          ></DevInfo>
+          <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-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>
+  </el-scrollbar>
+</template>
+<script>
+/**
+ *
+ */
+import api from '@api/cdss.js';
+import DevInfo from './DevInfo';
+import config from '@api/config';
+import $ from 'jquery';
+
+export default {
+  name: 'AddDevKnow',
+  components: {
+    DevInfo
+  },
+  data() {
+    return {
+      isFixedTop: true,
+      isEdit: false,
+      isCopy: false,
+      title: '添加',
+      termTypes: [],
+      terms: [], //术语列表
+      form: {
+        conceptId: '', //术语id
+        isTip: 0, //是否要覆盖,0不覆盖,1覆盖
+        selectedTerm: '', //术语标签
+        termType: '',
+        typeId: '',
+        selectedTermName: '',
+        selectedTermType: '',
+        // titleChange: '',
+        fileList: [],
+        name: '',
+        prags: [
+          {
+            //单个段落相关
+            title: '',
+            content: '',
+            isReason: 0,
+            orderNo: 0,
+            position: [],
+            text: ''
+          }
+        ],
+        fileTitle: '',
+        titleChange: ''
+      },
+      rules: {
+        selectedTerm: [
+          { required: true, message: '请选择标准术语', trigger: 'change' }
+        ],
+        fileTitle: [
+          { required: true, message: '请输入标题名称', trigger: 'change' },
+          {
+            validator: (rule, value, callback) => {
+              if (value.trim().length > 30) {
+                callback(new Error('标题名称不能超过30字'));
+              } else {
+                callback();
+              }
+            },
+            trigger: 'change'
+          }
+        ],
+        fileList: [
+          { required: true, message: '请上传文件', trigger: 'change' }
+        ],
+        titleChange: [
+          // {
+          //   validator: (rule, value, callback) => {
+          //     if (!value.trim()) {
+          //       callback(
+          //         new Error('请输入' + this.titleChange.replace(':', ''))
+          //       );
+          //     } else {
+          //       callback();
+          //     }
+          //   },
+          //   trigger: 'change'
+          // },
+          { max: 30, message: '标题最多30字', trigger: 'change' }
+        ]
+      },
+      saveDisable: false, //保存按钮禁止点击
+      showDrop: false, //下拉框显示文字bug1774
+      config: config,
+      showUpLoad: true,
+      showFileList: false,
+      upload: false,
+      showConfirm: true,
+      isSuccessUpload: 0, //是否上传成功  0: 不在上传  1: 上传过程中  2: 上传成功
+      isShowTip: false,
+      showType: -1, // 1 诊断  2  药品   3检验套餐 4检验细项  5检查 6检查子   7手术和操作
+      editCount: -1, // 页面会否被编辑 >0被编辑   =0 未编辑
+      startCount: -1,
+      isSaveSuccess: false // 是否保存成功
+    };
+  },
+  watch: {
+    showType: {
+      handler(newVal, oldVal) {
+        // console.log('newVal============', newVal, 'oldVal============', oldVal);
+        if (newVal !== oldVal) {
+          this.form.prags = this.form.prags.map(item => {
+            return { ...item, position: [] };
+          });
+        }
+      }
+    },
+    form: {
+      handler(newName, oldName) {
+        this.editCount++;
+      },
+      deep: true,
+      immediate: true
+    }
+  },
+  created: function() {
+    const { isEdit, data, isCopy } = this.$route.params;
+    if (isEdit || isCopy) {
+      this.showType = data.type; // 编辑页确认显示类型
+      this.isEdit = isEdit;
+      this.isCopy = isCopy;
+      this.title = isEdit ? '修改' : isCopy ? '复制' : '添加';
+      (isEdit || isCopy) && this.changeWord(data);
+      if (isCopy) {
+        const _this = this;
+        setTimeout(() => {
+          _this.handleClear();
+        }, 300);
+      }
+      api
+        .getTremList({ id: data.id })
+        .then(res => {
+          if (res.data.code == '0') {
+            const data = res.data.data;
+            if (this.form.typeId === 82 || this.form.typeId === 83) {
+              // console.log('data',data)
+              this.form.fileList =
+                data &&
+                data.map(it => {
+                  return JSON.parse(it.content);
+                });
+              this.showFileList = true;
+              this.showUpLoad = false;
+            } else {
+              this.conceptId = data.id;
+              this.form.typeId = data.type;
+              this.form.name = data.name;
+              this.form.titleChange =
+                data.type == 1
+                  ? data.clinicalPathwayName
+                  : data.type == 3 ||
+                    data.type == 4 ||
+                    data.type == 5 ||
+                    data.type == 6
+                  ? data.noticeName
+                  : '';
+              this.form.selectedTermName =
+                data.name + (data.typeName ? '(' + data.typeName + ')' : '');
+              this.form.selectedTerm =
+                data.name + (data.typeName ? '(' + data.typeName + ')' : '');
+              this.form.prags =
+                data &&
+                data.details.map(it => {
+                  return {
+                    title: it.title,
+                    position: this.mapStringToNum(it.contentType),
+                    content: it.content.replace(
+                      /{imageUrlPrefix}/g,
+                      config.imgHost
+                    ),
+                    // isReason:it.isReason,
+                    text: it.text,
+                    disabled: true
+                  };
+                });
+            }
+          }
+        })
+        .catch(error => {
+          if (error.code === '900010001') {
+            return false;
+          }
+          console.log(error);
+        });
+    }
+    setTimeout(() => {
+      this.startCount = this.editCount;
+    }, 500);
+  },
+  mounted() {},
+  beforeRouteLeave(to, from, next) {
+    // if (this.isSuccessUpload === 1) {
+    //   this.$confirm('文件正在上传,是否确定返回?', '提示', {
+    //     confirmButtonText: '确定',
+    //     cancelButtonText: '取消',
+    //     cancelButtonClass: 'cancel',
+    //     type: 'warning'
+    //   })
+    //     .then(() => {
+    //       next();
+    //     })
+    //     .catch(() => {});
+    //   //  this.warning('还有未保存的文件,是否确定返回?');
+    // } else if (this.isSuccessUpload === 2) {
+    //   this.$confirm('还有未保存的文件,是否确定返回?', '提示', {
+    //     confirmButtonText: '确定',
+    //     cancelButtonText: '取消',
+    //     cancelButtonClass: 'cancel',
+    //     type: 'warning'
+    //   })
+    //     .then(() => {
+    //       next();
+    //     })
+    //     .catch(() => {});
+    // } else {
+    //   next();
+    // }
+
+    if (this.startCount !== this.editCount && !this.isSaveSuccess) {
+      this.$alert('还有未保存的内容,确定要退出当前页面吗?', '提示', {
+        confirmButtonText: '确定',
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'leaveBtn',
+        // customClass: 'leaveBox',
+        type: 'warning'
+      })
+        .then(() => {
+          next();
+        })
+        .catch(() => {});
+    } else {
+      next();
+    }
+  },
+  methods: {
+    handleClear() {
+      this.form.selectedTermName = '';
+      this.form.selectedTerm = '';
+      this.form.titleChange = '';
+      // console.log('处理清空的操作');
+    },
+
+    handleMouseenter() {
+      if (this.form.fileList.length !== 0) {
+        this.isShowTip = true;
+      }
+    },
+    handleMouseleave() {
+      this.isShowTip = false;
+    },
+    changeWord(newVal) {
+      // console.log(newVal, '选中');
+      this.showType = newVal.type || -1;
+      const name = newVal.name;
+      const typeName = newVal.typeName;
+      const type = newVal.type;
+      this.form.selectedTermName =
+        name + (typeName ? '(' + typeName + ')' : '');
+      this.form.selectedTerm = name + (typeName ? '(' + typeName + ')' : '');
+      this.form.name = name;
+      this.form.fileList = [];
+      this.showFileList = false;
+      this.form.typeId = type || '';
+      this.showUpLoad = true;
+      this.titleChange =
+        type == 1
+          ? '临床路径标题:'
+          : type == 3 || type == 4 || type == 5 || type == 6
+          ? '注意事项标题:'
+          : '';
+      this.form.fileTitle = '';
+      if (newVal.typeId === 82 || newVal.typeId === 83) {
+        this.upload = true;
+        this.form.fileTitle = newVal.title;
+      } else {
+        this.upload = false;
+      }
+    },
+    handleVisible(flag) {
+      if (!flag) {
+        this.terms = [];
+      }
+    },
+    reOrder(isUp, i) {
+      // isUp: 1 上升    0 下降
+      let div = this.$refs['elscrollbar'].$refs['wrap'];
+      let temp = {},
+        it = {};
+      if (isUp === 1) {
+        if (i === 0) {
+          this.warning('已经是第一个,不能再升啦!');
+          return;
+        }
+        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(() => {
+          div.scrollTop = this.$refs.subForm[i - 1].$el.offsetTop - 48;
+        });
+      } else {
+        if (i === this.form.prags.length - 1) {
+          this.warning('已经是最后一个,不能再降啦!');
+          return;
+        }
+        temp = Object.assign(this.form.prags[i + 1]);
+        it = Object.assign(this.form.prags[i]);
+        this.form.prags.splice(i, 2, temp, it);
+      }
+    },
+    addParagraph(i) {
+      this.form.prags.splice(i + 1, 0, {
+        title: '',
+        content: '',
+        isReason: 0,
+        position: [],
+        text: ''
+      });
+      //添加段落光标自动落到新增的段落中
+      setTimeout(() => {
+        this.$refs.subForm[i + 1].$el
+          .getElementsByClassName('el-input__inner')[0]
+          .focus();
+      });
+    },
+    delParagraph(i) {
+      if (this.form.prags.length == 1) {
+        this.warning('只剩一个段落,不能再删啦!');
+        return;
+      }
+      this.showConfirmDialog('确定要删除该段落?', () => {
+        this.form.prags.splice(i, 1);
+      });
+    },
+    back() {
+      this.$router.go(-1);
+    },
+    searchTerms(query) {
+      if (!query.trim()) {
+        this.form.terms = [];
+        return;
+      }
+      //搜索术语列表
+      this.showDrop = true;
+      api.getAllConcept({ inputStr: query.trim(), types: [0] }).then(res => {
+        this.showDrop = false;
+        if (res.data.code === '0') {
+          this.terms = res.data.data;
+        } else {
+          this.warning('数据获取失败');
+        }
+      });
+    },
+    mapStringToNum(str) {
+      return str.split(',').map(it => {
+        return +it;
+      });
+    },
+
+    // 额外的表单检验
+    formVal() {
+      let positiontemp = this.form.prags.map(item => {
+        return [...item.position];
+      });
+      let positionArr = positiontemp.reduce(function(a, b) {
+        return a.concat(b);
+      }); // 所有被选中的值集合
+      console.log(positionArr, 'positionArr');
+      console.log(this.showType, '当前页的显示类型');
+      let isVisFlag = positionArr.some(item => item === 2);
+      let isDiagFlag = positionArr.some(item => item === 3);
+      console.log(isVisFlag, 'isVisFlag是否显示');
+      if (
+        (this.showType == 3 ||
+          this.showType == 4 ||
+          this.showType == 5 ||
+          this.showType == 6) &&
+        isVisFlag
+      ) {
+        console.log('进入校验');
+        //若医学术语为检验/检查,且内容类型选择了注意事项,此时“注意事项标题”是必填项
+        this.$refs.groups.clearValidate();
+        this.rules.titleChange.push({
+          required: true,
+          message: '请输入注意事项标题',
+          trigger: 'change'
+        });
+        this.$refs.groups.validateField('titleChange');
+        this.$refs.groups.validateField('selectedTerm');
+        this.rules.titleChange = this.rules.titleChange.slice(0, 1);
+
+        if (this.form.titleChange.trim() !== '') {
+          // console.log('内容不为空');
+          return true;
+        } else {
+          var div = this.$refs['elscrollbar'].$refs['wrap'];
+          this.$nextTick(() => {
+            div.scrollTop = 0;
+          });
+          return false;
+        }
+        // return;
+      } else if (isDiagFlag && this.showType == 1) {
+        // 若医学术语为诊断,且内容类型选择了临床路径,此时“临床路径标题”是必填项
+        this.$refs.groups.clearValidate();
+        this.rules.titleChange.push({
+          required: true,
+          message: '请输入临床路径标题',
+          trigger: 'change'
+        });
+        this.$refs.groups.validateField('titleChange');
+        this.$refs.groups.validateField('selectedTerm');
+        this.rules.titleChange = this.rules.titleChange.slice(0, 1);
+
+        if (this.form.titleChange.trim() !== '') {
+          // console.log('内容不为空');
+          return true;
+        } else {
+          var div = this.$refs['elscrollbar'].$refs['wrap'];
+          this.$nextTick(() => {
+            div.scrollTop = 0;
+          });
+          return false;
+        }
+      }
+    },
+
+    submitForm() {
+      if (this.isSuccessUpload === 1) {
+        this.warning('文件上传中,请稍等');
+        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;
+      }
+      //通过必填验证,提交保存
+      const item = this.form.prags;
+      let param = [];
+      if (this.form.typeId === 82 || this.form.typeId === 83) {
+        if (this.form.fileList.length === 0) {
+          this.warning('文件未上传,不存储数据');
+          return;
+        }
+        param.push(
+          Object.assign(
+            {},
+            {
+              position: this.form.typeId === 82 ? '8' : '9',
+              conceptId: this.form.conceptId,
+              title: this.form.fileTitle,
+              orderNo: 0,
+              content: JSON.stringify(this.form.fileList[0])
+            }
+          )
+        );
+      } else {
+        let data = this.form.prags,
+          tempArr = [],
+          paramsAll = {},
+          types = this.form.typeId;
+        for (let i = 0; i < data.length; i++) {
+          let obj = {};
+          obj.content = data[i].content;
+          obj.text = data[i].text;
+          obj.conceptId = data[i].conceptId;
+          obj.orderNo = i;
+          obj.title = data[i].title;
+          obj.contentType = data[i].position.join(',');
+          tempArr.push(obj);
+        }
+        paramsAll.clinicalPathwayName = types == 1 ? this.form.titleChange : '';
+        paramsAll.id = this.conceptId;
+        paramsAll.name = this.form.name;
+        paramsAll.noticeName =
+          types == 3 || types == 4 || types == 5 || types == 6
+            ? this.form.titleChange
+            : '';
+        paramsAll.type = this.form.typeId;
+        paramsAll.details = tempArr;
+        param = paramsAll;
+      }
+      // this.showSaveDialog(param,'是否'+(this.isEdit?'修改':'保存')+'该静态知识?');
+
+      if (!this.isEdit) {
+        // 新增页面
+        this.saveDisable = true;
+        this.sendSaveOrEdit(param);
+        return;
+      }
+      this.showSaveDialog(
+        param,
+        '<div><p style="color: #333333">确定保存修改内容?</p><p style="color: #D70A25">保存后将覆盖原有数据,且原有数据无法恢复。</p></div>'
+      );
+    },
+    showSaveDialog(param, msg) {
+      this.showConfirmDialog(msg, () => {
+        this.saveDisable = true; //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
+        this.sendSaveOrEdit(param);
+      });
+    },
+
+    //保存编辑 接口
+    sendSaveOrEdit(param) {
+      this.isCopy && (param.id = undefined);
+      api
+        .saveTermPrompts(param)
+        .then(res => {
+          if (res.data.code === '0') {
+            this.isSuccessUpload = 0; // 修改文件上传状态为0
+            this.warning(res.data.msg || '保存成功', 'success');
+            this.isSaveSuccess = true; // 保存成功,可正常退出
+            //返回带搜索条件的首页
+            this.$router.push({
+              name: 'MedicinePromptCDSS',
+              params: Object.assign({}, this.$route.params, {
+                currentPage: 1
+              })
+            });
+          } else {
+            this.warning(res.data.msg);
+          }
+          this.saveDisable = false;
+        })
+        .catch(err => {
+          if (err.code === '900010001') {
+            return false;
+          }
+          this.saveDisable = false;
+          this.warning(err);
+        });
+    },
+
+    // 弹出窗
+    showConfirmDialog(msg, resolve) {
+      this.$alert(msg, '提示', {
+        confirmButtonText: '确定',
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancel',
+        // confirmButtonClass: 'confirmBtn',
+        dangerouslyUseHTMLString: true,
+        type: 'warning'
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || 'warning'
+      });
+    },
+    handleChange(file, fileList) {
+      // if(fileList&&fileList[0]&&fileList[0].response&&fileList[0].response.code==='0'){
+      //   this.showUpLoad = false
+      //   this.showFileList = true
+      // }else{
+      //    this.showUpLoad = true
+      //    this.showFileList = false
+      // }
+      // console.log(fileList,this.form.fileList,'aa')
+    },
+    handleSuccess(response, file, fileList) {
+      if (response.code == '0') {
+        this.showFileList = true;
+        this.form.fileList = [];
+        this.form.fileList.push({
+          name: response.data.title,
+          url: response.data.url,
+          size: response.data.size
+        });
+        this.showUpLoad = false;
+        if (!this.form.fileTitle) {
+          this.form.fileTitle = response.data.title;
+        }
+        this.isSuccessUpload = 2; // 上传成功状态
+        this.$refs.upload && this.$refs.upload.clearValidate(); // 清除校验
+      } else {
+        this.warning(response.msg || '上传失败');
+        // this.form.fileList = []
+        this.showUpLoad = true;
+        this.showFileList = false;
+        this.form.fileList = [];
+      }
+    },
+    handleRemove(file, fileList) {
+      this.showUpLoad = true;
+      this.form.fileList = [];
+      this.isSuccessUpload = 0;
+    },
+    handleBeforeUpLoad(file) {
+      // 上传过程中   上传按钮 隐藏
+      this.isSuccessUpload = 1; // 上传过程中
+      this.showFileList = true; // 新增 进度条  显示
+      this.$refs.upload && this.$refs.upload.clearValidate(); // 清除校验
+
+      this.showUpLoad = false;
+      if (file.size / 1024 / 1024 >= 500) {
+        this.warning('文件上传失败,超出大小限制500MB');
+        this.form.fileList = [];
+        this.showConfirm = false;
+        return false;
+      } else {
+        this.showConfirm = true;
+      }
+    },
+    handlePreview(file) {},
+    beforeRemove(file, fileList) {
+      if (this.showConfirm) {
+        return this.$alert(`确定移除 ${file.name}?`, '', {
+          cancelButtonClass: 'cacelBtn'
+        });
+      }
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+@import '../../less/common.less';
+.cell .el-button.delete:focus {
+  color: red !important;
+}
+
+.topBack {
+  top: 0;
+}
+.info-container {
+  background: #fff;
+  padding: 20px;
+  margin: 70px 20px -20px 20px;
+  .el-input__inner {
+    width: 200px;
+  }
+  .el-form-item__label {
+    text-align: left;
+  }
+  .add-prg .el-form-item {
+    margin-bottom: 20px;
+  }
+  .el-form-item {
+    margin-bottom: 8px !important;
+  }
+}
+// .cancel span {
+//   color: #22ccc8;
+// }
+.line {
+  border-top: 1px #dcdfe6 solid;
+  margin-bottom: 25px;
+  margin-top: 25px;
+}
+.NoiseTemplateWrapper .info-container .el-input__inner {
+  width: 250px;
+}
+// .NoiseTemplateWrapper .el-select .el-input .el-icon-circle-close{
+//     display: inherit!important;
+// }
+.cacelBtn {
+  color: #22ccc8 !important;
+}
+.upload-demo {
+  width: 300px;
+  /deep/.el-upload-list__item .el-icon-close-tip {
+    display: none !important;
+  }
+
+  /deep/.el-upload-list__item .el-upload-list__item-name {
+    max-width: 250px;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+  }
+  /deep/ .focusing {
+    // border: 1px solid transparent !important;
+    outline: transparent !important;
+  }
+}
+.uploadInfo {
+  margin-top: -20px;
+  color: #606266;
+}
+.tipInfo {
+  position: absolute;
+  // position: relative;
+  line-height: 24px;
+  top: -56px;
+  left: 20px;
+  // background-color: transparent;
+  // color: #606266;
+  padding: 3px 10px;
+  border-radius: 4px;
+  margin: 100px auto;
+  background-color: #4d4d4d;
+  text-align: center;
+  color: #fff;
+  font-size: 14px;
+}
+.tipInfo:before {
+  content: '';
+  display: block;
+  position: absolute;
+  // bottom: 9px;
+  top: -10px;
+  left: 18px;
+  border-bottom: 6px solid #4d4d4d;
+  border-top: 6px solid transparent;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  // border-right: 6px solid #4D4D4D;
+}
+.btn {
+  text-align: right;
+  padding-right: 20px;
+}
+.el-message-box {
+  /deep/ .el-icon-warning {
+    background-color: transparent !important;
+    // display: none;
+  }
+  /deep/ .el-message-box__message {
+    margin: 24px 0px;
+  }
+  // /deep/ .confirmBtn {
+  //   // position: relative;
+  //   // right: 240px !important;
+  //   // top: 0px;
+  //   background-color: #fff !important;
+  //   span {
+  //     color: #48c5d7 !important;
+  //   }
+  // }
+  /deep/ .cancel {
+    background-color: #d7d7d7;
+    border-color: transparent !important;
+    span {
+      color: #fff;
+    }
+  }
+}
+</style>
+

+ 284 - 0
src/components/developKnow/DevInfo.vue

@@ -0,0 +1,284 @@
+<template>
+  <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="请选择">
+                <el-option label="否" :value="0"></el-option>
+                <el-option label="是" :value="1"></el-option>
+            </el-select>
+    </el-form-item>-->
+    <el-form-item label="段落标题:" prop="title" label-width="160px" class="is-required">
+      <el-input v-model="data.title"></el-input>
+    </el-form-item>
+    <el-form-item label="内容类型:" prop="position" label-width="160px">
+      <el-checkbox-group v-model="data.position">
+        <el-checkbox v-for="it in positions" :key="it.key" :label="it.key">{{it.name}}</el-checkbox>
+      </el-checkbox-group>
+    </el-form-item>
+    <el-form-item label="内容" prop="content" label-width="160px" ref="editor">
+      <quillEditor
+        v-model="data.content"
+        :options="editorOption"
+        class="ql-editor"
+        ref="quillEditor"
+      ></quillEditor>
+    </el-form-item>
+    <div class="order-btn">
+      <a v-if="index!==0" :class="index===total-1?'order-spc':'order-up'" @click="reOrder(1)">上升</a>
+      <a v-if="index!==total-1" :class="index===0?'order-spc':'order-down'" @click="reOrder(0)">下降</a>
+    </div>
+    <el-form-item label-width="160px" class="btns">
+      <el-button @click="addEmit">添加段落</el-button>
+      <el-button @click="delEmit" type="info">删除本段落</el-button>
+    </el-form-item>
+  </el-form>
+</template>
+
+<script>
+import 'quill/dist/quill.core.css';
+import 'quill/dist/quill.snow.css';
+import 'quill/dist/quill.bubble.css';
+import { quillEditor, Quill } from 'vue-quill-editor';
+import config from '@api/config';
+import { container, ImageExtend, QuillWatch } from 'quill-image-extend-module';
+Quill.register('modules/ImageExtend', ImageExtend);
+export default {
+  props: ['data', 'index', 'isEdit', 'isCopy', 'total', 'showType'],
+  name: 'DevInfo',
+  components: {
+    quillEditor
+  },
+  data() {
+    return {
+      toolbars: [
+        [
+          ['bold', 'underline', 'strike'],
+          [{ list: 'ordered' }, { list: 'bullet' }],
+          [{ script: 'sub' }, { script: 'super' }],
+          [{ color: [] }, { background: [] }],
+          [{ align: [] }],
+          ['image']
+        ]
+      ],
+      toolbarMode: 0,
+      editorOption: {
+        modules: {
+          ImageExtend: {
+            loading: true,
+            name: 'upfile',
+            size: 1,
+            sizeError: () => {
+              this.$message({
+                showClose: true,
+                message: '请上传 1M 以内的图片!',
+                type: 'warning'
+              });
+            },
+            action: config.urls.promptServer,
+            response: res => {
+              if (res.code == '0') {
+                return config.imgHost + res.data.url;
+              } else {
+                this.$message({
+                  showClose: true,
+                  message: res.msg,
+                  type: 'warning'
+                });
+              }
+            }
+          },
+          toolbar: {
+            container: container,
+            handlers: {
+              image: function() {
+                QuillWatch.emit(this.quill.id);
+              }
+            }
+          }
+        }
+      },
+      form: {
+        position: [],
+        orderNo: 0
+      },
+      positions: [], //位置列表
+      rules: {}
+    };
+  },
+  watch: {
+    'data.content': function() {
+      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;
+    }
+  },
+  created() {
+    // console.log(this.showType, 'showType','需要显示的类型');
+    this.editorOption.modules.toolbar.container = this.toolbars[
+      this.toolbarMode
+    ];
+    this.renderPositions();
+    if (this.isEdit||this.isCopy) {
+      setTimeout(() => {
+        this.rules = {
+          position: [
+            { required: true, message: '请选择内容类型', trigger: 'change' }
+          ],
+          title: [
+            {
+              validator: (rule, value, callback) => {
+                if (!value.trim()) {
+                  callback(new Error('请输入段落标题'));
+                } else {
+                  callback();
+                }
+              },
+              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: [
+          {
+            validator: (rule, value, callback) => {
+              if (!value.trim()) {
+                callback(new Error('请输入段落内容'));
+              } else {
+                callback();
+              }
+            },
+            trigger: 'change'
+          },
+          { max: 30, message: '标题名称不能超过30字', trigger: 'change' }
+        ],
+        content: [
+          { required: true, message: '请输入段落内容', trigger: 'change' }
+        ]
+      };
+    }
+  },
+  mounted() {},
+  methods: {
+    reOrder(i) {
+      this.$emit('reOrder', i, this.index);
+    },
+    addEmit() {
+      this.$emit('add');
+    },
+    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.showType == 6
+      ) {
+        // 检验/检查
+        this.positions = positions.filter(item => {
+          return item.key <= 2;
+        });
+      } else if (this.showType == 2 || this.showType == 7) {
+        // 药品/手术
+        this.positions = positions.filter(item => item.key === 1);
+      } else {
+        this.positions = positions;
+      }
+    }
+
+    /*emitVal(){
+        let data = this.form;
+        let pst=this.form.position;
+        const content =  this.form.content.replace(config.imgHost,'{imageUrlPrefix}');
+        const text = this.$refs.quillEditor;console.log(text)
+        pst = typeof pst=='string'?pst:pst.join(',');
+        data =   Object.assign({},data,{
+                                        position:this.form.position?pst:'',
+                                        orderNo:this.index,
+                                        text:'',
+                                        content:content});
+        this.$emit("change",this.index,data);
+      }*/
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.quill-editor.ql-editor {
+  padding-left: 0 !important;
+}
+.is-error .el-form-item__error {
+  top: auto;
+}
+.sub-form {
+  position: relative;
+}
+.order-btn {
+  // position: absolute;
+  top: 12px;
+  right: 0;
+  display: flex;
+  a {
+    margin-bottom: 20px;
+    border: 1px solid #22ccc8;
+    color: #22ccc8;
+    padding: 5px 10px;
+    border-radius: 4px;
+    cursor: pointer;
+    font-size: 12px;
+  }
+  .order-spc {
+    margin-top: 28px;
+  }
+  .order-down {
+    margin-left: 20px;
+  }
+}
+/**富文本编辑器样式修改***/
+.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,
+it .ql-editor,
+.quill-editor {
+  padding-top: 0px !important;
+  margin-top: -8px;
+  min-height: 48px;
+  p {
+    padding-top: 8px;
+  }
+}
+.ql-editor.ql-blank::before {
+  padding-top: 0px;
+}
+.btns {
+  margin-top: 20px;
+}
+</style>

+ 438 - 0
src/components/developKnow/StaticInfo.vue

@@ -0,0 +1,438 @@
+<template>
+  <div>
+    <crumbs title="医学术语静态知识维护" style="min-width: 1088px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="术语分类:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.libType" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in typeList"
+              :label="item.name"
+              :value="item.orderNo"
+              :key="item.orderNo"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <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-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>
+        </el-form-item>
+        <el-form-item class="dododo">
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button
+            size="mini"
+            type="warning"
+            @click="reIdentification"
+          >{{!reLoading?'更新图谱标识':'正在更新中...'}}</el-button>
+          <el-button size="mini" type="warning" @click="addMedicalPrompt">添加静态知识</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%">
+        <el-table-column type="index" :index="indexMethod" label="编号" width="80"></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" :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===1"
+              type="text"
+              size="small"
+              @click="toEditProduct(scope.row)"
+            >修改</el-button>
+             <span style="margin:0 3px;">|</span>
+             <el-button type="text" size="small" @click="toCopyProduct(scope.row)">复制</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.status===0"
+              type="text"
+              size="small"
+              @click="showReuseDialog(scope.row)"
+            >启用</el-button>
+            <el-button
+              v-if="scope.row.status===1"
+              type="text"
+              size="small"
+              class="delete"
+              @click="showDelDialog(scope.row)"
+            >禁用</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        :current-page.sync="currentPage"
+        @current-change="currentChange"
+        background
+        :page-size="pageSize"
+        class="pagepage pagepage"
+        :page-sizes="pageSizeArr"
+        @size-change="handleSizeChange"
+        :layout="pageLayout"
+        :total="total"
+      ></el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from '@api/cdss.js';
+import config from '@api/config.js';
+import utils from '@api/utils.js';
+
+export default {
+  name: 'MedicinePrompt',
+  data: function() {
+    return {
+      list: [],
+      cacheData: {},
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      linkIn: [],
+      pays: [],
+      typeList: [],
+      stateList: [
+        { id: 1, name: '启用' },
+        { id: 0, name: '禁用' }
+      ],
+      searched: false,
+      filter: {
+        term: '',
+        title: '',
+        status: '',
+        libType: ''
+      },
+      reLoading: false //更新图谱标识
+    };
+  },
+  created() {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      // that.getDataList();
+      // that.getListDicCDSS();
+    });
+    // this.typeList = config.emData;
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    //更新图谱标识
+    reIdentification() {
+      this.reLoading = true;
+      api.BatchUpdateHasInfoStatus().then(res => {
+        this.reLoading = false;
+        if (res.data.code === '0' && res.data.data === true) {
+          // 更新成功
+          this.warning('更新成功', 'success');
+        } else {
+          // 更新失败
+          this.warning('更新失败');
+        }
+      });
+    },
+
+    getListDicCDSS() {
+      api.getListDicCDSS().then(res => {
+        if (res.data.code === '0') {
+          this.typeList = res.data.data && res.data.data['10'];
+        }
+      });
+    },
+
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+    addMedicalPrompt() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: 'AddDevKnow', params: pam });
+    },
+    toEditProduct(row) {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: 'AddDevKnow',
+        params: Object.assign(pam, { data: row, isEdit: true })
+      });
+    },
+    toCopyProduct(row) {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: 'AddDevKnow',
+        params: Object.assign(pam, { data: row, isCopy: true })
+      });
+    },
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    getDataList(isTurnPage) {
+      const param = this.getFilterItems(isTurnPage);
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: 'Loading',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      });
+      api
+        .getConceptKnowledgeList(param)
+        .then(res => {
+          loading.close();
+          if (res.data.code == '0') {
+            const data = res.data.data;
+            // 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项  7-手术和操作
+            let temp = [
+              '',
+              '诊断',
+              '药品',
+              '检验套餐',
+              '检验细项',
+              '检查',
+              '检查子项',
+              '手术和操作'
+            ];
+            this.list = data.records = data.records.filter(item => {
+              item.typeName = temp[item.type];
+              return item;
+            });
+            this.cacheData[param.current] = data.records;
+            this.total = data.total;
+            if (this.inCurrentPage !== undefined) {
+              this.currentPage = this.inCurrentPage;
+              this.inCurrentPage = undefined;
+            }
+          }
+        })
+        .catch(error => {
+          if (error.code === '900010001') {
+            return false;
+          }
+          console.log(error);
+        });
+    },
+    clearFilter() {
+      this.filter = {
+        term: '',
+        title: '',
+        status: '',
+        libType: ''
+      };
+    },
+    getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      const param = {
+        name: this.filter.term.trim(),
+        title: this.filter.title,
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        status: this.filter.status,
+        type: this.filter.libType
+      };
+      return param;
+    },
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      /*if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+          this.list = this.cacheData[next];
+        } else {*/
+      this.getDataList(true);
+      //}
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || 'warning'
+      });
+    },
+    showConfirmDialog(msg, resolve, type) {
+      let showInfo = '启用';
+      let btnNameClass = 'confirmBtn1';
+      if (type === 'Del') {
+        showInfo = '禁用';
+        btnNameClass = 'delBtn';
+      }
+
+      this.$alert(msg, '提示', {
+        confirmButtonText: showInfo,
+        // cancelButtonText: '取消',
+        // cancelButtonClass: 'cancelBtn',
+        // confirmButtonClass: btnNameClass,
+        type: 'warning'
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    showDelDialog(row) {
+      this.showConfirmDialog(
+        '确定禁用该静态知识?',
+        () => {
+          api
+            .delConceptInfo({ id: row.id, status: 0 })
+            .then(res => {
+              if (res.data.code == '0') {
+                if (!this.searched) {
+                  //未点确认时清空搜索条件
+                  this.clearFilter();
+                }
+                this.warning(res.data.msg || '操作成功', 'success');
+                this.getDataList();
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === '900010001') {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        'Del'
+      );
+    },
+    showReuseDialog(row) {
+      this.showConfirmDialog(
+        '确定启用该静态知识?',
+        () => {
+          api
+            .delConceptInfo({ id: row.id, status: 1 })
+            .then(res => {
+              if (res.data.code == '0') {
+                this.currentPage = 1; //恢复数据跳转到筛选条件下首页
+                this.warning(res.data.msg || '操作成功', 'success');
+                this.getDataList();
+              } else {
+                this.warning(res.data.msg);
+              }
+            })
+            .catch(error => {
+              if (error.code === '900010001') {
+                return false;
+              }
+              this.warning(error);
+            });
+        },
+        'Reuse'
+      );
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+@import '../../less/admin.less';
+.status-span {
+  font-size: 12px;
+  margin-right: 10px;
+  color: unset;
+}
+.dododo {
+  margin-top: 1px !important;
+}
+.pagepage {
+  .el-input.el-input--mini.el-input--suffix input {
+    height: 28px;
+    line-height: 28px;
+  }
+  .el-pagination__sizes {
+    margin-right: 20px !important;
+  }
+}
+.el-message-box {
+  /deep/ .cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn1 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+
+.selectMedicine {
+  // /deep/ .el-input__suffix-inner {
+  //   position: relative;
+  //   top: -1px;
+  // }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    // top: -2px;
+    left: 12px;
+  }
+}
+
+body {
+  .el-tooltip__popper {
+    max-width: 400px;
+  }
+}
+</style>

+ 36 - 1
src/routes.js

@@ -196,6 +196,12 @@ import OtherAuxRuleTest from '@components/testManager/knowledgeMapRule/OtherAuxR
 import OtherFusionRuleTest from '@components/testManager/knowledgeMapRule/OtherFusionRuleTest.vue';
 import LessStaticOrNoMap from '@components/testManager/staticKnowledgeMap/LessStaticOrNoMap.vue';
 
+import BasicTermsMaintenance from '@components/basicKnow/BasicTermsMaintenance.vue'   //知识库基础维护-基础术语维护
+import BasicRelationship from '@components/basicKnow/BasicRelationship.vue'   //知识库基础维护-基础关系类型维护
+import BasicPartOfSpeech from '@components/basicKnow/BasicPartOfSpeech.vue'   //知识库基础维护-基础词性类型维护
+import AddTerm from '@components/basicKnow/AddTerm.vue'   //知识库基础维护-基础词性类型维护-编辑
+import StaticInfo from '@components/developKnow/StaticInfo.vue'   //知识库扩展维护-静态信息维护
+import AddDevKnow from '@components/developKnow/AddDevKnow.vue'   //知识库扩展维护-静态信息维护-编辑
 
 export default [
   {
@@ -563,7 +569,36 @@ export default [
         component: LessStaticOrNoMap,
         name: 'LessStaticOrNoMap',
       },
-      
+      {
+        path: 'LT-ZSKJCWH-JCSYWH',
+        component: BasicTermsMaintenance,
+        name: 'BasicTermsMaintenance',
+      },
+      {
+        path: 'LT-ZSKJCWH-JCCXWH',
+        component: BasicPartOfSpeech,
+        name: 'BasicPartOfSpeech',
+      },
+      {
+        path: 'LT-ZSKJCWH-JCGXLXWH',
+        component: BasicRelationship,
+        name: 'BasicRelationship',
+      },
+      {
+        path: 'LT-ZSKJCWH-JCSYWH-EDIT',
+        component: AddTerm,
+        name: 'AddTerm',
+      },
+      {
+        path: 'LT-ZSKKZWH-JTXXWH',
+        component: StaticInfo,
+        name: 'StaticInfo',
+      },
+      {
+        path: 'LT-ZSKKZWH-JTXXWH-EDIT',
+        component: AddDevKnow,
+        name: 'AddDevKnow',
+      },
     ],
   },
 ];