Sfoglia il codice sorgente

Merge branch 'dev' of http://git.echepei.com/tire-platform/Smart_platform_ui into dev

Qukatie 1 settimana fa
parent
commit
1e00882143

+ 58 - 0
src/api/storehouse/storage-region.js

@@ -0,0 +1,58 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage-region/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage-region/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage-region/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage-region/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage-region/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const storageTree = () => {
+    return request({
+        url: '/api/blade-sales-part/tire/center/warehouse/storage-region/storageRegionTree',
+        method: 'post'
+    })
+}
+
+

+ 53 - 0
src/api/storehouse/storage.js

@@ -0,0 +1,53 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage/detail?id=' + id,
+    method: 'get'
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/blade-sales-part/tire/center/warehouse/storage/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const disabledStorage = (id) => {
+    return request({
+        url: '/api/blade-sales-part/tire/center/warehouse/storage/disabledStorage?id=' + id,
+        method: 'post'
+    })
+}

+ 1 - 1
src/views/storehouse/inStockManage/inStockPlan/detailsPage.vue

@@ -384,7 +384,7 @@ export default {
                         label: 'cname',
                         value: 'id'
                     },
-                    dicUrl: '/api/blade-sales-part/storageDesc/listAll',
+                    dicUrl: '/api/blade-sales-part/tire/center/warehouse/storage/storageSelectedList',
                     rules: [{
                         required: true,
                         message: " ",

+ 1 - 1
src/views/storehouse/inStockManage/inStockPlan/index.vue

@@ -276,7 +276,7 @@ export default {
             label: 'cname',
             value: 'cname'
           },
-          dicUrl: '/api/blade-sales-part/storageDesc/listAll?cname={{key}}',
+          dicUrl: '/api/blade-sales-part/tire/center/warehouse/storage/storageSelectedList?cname={{key}}',
         }, {
           label: '行数',
           prop: "numberRows",

+ 3 - 3
src/views/storehouse/outStockManage/outStockPlan/detailsPage.vue

@@ -422,7 +422,7 @@ export default {
                         message: " ",
                         trigger: "blur"
                     }]
-                }, 
+                },
                 {
                     label: '仓库',
                     prop: "storageId",
@@ -433,8 +433,8 @@ export default {
                         label: 'cname',
                         value: 'id'
                     },
-                    dicUrl: '/api/blade-sales-part/storageDesc/listAll',
-                }, 
+                    dicUrl: '/api/blade-sales-part/tire/center/warehouse/storage/storageSelectedList',
+                },
                 {
                     label: '计划出库日期',
                     prop: "businesDate",

+ 2 - 2
src/views/storehouse/outStockManage/outStockPlan/index.vue

@@ -223,7 +223,7 @@ export default {
           prop: "ordNo",
           search: true,
           overHidden: true,
-        }, 
+        },
         {
           label: '货主',
           prop: "customerName",
@@ -269,7 +269,7 @@ export default {
             label: 'cname',
             value: 'cname'
           },
-          dicUrl: '/api/blade-sales-part/storageDesc/listAll?cname={{key}}',
+          dicUrl: '/api/blade-sales-part/tire/center/warehouse/storage/storageSelectedList?cname={{key}}',
         }, {
           label: '行数',
           prop: "numberRows",

+ 200 - 0
src/views/storehouse/storage-region/detailsPage.vue

@@ -0,0 +1,200 @@
+<template>
+    <div>
+        <div class="borderless">
+            <div class="customer-head">
+                <div class="customer-back">
+                    <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
+                               @click="backToList">
+                        返回列表
+                    </el-button>
+                </div>
+                <div class="add-customer-btn">
+                    <el-button v-if="!form.status || form.status === 0" type="primary" size="small" @click="saveStorage">
+                        保 存
+                    </el-button>
+                    <el-button v-if="!form.status || form.status === 0" type="warning" size="small" @click="submitStorage">
+                        提 交
+                    </el-button>
+                    <el-button v-if="!form.status || form.status === 1" type="error" size="small" @click="submitStorage">
+                        禁 用
+                    </el-button>
+                </div>
+            </div>
+            <trade-card title="主要信息" style="margin-top: 60px">
+                <avue-form ref="form" class="trading-form" v-model="form" :option="option" :key="key">
+<!--                    <template slot="code" slot-scope="{row}">
+                        <el-input v-model="row.code" placeholder="仓库代码为空,提交时自动生成"></el-input>
+                    </template>-->
+                </avue-form>
+            </trade-card>
+        </div>
+    </div>
+</template>
+
+<script>
+import {getDetail, add, update, remove} from "@/api/storehouse/storage-region.js";
+export default {
+    name: "index",
+    data() {
+        return {
+            form: {},
+            key: 0,
+            option: {
+                menuBtn: false,
+                labelWidth: 100,
+                disabled: false,
+                column: [
+                    {
+                        label: "库区编码",
+                        prop: "regionCode",
+                        span: 8,
+                        maxLength: 20
+                    },
+                    {
+                        label: "库区名称",
+                        prop: "regionName",
+                        rules: [{
+                            required: true,
+                            message: "请输入库区名称",
+                            trigger: "blur"
+                        }],
+                        span: 8,
+                        maxLength: 50
+                    },
+                    {
+                        label: "库容",
+                        prop: "storageCapacity",
+                        rules: [{
+                            required: true,
+                            message: "请输入库容",
+                            trigger: "blur"
+                        }],
+                        span: 8,
+                        type: 'number'
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        span: 24,
+                        type: 'textarea',
+                        minRows: 3,
+                    }
+                ]
+            }
+        };
+    },
+    props: {
+        onLoad: Object,
+    },
+    watch: {
+        onLoad: {
+            handler(val) {
+                this.form.parentId = this.onLoad.id
+            },
+            deep: true
+        }
+    },
+    mounted() {
+        console.info(this.onLoad)
+    },
+    methods: {
+        backToList() {
+            this.$emit("backToList");
+        },
+        saveStorage(){
+            const loading = this.$loading({
+                lock: true,
+                text: '正在保存.....',
+                spinner: 'el-icon-loading',
+                background: 'rgba(0, 0, 0, 0.7)'
+            })
+            this.form.parentId = this.onLoad
+            this.form.top = this.onLoad.parentId === 0 ? 1 : 0
+            add(this.form).then(res => {
+                console.info('res----', res)
+                this.$message.success(res.data.msg)
+                this.getItem(res.data.data)
+            }).finally(() => {
+                loading.close()
+            })
+        },
+        getItem(id){
+            getDetail(id).then(res => {
+                this.form = res.data.data;
+            })
+        },
+        submitStorage(){
+            this.$confirm('确定提交吗?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                const loading = this.$loading({
+                    lock: true,
+                    text: '正在提交....',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(0, 0, 0, 0.7)'
+                })
+                this.form.parentId = this.onLoad.id
+                this.form.status = 1
+                this.form.top = this.onLoad.parentId === 0 ? 1 : 0
+                add(this.form).then(res => {
+                    console.info('res----', res)
+                    this.$message.success(res.data.msg)
+                    this.getItem(res.data.data)
+                }).finally(() => {
+                    loading.close()
+                })
+            }).catch(() => {
+            })
+        }
+    },
+};
+</script>
+
+<style lang="scss" scoped>
+.trading-form ::v-deep .el-form-item {
+    margin-bottom: 8px !important;
+}
+
+::v-deep .el-dialog__body {
+    padding: 0px 20px 15px 20px;
+}
+
+::v-deep .el-form-item__error {
+    display: none !important;
+}
+
+.img-form ::v-deep .el-form-item {
+    height: 150px;
+    line-height: 150px;
+    margin-bottom: 8px !important;
+}
+
+.img-form ::v-deep .avue-upload__icon {
+    font-size: 20px;
+    width: 150px;
+    height: 150px;
+    line-height: 150px;
+}
+
+::v-deep .el-table .cell {
+    padding: 0 2px !important;
+}
+
+::v-deep .avue-crud .el-table .el-form-item__label {
+    left: -1px;
+}
+
+.addressTabs {
+    display: flex;
+    justify-content: center;
+
+    span {
+        width: 100px;
+        font-size: 18px;
+        font-weight: 600;
+        text-align: center;
+    }
+}
+</style>

+ 288 - 0
src/views/storehouse/storage-region/index.vue

@@ -0,0 +1,288 @@
+<template>
+    <div>
+        <basic-container v-show="!detailsOpen" class="page-crad">
+            <el-row>
+                <el-col :span="4">
+                    <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick" style="height:73vh;">
+                    </avue-tree>
+                </el-col>
+                <el-col :span="20">
+                    <avue-crud :option="option"
+                               :table-loading="loading"
+                               :data="data"
+                               :page.sync="page"
+                               :permission="permissionList"
+                               :before-open="beforeOpen"
+                               v-model="form"
+                               ref="crud"
+                               @row-update="rowUpdate"
+                               @row-save="rowSave"
+                               @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-scope="{type,size,row,index,disabled}" slot="menu">
+                            <el-button type="text"
+                                       size="small"
+                                       icon="el-icon-delete"
+                                       @click="rowDel(row)">删 除
+                            </el-button>
+                        </template>
+                        <template slot="status" slot-scope="{row,size}">
+                            <span v-if="row.status === 1">启用</span>
+                            <span v-if="row.status === 0">保存</span>
+                        </template>
+                        <template slot-scope="{type,size,row,$index}" slot="menuLeft">
+                            <el-button icon="el-icon-plus" type="primary" :size="size" @click="addStorageRegion">新增</el-button>
+                            <el-button type="warning" icon="el-icon-download" size="small" @click="">导出</el-button>
+                        </template>
+                    </avue-crud>
+                </el-col>
+            </el-row>
+
+        </basic-container>
+        <detail v-if="detailsOpen" ref="detailRef" :onLoad="this.nowClick" @backToList="backToList"></detail>
+    </div>
+</template>
+
+<script>
+import {getList, getDetail, add, update, remove, storageTree} from "@/api/storehouse/storage-region.js";
+import {mapGetters} from "vuex";
+import detail from './detailsPage.vue'
+
+export default {
+    components: {detail},
+    data() {
+        return {
+            treeOption: {
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                }
+            },
+            treeData: [],
+            form: {},
+            query: {},
+            detailsOpen: false,
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
+            },
+            selectionList: [],
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "库区编码",
+                        prop: "regionCode",
+                        search: true,
+                        searchSpan: 6,
+                        align: 'center'
+                    },
+                    {
+                        label: "库区名称",
+                        prop: "regionName",
+                        search: true,
+                        searchSpan: 6,
+                        align: 'center'
+                    },
+                    {
+                        label: "状态",
+                        prop: "status",
+                        search: true,
+                        searchSpan: 6,
+                        align: 'center'
+                    }
+                ]
+            },
+            data: [],
+            nowClick: {}
+        };
+    },
+    created() {
+        this.getStorageTree()
+    },
+    computed: {
+        ...mapGetters(["permission"]),
+        permissionList() {
+            return {
+                addBtn: this.vaildData(this.permission.centerstorageregion_add, false),
+                viewBtn: this.vaildData(this.permission.centerstorageregion_view, false),
+                delBtn: this.vaildData(this.permission.centerstorageregion_delete, false),
+                editBtn: this.vaildData(this.permission.centerstorageregion_edit, false)
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        }
+    },
+    methods: {
+        getStorageTree(){
+            storageTree().then(res => {
+                this.treeData = res.data.data
+            })
+        },
+
+        backToList(){
+            this.detailsOpen = false;
+            this.onLoad(this.page)
+            this.getStorageTree()
+        },
+
+        addStorageRegion() {
+            if (!this.query.parentId) {
+                this.$message({
+                    type: "error",
+                    message: "请先选择左侧父级节点!"
+                });
+                return;
+            }
+            this.detailsOpen = true;
+        },
+
+
+        rowSave(row, done, loading) {
+            add(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                loading();
+                window.console.log(error);
+            });
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                loading();
+                console.log(error);
+            });
+        },
+        nodeClick(data) {
+            console.info('data---', data)
+            this.nowClick = data
+            this.query.parentId = data.value
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                });
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then(res => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        }
+    }
+};
+</script>
+
+<style>
+</style>

+ 243 - 0
src/views/storehouse/storage/detailsPage.vue

@@ -0,0 +1,243 @@
+<template>
+    <div>
+        <div class="borderless">
+            <div class="customer-head">
+                <div class="customer-back">
+                    <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
+                               @click="backToList">
+                        返回列表
+                    </el-button>
+                </div>
+                <div class="add-customer-btn">
+                    <el-button v-if="!form.status || editStatusList.indexOf(form.status) !== -1" type="primary" size="small" @click="saveStorage">
+                        保 存
+                    </el-button>
+                    <el-button v-if="!form.status || editStatusList.indexOf(form.status) !== -1" type="warning" size="small" @click="submitStorage">
+                        提 交
+                    </el-button>
+                    <el-button v-if="form.status && form.status !== 0" type="warning" size="small" @click="disabledCanterStorage">
+                        禁 用
+                    </el-button>
+                </div>
+            </div>
+            <trade-card title="主要信息" style="margin-top: 60px">
+                <avue-form ref="form" class="trading-form" v-model="form" :option="option" :key="key">
+<!--                    <template slot="code" slot-scope="{row}">
+                        <el-input v-model="row.code" placeholder="仓库代码为空,提交时自动生成"></el-input>
+                    </template>-->
+                </avue-form>
+            </trade-card>
+        </div>
+    </div>
+</template>
+
+<script>
+import {getDetail, add, disabledStorage} from "@/api/storehouse/storage.js";
+export default {
+    name: "index",
+    data() {
+        return {
+            editStatusList: [0,2],
+            form: {},
+            key: 0,
+            option: {
+                menuBtn: false,
+                labelWidth: 100,
+                disabled: false,
+                column: [
+                    {
+                        label: "仓库编码",
+                        prop: "code",
+                        span: 8,
+                        maxLength: 20
+                    },
+                    {
+                        label: "仓库名称",
+                        prop: "cname",
+                        rules: [{
+                            required: true,
+                            message: "请输入仓库名称",
+                            trigger: "blur"
+                        }],
+                        span: 8,
+                        maxLength: 50
+                    },
+                    {
+                        label: "库容",
+                        prop: "storageCapacity",
+                        rules: [{
+                            required: true,
+                            message: "请输入库容",
+                            trigger: "blur"
+                        }],
+                        span: 8,
+                        type: 'number'
+                    },
+                    {
+                        label: "联系人",
+                        prop: "contacts",
+                        rules: [{
+                            required: true,
+                            message: "请输入联系人",
+                            trigger: "blur"
+                        }],
+                        span: 12
+                    },
+                    {
+                        label: "联系人电话",
+                        prop: "tel",
+                        rules: [{
+                            required: true,
+                            message: "请输入联系电话",
+                            trigger: "blur"
+                        }],
+                        span: 12
+                    },
+                    {
+                        label: "仓库地址",
+                        prop: "address",
+                        span: 24
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        span: 24,
+                        type: 'textarea',
+                        minRows: 3,
+                    }
+                ]
+            }
+        };
+    },
+    props: {
+        onLoad: Object,
+    },
+    watch: {
+        onLoad: {
+            handler(val) {
+            },
+            deep: true
+        }
+    },
+    mounted() {
+        console.info(this.onLoad)
+    },
+    methods: {
+        disabledCanterStorage(){
+            this.$confirm('确定要禁用该仓库吗?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                const loading = this.$loading({
+                    lock: true,
+                    text: '正在提交....',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(0, 0, 0, 0.7)'
+                })
+                disabledStorage(this.form.id).then(res => {
+                    console.info('res----', res)
+                    this.$message.success(res.data.msg)
+                    this.getItem(res.data.data)
+                }).finally(() => {
+                    loading.close()
+                })
+            }).catch(() => {
+            })
+        },
+        backToList() {
+            this.$emit("backToList");
+        },
+        saveStorage(){
+            const loading = this.$loading({
+                lock: true,
+                text: '正在保存.....',
+                spinner: 'el-icon-loading',
+                background: 'rgba(0, 0, 0, 0.7)'
+            })
+            add(this.form).then(res => {
+                console.info('res----', res)
+                this.$message.success(res.data.msg)
+                this.getItem(res.data.data)
+            }).finally(() => {
+                loading.close()
+            })
+        },
+        getItem(id){
+            getDetail(id).then(res => {
+                this.form = res.data.data;
+            })
+        },
+        submitStorage(){
+            this.$confirm('确定提交吗?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                const loading = this.$loading({
+                    lock: true,
+                    text: '正在提交....',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(0, 0, 0, 0.7)'
+                })
+                this.form.status = 1
+                add(this.form).then(res => {
+                    console.info('res----', res)
+                    this.$message.success(res.data.msg)
+                    this.getItem(res.data.data)
+                }).finally(() => {
+                    loading.close()
+                })
+            }).catch(() => {
+            })
+        }
+    },
+};
+</script>
+
+<style lang="scss" scoped>
+.trading-form ::v-deep .el-form-item {
+    margin-bottom: 8px !important;
+}
+
+::v-deep .el-dialog__body {
+    padding: 0px 20px 15px 20px;
+}
+
+::v-deep .el-form-item__error {
+    display: none !important;
+}
+
+.img-form ::v-deep .el-form-item {
+    height: 150px;
+    line-height: 150px;
+    margin-bottom: 8px !important;
+}
+
+.img-form ::v-deep .avue-upload__icon {
+    font-size: 20px;
+    width: 150px;
+    height: 150px;
+    line-height: 150px;
+}
+
+::v-deep .el-table .cell {
+    padding: 0 2px !important;
+}
+
+::v-deep .avue-crud .el-table .el-form-item__label {
+    left: -1px;
+}
+
+.addressTabs {
+    display: flex;
+    justify-content: center;
+
+    span {
+        width: 100px;
+        font-size: 18px;
+        font-weight: 600;
+        text-align: center;
+    }
+}
+</style>

+ 275 - 0
src/views/storehouse/storage/index.vue

@@ -0,0 +1,275 @@
+<template>
+    <div>
+        <basic-container v-show="!detailsOpen">
+            <avue-crud :option="option"
+                       :table-loading="loading"
+                       :data="data"
+                       :page.sync="page"
+                       :permission="permissionList"
+                       :before-open="beforeOpen"
+                       v-model="form"
+                       ref="crud"
+                       @row-update="rowUpdate"
+                       @row-save="rowSave"
+                       @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-scope="{type,size,row,index,disabled}" slot="menu">
+                    <el-button type="text"
+                               size="small"
+                               icon="el-icon-delete"
+                               v-if="row.status !== 1"
+                               @click="rowDel(row)">删 除
+                    </el-button>
+                </template>
+                <template slot="status" slot-scope="{row,size}">
+                    <span v-if="row.status === 1">启用</span>
+                    <span v-if="row.status === 0">保存</span>
+                </template>
+                <template slot-scope="{type,size,row,$index}" slot="menuLeft">
+                    <el-button icon="el-icon-plus" type="primary" :size="size" @click="addStorage">新增</el-button>
+                    <el-button type="warning" icon="el-icon-download" size="small" @click="">导出</el-button>
+                </template>
+
+
+            </avue-crud>
+        </basic-container>
+        <detail v-if="detailsOpen" ref="detailRef" :onLoad="form" @backToList="backToList"></detail>
+    </div>
+</template>
+
+<script>
+import {getList, getDetail, add, update, remove} from "@/api/storehouse/storage.js";
+import {mapGetters} from "vuex";
+import detail from './detailsPage.vue'
+
+export default {
+    components: {detail},
+    data() {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
+            },
+            selectionList: [],
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "仓库编码",
+                        prop: "code",
+                        rules: [{
+                            required: true,
+                            message: "请输入仓库编码",
+                            trigger: "blur"
+                        }],
+                        search: true,
+                        searchSpan: 4,
+                        align: 'center'
+                    },
+                    {
+                        label: "仓库名称",
+                        prop: "cname",
+                        rules: [{
+                            required: true,
+                            message: "请输入仓库名称",
+                            trigger: "blur"
+                        }],
+                        search: true,
+                        searchSpan: 6,
+                        align: 'center'
+                    },
+                    {
+                        label: "联系人",
+                        prop: "contacts",
+                        rules: [{
+                            required: true,
+                            message: "请输入联系人",
+                            trigger: "blur"
+                        }],
+                        search: true,
+                        searchSpan: 4,
+                        align: 'center'
+                    },
+                    {
+                        label: "联系电话",
+                        prop: "tel",
+                        align: 'center'
+                    },
+                    {
+                        label: "库容",
+                        prop: "storageCapacity",
+                        align: 'center'
+                    },
+                    {
+                        label: "状态",
+                        prop: "status",
+                        search: true,
+                        searchSpan: 4,
+                        align: 'center'
+                    }
+                ]
+            },
+            data: [],
+            detailsOpen: false
+        };
+    },
+    computed: {
+        ...mapGetters(["permission"]),
+        permissionList() {
+            return {
+                addBtn: this.vaildData(this.permission.centerstorage_add, false),
+                viewBtn: this.vaildData(this.permission.centerstorage_view, false),
+                delBtn: this.vaildData(this.permission.centerstorage_delete, false),
+                editBtn: this.vaildData(this.permission.centerstorage_edit, false)
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        }
+    },
+    methods: {
+        backToList() {
+            this.detailsOpen = false
+            this.onLoad(this.page);
+        },
+        rowSave(row, done, loading) {
+            add(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                loading();
+                window.console.log(error);
+            });
+        },
+        addStorage() {
+            this.detailsOpen = true
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                loading();
+                console.log(error);
+            });
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                });
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "删除成功!"
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then(res => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        }
+    }
+};
+</script>
+
+<style>
+</style>