Browse Source

港口 集装箱对接

qinbai 3 years ago
parent
commit
c87e7d68d5

+ 87 - 0
src/api/basicData/container.js

@@ -0,0 +1,87 @@
+import request from '@/router/axios';
+
+//港口类型
+export const getTypeList = (param) => {
+  return request({
+    url: '/api/blade-client/container/type/list',
+    method: 'get',
+    params: param
+  })
+}
+
+export const typeRemove = (id) => {
+  return request({
+    url: '/api/blade-client/container/type/delete',
+    method: 'delete',
+    params: {
+      id:id
+    }
+  })
+}
+
+export const typeAdd = (row) => {
+  return request({
+    url: '/api/blade-client/container/type/add',
+    method: 'post',
+    data: row
+  })
+}
+
+export const typeUpdate = (row) => {
+  return request({
+    url: '/api/blade-client/container/type/edit',
+    method: 'post',
+    data: row
+  })
+}
+
+//港口列表
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-client/container/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/blade-client/container/add',
+    method: 'post',
+    data : row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/blade-client/container/edit',
+    method: 'put',
+    data : row
+  })
+}
+
+export const remove = (id) => {
+  return request({
+    url: '/api/blade-client/container/delete',
+    method: 'delete',
+    data: {
+      id:id
+    }
+  })
+}
+
+export const getPortTypeTree = (pid) => {
+  return request({
+    url: '/api/blade-client/port/getPortTypeList',
+    method: 'get',
+    params: {
+      pid
+    }
+  })
+}
+
+

+ 87 - 0
src/api/basicData/portinformation.js

@@ -0,0 +1,87 @@
+import request from '@/router/axios';
+
+//港口类型
+export const getTypeList = (param) => {
+  return request({
+    url: '/api/blade-client/port/type/list',
+    method: 'get',
+    params: param
+  })
+}
+
+export const typeRemove = (id) => {
+  return request({
+    url: '/api/blade-client/port/type/delete',
+    method: 'delete',
+    params: {
+      id:id
+    }
+  })
+}
+
+export const typeAdd = (row) => {
+  return request({
+    url: '/api/blade-client/port/type/add',
+    method: 'post',
+    data: row
+  })
+}
+
+export const typeUpdate = (row) => {
+  return request({
+    url: '/api/blade-client/port/type/edit',
+    method: 'post',
+    data: row
+  })
+}
+
+//港口列表
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-client/port/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/blade-client/port/add',
+    method: 'post',
+    data : row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/blade-client/port/edit',
+    method: 'put',
+    data : row
+  })
+}
+
+export const remove = (id) => {
+  return request({
+    url: '/api/blade-client/port/delete',
+    method: 'delete',
+    data: {
+      id:id
+    }
+  })
+}
+
+export const getPortTypeTree = (pid) => {
+  return request({
+    url: '/api/blade-client/port/getPortTypeList',
+    method: 'get',
+    params: {
+      pid
+    }
+  })
+}
+
+

+ 106 - 0
src/views/basicData/container/configuration/typeOption.json

@@ -0,0 +1,106 @@
+{
+  "headerAlign": "center",
+  "align": "center",
+  "border": true,
+  "index": true,
+  "lazy": true,
+  "tip": false,
+  "simplePage": true,
+  "searchShow": true,
+  "searchMenuPosition": "right",
+  "searchMenuSpan": 12,
+  "tree": true,
+  "selection": true,
+  "viewBtn": true,
+  "menuWidth": 300,
+  "labelWidth": 120,
+  "searchLabelWidth": 120,
+  "column": [
+    {
+      "label": "集装箱类型",
+      "prop": "name",
+      "search": true,
+      "index": 1,
+      "overHidden": true,
+      "rules": [
+        {
+          "required": true,
+          "message": " ",
+          "trigger": "blur"
+        }
+      ]
+    },
+    {
+      "label": "上级类型",
+      "prop": "parentId",
+      "dicData": [],
+      "type": "tree",
+      "hide": true,
+      "overHidden": true,
+      "props": {
+        "label": "cname",
+        "value": "id"
+      },
+      "rules": [{
+        "required": false,
+        "message": " ",
+        "trigger": "click"
+      }]
+    },
+    {
+      "label": "排序",
+      "prop": "sort",
+      "type": "number",
+      "index": 6,
+      "overHidden": true,
+      "rules": [{
+        "required": true,
+        "message": " ",
+        "trigger": "blur"
+      }]
+    },
+    {
+      "label": "状态",
+      "type": "select",
+      "prop": "status",
+      "search": true,
+      "index": 2,
+      "overHidden": true,
+      "value": 0,
+      "dicData": [{
+        "label": "正常",
+        "value": 0
+      }, {
+        "label": "关闭",
+        "value": 1
+      }],
+      "rules": [
+        {
+          "required": true,
+          "message": " ",
+          "trigger": "blur"
+        }
+      ]
+    },
+    {
+      "label": "创建人",
+      "prop": "createUserName",
+      "index": 4,
+      "overHidden": true,
+      "addDisplay": false,
+      "editDisplay":false
+    },
+    {
+      "label": "创建时间",
+      "prop": "createTime",
+      "type": "date",
+      "format": "yyyy-MM-dd HH:ss",
+      "valueFormat": "yyyy-MM-dd",
+      "overHidden": true,
+      "searchRange":true,
+      "addDisplay": false,
+      "editDisplay":false,
+      "index": 5
+    }
+  ]
+}

+ 173 - 0
src/views/basicData/container/type.vue

@@ -0,0 +1,173 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :data="dataList"
+               ref="crud"
+               v-model="form"
+               :table-loading="loading"
+               :page.sync="page"
+               :search.sync="search"
+               @row-del="rowDel"
+               @row-update="rowUpdate"
+               :before-open="beforeOpen"
+               :before-close="beforeClose"
+               @row-save="rowSave"
+               @search-change="searchChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad"
+               @tree-load="treeLoad"
+    >
+      <template slot-scope="scope" slot="menu">
+        <el-button
+          type="text"
+          icon="el-icon-circle-plus-outline"
+          size="small"
+          @click.stop="handleAdd(scope.row,scope.index)"
+        >新增子项
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import option from "./configuration/typeOption.json";
+  import {getTypeList , typeRemove ,typeAdd ,typeUpdate} from "@/api/basicData/container"
+
+  export default {
+    data() {
+      return {
+        form: {},
+        search:{},//搜索表单
+        option: option,
+        parentId:0,
+        loading:true,
+        dataList: [],
+        page: {
+          pageSize: 10,
+          pagerCount: 5,
+          total: 0,
+        },
+        query:{}
+      }
+    },
+    created() {
+
+    },
+    mounted() {
+      option.height = window.innerHeight - 310 ;
+    },
+    methods: {
+      onLoad(page, params = {}) {
+        this.loading = true;
+        let param = {
+          ...params,
+          current:this.page.currentPage,
+          size:this.page.pageSize,
+          parentId:0
+        };
+        getTypeList(param).then(res => {
+          this.dataList = res.data.data.records
+          this.page.total = res.data.data.total
+          this.loading=false;
+        })
+      },
+      refreshChange() {
+        this.loading=true;
+        this.onLoad(this.page,this.search);
+      },
+      //删除列表后面的删除按钮触发触发(row, index, done)
+      rowDel(row, index, done) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          return typeRemove(row.id);
+        }).then(() => {
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          // 数据回调进行刷新
+          done(row);
+        });
+      },
+      //新增时保存触发
+      rowSave(row, done, loading) {
+        typeAdd(row).then(res => {
+          this.onLoad(this.page, {parentId: 0});
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done()
+        })
+      },
+      //修改时的修改按钮点击触发
+      rowUpdate(row, index, done, loading) {
+        typeUpdate(row).then(() => {
+          this.onLoad(this.page, {parentId: 0});
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          // 数据回调进行刷新
+          done(row);
+        }, error => {
+          window.console.log(error);
+          loading();
+        });
+      },
+      //新增修改时给类型赋值
+      initData(){
+        getTypeList({parentId:0}).then(res => {
+          const column = this.findObject(this.option.column, "parentId");
+          column.dicData = res.data.data.records;
+        });
+      },
+      //新增子项触发
+      handleAdd(row) {
+        this.parentId = row.id;
+        const column = this.findObject(this.option.column, "parentId");
+        this.$set(this.form,"parentId",row.id)
+        column.addDisabled = true;
+        this.$refs.crud.rowAdd();
+      },
+      //新增子项和新增触发查询所有
+      beforeOpen(done, type) {
+        if (["add", "edit"].includes(type)) {
+          this.initData();
+        }
+        done();
+      },
+      //点击新增取消时触发
+      beforeClose(done) {
+        this.parentId = "";
+        const column = this.findObject(this.option.column, "parentId");
+        column.value = "";
+        column.addDisabled = false;
+        done();
+      },
+      //点击搜索按钮触发
+      searchChange(params, done) {
+        this.loading = true;
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done()
+      },
+      //列表内展开树节点
+      treeLoad(tree, treeNode, resolve) {
+        const parentId = tree.id;
+        getTypeList({parentId:parentId}).then(res => {
+          resolve(res.data.data.records);
+        });
+      },
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 17 - 32
src/views/basicData/portinformation/configuration/mainList.json

@@ -16,16 +16,8 @@
   "menuWidth": 220,
   "column": [
     {
-      "label": "港口类型",
-      "prop": "havenName",
-      "search": true,
-      "index": 1,
-      "width": 120
-    },
-    {
       "label": "港口编号",
-      "prop": "fNo",
-      "index": 2,
+      "prop": "code",
       "width": 150,
       "rules": [
         {
@@ -36,10 +28,9 @@
       ]
     },
     {
-      "label": "港口称",
-      "prop": "fName",
+      "label": "港口称",
+      "prop": "name",
       "search": true,
-      "index": 3,
       "width": 150,
       "rules": [
         {
@@ -51,43 +42,43 @@
     },
     {
       "label": "英文全称",
-      "prop": "fEname",
-      "index": 4,
+      "prop": "enName",
       "width": 150
     },
     {
+      "label": "港口类型",
+      "prop": "typeName",
+      "search": true,
+      "width": 120
+    },
+    {
       "label": "航线",
-      "prop": "portName",
-      "index": 5,
+      "prop": "line",
       "width": 120
     },
     {
       "label": "UNCODE",
-      "prop": "fUncode",
-      "index": 6,
+      "prop": "unCode",
       "width": 120
     },
     {
       "label": "国家",
-      "prop": "fCountry",
-      "index": 7,
+      "prop": "country",
       "width": 80
     },
     {
       "label": "省",
-      "prop": "fProvince",
-      "index": 8,
+      "prop": "province",
       "width": 80
     },
     {
       "label": "市",
-      "prop": "fCity",
-      "index": 9,
+      "prop": "city",
       "width": 80
     },
     {
       "label": "状态",
-      "prop": "fStatus",
+      "prop": "status",
       "type": "select",
       "dicData": [{
         "label": "正常",
@@ -97,13 +88,11 @@
         "value": 1
       }],
       "search": true,
-      "index": 10,
       "width": 120
     },
     {
       "label": "备注",
-      "prop": "remark",
-      "index": 11,
+      "prop": "remarks",
       "width": 150
     },
     {
@@ -111,7 +100,6 @@
       "prop": "createBy",
       "addDisplay": false,
       "editDisplay":false,
-      "index": 12,
       "width": 120
     },
     {
@@ -119,7 +107,6 @@
       "prop": "createTime",
       "addDisplay": false,
       "editDisplay":false,
-      "index": 13,
       "width": 150
     },
     {
@@ -127,7 +114,6 @@
       "prop": "updateBy",
       "addDisplay":false,
       "editDisplay":false,
-      "index": 14,
       "width": 120
     },
     {
@@ -135,7 +121,6 @@
       "prop": "updateTime",
       "addDisplay": false,
       "editDisplay":false,
-      "index": 15,
       "width": 150
     }
   ]

+ 104 - 0
src/views/basicData/portinformation/configuration/typeOption.json

@@ -0,0 +1,104 @@
+{
+  "headerAlign": "center",
+  "align": "center",
+  "border": true,
+  "index": true,
+  "lazy": true,
+  "tip": false,
+  "simplePage": true,
+  "searchShow": true,
+  "searchMenuPosition": "right",
+  "searchMenuSpan": 12,
+  "tree": true,
+  "selection": true,
+  "viewBtn": true,
+  "menuWidth": 300,
+  "column": [
+    {
+      "label": "港口类型",
+      "prop": "name",
+      "search": true,
+      "overHidden": true,
+      "rules": [
+        {
+          "required": true,
+          "message": " ",
+          "trigger": "blur"
+        }
+      ]
+    },
+    {
+      "label": "上级类型",
+      "prop": "parentId",
+      "dicData": [],
+      "type": "tree",
+      "hide": true,
+      "overHidden": true,
+      "props": {
+        "label": "name",
+        "value": "id"
+      },
+      "rules": [{
+        "required": false,
+        "message": " ",
+        "trigger": "click"
+      }]
+    },
+    {
+      "label": "排序",
+      "prop": "sort",
+      "type": "number",
+      "overHidden": true,
+      "rules": [{
+        "required": true,
+        "message": " ",
+        "trigger": "blur"
+      }]
+    },
+    {
+      "label": "状态",
+      "type": "select",
+      "prop": "status",
+      "search": true,
+      "overHidden": true,
+      "value": 0,
+      "dicData": [{
+        "label": "正常",
+        "value": 0
+      }, {
+        "label": "关闭",
+        "value": 1
+      }],
+      "rules": [
+        {
+          "required": true,
+          "message": " ",
+          "trigger": "blur"
+        }
+      ]
+    },
+    {
+      "label": "备注",
+      "prop": "remarks",
+      "overHidden": true
+    },
+    {
+      "label": "创建人",
+      "prop": "createUserName",
+      "overHidden": true,
+      "addDisplay": false,
+      "editDisplay":false
+    },
+    {
+      "label": "创建时间",
+      "prop": "createTime",
+      "type": "date",
+      "format": "yyyy-MM-dd HH:ss",
+      "valueFormat": "yyyy-MM-dd",
+      "overHidden": true,
+      "searchRange":true,
+      "addDisplay": false,
+      "editDisplay":false
+    }
+  ]
+}

+ 195 - 78
src/views/basicData/portinformation/index.vue

@@ -1,118 +1,235 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :data="dataList"
-               ref="crud"
-               v-model="form"
-               :page.sync="page"
-               @row-del="rowDel"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button
-          icon="el-icon-printer"
-          size="small"
-          type="primary"
-          @click.stop=""
-        >报 表
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+  <el-row>
+    <el-col :span="4">
+      <div class="box">
+        <el-scrollbar>
+          <basic-container>
+            <avue-tree
+              :option="treeOption"
+              :data="treeData"
+              @node-click="nodeClick"
+            />
+          </basic-container>
+        </el-scrollbar>
+      </div>
+    </el-col>
+    <el-col :span="20">
+      <basic-container>
+        <avue-crud
+          ref="crud"
+          :data="data"
+          :option="tableOption"
+          :page.sync="page"
+          :table-loading="loading"
+          v-model='form'
+          :search.sync="search"
+          :before-open="beforeOpen"
+          @size-change="sizeChange"
+          @current-change="currentChange"
+          @search-change="searchChange"
+          @refresh-change="refreshChange"
+          @row-save="rowSave"
+          @row-del="rowDel"
+          @row-update="rowUpdate"
+          @cell-dblclick="cellDblclick"
+          @on-load="getList"
+          @saveColumn="saveColumn"
+          @tree-load="treeLoad"
+        >
+          <template slot="menuLeft">
+            <el-button
+              icon="el-icon-printer"
+              size="small"
+              type="primary"
+              @click.stop="openReport()"
+            >报 表
+            </el-button>
+          </template>
+          <report-dialog
+            :switchDialog="switchDialog"
+            @onClose="onClose()"
+          ></report-dialog>
+        </avue-crud>
+      </basic-container>
+    </el-col>
+  </el-row>
 </template>
 
 <script>
   import option from "./configuration/mainList.json";
+  import reportDialog from "@/components/report-dialog/main";
+  import {getList , add ,update ,remove ,getPortTypeTree} from "@/api/basicData/portinformation"
 
   export default {
-    name: "customerInformation",
     data() {
       return {
-        form: {},
-        option: option,
-        parentId:0,
-        dataList: [],
+        switchDialog:false,//报表
+        loading: true,
+        data: [],
+        tableOption: option,
+        form:{},
+        search:{},
+        treeDeptId:"",
+        treeDeptName:'',
+        height: window.innerHeight - 350,
         page: {
-          pageSize: 10,
-          pagerCount: 5,
+          currentPage: 1,
           total: 0,
+          pageSize: 10
         },
-        query:{}
-      }
+        treeOption: {
+          nodeKey: "id",
+          lazy: true,
+          treeLoad: function(node, resolve) {
+            const parentId = node.level === 0 ? 0 : node.data.id;
+            getPortTypeTree(parentId).then(res => {
+              resolve(
+                res.data.map(item => {
+                  return {
+                    ...item,
+                    leaf: !item.hasChildren
+                  };
+                })
+              );
+            });
+          },
+          addBtn: false,
+          menu: false,
+          size: "small",
+          props: {
+            labelText: "标题",
+            label: "name",
+            value: "id",
+            children: "children"
+          }
+        }
+      };
     },
     created() {
 
     },
+    components: {
+      reportDialog
+    },
     mounted() {
       option.height = window.innerHeight - 350 ;
+      //查询服务类别字典项
+      // getDeptTree().then(res => {
+      //   this.findObject(this.tableOption.column, "goodsTypeId").dicData = res.data.data;
+      // });
     },
     methods: {
-      //删除列表后面的删除按钮触发触发(row, index, done)
-      rowDel(row, index, done) {
+      //打印
+      openReport() {
+        this.switchDialog =! this.switchDialog;
+      },
+      //关闭打印
+      onClose(val) {
+        this.switchDialog = val;
+      },
+      getList(page, params = {}) {
+        this.loading = true
+        getList(page.currentPage, page.pageSize, params, this.treeDeptId).then(res => {
+          this.data = res.data.data.records
+          this.page.total = res.data.data.total
+          this.loading = false
+        })
+      },
+      //点击新增打开的窗口 取消时触发
+      // beforeClose(){
+
+      // },
+      //点击新增或修改时
+      beforeOpen(done, type){
+        if (["add"].includes(type)) {
+          this.tableOption.column.forEach(e=>{
+            if(e.prop=='typeName'){
+              this.$set(this.tableOption.column,4,{...e,value:this.treeDeptId})
+            }
+          })
+        }
+        done();
+      },
+      searchChange(params, done) {
+        this.getList(this.page, params);
+        done();
+      },
+      sizeChange(val) {
+        this.page.pageSize = val;
+        this.getList();
+      },
+      currentChange(val) {
+        this.page.currentPage = val;
+        this.getList();
+      },
+      refreshChange() {
+        this.getList(this.page,this.search);
+      },
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.page.currentPage = 1;
+          this.getList(this.page);
+          this.$message.success("保存成功");
+          done()
+        }, error => {
+          window.console.log(error);
+          loading();
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        row.createTime = '';
+        update(row).then(() => {
+          this.getList(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          // 数据回调进行刷新
+          done(row);
+        }, error => {
+          window.console.log(error);
+          loading();
+        });
+      },
+      rowDel(row, index,done) {
         this.$confirm("确定将选择数据删除?", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
         }).then(() => {
+          return remove(row.id);
+        }).then(() => {
           this.$message({
             type: "success",
             message: "操作成功!"
           });
-          // 数据回调进行刷新
+          this.getList(this.page);
           done(row);
         });
       },
-      //点击搜索按钮触发
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        params.parentId = 0
-        this.onLoad(this.page, params);
-        done()
-      },
-      searchReset() {
-        console.log('1')
-      },
-      selectionChange() {
-        console.log('1')
-      },
-      currentChange() {
-        console.log('1')
+      cellDblclick(row, column, cell, event) {
+        this.$refs.crud.rowEdit(row);
       },
-      sizeChange() {
-        console.log('1')
+      saveColumn(row, column) {
+        console.log(row, column);
       },
-      refreshChange() {
-        console.log('1')
+      //展开主页左边类型
+      nodeClick(data) {
+        this.treeDeptName = data.cname;
+        this.treeDeptId = data.id;
+        this.page.currentPage = 1;
+        this.getList(this.page);
       },
-      onLoad(page, params = {}) {
-        this.dataList = [{
-          havenName:"海港",
-          fNo:"DD",
-          fName:"丹东",
-          fEname:"dandong",
-          portName:"威海-丹东",
-          fUncode:"CEWEI",
-          fCountry:"中国",
-          fProvince:"山东",
-          fCity:"威海",
-          fStatus:"正常使用",
-          remark:"123",
-          createBy:"admin",
-          createTime:"2021-04-16",
-          updateBy:"admin",
-          updateTime:"2021-04-16",
-        }];
+      //列表内展开树节点
+      treeLoad(tree, treeNode, resolve) {
+        const parentId = tree.id;
+        getList({parentId:parentId}).then(res => {
+          resolve(res.data.data.records);
+        });
       },
     }
-  }
+  };
 </script>
 
-<style scoped>
-
+<style scoped lang="scss">
 </style>

+ 173 - 0
src/views/basicData/portinformation/type.vue

@@ -0,0 +1,173 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :data="dataList"
+               ref="crud"
+               v-model="form"
+               :table-loading="loading"
+               :page.sync="page"
+               :search.sync="search"
+               @row-del="rowDel"
+               @row-update="rowUpdate"
+               :before-open="beforeOpen"
+               :before-close="beforeClose"
+               @row-save="rowSave"
+               @search-change="searchChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad"
+               @tree-load="treeLoad"
+    >
+      <template slot-scope="scope" slot="menu">
+        <el-button
+          type="text"
+          icon="el-icon-circle-plus-outline"
+          size="small"
+          @click.stop="handleAdd(scope.row,scope.index)"
+        >新增子项
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import option from "./configuration/typeOption.json";
+  import {getTypeList , typeRemove ,typeAdd ,typeUpdate} from "@/api/basicData/portinformation"
+
+  export default {
+    data() {
+      return {
+        form: {},
+        search:{},//搜索表单
+        option: option,
+        parentId:0,
+        loading:true,
+        dataList: [],
+        page: {
+          pageSize: 10,
+          pagerCount: 5,
+          total: 0,
+        },
+        query:{}
+      }
+    },
+    created() {
+
+    },
+    mounted() {
+      option.height = window.innerHeight - 310 ;
+    },
+    methods: {
+      onLoad(page, params = {}) {
+        this.loading = true;
+        let param = {
+          ...params,
+          current:this.page.currentPage,
+          size:this.page.pageSize,
+          parentId:0
+        };
+        getTypeList(param).then(res => {
+          this.dataList = res.data.data.records
+          this.page.total = res.data.data.total
+          this.loading=false;
+        })
+      },
+      refreshChange() {
+        this.loading=true;
+        this.onLoad(this.page,this.search);
+      },
+      //删除列表后面的删除按钮触发触发(row, index, done)
+      rowDel(row, index, done) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          return typeRemove(row.id);
+        }).then(() => {
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          // 数据回调进行刷新
+          done(row);
+        });
+      },
+      //新增时保存触发
+      rowSave(row, done, loading) {
+        typeAdd(row).then(res => {
+          this.onLoad(this.page, {parentId: 0});
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done()
+        })
+      },
+      //修改时的修改按钮点击触发
+      rowUpdate(row, index, done, loading) {
+        typeUpdate(row).then(() => {
+          this.onLoad(this.page, {parentId: 0});
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          // 数据回调进行刷新
+          done(row);
+        }, error => {
+          window.console.log(error);
+          loading();
+        });
+      },
+      //新增修改时给类型赋值
+      initData(){
+        getTypeList({parentId:0}).then(res => {
+          const column = this.findObject(this.option.column, "parentId");
+          column.dicData = res.data.data.records;
+        });
+      },
+      //新增子项触发
+      handleAdd(row) {
+        this.parentId = row.id;
+        const column = this.findObject(this.option.column, "parentId");
+        this.$set(this.form,"parentId",row.id)
+        column.addDisabled = true;
+        this.$refs.crud.rowAdd();
+      },
+      //新增子项和新增触发查询所有
+      beforeOpen(done, type) {
+        if (["add", "edit"].includes(type)) {
+          this.initData();
+        }
+        done();
+      },
+      //点击新增取消时触发
+      beforeClose(done) {
+        this.parentId = "";
+        const column = this.findObject(this.option.column, "parentId");
+        column.value = "";
+        column.addDisabled = false;
+        done();
+      },
+      //点击搜索按钮触发
+      searchChange(params, done) {
+        this.loading = true;
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done()
+      },
+      //列表内展开树节点
+      treeLoad(tree, treeNode, resolve) {
+        const parentId = tree.id;
+        getTypeList({parentId:parentId}).then(res => {
+          resolve(res.data.data.records);
+        });
+      },
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>