gaoshp
2024-05-12 0497d62499e95103f83c78a77a2ec7784e992732
仓库
已添加1个文件
已修改3个文件
269 ■■■■■ 文件已修改
src/components/scTable/index.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/basic-data/material-warehousing-data/Material-warehousing-data.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/basic-data/material-warehousing-data/Material-warehousing-dataComp.vue 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/scTable/index.vue
@@ -4,16 +4,16 @@
 * @Author: sakuya
 * @Date: 2021å¹´11月29日21:51:15
 * @LastEditors: Sneed
 * @LastEditTime: 2024-05-12 13:00:03
 * @LastEditTime: 2024-05-12 13:35:21
-->
<template>
    <div class="scTable" :style="{ 'height': _height }" ref="scTableMain" v-loading="loading">
        <div class="scTable-table" :style="{ 'height': _table_height }">
            <el-table v-bind="$attrs" :data="tableData" :row-key="rowKey" :key="toggleIndex" ref="scTable"
                :height="height == 'auto' ? null : '100%'" :size="config.size" :border="config.border" :stripe="config.stripe"
                :summary-method="remoteSummary ? remoteSummaryMethod : summaryMethod" @sort-change="sortChange"
                @filter-change="filterChange">
                :height="height == 'auto' ? null : '100%'" :size="config.size" :border="config.border"
                :stripe="config.stripe" :summary-method="remoteSummary ? remoteSummaryMethod : summaryMethod"
                @sort-change="sortChange" @filter-change="filterChange">
                <slot></slot>
                <template v-for="(item, index) in userColumn" :key="index">
                    <el-table-column v-if="!item.hide" :column-key="item.prop" :label="item.label" :prop="item.prop"
@@ -200,7 +200,7 @@
                var res = await this.apiObj.get(reqData);
            } catch (error) {
                this.loading = false;
                this.emptyText = error.statusText;
                this.emptyText = error?.statusText;
                return false;
            }
            try {
src/utils/request.js
@@ -35,11 +35,11 @@
axios.interceptors.response.use(
    (response) => {
        if (response.data.code && response.data.code !== 200) {
            ElMessage({
                message: response.data.msg,
                type: 'warning',
            })
            return new Error()
            // ElMessage({
            //     message: response.data.msg,
            //     type: 'warning',
            // })
            // return new Error()
            // return new Error();
        }
        return response;
src/views/console/basic-data/material-warehousing-data/Material-warehousing-data.vue
@@ -1,18 +1,41 @@
<!--
 * @Date: 2024-05-07 22:52:01
 * @LastEditors: Sneed
 * @LastEditTime: 2024-05-07 22:52:21
 * @LastEditTime: 2024-05-12 13:40:56
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/basic-data/material-warehousing-data/Material-warehousing-data.vue
-->
<template>
    <div>
        å‡ºå…¥åº“类型
    </div>
    <el-main style="height: 100%;">
        <el-card shadow="never" style="height: 100%;" body-style="height: 100%">
            <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
                <el-tab-pane label="出库类型" name="1">
                    <MaterialWarehousingDataCompVue name="出库" tableUrl="/api/blade-cps/stock-out-type/page"
                        insertUrl="/api/blade-cps/stock-out-type/insert"
                        removeUrl="/api/blade-cps/stock-out-type/remove"
                        updateUrl="/api/blade-cps/stock-out-type/update" />
                </el-tab-pane>
                <el-tab-pane label="入库类型" name="2">
                    <MaterialWarehousingDataCompVue name="入库" tableUrl="/api/blade-cps/stock-in-type/page"
                        insertUrl="/api/blade-cps/stock-in-type/insert" removeUrl="/api/blade-cps/stock-in-type/remove"
                        updateUrl="/api/blade-cps/stock-in-type/update" />
                </el-tab-pane>
            </el-tabs>
        </el-card>
    </el-main>
</template>
<script>
import MaterialWarehousingDataCompVue from './Material-warehousing-dataComp.vue'
export default {
    components: {
        MaterialWarehousingDataCompVue,
    },
    data() {
        return {
            activeName: '1',
        }
    },
}
</script>
src/views/console/basic-data/material-warehousing-data/Material-warehousing-dataComp.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,218 @@
<!--
 * @Date: 2024-05-08 21:29:53
 * @LastEditors: Sneed
 * @LastEditTime: 2024-05-12 13:43:21
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/basic-data/material-warehousing-data/Material-warehousing-dataComp.vue
-->
<template>
    <el-containter>
        <el-header>
            <el-button @click="table_add" type="primary" icon="el-icon-plus"></el-button>
            <el-popconfirm width="220" cancel-button-text="停用" confirm-button-text="删除"
                title="删除数据会影响已关联的业务 ,若您想在已关联的业务中依然显示这些数据, æ‚¨å¯ä»¥é€‰æ‹© åœç”¨ æ“ä½œã€‚停用后此数据将不能再被新业务使用。"
                @confirm="table_del(selection, '0')" @cancel="table_del(selection, '1')">
                <template #reference>
                    <el-button :disabled="selection.length == 0" type="danger" plain icon="el-icon-delete"
                        @click="batchDel"></el-button>
                </template>
            </el-popconfirm>
            <el-select v-model="params.status" style="width: 240px;margin-left: auto;" :prefix-icon="Search">
                <template #prefix>
                    çŠ¶æ€
                </template>
                <el-option v-for="item in options.status" :key="item.value" :label="item.label" :value="item.value" />
            </el-select>
            <el-input style="width: 240px;margin-left: 8px;" v-model="params.keyWord" placeholder="请输入检索内容"></el-input>
            <el-button @click="search" style="margin-left: 8px;" type="primary" icon="el-icon-search"></el-button>
        </el-header>
        <el-main>
            <scTable ref="table" @selection-change="handleSelectionChange" row-key="id" border :params="params"
                :apiObj="apiObj" stripe @dataChange="dataChange">
                <el-table-column type="selection" width="55" />
                <el-table-column prop="code" :label="`${name}类型编号`" />
                <el-table-column prop="name" :label="`${name}类型名称`" />
                <el-table-column prop="remark" label="备注" />
                <el-table-column prop="status" label="状态">
                    <template #default="scope">
                        {{ this.options.status.find(v => v.value == scope.row.status)?.label }}
                    </template>
                </el-table-column>
                <el-table-column label="操作" fixed="right" align="left" width="160">
                    <template #default="scope">
                        <el-button-group>
                            <el-button text type="primary" size="small"
                                @click="table_edit(scope.row, scope.$index)">编辑</el-button>
                            <el-popconfirm v-if="scope.row == 1" width="220" cancel-button-text="停用"
                                confirm-button-text="删除"
                                title="删除数据会影响已关联的业务 ,若您想在已关联的业务中依然显示这些数据, æ‚¨å¯ä»¥é€‰æ‹© åœç”¨ æ“ä½œã€‚停用后此数据将不能再被新业务使用。"
                                @confirm="table_del([scope.row], '0')" @cancel="table_del([scope.row], '1')">
                                <template #reference>
                                    <el-button text type="primary" size="small">删除</el-button>
                                </template>
                            </el-popconfirm>
                            <el-popconfirm v-else width="220" title="确定将选择的数据删除" @confirm="table_del([scope.row], '0')">
                                <template #reference>
                                    <el-button text type="primary" size="small">删除</el-button>
                                </template>
                            </el-popconfirm>
                        </el-button-group>
                    </template>
                </el-table-column>
            </scTable>
        </el-main>
        <el-drawer v-model="drawer" title="物料类型">
            <el-form :model="form" :rules="rules" ref="dialogForm" label-width="120px" label-position="center">
                <el-row>
                    <el-col :span="24">
                        <el-form-item label="编码" prop="code">
                            <el-input style="width: 240px" v-model="form.code" placeholder=""></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="名称" prop="name">
                            <el-input style="width: 240px" v-model="form.name" placeholder=""></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="备注" prop="remark">
                            <el-input type="textarea" style="width: 240px" v-model="form.remark"
                                placeholder=""></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="状态" prop="status">
                            <el-select v-model="form.status" style="width: 240px;">
                                <el-option v-for="item in options.status" :key="item.value" :label="item.label"
                                    :value="item.value" />
                            </el-select>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <template #footer>
                <el-button type="primary" @click="save">保存</el-button>
            </template>
        </el-drawer>
    </el-containter>
</template>
<script>
export default {
    props: {
        tableUrl: { type: String },
        insertUrl: { type: String },
        removeUrl: { type: String },
        updateUrl: { type: String },
        name: { type: String },
    },
    data() {
        return {
            activeName: '1',
            options: {
                status: [
                    {
                        label: '启用',
                        value: 1
                    },
                    {
                        label: '停用',
                        value: 0
                    },
                ],
            },
            params: {
                keyWord: '',
                status: 1
            },
            apiObj: {
                get: async (data) => {
                    let params = {
                        ...data
                    }
                    return await this.$HTTP.get(this.tableUrl, params).then(res => {
                        return res
                    })
                }
            },
            selection: [],
            drawer: false,
            form: {
                id: '',
                status: 1,
                remark: '',
                name: '',
                code: '',
            },
            rules: {
                name: [
                    { required: true, message: '必填' }
                ],
                code: [
                    { required: true, message: '必填' }
                ],
            },
        }
    },
    created() {
    },
    methods: {
        search() {
            this.$refs.table.reload(this.params)
        },
        handleSelectionChange(selection) {
            this.selection = selection
        },
        table_add() {
            this.drawer = true
            this.form = {
                status: 1
            }
        },
        table_edit(row) {
            this.drawer = true
            this.form = {
                ...row
            }
        },
        batchDel() {
        },
        dataChange() {
        },
        table_del(rowArr, type) {
            this.$HTTP.delete(`${this.removeUrl}?type=${type}`, {}, { data: rowArr.map(v => v.id) }).then(res => {
                if (res.code === 200) {
                    this.$message.success("操作成功");
                    this.$refs.table.reload(this.params)
                }
            })
        },
        save() {
            this.$refs.dialogForm.validate(async (valid) => {
                if (valid) {
                    if (this.form.id) {
                        this.$HTTP.put(this.updateUrl, {
                            ...this.form
                        }).then(res => {
                            this.drawer = false
                            this.$refs.table.reload(this.params)
                        })
                    } else {
                        this.$HTTP.post(this.insertUrl, {
                            ...this.form
                        }).then(res => {
                            this.drawer = false
                            this.$refs.table.reload(this.params)
                        })
                    }
                }
            })
        }
    }
}
</script>
<style lang="scss" scoped></style>