rev:拣选单异常

This commit is contained in:
2024-07-16 10:15:29 +08:00
parent d23359f59e
commit 898021cc8a
6 changed files with 532 additions and 94 deletions

View File

@@ -0,0 +1,358 @@
<template>
<el-dialog
append-to-body
title="拣选作业"
:visible.sync="dialogVisible"
destroy-on-close
:show-close="false"
fullscreen
@close="close"
>
<el-row :gutter="20">
<el-col :span="20" style="border: 1px solid white">
<span/>
</el-col>
<el-col :span="4">
<span>
<el-button icon="el-icon-check" size="mini" type="primary" @click="updateDtl">保存</el-button>
<el-button icon="el-icon-close" size="mini" type="info" @click="closeDialog">关闭</el-button>
</span>
</el-col>
</el-row>
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true"
:model="form" size="mini" label-width="100px" label-suffix=":">
<el-form-item label="单据编号" prop="code">
<el-input v-model="form.code" disabled placeholder="系统生成" clearable style="width: 210px"/>
</el-form-item>
<el-form-item label="单据类型" prop="form_type">
<el-input v-model="form.form_type" disabled clearable style="width: 210px"/>
</el-form-item>
<el-form-item label="业务单据类型" prop="source_form_type">
<el-input v-model="form.biz_code" disabled clearable style="width: 210px"/>
</el-form-item>
<el-form-item label="业务单据id" prop="source_form_id">
<el-input v-model="form.biz_code" disabled clearable style="width: 210px"/>
</el-form-item>
<el-form-item label="业务单据时间" prop="source_form_date">
<!-- <el-date-picker v-model="form.biz_date" type="date" placeholder="选择日期" style="width: 210px"-->
<!-- value-format="yyyy-MM-dd" :disabled="true"/>-->
<el-input v-model="form.biz_date" disabled clearable style="width: 210px"/>
</el-form-item>
<el-form-item label="批次" prop="pcsn">
<el-input v-model="form.pcsn" disabled clearable style="width: 210px"/>
</el-form-item>
<el-form-item label="物料数量" prop="qty">
<el-input v-model="form.qty" disabled clearable style="width: 210px"/>
</el-form-item>
<el-form-item label="载具编号" prop="vehicle_code">
<el-input v-model="form.vehicle_code" disabled clearable style="width: 210px"/>
</el-form-item>
<el-form-item label="单据状态" prop="status">
<el-select
v-model="form.status"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 180px;"
disabled
>
<el-option
v-for="item in statusEnum.FORM_STATUS"
:label="item.label"
:value="item.value"
/>
</el-select>
<!-- <el-input v-model="form.status" disabled clearable style="width: 210px"/>-->
</el-form-item>
<el-form-item label="创建时间" prop="create_time">
<!-- <el-date-picker v-model="form.create_time" type="date" placeholder="选择日期" style="width: 210px"-->
<!-- value-format="yyyy-MM-dd" :disabled="true"/>-->
<el-input v-model="form.create_time" disabled clearable style="width: 210px"/>
</el-form-item>
<template v-for="(col,index) in cols">
<el-form-item label="col.lable" prop="bill_code">
<label slot="label">{{ col.lable }}:</label>
<el-input disabled v-model="form.form_data[col.value]" :value="col.value" clearable style="width: 210px"/>
</el-form-item>
</template>
</el-form>
<div class="crud-opts2">
<span class="role-span">拣选明细</span>
</div>
<el-card class="box-card" shadow="never" :body-style="{padding:'0'}">
<!--表格渲染-->
<el-table
ref="table"
:data="tableDtl"
style="width: 100%;"
max-height="300"
size="mini"
border
:highlight-current-row="true"
@current-change="handleDtlCurrentChange"
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
>
<el-table-column prop="form_type" label="单据类型" show-overflow-tooltip width="120"/>
<el-table-column prop="material_id" label="物料id" show-overflow-tooltip width="120"/>
<el-table-column prop="material_name" label="物料名称" show-overflow-tooltip width="120"/>
<el-table-column prop="material_spec" label="物料规格" show-overflow-tooltip width="120"/>
<el-table-column prop="pcsn" label="批次" show-overflow-tooltip width="120"/>
<el-table-column prop="qty" label="物料数量" show-overflow-tooltip/>
<!-- <el-table-column prop="assign_qty" label="拣选数量" show-overflow-tooltip width="120"/>-->
<el-table-column prop="assign_qty" label="拣选数量" width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.assign_qty" show-word-limit></el-input>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="unit_id" label="单位" width="120">
<template slot-scope="scope">
<el-select disabled v-model="tableDtl[scope.$index].unit_id"
class="filter-item" placeholder="单位" size="small" style="width: 90px">
<el-option
v-for="item in unitDict"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column prop="vehicle_code" label="拣选载具" width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.vehicle_code" show-word-limit></el-input>
</template>
</el-table-column>
<!-- <el-table-column prop="vehicle_code" label="拣选载具" show-overflow-tooltip width="120"/>-->
<el-table-column prop="status" label="单据状态" show-overflow-tooltip width="120">
<template slot-scope="scope">
{{ statusEnum.label.FORM_STATUS[scope.row.status] }}
</template>
</el-table-column>
<el-table-column prop="source_form_id" label="业务单据id" show-overflow-tooltip width="120"/>
<el-table-column prop="source_form_type" label="业务单据类型" show-overflow-tooltip width="120"/>
<el-table-column prop="source_form_date" label="业务单据时间" show-overflow-tooltip width="130"/>
<el-table-column prop="parent_id" label="父单据数据id" show-overflow-tooltip width="120"/>
<el-table-column width="130" show-overflow-tooltip v-for="(item, index) in dtlCols" :key="item.value"
:label="item.lable">
<template slot-scope="scope">{{ scope.row.form_data[item.value] }}</template>
</el-table-column>
<el-table-column prop="create_time" label="创建时间"/>
<el-table-column prop="proc_inst_id" label="对应流程实例id" show-overflow-tooltip width="120"/>
</el-table>
</el-card>
</el-dialog>
</template>
<script>
import CRUD, {crud} from '@crud/crud'
import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
import crudFormData, {inDecision} from "./formData";
import pick from "./pick";
import measureunit from '@/views/wms/base_manage/measure/measureunit'
export default {
name: 'EditDialog',
components: {},
mixins: [crud()],
dicts: ['IO_BILL_STATUS', 'VEHICLE_OVER_TYPE', 'PCS_SAL_TYPE'],
statusEnums: ['IOBILL_TYPE_OUT', 'FORM_STATUS'],
tableEnums: ['st_ivt_bsrealstorattr#stor_name#stor_code'],
props: {
dialogShow: {
type: Boolean,
default: false
},
openParam: {
type: Array,
default: () => {
return []
}
},
storId: {
type: String,
default: null
}
},
data() {
return {
dialogVisible: false,
divflag: false,
cols: [],
dtlCols: [],
unitDict: [],
disCols: [],
disFormData: {},
tableDtl: [],
tabledis: [],
vehicledis: [],
vehicleform: {},
un_assign_qty: 0,
currentDtl: null,
PickTaskType: [
{"label": "拣选回库", "value": "13"}, {"label": "拣选出库", "value": "23"}
],
outboundList: [
{"label": "一楼出库口", "value": "1101"}, {"label": "二楼出库口", "value": "2114"}
],
form: {},
rules: {}
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
}
}
},
methods: {
setForm(row) {
this.dialogVisible = true
this.form = row
let dtl_form_type = this.form.children[0].form_type;
formstruc.getHeader(this.form.form_type).then(res => {
this.cols = res
})
formstruc.getHeader(dtl_form_type).then(res => {
this.dtlCols = res
})
formstruc.getHeader("Picking_Task").then(res => {
this.disCols = res
res.forEach(a => {
this.$set(this.disFormData, a.value, '')
})
}),
measureunit.getSelect().then(res => {
this.unitDict = res.content
})
this.queryTableDtl(row.id)
},
addPickTask() {
let dis_assign_qty = 0;
this.tabledis.forEach(a => {
dis_assign_qty = dis_assign_qty + a.qty
})
if (!this.currentDtl) {
this.crud.notify('请先选择一条分配明细!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
let dtl = {};
dtl.material_id = this.currentDtl.material_id
dtl.material_name = this.currentDtl.material_name
dtl.material_spec = this.currentDtl.material_spec
dtl.material_pcsn = this.currentDtl.material_pcsn
dtl.qty = this.currentDtl.assign_qty - dis_assign_qty
dtl.pcsn = this.currentDtl.pcsn
dtl.unit_id = this.currentDtl.unit_id
dtl.form_type = 'Picking_Task'
dtl.source_form_type = this.currentDtl.source_form_type
dtl.source_form_id = this.currentDtl.id
dtl.source_form_date = this.currentDtl.create_time
dtl.parent_id = this.currentDtl.id
dtl.form_data = JSON.parse(JSON.stringify(this.disFormData))
dtl.form_data.pick_vehicle = this.currentDtl.vehicle_code
dtl.form_data.point_code = this.form.form_data.point_code
this.tabledis.push(dtl)
},
subRow(index) {
this.tabledis.splice(this.tabledis.indexOf(index), 1)
},
handleDtlCurrentChange(current) {
if (current !== null) {
this.tabledis = []
this.currentDtl = current
this.queryTableDis()
} else {
this.tabledis = []
this.currentDtl = {}
}
},
changeTaskType(index, taskType) {
if (taskType == "13") {
let dis_assign_qty = 0;
this.tabledis.forEach(a => {
dis_assign_qty = dis_assign_qty + a.qty
})
this.tabledis[index].qty = this.currentDtl.qty - dis_assign_qty
}
},
updateDtl() {
console.log(this.tableDtl)
pick.updateDtl(this.tableDtl).then(res => {
this.dialogVisible = false
this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
this.$emit('AddChanged')
},
queryTableDtl(id) {
crudFormData.getSonFormData(id).then(res => {
this.tableDtl = res
})
},
queryTableDis() {
if (this.currentDtl !== null) {
crudFormData.getSonFormData(this.currentDtl.id).then(res => {
this.tabledis = res
})
}
},
closeDialog() {
this.$emit('AddChanged')
this.dialogVisible = false
this.tabledis = []
this.tableDtl = []
},
savePickMst() {
pick.updateStatus({"status": "13", "id": this.form.id})
this.closeDialog()
},
close() {
this.form.tableMater = []
this.form.dtl_row = null
this.form.bucketunique = null
this.sectProp = null
this.$emit('update:dialogShow', false)
this.$emit('AddChanged')
this.crud.refresh()
this.$refs['form2'].resetFields()
}
}
}
</script>
<style>
.crud-opts2 {
padding: 0;
display: -webkit-flex;
display: flex;
align-items: center;
}
.crud-opts2 .el-dialog__title2 {
line-height: 24px;
font-size: 20px;
color: #303133;
}
.crud-opts2 .role-span {
padding: 10px 0px 10px 0px;
}
.crud-opts2 .crud-opts-form {
padding: 10px 0px 0px 20px;
}
.crud-opts-right2 {
padding-left: 89%;
}
.input-with-select {
background-color: #fff;
}
</style>

View File

@@ -382,6 +382,10 @@ export default {
},
savePickTask() {
pick.savePickTask(this.tabledis).then(res => {
this.$emit('AddChanged')
this.dialogVisible = false
this.tabledis = []
this.tableDtl = []
this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
},
@@ -399,6 +403,7 @@ export default {
}
},
closeDialog(){
this.$emit('AddChanged')
this.dialogVisible = false
this.tabledis = []
this.tableDtl = []

View File

@@ -18,6 +18,7 @@
size="mini"
placeholder="请选择/搜索"
class="filter-item"
disabled
@change="crud.toQuery()"
>
<el-option
@@ -31,38 +32,38 @@
<template v-for="(col,index) in cols" v-if="hideShowDialog">
<el-form-item label="col.lable">
<label slot="label">{{ col.lable }}:</label>
<el-input v-model="query.form_query[col.value]" :value="col.value" clearable style="width: 210px" />
<el-input v-model="query.form_query[col.value]" :value="col.value" clearable style="width: 210px"/>
</el-form-item>
</template>
<rrOperation :crud="crud" />
<rrOperation :crud="crud"/>
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
size="mini"
type="success"
icon="el-icon-s-operation"
@click="ToExpandall"
>
全部展开
</el-button>
<el-button
slot="right"
class="filter-item"
type="warning"
icon="el-icon-upload2"
size="mini"
>
导入
</el-button>
<!-- <el-button-->
<!-- slot="right"-->
<!-- class="filter-item"-->
<!-- size="mini"-->
<!-- type="success"-->
<!-- icon="el-icon-s-operation"-->
<!-- @click="ToExpandall"-->
<!-- >-->
<!-- 全部展开-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- slot="right"-->
<!-- class="filter-item"-->
<!-- type="warning"-->
<!-- icon="el-icon-upload2"-->
<!-- size="mini"-->
<!-- >-->
<!-- 导入-->
<!-- </el-button>-->
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
icon="el-icon-notebook-2"
size="mini"
:disabled="dis_flag"
@click="disOpen"
@@ -72,21 +73,21 @@
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
type="warning"
icon="el-icon-thumb"
size="mini"
:disabled="task_flag"
@click="taskOpen"
>
作业下发
</el-button>
<el-button
slot="right"
class="filter-item"
icon="el-icon-view"
size="mini"
@click="hideShow"
/>
<!-- <el-button-->
<!-- slot="right"-->
<!-- class="filter-item"-->
<!-- icon="el-icon-view"-->
<!-- size="mini"-->
<!-- @click="hideShow"-->
<!-- />-->
</crudOperation>
<!--表格渲染-->
@@ -96,17 +97,17 @@
@select="handleSelectionChange"
:data="crud.data"
>
<el-table-column type="selection" width="55" />
<el-table-column type="selection" width="55"/>
<el-table-column prop="code" label="单据编码" show-overflow-tooltip width="120">
<template slot-scope="scope">
<el-link v-if="scope.row.hasChildren" type="warning" @click="toView(scope.row)">{{
scope.row.code
}}
scope.row.code
}}
</el-link>
<span v-else>{{ scope.row.code }}</span>
</template>
</el-table-column>
<el-table-column prop="form_type" label="单据类型" show-overflow-tooltip width="120" />
<el-table-column prop="form_type" label="单据类型" show-overflow-tooltip width="120"/>
<el-table-column prop="status" label="单据状态" show-overflow-tooltip width="120">
<template slot-scope="scope">
<template v-for="item in statusEnum.FORM_STATUS">
@@ -114,16 +115,16 @@
</template>
</template>
</el-table-column>
<el-table-column prop="vehicle_code" label="载具编号" show-overflow-tooltip width="120" />
<!-- <el-table-column prop="qty" label="物料数量" show-overflow-tooltip />-->
<!-- <el-table-column prop="material_id" label="物料id" show-overflow-tooltip width="120" />-->
<!-- <el-table-column prop="material_name" label="物料名称" show-overflow-tooltip width="120" />-->
<!-- <el-table-column prop="material_spec" label="物料规格" show-overflow-tooltip width="120" />-->
<!-- <el-table-column prop="pcsn" label="批次" show-overflow-tooltip width="120" />-->
<!-- <el-table-column prop="unit_id" label="单位" show-overflow-tooltip width="120" />-->
<el-table-column prop="biz_code" label="业务单据编码" show-overflow-tooltip width="120" />
<el-table-column prop="biz_date" label="业务单据时间" show-overflow-tooltip width="130" />
<el-table-column prop="parent_id" label="父单据数据id" show-overflow-tooltip width="120" />
<el-table-column prop="vehicle_code" label="载具编号" show-overflow-tooltip width="120"/>
<!-- <el-table-column prop="qty" label="物料数量" show-overflow-tooltip />-->
<!-- <el-table-column prop="material_id" label="物料id" show-overflow-tooltip width="120" />-->
<!-- <el-table-column prop="material_name" label="物料名称" show-overflow-tooltip width="120" />-->
<!-- <el-table-column prop="material_spec" label="物料规格" show-overflow-tooltip width="120" />-->
<!-- <el-table-column prop="pcsn" label="批次" show-overflow-tooltip width="120" />-->
<!-- <el-table-column prop="unit_id" label="单位" show-overflow-tooltip width="120" />-->
<el-table-column prop="biz_code" label="业务单据编码" show-overflow-tooltip width="120"/>
<el-table-column prop="biz_date" label="业务单据时间" show-overflow-tooltip width="130"/>
<el-table-column prop="parent_id" label="父单据数据id" show-overflow-tooltip width="120"/>
<el-table-column
v-for="(item, index) in cols"
:key="item.value"
@@ -133,44 +134,54 @@
>
<template slot-scope="scope">{{ scope.row.form_data[item.value] }}</template>
</el-table-column>
<el-table-column prop="create_time" label="创建时间" />
<el-table-column prop="proc_inst_id" label="对应流程实例id" show-overflow-tooltip width="120" />
<el-table-column prop="create_time" label="创建时间" width="150"/>
<el-table-column prop="proc_inst_id" label="对应流程实例" show-overflow-tooltip width="120"/>
<el-table-column
v-permission="['admin','Classstandard:edit','Classstandard:del']"
label="操作"
width="120px"
align="center"
fixed="right"
>
<template slot-scope="scope">
<!-- <udOperation-->
<!-- style="display: inline"-->
<!-- :data="scope.row"-->
<!-- :permission="permission"-->
<!-- :disabled-edit="scope.row.is_modify === '0'"-->
<!-- :disabled-dle="scope.row.is_modify === '0'"-->
<!-- msg="确定删除吗,如果存在下级节点则一并删除,此操作不能撤销!"-->
<!-- />-->
<el-button icon="el-icon-edit" type="text" class="filter-item" size="mini" @click="toUpdate(scope.row)">修改
</el-button>
<udOperation
style="display: inline"
:data="scope.row"
:permission="permission"
:disabled-edit="scope.row.is_modify === '0'"
:disabled-dle="scope.row.is_modify === '0'"
msg="确定删除吗,如果存在下级节点则一并删除,此操作不能撤销!"
:is-visiable-edit="false"
class="filter-item"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
<pagination/>
</div>
<ViewDialog ref="viewDialog" />
<TaskDialog ref="taskDis"/>
<ViewDialog ref="viewDialog"/>
<EditDialog ref="editDialog" @AddChanged="querytable"/>
<TaskDialog ref="taskDis" @AddChanged="querytable"/>
</div>
</template>
<script>
import crudFormData from './formData'
import CRUD, { crud, form, header, presenter } from '@crud/crud'
import CRUD, {crud, form, header, presenter} from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
import ViewDialog from './ViewDialog'
import EditDialog from './EditDialog'
import TaskDialog from './TaskDialog'
import crudPick from './pick'
@@ -198,7 +209,7 @@ const defaultForm = {
export default {
name: 'FormData',
statusEnums: ['FORM_STATUS'],
components: { pagination, crudOperation, rrOperation, udOperation, ViewDialog, TaskDialog },
components: {pagination, crudOperation, rrOperation, udOperation, ViewDialog, TaskDialog, EditDialog},
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
@@ -206,13 +217,13 @@ export default {
url: 'api/pmFormData',
idField: 'id',
sort: 'id,desc',
crudMethod: { ...crudFormData },
crudMethod: {...crudFormData},
optShow: {
add: true,
reset: true
},
query: {
form_type:'Picking',
form_type: 'Picking',
form_data: {}
}
})
@@ -274,6 +285,11 @@ export default {
}
},
toUpdate(row) {
if (row !== null) {
this.$refs.editDialog.setForm(row)
}
},
handleSelectionChange(val, row) {
if (val.length === 1) {
this.task_flag = false
@@ -299,7 +315,11 @@ export default {
})
}
},
querytable() {
this.crud.toQuery()
this.dis_flag = true
this.task_flag = true
}
}
}
</script>

View File

@@ -46,4 +46,12 @@ export function taskopen(data) {
})
}
export default {add, edit, del, savePickTask, updateStatus, taskopen}
export function updateDtl(data) {
return request({
url: '/api/picking/updateDtl',
method: 'post',
data
})
}
export default {add, edit, del, savePickTask, updateStatus, taskopen, updateDtl}