500 lines
18 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
* @Descripttion: (GP12质检管理)
* @version: (1.0)
* @Author: (admin)
* @Date: (2024-08-07)
* @LastEditors: (admin)
* @LastEditTime: (2024-08-07)
-->
<template>
<div class="app-container">
<!-- :model属性用于表单验证使用 比如下面的el-form-item prop属性用于对表单值进行验证操作 -->
<el-form
:model="queryParams"
size="small"
label-position="right"
inline
ref="queryForm"
:label-width="labelWidth"
v-show="showSearch"
@submit.native.prevent
>
<el-form-item label="开始时间" prop="startTime">
<el-date-picker v-model="queryParams.startTime" type="datetime" :clearable="true" placeholder="开始时间"></el-date-picker>
</el-form-item>
<el-form-item label-width="40" label="至" prop="endTime">
<el-date-picker
v-model="queryParams.endTime"
type="datetime"
:clearable="true"
placeholder="结束时间"
default-time="23:59:59"
></el-date-picker>
</el-form-item>
<el-form-item label="零件号" prop="partnumber">
<el-input v-model.trim="queryParams.partnumber" placeholder="请输入零件号" clearable />
</el-form-item>
<el-form-item label="创建人" prop="createBy">
<el-input v-model.trim="queryParams.createBy" placeholder="请输入创建人" clearable />
</el-form-item>
<el-form-item label="班组" prop="team">
<el-input v-model.trim="queryParams.team" placeholder="请输入班组" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<!-- 工具区域 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增记录</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
:disabled="multiple"
plain
icon="el-icon-delete"
size="mini"
@click="handleDelete"
>批量删除</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- 数据区域 -->
<el-table
:data="dataList"
v-loading="loading"
ref="table"
border
highlight-current-row
@sort-change="sortChange"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="50" align="center" />
<el-table-column prop="workorderId" label="工单号" min-width="160" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="partnumber" label="零件号" min-width="160" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="description" label="描述" min-width="200" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="specification" label="规格" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="color" label="颜色" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="team" label="班组" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="requireNumber" label="投入数" align="center" />
<el-table-column prop="qualifiedNumber" label="合格数" align="center" />
<el-table-column prop="qualifiedRateStr" label="合格率" align="center" />
<el-table-column prop="paoguangTotal" label="抛光" align="center" />
<el-table-column prop="damoTotal" label="打磨" align="center" />
<el-table-column prop="baofeiTotal" label="报废" align="center" />
<el-table-column prop="isReturnWorkpiece" label="类别" align="center">
<template slot-scope="scope">
<el-tag effect="plain" v-if="!scope.row.isReturnWorkpiece" type="primary">正常</el-tag>
<el-tag effect="plain" v-if="scope.row.isReturnWorkpiece" type="warning">返工件</el-tag>
</template>
</el-table-column>
<el-table-column prop="startTime" label="开始时间" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="endTime" label="结束时间" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="remark" label="备注" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="createdBy" label="创建人" align="center" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" fixed="right" width="140">
<template slot-scope="scope">
<el-button
size="mini"
type="success"
icon="el-icon-edit"
title="编辑"
@click="handleUpdate(scope.row)"
></el-button>
<el-button
size="mini"
type="danger"
icon="el-icon-delete"
title="删除"
@click="handleDelete(scope.row)"
></el-button>
</template>
</el-table-column>
</el-table>
<pagination
class="mt10"
background
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改 -->
<el-dialog :title="title" :lock-scroll="false" :visible.sync="open" width="70%" @opened="dialogOpened" :close-on-click-modal="false">
<el-form ref="form" :inline="true" :model="form" :rules="rules" :label-width="formLabelWidth">
<div>
<el-form-item label="工单号" prop="workorderId">
<el-input v-model="form.workorderId" placeholder="请输入工单号" />
</el-form-item>
</div>
<div>
<el-form-item label="零件搜索">
<ThePartNumberSelect ref="ThePartNumberSelectRef" @selected="PartNumberSelect"></ThePartNumberSelect>
</el-form-item>
</div>
<div>
<el-form-item label="零件号" prop="partnumber">
<el-input v-model="form.partnumber" placeholder="请输入零件号" />
</el-form-item>
<el-form-item label="班组" prop="team">
<el-input v-model.trim="form.team" placeholder="请输入班组" />
</el-form-item>
<el-form-item label="是否为返工件" prop="isReturnWorkpiece">
<el-switch v-model="form.isReturnWorkpiece" active-color="#13ce66"> </el-switch>
</el-form-item>
</div>
<div>
<el-form-item label="投入数" prop="requireNumber">
<el-input-number v-model="form.requireNumber" placeholder="请输入投入数" />
</el-form-item>
<el-form-item label=" ">
<div class="red-text">投入数 = 合格数 + 抛光数 + 打磨数 + 报废数</div>
<div class="red-text">合格率会自动计算</div>
</el-form-item>
</div>
<div>
<el-form-item label="合格数" prop="qualifiedNumber">
<el-input-number v-model="form.qualifiedNumber" placeholder="请输入合格数" />
</el-form-item>
<el-form-item label=" ">
<span v-if="opertype === 1" class="red-text">合格数:合格品将进入成品仓库</span>
<span v-if="opertype === 2" class="red-text">修改不会影响仓库数据</span>
</el-form-item>
</div>
<div>
<el-form-item label="抛光数" prop="paoguangTotal">
<el-input-number v-model="form.paoguangTotal" placeholder="请输入抛光数" />
</el-form-item>
<el-form-item label=" ">
<span v-if="opertype === 1" class="red-text">抛光数:将重新进入抛光仓库</span>
<span v-if="opertype === 2" class="red-text">修改不会影响仓库数据</span>
</el-form-item>
</div>
<div>
<el-form-item label="打磨数" prop="damoTotal">
<el-input-number v-model="form.damoTotal" placeholder="请输入打磨数" />
</el-form-item>
<el-form-item label=" ">
<span v-if="opertype === 1" class="red-text">打磨数:将扣除一次合格品仓库库存</span>
<span v-if="opertype === 2" class="red-text">修改不会影响仓库数据</span>
</el-form-item>
</div>
<div>
<el-form-item label="报废数" prop="baofeiTotal">
<el-input-number v-model="form.baofeiTotal" placeholder="请输入报废数" />
</el-form-item>
<el-form-item label=" ">
<span v-if="opertype === 1" class="red-text">报废数:将扣除一次合格品仓库库存</span>
<span v-if="opertype === 2" class="red-text">修改不会影响仓库数据</span>
</el-form-item>
</div>
<div>
<el-form-item label="开始时间" prop="startTime">
<el-date-picker v-model="form.startTime" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker v-model="form.endTime" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
</div>
<div>
<el-form-item label="备注" prop="remark">
<el-input style="width: 600px" type="textarea" v-model.trim="form.remark" placeholder="请输入备注" />
</el-form-item>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="cancel"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listWmGp12QualityStatistics,
addWmGp12QualityStatistics,
delWmGp12QualityStatistics,
updateWmGp12QualityStatistics,
getWmGp12QualityStatistics,
} from '@/api/wmsManagement/wmGp12QualityStatistics.js'
import ThePartNumberSelect from './ThePartNumberSelect.vue'
export default {
name: 'wmGp12qualitystatistics',
components: {
ThePartNumberSelect,
},
data() {
return {
labelWidth: '100px',
formLabelWidth: '100px',
// 选中id数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 遮罩层
loading: false,
// 显示搜索条件
showSearch: true,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
startTime: null,
endTime: null,
sort: 'createdTime',
sortType: 'desc',
},
// 弹出层标题
title: '',
// 操作类型 1、add 2、edit
opertype: 0,
// 是否显示弹出层
open: false,
// 表单参数
form: {},
columns: [
{ index: 0, key: 'id', label: `id`, checked: true },
{ index: 1, key: 'workorderId', label: `工单号`, checked: true },
{ index: 2, key: 'partnumber', label: `零件号`, checked: true },
{ index: 3, key: 'requireNumber', label: `抛光投入数`, checked: true },
{ index: 4, key: 'team', label: `班组`, checked: true },
{ index: 5, key: 'qualifiedNumber', label: `合格数`, checked: true },
{ index: 6, key: 'qualifiedRate', label: `合格率`, checked: true },
{ index: 7, key: 'paoguangTotal', label: `抛光总数`, checked: true },
{ index: 8, key: 'damoTotal', label: `打磨总数`, checked: true },
{ index: 9, key: 'baofeiTotal', label: `报废总数`, checked: false },
{ index: 10, key: 'startTime', label: `开始时间`, checked: false },
{ index: 11, key: 'endTime', label: `结束时间`, checked: false },
{ index: 12, key: 'type', label: `类别0-默认 1-抛光 2-打磨 3-报废 4-合计)`, checked: false },
{ index: 13, key: 'remark', label: `备注`, checked: false },
{ index: 14, key: 'paintSuokong', label: `油漆-缩孔`, checked: false },
{ index: 15, key: 'paintZhengkong', label: `油漆-针孔`, checked: false },
{ index: 16, key: 'paintShiguang', label: `油漆-失光`, checked: false },
{ index: 17, key: 'paintSecha', label: `油漆-色差`, checked: false },
{ index: 18, key: 'paintDianzi', label: `油漆-点子`, checked: false },
{ index: 19, key: 'paintOther', label: `油漆-其他`, checked: false },
{ index: 20, key: 'deviceShuiban', label: `设备-水斑`, checked: false },
{ index: 21, key: 'deviceZandian', label: `设备-脏点`, checked: false },
{ index: 22, key: 'deviceBianxing', label: `设备-变形`, checked: false },
{ index: 23, key: 'deviceYouzhu', label: `设备-油珠`, checked: false },
{ index: 24, key: 'deviceTuoluo', label: `设备-脱落`, checked: false },
{ index: 25, key: 'deviceZhuangshang', label: `设备-撞伤`, checked: false },
{ index: 26, key: 'deviceOther', label: `设备-其他`, checked: false },
{ index: 27, key: 'blankMaoci', label: `毛坯-毛刺`, checked: false },
{ index: 28, key: 'blankSuoyin', label: `毛坯-缩印`, checked: false },
{ index: 29, key: 'blankCanshuang', label: `毛坯-擦伤`, checked: false },
{ index: 30, key: 'blankShaying', label: `毛坯-砂印`, checked: false },
{ index: 31, key: 'blankZangdian', label: `毛坯-脏点`, checked: false },
{ index: 32, key: 'blankDamo', label: `毛坯-打磨`, checked: false },
{ index: 33, key: 'programLiuguang', label: `程序-流挂`, checked: false },
{ index: 34, key: 'programSeqiqueqi', label: `程序-色漆缺漆`, checked: false },
{ index: 35, key: 'programQingqiqueqi', label: `程序-清漆缺漆`, checked: false },
{ index: 36, key: 'programJupi', label: `程序-桔皮`, checked: false },
{ index: 37, key: 'programOther', label: `程序-其他`, checked: false },
{ index: 38, key: 'teamTuoluocanshuang', label: `班组操作-脱落擦伤`, checked: false },
{ index: 39, key: 'teamQingqiqikuai', label: `班组操作-清漆漆块`, checked: false },
{ index: 40, key: 'teamSeqiqikuai', label: `班组操作-色漆漆块`, checked: false },
{ index: 41, key: 'teamFahua', label: `班组操作-发花`, checked: false },
{ index: 42, key: 'teamLiangbang', label: `班组操作-亮斑`, checked: false },
{ index: 43, key: 'teamPenglou', label: `班组操作-喷漏`, checked: false },
{ index: 44, key: 'updatedTime', label: `更新时间`, checked: false },
{ index: 45, key: 'updatedBy', label: `更新人`, checked: false },
{ index: 46, key: 'createdTime', label: `创建时间`, checked: false },
{ index: 47, key: 'createdBy', label: `创建人`, checked: false },
],
// 类别0-默认 1-抛光 2-打磨 3-报废 4-合计)选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
typeOptions: [],
// 数据列表
dataList: [],
// 总记录数
total: 0,
// 提交按钮是否显示
btnSubmitVisible: true,
// 表单校验
rules: {
workorderId: [{ required: true, message: '工单号不能为空', trigger: 'blur' }],
partnumber: [{ required: true, message: '零件号不能为空', trigger: 'blur' }],
requireNumber: [{ required: true, message: '投入数不可为空', trigger: 'blur' }],
qualifiedNumber: [{ required: true, message: '合格数不可为空', trigger: 'blur' }],
startTime: [{ required: true, message: '检验开始时间不可为空', trigger: 'blur' }],
},
ThePartNumberSelectRef: null,
}
},
created() {
// 列表数据查询
this.getList()
var dictParams = []
},
methods: {
// 查询数据
getList() {
this.loading = true
listWmGp12QualityStatistics(this.queryParams).then((res) => {
if (res.code == 200) {
this.dataList = res.data.result
this.total = res.data.totalNum
this.loading = false
}
})
},
// 取消按钮
cancel() {
this.open = false
this.reset()
},
// 重置数据表单
reset() {
this.form = {
id: undefined,
workorderId: undefined,
partnumber: undefined,
requireNumber: 0,
team: 'A',
isReturnWorkpiece: false,
qualifiedNumber: 0,
qualifiedRate: 0,
paoguangTotal: 0,
damoTotal: 0,
baofeiTotal: 0,
startTime: undefined,
endTime: undefined,
type: 0,
remark: undefined,
}
this.resetForm('form')
},
// 重置查询操作
resetQuery() {
this.timeRange = []
this.resetForm('queryForm')
this.handleQuery()
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id)
this.single = selection.length != 1
this.multiple = !selection.length
},
// 自定义排序
sortChange(column) {
if (column.prop == null || column.order == null) {
this.queryParams.sort = undefined
this.queryParams.sortType = undefined
} else {
this.queryParams.sort = column.prop
this.queryParams.sortType = column.order
}
this.handleQuery()
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
// 弹窗打开
dialogOpened() {
this.$refs.ThePartNumberSelectRef.init()
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加质检记录'
this.opertype = 1
},
/** 删除按钮操作 */
handleDelete(row) {
const Ids = row.id || this.ids
this.$confirm('是否确认删除参数数据项?')
.then(function () {
return delWmGp12QualityStatistics(Ids)
})
.then(() => {
this.handleQuery()
this.msgSuccess('删除成功')
})
.catch(() => {})
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const id = row.id || this.ids
getWmGp12QualityStatistics(id).then((res) => {
const { code, data } = res
if (code == 200) {
this.open = true
this.title = '修改数据'
this.opertype = 2
this.form = {
...data,
}
}
})
},
// 类别0-默认 1-抛光 2-打磨 3-报废 4-合计)字典翻译
typeFormat(row, column) {
return this.selectDictLabel(this.typeOptions, row.type)
},
/** 提交按钮 */
submitForm: function () {
this.$refs['form'].validate((valid) => {
if (valid) {
if (this.form.id != undefined && this.opertype === 2) {
updateWmGp12QualityStatistics(this.form)
.then((res) => {
this.msgSuccess('修改成功')
this.open = false
this.getList()
})
.catch((err) => {
//TODO 错误逻辑
})
} else {
addWmGp12QualityStatistics(this.form)
.then((res) => {
this.msgSuccess('新增成功')
this.open = false
this.getList()
})
.catch((err) => {
//TODO 错误逻辑
})
}
}
})
},
PartNumberSelect(value) {
this.form.partnumber = value
},
},
}
</script>
<style scoped>
.red-text {
font-size: 16px;
font-weight: bold;
color: #f56c6c;
}
</style>