diff --git a/src/api/basic/consume/materialCategory.js b/src/api/basic/consume/materialCategory.js
new file mode 100644
index 00000000..2fb474d3
--- /dev/null
+++ b/src/api/basic/consume/materialCategory.js
@@ -0,0 +1,15 @@
+import axios from "@/utils/request";
+
+export function deptCategoryTreeselect(deptCode) {
+  return axios({
+    url: `/deptCategoryTreeselect/${deptCode}`,
+    method: "GET"
+  });
+}
+
+export function deptCategoryList(deptCode) {
+  return axios({
+    url: `/deptCategoryList/${deptCode}`,
+    method: "GET"
+  });
+}
diff --git a/src/views/basic/consume/materialCategory.vue b/src/views/basic/consume/materialCategory.vue
new file mode 100644
index 00000000..3793a76b
--- /dev/null
+++ b/src/views/basic/consume/materialCategory.vue
@@ -0,0 +1,240 @@
+<template>
+  <div>
+    <el-card>
+      <el-form :model="query" v-if="showSearch" label-width="auto">
+        <el-row :gutter="20">
+          <el-col :span="6">
+            <el-form-item label="所属科室">
+              <deptSelect :value.sync="query.deptCode"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div class="top-right-btn">
+        <el-button-group>
+          <el-button icon="el-icon-view" type="primary" @click="showSearch = !showSearch">显示/隐藏搜索栏</el-button>
+          <el-button
+            type="primary"
+            icon="el-icon-refresh"
+            @click="onReset"
+          >重置
+          </el-button>
+          <el-button type="primary" icon="el-icon-search" @click="search"
+          >查询
+          </el-button>
+          <el-button type="primary" icon="el-icon-plus" @click="add"
+          >添加
+          </el-button>
+        </el-button-group>
+      </div>
+    </el-card>
+    <el-card>
+      <el-row>
+        <el-col :span="24">
+          <el-table
+            :data="dataList"
+            border
+            width="100%"
+            :header-cell-style="{ 'text-align': 'center' }"
+            :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+            :row-key="(record) => record.categoryId"
+            :row-style="{height: '10'}"
+          >
+            <el-table-column
+              label="分类ID"
+              prop="categoryId"
+              align="center"
+            ></el-table-column>
+            <el-table-column label="父级分类ID" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.parentCategoryId == null ? '-' : scope.row.parentCategoryId }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="分类名称"
+              prop="categoryName"
+              align="center"
+            ></el-table-column>
+
+            <el-table-column
+              label="分类级别"
+              prop="level"
+              align="center"
+            ></el-table-column>
+
+            <el-table-column
+              label="分类描述"
+              prop="description"
+              align="center"
+            ></el-table-column>
+
+            <el-table-column
+              label="操作"
+              align="center"
+            >
+              <el-button-group style="margin-bottom: 8px; margin-top: 8px;">
+                <el-button type="danger"  @click.native="del(scope.row)" :loading="loading">删除</el-button>
+              </el-button-group>
+            </el-table-column>
+          </el-table>
+        </el-col>
+      </el-row>
+    </el-card>
+
+    <el-dialog
+      title="添加科室医保分类绑定"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :visible.sync="selectDialog"
+      width="65%"
+      append-to-body
+      v-if="selectDialog"
+    >
+      <el-form :model="addData" label-width="auto">
+
+        <el-row :gutter="20">
+          <el-col :span="6">
+            <el-form-item label="所属科室">
+              <deptSelect :value.sync="addData.deptCode" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+      <el-form-item label="医保分类绑定">
+        <el-checkbox v-model="categoryExpand" @change="handleCheckedTreeExpand($event, 'deptCategory')">展开/折叠</el-checkbox>
+        <el-checkbox v-model="categoryNodeAll" @change="handleCheckedTreeNodeAll($event, 'deptCategory')">全选/全不选</el-checkbox>
+        <el-tree
+          props="categoryOptions"
+          class="tree-border"
+          :data="categoryOptions"
+          show-checkbox
+          ref="deptCategory"
+          node-key="id"
+          empty-text="加载中,请稍候"
+          :props="defaultProps"
+        ></el-tree>
+      </el-form-item>
+
+      </el-form>
+    </el-dialog>
+
+  </div>
+</template>
+
+
+<script>
+import { deptCategoryTreeselect , deptCategoryList} from '@/api/basic/consume/materialCategory'
+
+export default {
+  name: 'materialCategory',
+  data() {
+    return {
+      data: [],
+      showSearch:true,
+      query:{
+        deptCode: this.$store.getters.locDeptCode,
+      },
+      addData:{
+        deptCode: null,
+      },
+      selectDialog:false,
+      categoryExpand:false,
+      categoryNodeAll:false,
+      categoryOptions:[],
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
+    }
+  },
+  methods: {
+    handleUpdate() {
+      let deptCode = this.addData.deptCode
+      const deptCategory = this.getDeptCategoryTreeselect(deptCode)
+      this.$nextTick(() => {
+        deptCategory.then(res => {
+          let checkedKeys = res.data.checkedKeys
+          checkedKeys.forEach((v) => {
+            this.$nextTick(() => {
+              this.$refs.deptCategory.setChecked(v, true, false)
+            })
+          })
+        })
+      })
+    },
+    /** 根据deptCode查询菜单树结构 */
+    getDeptCategoryTreeselect(deptCode) {
+      return deptCategoryTreeselect(deptCode).then(response => {
+        this.categoryOptions = response.data.categorys;
+        return response;
+      });
+    },
+    // 树权限(展开/折叠)
+    handleCheckedTreeExpand(value, type) {
+      if (type == 'deptCategory') {
+        let treeList = this.categoryOptions;
+        for (let i = 0; i < treeList.length; i++) {
+          this.$refs.deptCategory.store.nodesMap[treeList[i].id].expanded = value;
+        }
+      }
+    },
+    // 树权限(全选/全不选)
+    handleCheckedTreeNodeAll(value, type) {
+      if (type == 'deptCategory') {
+        this.$refs.deptCategory.setCheckedNodes(value ? this.categoryOptions : []);
+      }
+    },
+    //获取结构树
+    getTrees(list, parentCategoryId = 0) {
+      let parentObj = {}
+      list.forEach((o) => {
+        parentObj[o.categoryId] = o
+      })
+      if (!parentCategoryId) {
+        return list
+          .filter((o) => !parentObj[o.parentCategoryId])
+          .map((o) => ((o.children = this.getTrees(list, o.categoryId)), o))
+      } else {
+        return list
+          .filter((o) => o.parentCategoryId == parentCategoryId)
+          .map((o) => ((o.children = this.getTrees(list, o.categoryId)), o))
+      }
+    },
+    //初始化数据
+    async  getData(deptCode) {
+       deptCategoryList(deptCode).then(response => {
+        var data = response.data;
+        if ( data == null || data == [] ){
+          this.dataList = []
+          return;
+        }else {
+          this.dataList = this.getTrees(data)
+          this.$forceUpdate();
+        }
+        });
+    },
+    search(){
+      this.getData(this.query.deptCode)
+    },
+    add(){
+      this.addData.deptCode = this.query.deptCode
+      this.handleUpdate()
+      this.selectDialog = !this.selectDialog
+    },
+    del(row){
+      console.log(row)
+    }
+
+  },
+  mounted() {
+    this.getData(this.$store.getters.locDeptCode)
+  },
+  created() {
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>