diff --git a/leave-school-vue/src/views/procedures/node/index.vue b/leave-school-vue/src/views/procedures/node/index.vue
new file mode 100644
index 0000000..648e4f2
--- /dev/null
+++ b/leave-school-vue/src/views/procedures/node/index.vue
@@ -0,0 +1,231 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-row :gutter="20">
+        <el-col :span="5">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="审核环节名称" v-model="listQuery.name">
+          </el-input>
+        </el-col>
+        <el-col :span="5">
+          <el-select class="filter-item" v-model="listQuery.auditType" placeholder="审核方式">
+            <el-option v-for="item in auditTypeList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="9">
+          <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">查询</el-button>
+          <el-button class="filter-item" style="margin-left: 10px;" @click="handleCreate(null, 'create')" type="primary" icon="el-icon-edit">添加</el-button>
+          <el-button class="filter-item" style="margin-left: 10px;" @click="handleReset" type="primary" icon="el-icon-edit">重置</el-button>
+        </el-col>
+      </el-row>
+    </div>
+    <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column align="center" type="index" label='序号' width="95">
+      </el-table-column>
+      <el-table-column label="审核环节名称" align="center">
+        <template slot-scope="scope">
+          {{scope.row.name}}
+        </template>
+      </el-table-column>
+      <el-table-column label="所属部门" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.department.dwmc}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="联系人" align="center">
+        <template slot-scope="scope">
+          {{scope.row.contact}}
+        </template>
+      </el-table-column>
+      <el-table-column label="联系电话" align="center">
+        <template slot-scope="scope">
+          {{scope.row.phoneNumber}}
+        </template>
+      </el-table-column>
+      <el-table-column label="审核环节地址" align="center">
+        <template slot-scope="scope">
+          {{scope.row.auditNodeAddress}}
+        </template>
+      </el-table-column>
+      <el-table-column label="审核环节职责" align="center">
+        <template slot-scope="scope">
+          {{scope.row.auditNodeDuty}}
+        </template>
+      </el-table-column>
+      <el-table-column label="审核方式" align="center">
+        <template slot-scope="scope">
+          {{scope.row.auditType.name}}
+        </template>
+      </el-table-column>
+      <el-table-column label="范围控制" align="center">
+        <template slot-scope="scope">
+          {{scope.row.scope.name}}
+        </template>
+      </el-table-column>
+      <el-table-column label="默认审核状态" align="center">
+        <template slot-scope="scope">
+          {{scope.row.defaultAuditStatus.name}}
+        </template>
+      </el-table-column>
+      <el-table-column
+        fixed="right"
+        header-align="center"
+        align="center"
+        width="150"
+        label="操作">
+        <template slot-scope="scope">
+          <el-button type="text" size="small" @click="handleCreate(scope.row.id, 'update')">修改</el-button>
+          <el-button type="text" size="small" @click="handleDelete(scope.row.id)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <div class="pagination-container">
+      <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listQuery.pageIndex" :page-sizes="[10,20,30, 50]" :page-size="listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="recordCount">
+      </el-pagination>
+    </div>
+
+    <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="80%" top="10vh">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='margin-left:50px;'>
+        <el-form-item label="审核环节名称" prop="name">
+          <el-input v-model="temp.name"></el-input>
+          <input type="hidden" v-model="temp.id" />
+        </el-form-item>
+        <el-form-item label="所属部门" prop="department">
+          <el-select class="filter-item" v-model="temp.department" placeholder="所属部门">
+            <el-option v-for="item in departmentList" :key="item.id" :label="item.dwmc" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="联系人" prop="contact">
+          <el-input v-model="temp.contact"></el-input>
+        </el-form-item>
+        <el-form-item label="联系电话" prop="phoneNumber">
+          <el-input v-model="temp.phoneNumber"></el-input>
+        </el-form-item>
+        <el-form-item label="审核方式" prop="auditType">
+          <el-select class="filter-item" v-model="temp.auditType" placeholder="请选择">
+            <el-option v-for="item in auditTypeList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="控制范围" prop="scope">
+          <el-select class="filter-item" v-model="temp.scope" placeholder="请选择">
+            <el-option v-for="item in scopeList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="默认审核状态" prop="defaultAuditStatus">
+          <el-select class="filter-item" v-model="temp.defaultAuditStatus" placeholder="请选择">
+            <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="审核环节职责" prop="auditNodeDuty">
+          <el-input type="textarea" :rows="4" v-model="temp.auditNodeDuty"></el-input>
+        </el-form-item>
+        <el-form-item label="审核环节地址" prop="auditNodeAddress">
+          <el-input type="textarea" :rows="4" v-model="temp.auditNodeAddress"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">返回</el-button>
+        <el-button type="primary" @click="createData">提交</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getList, getItem, createNode, deleteNode } from '@/api/leaveschoolnode-api'
+import { getDicList } from '@/api/dictionary-api'
+import { getDeptList } from '@/api/department-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = { auditType: '25', defaultAuditStatus: '22' }
+export default {
+  name: 'node',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      config: {
+        initialFrameWidth: null,
+        initialFrameHeight: 350
+      },
+      departmentList: [],
+      auditTypeList: [],
+      scopeList: [],
+      statusList: [],
+      rules: {
+        name: [{ required: true, message: '环节名称', trigger: 'blur' }],
+        scope: [{ required: true, message: '范围控制', trigger: 'change' }],
+        department: [{ required: true, message: '所属部门', trigger: 'change' }]
+      }
+    }
+  },
+  created() {
+    this.getDepartmentList()
+    this.getAuditTypeList()
+    this.getStatusList()
+    this.getScopeList()
+    this.handlePageList()
+    this.height = window.innerHeight - 266
+  },
+  methods: {
+    getDepartmentList() {
+      getDeptList().then(response => {
+        this.departmentList = response.items
+      })
+    },
+    getAuditTypeList() {
+      getDicList({ type: 'auditType' }).then(response => {
+        this.auditTypeList = response.items
+      })
+    },
+    getScopeList() {
+      getDicList({ type: 'scope' }).then(response => {
+        this.scopeList = response.items
+      })
+    },
+    getStatusList() {
+      getDicList({ type: 'defaultAuditStatus' }).then(response => {
+        this.statusList = response.items
+      })
+    },
+    handlePageList() {
+      crudPageList(this, getList)
+    },
+    handleCreate(rowid, dialogStatus) {
+      this.dialogStatus = dialogStatus
+      crudGetItem(this, getItem, rowid, initData)
+    },
+    handleReset() {
+      resetForm(this.listQuery)
+    },
+    handleFilter() {
+      this.listQuery.pageIndex = 1
+      this.handlePageList()
+    },
+    handleSizeChange(val) {
+      this.listQuery.pageSize = val
+      this.handlePageList()
+    },
+    handleCurrentChange(val) {
+      this.listQuery.pageIndex = val
+      this.handlePageList()
+    },
+    createData() {
+      // this.temp.ggnr = this.$refs.ue.getUEContent()
+      crudCreate(this, createNode, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteNode, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
