gaoshp
2024-05-08 f7c31d8f871fb7d83fc9dbea2aa1cddce89cfa4b
物料信息
已修改3个文件
已添加2个文件
367 ■■■■■ 文件已修改
src/utils/request.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/basic-data/material-warehousing-data/material-info.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/basic-data/material-warehousing-data/material-infoComp1.vue 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/basic-data/material-warehousing-data/material-infoComp2.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tpm/MachineTab.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js
@@ -34,6 +34,13 @@
// HTTP response æ‹¦æˆªå™¨
axios.interceptors.response.use(
    (response) => {
        if (response.data.code && response.data.code !== 200) {
            ElNotification.error({
                title: '请求错误',
                message: response.data.msg
            });
            return Promise.reject(response);
        }
        return response;
    },
    (error) => {
src/views/console/basic-data/material-warehousing-data/material-info.vue
@@ -1,12 +1,31 @@
<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">
                    <materialInfoComp1 />
                </el-tab-pane>
                <el-tab-pane label="物料类型" name="2">
                    <materialInfoComp2 />
                </el-tab-pane>
            </el-tabs>
        </el-card>
    </el-main>
</template>
<script>
import materialInfoComp1 from './material-infoComp1.vue';
import materialInfoComp2 from './material-infoComp2.vue';
export default {
    components: {
        materialInfoComp1,
        materialInfoComp2
    },
    data() {
        return {
            activeName: '1'
        }
    },
}
</script>
src/views/console/basic-data/material-warehousing-data/material-infoComp1.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,291 @@
<!--
 * @Date: 2024-05-08 21:29:53
 * @LastEditors: Sneed
 * @LastEditTime: 2024-05-08 23:20:45
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/basic-data/material-warehousing-data/material-infoComp1.vue
-->
<template>
    <el-containter>
        <el-header>
            <el-button @click="table_add" type="primary" icon="el-icon-plus"></el-button>
            <el-button type="primary">导入</el-button>
            <el-button type="primary">导出</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-select v-model="params.typeId" style="width: 240px;margin-left: 8px;">
                <template #prefix>
                    ç‰©æ–™ç±»åž‹
                </template>
                <el-option v-for="item in options.typeId" :key="item.value" :label="item.label" :value="item.value" />
            </el-select>
            <el-select v-model="params.property" style="width: 240px;margin-left: 8px;">
                <template #prefix>
                    ç‰©æ–™å±žæ€§
                </template>
                <el-option v-for="item in options.property" :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="物料编号" />
                <el-table-column prop="name" label="物料名称" />
                <el-table-column prop="standardModel" label="规格" />
                <el-table-column prop="unit" label="计量单位" />
                <el-table-column prop="typeName" label="物料类型" />
                <el-table-column prop="stuff" label="材质" />
                <el-table-column prop="property" label="物料属性">
                    <template #default="scope">
                        {{ this.options.property.find(v => v.value == scope.row.property).label }}
                    </template>
                </el-table-column>
                <el-table-column prop="isMustCheckName" label="是否必检">
                    <template #default="scope">
                        {{ scope.row.isMustCheck == 1 ? '是' : '否' }}
                    </template>
                </el-table-column>
                <el-table-column prop="lowerLimit" label="额定库存" />
                <el-table-column prop="upperLimit" label="安全库存" />
                <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 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-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" disabled 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="" clearable></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="物料类型" prop="typeId">
                            <el-select v-model="form.typeId" style="width: 240px;" clearable>
                                <el-option v-for="item in options.typeId" :key="item.value" :label="item.label"
                                    :value="item.value" />
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="规格" prop="standardModel">
                            <el-input style="width: 240px" v-model="form.standardModel" clearable></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="计量单位" prop="unit">
                            <el-input style="width: 240px" v-model="form.unit" clearable></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="物料属性" prop="property">
                            <el-select v-model="form.property" style="width: 240px;">
                                <el-option v-for="item in options.property" :key="item.value" :label="item.label"
                                    :value="item.value" />
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="材质" prop="stuff">
                            <el-input style="width: 240px" v-model="form.stuff" clearable></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="是否必检" prop="isMustCheck">
                            <el-radio-group v-model="form.isMustCheck" class="ml-4">
                                <el-radio :label="1" size="large">是</el-radio>
                                <el-radio :label="0" size="large">否</el-radio>
                            </el-radio-group>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="额定库存" prop="lowerLimit">
                            <el-input-number v-model="form.upperLimit" :precision="2" :step="0.01" :max="10" />
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="安全库存" prop="upperLimit">
                            <el-input-number v-model="form.upperLimit" :precision="2" :step="0.01" :max="10" />
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="状态" prop="code">
                            <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 {
    data() {
        return {
            activeName: '1',
            options: {
                status: [
                    {
                        label: '启用',
                        value: 1
                    },
                    {
                        label: '停用',
                        value: 0
                    },
                ],
                typeId: [],
                property: []
            },
            params: {
                keyWord: '',
                typeId: '',
                property: '',
                status: 1
            },
            apiObj: {
                get: async (data) => {
                    let params = {
                        ...data
                    }
                    return await this.$HTTP.get(`/api/blade-cps/material/page`, params).then(res => {
                        return res
                    })
                }
            },
            selection: [],
            drawer: false,
            form: {
            },
            rules: {
                name: [
                    { required: true, message: '必填' }
                ],
                typeId: [
                    { required: true, message: '必填' }
                ],
                property: [
                    { required: true, message: '必填' }
                ],
            },
        }
    },
    created() {
        this.init()
    },
    methods: {
        init() {
            this.$HTTP.get(`/api/blade-cps/material-type/list`).then(res => {
                this.options.typeId = res.data.map(item => ({
                    label: item.name,
                    value: item.id
                }))
            })
            this.$HTTP.get(`/api/blade-system/dict/dictionary?code=material_property`).then(res => {
                this.options.property = res.data.map(item => ({
                    label: item.dictValue,
                    value: item.dictKey - 0
                }))
            })
        },
        search() {
            this.$refs.table.reload(this.params)
        },
        handleSelectionChange(selection) {
            this.selection = selection
        },
        table_add() {
            this.drawer = true
            this.form = {}
        },
        table_edit(row) {
            this.drawer = true
            this.form = {
                ...row
            }
        },
        batchDel() {
        },
        dataChange() {
        },
        table_del(rowArr, type) {
            this.$HTTP.delete(`/api/blade-cps/material/delete-material?ids=${rowArr.map(v => v.id).toString()}&type=${type}`).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(`/api/blade-cps/material/update-material`, {
                            ...this.form
                        }).then(res => {
                            this.drawer = false
                            this.$refs.table.reload(this.params)
                        })
                    } else {
                        this.$HTTP.post(`/api/blade-cps/material/create-material`, {
                            ...this.form
                        }).then(res => {
                            this.drawer = false
                            this.$refs.table.reload(this.params)
                        })
                    }
                }
            })
        }
    }
}
</script>
<style lang="scss" scoped></style>
src/views/console/basic-data/material-warehousing-data/material-infoComp2.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
<!--
 * @Date: 2024-05-08 21:29:54
 * @LastEditors: Sneed
 * @LastEditTime: 2024-05-08 21:29:59
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/basic-data/material-warehousing-data/material-info copy 2.vue
-->
<!--
 * @Date: 2024-05-08 21:29:54
 * @LastEditors: Sneed
 * @LastEditTime: 2024-05-08 21:29:58
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/basic-data/material-warehousing-data/material-info copy 2.vue
-->
<template>
    <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">
                </el-tab-pane>
                <el-tab-pane label="物料类型" name="2">
                </el-tab-pane>
            </el-tabs>
        </el-card>
    </el-main>
</template>
<script>
export default {
    data() {
        return {
            activeName: '1'
        }
    },
}
</script>
<style lang="scss" scoped></style>
src/views/tpm/MachineTab.vue
@@ -1,7 +1,7 @@
<!--
 * @Date: 2024-04-27 20:04:34
 * @LastEditors: Sneed
 * @LastEditTime: 2024-05-07 22:40:21
 * @LastEditTime: 2024-05-08 23:13:10
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/tpm/MachineTab.vue
-->
<template>
@@ -58,7 +58,7 @@
                            <el-button-group>
                                <el-button text type="primary" size="small"
                                    @click="table_edit(scope.row, scope.$index)">编辑</el-button>
                                <el-popconfirm cancel-button-text="停用" confirm-button-text="删除"
                                <el-popconfirm width="220" cancel-button-text="停用" confirm-button-text="删除"
                                    title="删除数据会影响已关联的业务 ,若您想在已关联的业务中依然显示这些数据, æ‚¨å¯ä»¥é€‰æ‹© åœç”¨ æ“ä½œã€‚停用后此数据将不能再被新业务使用。"
                                    @confirm="table_del(scope.row, scope.$index, '0')"
                                    @cancel="table_del(scope.row, scope.$index, '1')">