抛光仓库相关功能-未完成(但已部署)

This commit is contained in:
2024-08-05 10:20:07 +08:00
parent a4d6d3efbc
commit cc1b7389b9
9 changed files with 1484 additions and 19 deletions

View File

@@ -1,4 +1,5 @@
<template>
<div>质量检验</div>
</template>
<script>

View File

@@ -0,0 +1,452 @@
<template>
<div>
<div class="container">
<el-container>
<el-header class="header-box">
<el-page-header @back="goBack" :content="content"> </el-page-header>
<span style="font-size: 18px">{{ dateTime }}</span>
</el-header>
<el-main class="main-box"
><div class="left">
<div class="container">
<el-button type="info" @click="getList">刷新工单</el-button>
<el-scrollbar v-loading="loading1" class="middle">
<el-card
v-for="(item, index) in workOrderFinishList"
:key="index"
style="margin: 5px"
@click="handlerWorkOrder(item.workorder)"
>
<div class="order-box">
<span style="margin-right: 10px; font-weight: 700; font-size: 24px">{{ item.workorder }}</span>
<span>{{ item.productionName }}</span>
<span>
<el-tag v-if="item.status === 1" type="info" size="large" effect="dark" round> 未开始 </el-tag>
<el-tag v-if="item.status === 2" type="primary" size="large" effect="dark" round> 进行中 </el-tag>
<el-tag v-if="item.status === 3" type="success" size="large" effect="dark" round> 已完成 </el-tag>
</span>
</div>
</el-card>
</el-scrollbar>
<el-button type="primary" class="bottom" @click="handlerReport">今日报工</el-button>
</div>
</div>
<div class="right">
<div class="container">
<div class="top" v-loading="loading2">
<el-descriptions v-if="workOrderInfo.workorder" border :column="4" class="m10">
<template #title>
<div class="descriptions-title-box">
<h2 style="margin-right: 10px">{{ `工单:${workOrderInfo.workorder}` }}</h2>
<el-tag v-if="workOrderInfo.status === 1" type="info" size="large" effect="dark" round> 未开始 </el-tag>
<el-tag v-if="workOrderInfo.status === 2" type="primary" size="large" effect="dark" round>
进行中
</el-tag>
<el-tag v-if="workOrderInfo.status === 3" type="success" size="large" effect="dark" round>
已完成
</el-tag>
</div>
</template>
<el-descriptions-item :span="4" label="产品名称">{{ workOrderInfo.productionName }}</el-descriptions-item>
<el-descriptions-item label="存货编码">{{ workOrderInfo.productionCode }}</el-descriptions-item>
<el-descriptions-item label="客户编码">{{ workOrderInfo.customCode }}</el-descriptions-item>
<el-descriptions-item label="工单日期">{{ workOrderInfo.workorderDate }}</el-descriptions-item>
<el-descriptions-item label="单位">{{ workOrderInfo.unit }}</el-descriptions-item>
<el-descriptions-item label="纸箱数量">{{ workOrderInfo.packageNum }}</el-descriptions-item>
<el-descriptions-item label="组别">{{ workOrderInfo.groupId }}</el-descriptions-item>
<el-descriptions-item label="线别">{{ workOrderInfo.routeId }}</el-descriptions-item>
<el-descriptions-item label="优先级">{{ workOrderInfo.priority }}</el-descriptions-item>
<el-descriptions-item :span="2" label="交货数量"
><h3>{{ workOrderInfo.deliveryNum }}</h3></el-descriptions-item
>
<el-descriptions-item :span="2" label="已完成数量"
><h3>{{ workOrderInfo.finishNum }}</h3></el-descriptions-item
>
<el-descriptions-item :span="4" label="备注">{{ workOrderInfo.productionName }}</el-descriptions-item>
</el-descriptions>
</div>
<div class="middle">
<!-- <el-button :disabled="!workOrderInfo.workorder" type="success" size="large">确认到料</el-button>
<el-button :disabled="!workOrderInfo.workorder" type="warning" size="large">到料异常</el-button>
<el-button :disabled="!workOrderInfo.workorder" type="danger" size="large">加急催料</el-button> -->
<el-button
:disabled="!workOrderInfo.workorder"
class="action-button"
type="primary"
size="large"
@click="handlerStartOrder"
>开始工单</el-button
>
<el-button
:disabled="!workOrderInfo.workorder"
class="action-button"
type="success"
size="large"
@click="handlerFinishOrder"
>完成工单</el-button
>
</div>
<div class="bottom" v-loading="loading3"></div>
</div>
</div>
</el-main>
</el-container>
</div>
<el-dialog v-model.sync="dialogVisible" title="今日工单完成情况" width="800px">
<!-- <div style="margin-bottom: 10px; display: flex; justify-content: space-around">
<span style="font-size: 18px; font-weight: 600; margin-right: 20px">今日总工单数:{{ store.workOrderTotalTaskNum.value }}</span>
<span style="font-size: 18px; font-weight: 600">已完成工单数:{{ store.workOrderRemainTaskNum.value }}</span>
</div> -->
<el-table size="large" header-cell-class-name="table-header" stripe border :data="workOrderList" style="width: 100%">
<el-table-column align="center" prop="workorder" label="工单号" />
<el-table-column align="center" prop="deliveryNum" label="交货数量" />
<el-table-column align="center" prop="finishNum" label="已完成数量" />
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="dialogVisible = false"> 确认报工 </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
// 抛光计划
import {
listWmPolishWorkorder,
addWmPolishWorkorder,
delWmPolishWorkorder,
updateWmPolishWorkorder,
getWmPolishWorkorder,
} from '@/api/wmsManagement/wmPolishWorkorder.js'
export default {
data() {
return {
labelWidth: '60px',
formLabelWidth: '60px',
timer1: null,
dateTime: this.$dayjs().format('YYYY-MM-DD HH:mm:ss'),
content: '抛光报工看板',
loading1: false,
queryParams: {
pageNum: 1,
pageSize: 10,
orderTime: 1,
sort: 'updatedTime',
sortType: 'desc',
},
form: {},
total: 0,
// 数据列表
dataList: [],
workOrderFinishList: [],
loading2: false,
dialogVisible: false,
workOrderInfo: {},
open: false,
// 弹出层标题
title: '',
// 操作类型 1、add 2、edit
opertype: 0,
// 工单类别 1-手动 2-自动选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
typeOptions: [
{ dictLabel: '手动', dictValue: 1 },
{ dictLabel: '自动', dictValue: 2 },
],
// 仓库数据是否同步 0-未发送同步数据 1-发送同步数据选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
isSendOptions: [
{ dictLabel: '未同步', dictValue: 0 },
{ dictLabel: '已同步', dictValue: 1 },
],
// 0-未执行 1-执行中 2-已完成选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
statusOptions: [
{ dictLabel: '未执行', dictValue: 0 },
{ dictLabel: '执行中', dictValue: 1 },
{ dictLabel: '已完成', dictValue: 2 },
],
// 表单校验
rules: {
partnumber: [{ required: true, message: '零件号不能为空', trigger: 'blur' }],
quantity: [{ required: true, message: '总零件数不能为空', trigger: 'blur' }],
},
}
},
computed: {},
created() {
// 列表数据查询
this.getList()
},
methods: {
goBack() {
this.$router.push({ path: '/' })
},
getList() {
this.loading = true
listWmPolishWorkorder(this.queryParams).then((res) => {
if (res.code == 200) {
this.dataList = res.data.result
this.total = res.data.totalNum
this.loading = false
}
})
},
// 重置数据表单
reset() {
this.form = {
id: '',
workorderNo: '',
partnumber: '',
blankNum: '',
quantity: 0,
passNum: 0,
sandingNum: 0,
discardNum: 0,
startTime: undefined,
endTime: undefined,
type: 1,
remark: '',
isSend: 0,
status: 0,
updatedBy: undefined,
updatedTime: undefined,
createdBy: undefined,
createdTime: undefined,
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
// 重置查询操作
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
// 取消按钮
cancel() {
this.open = false
this.reset()
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加'
this.opertype = 1
},
/** 删除按钮操作 */
handleDelete(row) {
const Ids = row.id || this.ids
this.$confirm('是否确认删除参数编号为"' + Ids + '"的数据项?')
.then(function () {
return delWmPolishWorkorder(Ids)
})
.then(() => {
this.handleQuery()
this.msgSuccess('删除成功')
})
.catch(() => {})
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const id = row.id || this.ids
getWmPolishWorkorder(id).then((res) => {
const { code, data } = res
if (code == 200) {
this.open = true
this.title = '修改数据'
this.opertype = 2
this.form = {
...data,
}
}
})
},
handlerReport() {},
/** 提交按钮 */
submitForm: function () {
this.$refs['form'].validate((valid) => {
if (valid) {
console.log(JSON.stringify(this.form))
if (this.form.id != undefined && this.opertype === 2) {
updateWmPolishWorkorder(this.form)
.then((res) => {
this.msgSuccess('修改成功')
this.open = false
this.getList()
})
.catch((err) => {
//TODO 错误逻辑
})
} else {
addWmPolishWorkorder(this.form)
.then((res) => {
this.msgSuccess('新增成功')
this.open = false
this.getList()
})
.catch((err) => {
//TODO 错误逻辑
})
}
}
})
},
},
mounted() {
let timer1 = setInterval(() => {
this.dateTime = this.$dayjs().format('YYYY-MM-DD HH:mm:ss')
}, 1000)
this.timer1 = timer1 // 保存定时器以便后续清除
},
beforeDestroy() {
if (this.timer1) {
clearInterval(this.timer1)
}
},
}
</script>
<style lang="scss" scoped>
.container {
width: 100%;
height: 100%;
padding: 10px;
/* background-color: #000000; */
}
.border {
border: 1px solid #000000;
}
.header-box {
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.main-box {
display: flex;
flex-direction: row;
/* height: 100vh; */
/* height: 90vh; */
}
.main-top-box {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.table-header {
background-color: aliceblue;
font-size: 18px;
font-weight: 700;
}
.left {
margin-right: 10px;
background-color: lightblue;
width: 25%; /* 左边元素占据30% */
.container {
display: flex;
flex-direction: column;
height: 550px; /* 确保容器占满整个视口高度 */
}
.middle {
// border: 1px solid #000000;
height: 80vh; /* 占用视口高度的40% */
}
.bottom {
// border: 1px solid #000000;
height: 20vh; /* 占用视口高度的40% */
background-color: #409eff;
font-size: 3rem;
color: white;
border-radius: 4px;
text-align: center;
margin: 10px;
}
}
.right {
width: 75%; /* 右边元素占据70% */
.container {
display: flex;
flex-direction: column;
height: 550px; /* 确保容器占满整个视口高度 */
}
.top {
background-color: #d9ecff;
padding: 10px;
// display: flex;
// flex-direction: row;
// align-items: center;
// justify-content: center;
height: 60vh; /* 占用视口高度的20% */
}
.middle {
background-color: #ecf5ff;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 20vh; /* 占用视口高度的40% */
}
.bottom {
background-color: #faecd8;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
border: 2px solid #909399;
height: 20vh; /* 占用视口高度的40% */
// background-color: lightgreen;
}
}
.scrollbar-demo-item {
display: flex;
align-items: center;
justify-content: center;
height: 50px;
margin: 10px;
text-align: center;
border-radius: 4px;
background: var(--el-color-primary-light-9);
color: var(--el-color-primary);
}
.order-box {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.descriptions-title-box {
display: flex;
flex-direction: row;
align-items: center;
}
.action-button {
width: 200px;
height: 60px;
font-size: 24px;
font-weight: 700;
}
// .descriptions-box{
// width: 100%;
// }
</style>

View File

@@ -0,0 +1,410 @@
<template>
<div class="container">
<el-container>
<el-header class="header-box">
<el-page-header @back="goBack" :content="content"> </el-page-header>
<span style="font-size: 18px">{{ dateTime }}</span>
</el-header>
<el-main class="main-box">
<div class="main-top-box">
<div>
<pagination
background
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
<div>
<el-form
:model="queryParams"
size="small"
label-position="right"
inline
ref="queryForm"
:label-width="labelWidth"
@submit.native.prevent
>
<el-form-item label="工单号" prop="workorderNo">
<el-input v-model.trim="queryParams.workorderNo" placeholder="请输入工单号" />
</el-form-item>
<el-form-item label="零件号" prop="partnumber">
<el-input v-model.trim="queryParams.partnumber" placeholder="请输入零件号" />
</el-form-item>
<el-form-item label="时间" prop="orderTime">
<el-date-picker v-model="queryParams.orderTime" type="date" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<!-- <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> -->
<el-button icon="el-icon-plus" type="success">新增</el-button>
</el-form-item>
</el-form>
</div>
</div>
<div class="grid-box" v-loading="loading">
<div class="grid-item" v-for="(item,index) in 15">
<el-card class="box-card order-not-start">
<div slot="header" class="clearfix">
<span>PG-2024073100{{index + 1}}</span>
<el-button style="float: right; padding: 3px 0" type="text">详情</el-button>
</div>
<div>
<div>8129482GXP</div>
<div>D2UC鲨鱼鳍</div>
<div>数量3000 </div>
<div>2024/07/31 ~ 2024/07/31</div>
</div>
</el-card>
</div>
</div>
</el-main>
</el-container>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :lock-scroll="false" :visible.sync="open">
<el-form ref="form" :model="form" :rules="rules" :label-width="formLabelWidth">
<el-row :gutter="20">
<el-col :lg="12">
<el-form-item label="工单号" prop="workorderNo">
<el-input v-model="form.workorderNo" placeholder="请输入工单号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="零件号" prop="partnumber">
<el-input v-model="form.partnumber" placeholder="请输入零件号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="毛坯号" prop="blankNum">
<el-input v-model="form.blankNum" placeholder="请输入毛坯号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="总零件数" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入总零件数" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="合格" prop="passNum">
<el-input v-model="form.passNum" placeholder="请输入合格" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="打磨" prop="sandingNum">
<el-input v-model="form.sandingNum" placeholder="请输入打磨" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="报废" prop="discardNum">
<el-input v-model="form.discardNum" placeholder="请输入报废" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="开始时间" prop="startTime">
<el-date-picker v-model="form.startTime" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="结束时间" prop="endTime">
<el-date-picker v-model="form.endTime" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="工单类别" prop="type">
<el-select v-model="form.type" placeholder="请选择工单类别">
<el-option
v-for="item in typeOptions"
:key="item.dictValue"
:label="item.dictLabel"
:value="parseInt(item.dictValue)"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="仓库数据是否同步" prop="isSend">
<el-radio-group v-model="form.isSend">
<el-radio v-for="item in isSendOptions" :key="item.dictValue" :label="parseInt(item.dictValue)">{{
item.dictLabel
}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio v-for="item in statusOptions" :key="item.dictValue" :label="parseInt(item.dictValue)">{{
item.dictLabel
}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</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 {
listWmPolishWorkorder,
addWmPolishWorkorder,
delWmPolishWorkorder,
updateWmPolishWorkorder,
getWmPolishWorkorder,
} from '@/api/wmsManagement/wmPolishWorkorder.js'
export default {
data() {
return {
labelWidth: '60px',
formLabelWidth: '60px',
timer1: null,
dateTime: this.$dayjs().format('YYYY-MM-DD HH:mm:ss'),
content: '抛光工单排程',
loading: false,
queryParams: {
pageNum: 1,
pageSize: 10,
orderTime: 1,
sort: 'updatedTime',
sortType: 'desc',
},
form: {},
total: 0,
// 数据列表
dataList: [],
open: false,
// 弹出层标题
title: '',
// 操作类型 1、add 2、edit
opertype: 0,
// 工单类别 1-手动 2-自动选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
typeOptions: [
{ dictLabel: '手动', dictValue: 1 },
{ dictLabel: '自动', dictValue: 2 },
],
// 仓库数据是否同步 0-未发送同步数据 1-发送同步数据选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
isSendOptions: [
{ dictLabel: '未同步', dictValue: 0 },
{ dictLabel: '已同步', dictValue: 1 },
],
// 0-未执行 1-执行中 2-已完成选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
statusOptions: [
{ dictLabel: '未执行', dictValue: 0 },
{ dictLabel: '执行中', dictValue: 1 },
{ dictLabel: '已完成', dictValue: 2 },
],
// 表单校验
rules: {
partnumber: [{ required: true, message: '零件号不能为空', trigger: 'blur' }],
quantity: [{ required: true, message: '总零件数不能为空', trigger: 'blur' }],
},
}
},
computed: {},
created() {
// 列表数据查询
this.getList()
},
methods: {
goBack() {
this.$router.push({ path: '/' })
},
getList() {
this.loading = true
listWmPolishWorkorder(this.queryParams).then((res) => {
if (res.code == 200) {
this.dataList = res.data.result
this.total = res.data.totalNum
this.loading = false
}
})
},
// 重置数据表单
reset() {
this.form = {
id: '',
workorderNo: '',
partnumber: '',
blankNum: '',
quantity: 0,
passNum: 0,
sandingNum: 0,
discardNum: 0,
startTime: undefined,
endTime: undefined,
type: 1,
remark: '',
isSend: 0,
status: 0,
updatedBy: undefined,
updatedTime: undefined,
createdBy: undefined,
createdTime: undefined,
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
// 重置查询操作
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
// 取消按钮
cancel() {
this.open = false
this.reset()
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = '添加'
this.opertype = 1
},
/** 删除按钮操作 */
handleDelete(row) {
const Ids = row.id || this.ids
this.$confirm('是否确认删除参数编号为"' + Ids + '"的数据项?')
.then(function () {
return delWmPolishWorkorder(Ids)
})
.then(() => {
this.handleQuery()
this.msgSuccess('删除成功')
})
.catch(() => {})
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const id = row.id || this.ids
getWmPolishWorkorder(id).then((res) => {
const { code, data } = res
if (code == 200) {
this.open = true
this.title = '修改数据'
this.opertype = 2
this.form = {
...data,
}
}
})
},
/** 提交按钮 */
submitForm: function () {
this.$refs['form'].validate((valid) => {
if (valid) {
console.log(JSON.stringify(this.form))
if (this.form.id != undefined && this.opertype === 2) {
updateWmPolishWorkorder(this.form)
.then((res) => {
this.msgSuccess('修改成功')
this.open = false
this.getList()
})
.catch((err) => {
//TODO 错误逻辑
})
} else {
addWmPolishWorkorder(this.form)
.then((res) => {
this.msgSuccess('新增成功')
this.open = false
this.getList()
})
.catch((err) => {
//TODO 错误逻辑
})
}
}
})
},
},
mounted() {
let timer1 = setInterval(() => {
this.dateTime = this.$dayjs().format('YYYY-MM-DD HH:mm:ss')
}, 1000)
this.timer1 = timer1 // 保存定时器以便后续清除
},
beforeDestroy() {
if (this.timer1) {
clearInterval(this.timer1)
}
},
}
</script>
<style scoped>
.container {
width: 100%;
height: 100%;
padding: 10px;
/* background-color: #000000; */
}
.border {
border: 1px solid #000000;
}
.header-box {
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.main-box {
display: flex;
flex-direction: column;
/* height: 100vh; */
/* height: 90vh; */
}
.main-top-box {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.grid-box {
display: inline-grid;
/* grid-gap:10px; */
grid-template-columns: repeat(5, 20%);
}
.grid-item {
padding: 5px;
/* height: 200px; */
/* width: 20%; */
}
.box-card {
/* height: 100px; */
}
.order-not-start {
border: 4px solid #909399;
}
.order-start {
border: 4px solid #e6a23c;
}
.order-end {
border: 4px solid #67c23a;
}
</style>

View File

@@ -0,0 +1,447 @@
<!--
* @Descripttion: (/wm_polish_workorder)
* @version: (1.0)
* @Author: (admin)
* @Date: (2024-07-30)
* @LastEditors: (admin)
* @LastEditTime: (2024-07-30)
-->
<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>
<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" v-hasPermi="['business:wmpolishworkorder:add']" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" :disabled="single" v-hasPermi="['business:wmpolishworkorder:edit']" plain icon="el-icon-edit" size="mini" @click="handleUpdate">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" :disabled="multiple" v-hasPermi="['business:wmpolishworkorder:delete']" 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="id" label="工单主键" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="workorderNo" label="工单号" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="partnumber" label="零件号" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="blankNum" label="毛坯号" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="quantity" label="总零件数" align="center" />
<el-table-column prop="passNum" label="合格" align="center" />
<el-table-column prop="sandingNum" label="打磨" align="center" />
<el-table-column prop="discardNum" label="报废" align="center" />
<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="type" label="工单类别 1-手动 2-自动" align="center">
<template slot-scope="scope">
<dict-tag :options="typeOptions" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="isSend" label="仓库数据是否同步 0-未发送同步数据 1-发送同步数据" align="center">
<template slot-scope="scope">
<dict-tag :options="isSendOptions" :value="scope.row.isSend" />
</template>
</el-table-column>
<el-table-column prop="status" label="0-未执行 1-执行中 2-已完成" align="center">
<template slot-scope="scope">
<dict-tag :options="statusOptions" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column prop="updatedBy" label="更新人" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="updatedTime" label="更新时间" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="createdBy" label="创建人" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="createdTime" label="创建时间" align="center" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" width="140">
<template slot-scope="scope">
<el-button size="mini" v-hasPermi="['business:wmpolishworkorder:edit']" type="success" icon="el-icon-edit" title="编辑"
@click="handleUpdate(scope.row)"></el-button>
<el-button size="mini" v-hasPermi="['business:wmpolishworkorder:delete']" 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" >
<el-form ref="form" :model="form" :rules="rules" :label-width="formLabelWidth">
<el-row :gutter="20">
<el-col :lg="12">
<el-form-item label="工单主键" prop="id">
<el-input-number v-model.number="form.id" controls-position="right" placeholder="请输入工单主键" :disabled="title=='修改数据'"/>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="工单号" prop="workorderNo">
<el-input v-model="form.workorderNo" placeholder="请输入工单号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="零件号" prop="partnumber">
<el-input v-model="form.partnumber" placeholder="请输入零件号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="毛坯号" prop="blankNum">
<el-input v-model="form.blankNum" placeholder="请输入毛坯号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="总零件数" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入总零件数" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="合格" prop="passNum">
<el-input v-model="form.passNum" placeholder="请输入合格" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="打磨" prop="sandingNum">
<el-input v-model="form.sandingNum" placeholder="请输入打磨" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="报废" prop="discardNum">
<el-input v-model="form.discardNum" placeholder="请输入报废" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="开始时间" prop="startTime">
<el-date-picker v-model="form.startTime" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="结束时间" prop="endTime">
<el-date-picker v-model="form.endTime" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="工单类别 1-手动 2-自动" prop="type">
<el-select v-model="form.type" placeholder="请选择工单类别 1-手动 2-自动">
<el-option v-for="item in typeOptions" :key="item.dictValue" :label="item.dictLabel" :value="parseInt(item.dictValue)"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="仓库数据是否同步 0-未发送同步数据 1-发送同步数据" prop="isSend">
<el-radio-group v-model="form.isSend">
<el-radio v-for="item in isSendOptions" :key="item.dictValue" :label="parseInt(item.dictValue)">{{item.dictLabel}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="0-未执行 1-执行中 2-已完成" prop="status">
<el-radio-group v-model="form.status">
<el-radio v-for="item in statusOptions" :key="item.dictValue" :label="parseInt(item.dictValue)">{{item.dictLabel}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="更新人" prop="updatedBy">
<el-input v-model="form.updatedBy" placeholder="请输入更新人" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="更新时间" prop="updatedTime">
<el-date-picker v-model="form.updatedTime" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="创建人" prop="createdBy">
<el-input v-model="form.createdBy" placeholder="请输入创建人" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="创建时间" prop="createdTime">
<el-date-picker v-model="form.createdTime" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</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 {
listWmPolishWorkorder,
addWmPolishWorkorder,
delWmPolishWorkorder,
updateWmPolishWorkorder,
getWmPolishWorkorder,
} from '@/api/wmsManagement/wmPolishWorkorder.js';
export default {
name: "polishworkorderrecord",
data() {
return {
labelWidth: "100px",
formLabelWidth:"100px",
// 选中id数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 遮罩层
loading: false,
// 显示搜索条件
showSearch: true,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
sort: undefined,
sortType: undefined,
},
// 弹出层标题
title: "",
// 操作类型 1、add 2、edit
opertype: 0,
// 是否显示弹出层
open: false,
// 表单参数
form: {},
columns: [
{ index: 0, key: 'id', label: `工单主键`, checked: true },
{ index: 1, key: 'workorderNo', label: `工单号`, checked: true },
{ index: 2, key: 'partnumber', label: `零件号`, checked: true },
{ index: 3, key: 'blankNum', label: `毛坯号`, checked: true },
{ index: 4, key: 'quantity', label: `总零件数`, checked: true },
{ index: 5, key: 'passNum', label: `合格`, checked: true },
{ index: 6, key: 'sandingNum', label: `打磨`, checked: true },
{ index: 7, key: 'discardNum', label: `报废`, checked: true },
{ index: 8, key: 'startTime', label: `开始时间`, checked: true },
{ index: 9, key: 'endTime', label: `结束时间`, checked: false },
{ index: 10, key: 'type', label: `工单类别 1-手动 2-自动`, checked: false },
{ index: 11, key: 'remark', label: `备注`, checked: false },
{ index: 12, key: 'isSend', label: `仓库数据是否同步 0-未发送同步数据 1-发送同步数据`, checked: false },
{ index: 13, key: 'status', label: `0-未执行 1-执行中 2-已完成`, checked: false },
{ index: 14, key: 'updatedBy', label: `更新人`, checked: false },
{ index: 15, key: 'updatedTime', label: `更新时间`, checked: false },
{ index: 16, key: 'createdBy', label: `创建人`, checked: false },
{ index: 17, key: 'createdTime', label: `创建时间`, checked: false },
],
// 工单类别 1-手动 2-自动选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
typeOptions: [],
// 仓库数据是否同步 0-未发送同步数据 1-发送同步数据选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
isSendOptions: [],
// 0-未执行 1-执行中 2-已完成选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
statusOptions: [],
// 数据列表
dataList: [],
// 总记录数
total: 0,
// 提交按钮是否显示
btnSubmitVisible: true,
// 表单校验
rules: {
id: [
{ required: true, message: "工单主键不能为空", trigger: "blur" }
],
},
};
},
created() {
// 列表数据查询
this.getList();
var dictParams = [
];
},
methods: {
// 查询数据
getList() {
this.loading = true;
listWmPolishWorkorder(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,
workorderNo: undefined,
partnumber: undefined,
blankNum: undefined,
quantity: undefined,
passNum: undefined,
sandingNum: undefined,
discardNum: undefined,
startTime: undefined,
endTime: undefined,
type: undefined,
remark: undefined,
isSend: undefined,
status: undefined,
updatedBy: undefined,
updatedTime: undefined,
createdBy: undefined,
createdTime: 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();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加";
this.opertype = 1;
},
/** 删除按钮操作 */
handleDelete(row) {
const Ids = row.id || this.ids;
this.$confirm('是否确认删除参数编号为"' + Ids + '"的数据项?')
.then(function () {
return delWmPolishWorkorder(Ids);
})
.then(() => {
this.handleQuery();
this.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getWmPolishWorkorder(id).then((res) => {
const { code, data } = res;
if (code == 200) {
this.open = true;
this.title = "修改数据";
this.opertype = 2;
this.form = {
...data,
};
}
});
},
// 工单类别 1-手动 2-自动字典翻译
typeFormat(row, column) {
return this.selectDictLabel(this.typeOptions, row.type);
},
// 仓库数据是否同步 0-未发送同步数据 1-发送同步数据字典翻译
isSendFormat(row, column) {
return this.selectDictLabel(this.isSendOptions, row.isSend);
},
// 0-未执行 1-执行中 2-已完成字典翻译
statusFormat(row, column) {
return this.selectDictLabel(this.statusOptions, row.status);
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
console.log(JSON.stringify(this.form));
if (this.form.id != undefined && this.opertype === 2) {
updateWmPolishWorkorder(this.form)
.then((res) => {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
})
.catch((err) => {
//TODO 错误逻辑
});
} else {
addWmPolishWorkorder(this.form)
.then((res) => {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
})
.catch((err) => {
//TODO 错误逻辑
});
}
}
});
},
},
};
</script>

View File

@@ -176,10 +176,17 @@
/>
<!-- 入库出库盘点 -->
<el-dialog :title="title" :lock-scroll="false" :visible.sync="open" @opened="dialogOpened">
<el-dialog :close-on-click-modal="false" :title="title" :lock-scroll="false" :visible.sync="open" @opened="dialogOpened">
<el-form ref="form" :model="form" :rules="rules" :label-width="formLabelWidth">
<el-row :gutter="20">
<el-col :lg="24">
<el-form-item label="操作类别">
<el-tag effect="dark" style="font-size: 18px" v-if="opertype === 1" type="success">入库</el-tag>
<el-tag effect="dark" style="font-size: 18px" v-if="opertype === 2" type="primary">出库</el-tag>
<el-tag effect="dark" style="font-size: 18px" v-if="opertype === 3" type="warning">盘点</el-tag>
</el-form-item>
</el-col>
<el-col :lg="24" v-if="opertype != 3">
<el-form-item label="零件搜索">
<ThePartNumberSelect ref="ThePartNumberSelectRef" @selected="PartNumberSelect"></ThePartNumberSelect>
</el-form-item>
@@ -191,8 +198,14 @@
</el-col>
<el-col :lg="12">
<el-form-item label="库存数量" prop="quantity">
<el-input-number v-model="form.quantity" :min="0" label="请输入库数量"></el-input-number>
<el-form-item v-if="opertype === 1" label="入库数" prop="quantity">
<el-input-number v-model="form.quantity" :min="0" label="入库数量"></el-input-number>
</el-form-item>
<el-form-item v-if="opertype === 2" label="出库数" prop="quantity">
<el-input-number v-model="form.quantity" :min="0" label="出库数量"></el-input-number>
</el-form-item>
<el-form-item v-if="opertype === 3" label="盘点数" prop="quantity">
<el-input-number v-model="form.quantity" :min="0" label="请输入盘点结果"></el-input-number>
</el-form-item>
</el-col>
<el-col :lg="12">
@@ -230,13 +243,24 @@
</div>
</el-dialog>
<!-- 操作记录 -->
<el-dialog :title="RecordTitle" :lock-scroll="false" :visible.sync="RecordOpen" @opened="RecordOpened" width="80%">
<el-dialog
:close-on-click-modal="false"
:title="RecordTitle"
:lock-scroll="false"
:visible.sync="RecordOpen"
@opened="RecordOpened"
width="80%"
destroy-on-close
>
<el-form :model="RecordQueryParams" size="small" label-position="right" inline ref="RecordQueryForm" @submit.native.prevent>
<el-form-item label="开始时间" prop="startTime">
<el-date-picker v-model="RecordQueryParams.startTime" type="datetime" :clearable="true" placeholder="开始时间"></el-date-picker>
<el-form-item label="操作时间" prop="startActionTime">
<el-date-picker v-model="RecordQueryParams.startActionTime" type="datetime" :clearable="true" placeholder="开始时间"></el-date-picker>
</el-form-item>
<el-form-item label="截止时间" prop="endTime">
<el-date-picker v-model="RecordQueryParams.endTime" type="datetime" :clearable="true" placeholder="截止时间"></el-date-picker>
<el-form-item label="" prop="endActionTime">
<el-date-picker v-model="RecordQueryParams.endActionTime" type="datetime" :clearable="true" placeholder="结束时间" default-time="23:59:59"></el-date-picker>
</el-form-item>
<el-form-item label="工单号" prop="remark">
<el-input v-model.trim="RecordQueryParams.remark" placeholder="请输入工单号" clearable />
</el-form-item>
<el-form-item label="类别" prop="changeType">
<el-select v-model="RecordQueryParams.changeType" placeholder="请选择类别" @change="getRecordList">
@@ -333,6 +357,7 @@ export default {
type: 1,
status: 1,
partnumber: '',
remark: '',
actionTime: new Date(),
},
columns: [
@@ -433,7 +458,7 @@ export default {
type: 1,
status: 1,
actionTime: new Date(),
remark: undefined,
remark: '',
createdBy: undefined,
createdTime: undefined,
updatedBy: undefined,
@@ -551,8 +576,8 @@ export default {
resetRecordQuery() {
this.RecordQueryParams.pageNum = 1
this.RecordQueryParams.changeType = -1
this.RecordQueryParams.startTime = null
this.RecordQueryParams.endTime = null
// this.RecordQueryParams.startTime = ''
// this.RecordQueryParams.endTime = ''
this.getRecordList()
},
getRecordList() {
@@ -581,7 +606,7 @@ export default {
if (valid) {
const _opertype = this.opertype
if (_opertype === 1) {
this.form.remark = '手动入库 ' + this.form.remark;
this.form.remark = '手动入库 ' + this.form.remark
doWmPolishWarehousing(this.form)
.then((res) => {
this.msgSuccess('入库成功')
@@ -592,7 +617,7 @@ export default {
//TODO 错误逻辑
})
} else if (_opertype === 2) {
this.form.remark = '手动出库 ' + this.form.remark;
this.form.remark = '手动出库 ' + this.form.remark
doWmPolishRetrieval(this.form)
.then((res) => {
this.msgSuccess('出库成功')
@@ -603,7 +628,7 @@ export default {
//TODO 错误逻辑
})
} else if (_opertype === 3) {
this.form.remark = '手动盘点 ' + this.form.remark;
this.form.remark = '手动盘点 ' + this.form.remark
doWmPolishStocktaking(this.form)
.then((res) => {
this.msgSuccess('盘点成功')
@@ -619,4 +644,4 @@ export default {
},
},
}
</script>
</script>