rev:组盘

This commit is contained in:
zhangzq
2024-05-15 16:10:57 +08:00
parent 36fb8ca2da
commit c00e046612
44 changed files with 666 additions and 1065 deletions

View File

@@ -10,8 +10,8 @@ export function add(data) {
export function del(ids) {
return request({
url: 'api/bmFormStruc/delete',
method: 'get',
url: 'api/bmFormStruc',
method: 'delete',
data: ids
})
}

View File

@@ -82,7 +82,7 @@
v-for="item in form_types"
:key="item.id"
:label="item.label"
:value="item.value"
:value="item.id"
/>
</el-select>
</el-form-item>
@@ -139,7 +139,7 @@
</el-form-item>
</el-col>
</el-row>
<el-form-item label="自定义字段2" prop="form_param">
<el-form-item label="自定义字段JSON" prop="form_param">
<el-input type="textarea" v-model="form.form_param" :formatter="jsonFormat" style="width: 430px;"/>
</el-form-item>
</el-form>
@@ -265,9 +265,12 @@ export default {
}
},
created() {
this.getFormSelect() // 获取分类
// this.getFormSelect() // 获取分类
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
this.getFormSelect()
},
[CRUD.HOOK.beforeToEdit]() {
this.form.form_param = JSON.stringify(this.form.form_param)
return true

View File

@@ -169,6 +169,7 @@ export default {
}
const nodeModel = this.lf.getNodeModelById(row.activity_id);
nodeModel.setStyle("stroke", "red")
nodeModel.setStyle("stroke-width", "2.5")
},
closeDialog() {
this.$data.dialogVisible = false

View File

@@ -100,7 +100,7 @@
</el-form-item>
</el-col>
</el-row>
<el-form-item label="自定义字段2" prop="class_desc">
<el-form-item label="自定义字段JSON" prop="class_desc">
<el-input type="textarea" v-model="form.form_param" :formatter="jsonFormat" style="width: 370px;" />
</el-form-item>
</el-form>
@@ -110,6 +110,9 @@
</div>
</el-dialog>
<!--表格渲染-->
<div class="crud-opts2">
<span class="role-span">组盘表配置信息</span>
</div>
<el-table
ref="table"
v-loading="crud.loading"
@@ -137,24 +140,24 @@
<el-table-column prop="qty" label="物料数量映射" />
<el-table-column prop="pcsn" label="物料批次映射" />
<el-table-column prop="form_param" :show-overflow-tooltip="true" :formatter="jsonFormat" label="自定义字段映射" />
<el-table-column
label="操作"
width="250px"
align="center"
>
<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 slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="crud.toAddAndData(addSibling(scope.row))">新增同级</el-button>
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus" @click="crud.toAddAndData(addChildren(scope.row))">新增子级</el-button>
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- label="操作"-->
<!-- width="250px"-->
<!-- align="center"-->
<!-- >-->
<!-- <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 slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="crud.toAddAndData(addSibling(scope.row))">新增同级</el-button>-->
<!-- <el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus" @click="crud.toAddAndData(addChildren(scope.row))">新增子级</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<!--分页组件-->
<pagination />

View File

@@ -45,6 +45,12 @@
/>
</el-select>
</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 v-model="query.form_query[col.value]" :value="col.value" clearable style="width: 210px" />
</el-form-item>
</template>
<rrOperation :crud="crud"/>
</el-form>
@@ -67,22 +73,21 @@
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;"
@selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55"/>
<el-table-column prop="storagevehicle_code" label="托盘号">
<el-table-column prop="code" label="组盘编号">
<template slot-scope="scope">
<el-link type="warning" @click="vechile(scope.row.vehicle_code)">{{ scope.row.vehicle_code }}</el-link>
<el-link type="warning" @click="vechile(scope.row)">{{ scope.row.code }}</el-link>
</template>
</el-table-column>
<el-table-column prop="parent_vehicle_code" label="父托盘" show-overflow-tooltip/>
<el-table-column prop="material_code" label="物料编码" show-overflow-tooltip/>
<el-table-column prop="material_specs" label="物料规格" show-overflow-tooltip/>
<el-table-column prop="qty" label="总数量"/>
<el-table-column prop="qty_unit_name" label="计量单位"/>
<el-table-column prop="source_form_type" label="源单号" show-overflow-tooltip/>
<el-table-column prop="source_form_id" label="源单id" show-overflow-tooltip/>
<el-table-column prop="status" label="状态">
<template slot-scope="scope">
{{ dict.label.BOX_STATUS[scope.row.status] }}
</template>
</el-table-column>
<el-table-column prop="update_time" label="组盘时间"/>
<el-table-column prop="create_time" label="组盘时间"/>
<el-table-column prop="create_name" label="组盘人"/>
<el-table-column v-for="(item, index) in cols" :key="item.value" :label="item.lable" >
<template slot-scope="scope">{{scope.row.form_data[item.value]}}</template>
</el-table-column>
@@ -96,6 +101,7 @@
<pagination/>
</div>
<AddDialog @AddChanged="querytable" />
<ViewDialog ref="viewRef" :form="form" />
</div>
</template>
@@ -109,6 +115,7 @@ import pagination from '@crud/Pagination'
import AddDialog from '@/views/wms/md_manage/group_dick/AddDialog'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
import ViewDialog from '@/views/wms/md_manage/group_dick/viewDialog'
const defaultForm = {
@@ -125,11 +132,11 @@ const defaultForm = {
export default {
name: 'DeliveryOrder',
dicts: ['PCS_DELIVER_TYPE', 'BOX_STATUS'],
components: {AddDialog, formstruc,pagination, crudOperation, rrOperation, udOperation},
components: {ViewDialog, AddDialog, formstruc,pagination, crudOperation, rrOperation, udOperation},
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '发货单', url: '/api/mdGruopDick', idField: 'bucket_record_id', sort: 'storagevehicle_code,desc',
title: '组盘表', url: '/api/mdGruopDick', idField: 'id', sort: 'code,desc',
optShow: {
add: true,
edit: false,
@@ -144,6 +151,7 @@ export default {
return {
cols:[],
GroupShow: false,
viewShow: false,
statusEdit:false,
vachileView:false,
editForm:{},
@@ -158,14 +166,20 @@ export default {
]
}
},
created() {
this.$set(this.query, 'form_query', {})
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
formstruc.getHeader('GROUP_DICK').then(res => {
formstruc.getHeader('md_gruop_dick').then(res => {
this.cols = res
})
},
querytable(){
this.crud.toQuery()
},
vechile(row){
this.$refs.viewRef.setForm(row)
}
}
}

View File

@@ -1,79 +0,0 @@
<template>
<el-dialog
title="托盘明细"
append-to-body
:visible.sync="dialogVisible"
destroy-on-close
width="80%"
>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
>
<el-table-column type="index" fixed width="80" label="序号" />
<el-table-column prop="storagevehicle_code" fixed width="120" label="托盘号" />
<el-table-column prop="sale_code" width="120" label="销售单号" />
<el-table-column prop="seq_no" label="销售单明细" width="100" />
<el-table-column prop="material_spec" label="物料规格" width="150" />
<el-table-column prop="storage_qty" label="数量" width="150" />
<el-table-column prop="qty_unit_name" label="单位" width="150" />
<el-table-column prop="create_time" label="组盘时间" width="150" />
<el-table-column prop="status" label="状态">
<template slot-scope="scope">
{{ dict.label.BOX_STATUS[scope.row.status] }}
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
</template>
<script>
import bucketrecord from '@/views/wms/md_manage/group_dick/groupdick'
import CRUD, { header, presenter } from '@crud/crud'
import pagination from '@crud/Pagination'
export default {
name: 'vechileViewDialog',
components: {pagination },
cruds() {
return CRUD({ title: '组盘明细', url: '/api/mdPbBucketrecord/vechile_code', crudMethod: { ...bucketrecord }, optShow: {}})
},
mixins: [presenter(), header()],
dicts: ['BOX_STATUS'],
props: {
},
data() {
return {
dialogVisible: false,
tableRadio: null,
checkrow: null,
rows: [],
}
},
methods: {
openQ(query) {
this.crud.query.storagevehicle_code = query
this.dialogVisible = true
this.crud.toQuery()
},
submit() {
this.dialogVisible = false
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
::v-deep .el-dialog__body {
padding-top: 0px;
}
</style>

View File

@@ -0,0 +1,224 @@
<template>
<el-dialog
:title="crud.status.title"
append-to-body
fullscreen
:before-close="crud.cancelCU"
:visible.sync="dialogVisible"
width="1200px"
@open="open"
@close="close"
>
<el-row v-show="crud.status.cu > 0" :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" :loading="crud.cu === 2" type="primary" @click="crud.submitCU">保存</el-button>
<el-button icon="el-icon-close" size="mini" type="info" @click="crud.cancelCU">关闭</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" :rules="rules" size="mini" label-width="85px" label-suffix=":">
<el-form-item label="主载具编码" prop="parent_vehicle_code">
<label slot="label">主载具编码:</label>
<el-input v-model="form.parent_vehicle_code" clearable style="width: 210px" />
</el-form-item>
<el-form-item label="单据状态" prop="bill_status">
<el-select
v-model="form.bill_status"
clearable
style="width: 210px"
placeholder="单据状态"
class="filter-item"
disabled
>
<el-option
v-for="item in dict.IO_BILL_STATUS"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="子托盘总数" prop="child_qty">
<label slot="label">子托盘总数:</label>
<el-input-number
v-model="form.child_qty"
:controls="false"
:precision="0"
:min="0"
disabled
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 v-model="form.form_data[col.value]" :value="col.value" clearable style="width: 210px" />
</el-form-item>
</template>
<el-form-item label="备注" prop="remark">
<label slot="label">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
<el-input v-model="form.remark" style="width: 380px;" rows="2" type="textarea" :disabled="crud.status.view > 0" />
</el-form-item>
</el-form>
<el-table
ref="table"
:data="tableData"
style="width: 100%;"
border
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
>
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column show-overflow-tooltip prop="vehicle_code" label="载具编号" width="120" align="center">
<template scope="scope">
<el-input v-model="tableData[scope.$index].vehicle_code" class="input-with-select" />
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="has_child" label="是否含有子载具" width="120" align="center">
<template scope="scope">
<el-input v-model="tableData[scope.$index].has_child" class="input-with-select" />
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="parent_vehicle_code" label="父载具编码" width="120" align="center">
<template scope="scope">
<el-input v-model="tableData[scope.$index].parent_vehicle_code" class="input-with-select" />
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" width="120" align="center">
<template scope="scope">
<el-input v-model="tableData[scope.$index].material_name" disabled class="input-with-select" />
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="material_spec" label="物料规格" width="120" align="center">
<template scope="scope">
<el-input v-model="tableData[scope.$index].material_spec" disabled class="input-with-select" />
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="pcsn" label="物料批次" width="120" align="center">
<template scope="scope"><el-input v-model="tableData[scope.$index].pcsn" class="input-with-select" /></template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="qty" label="数量" width="120" align="center">
<template scope="scope"><el-input v-model="tableData[scope.$index].qty" class="input-with-select" /></template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="qty_unit_name" label="单位" width="120" align="center">
<template scope="scope"><el-input v-model="tableData[scope.$index].qty_unit_name" class="input-with-select" /></template>
</el-table-column>
<el-table-column v-for="(item, index) in dtlCols" :key="item.value" :label="item.lable" >
<template scope="scope">
<el-input v-model="tableData[scope.$index].form_data[item.value]" class="input-with-select" />
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="remark" label="备注" width="120" align="center">
<template scope="scope"><el-input v-model="tableData[scope.$index].remark" class="input-with-select" /></template>
</el-table-column>
<el-table-column v-if="crud.status.cu > 0" align="center" label="操作" width="170" fixed="right">
<template scope="scope">
<el-button
type="danger"
class="filter-item"
size="mini"
icon="el-icon-delete"
@click.native.prevent="deleteRow(scope.$index, tableData)"
/>
</template>
</el-table-column>
</el-table>
</el-dialog>
</template>
<script>
import CRUD, { crud, form } from '@crud/crud'
import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
import vehicleMater from '@/views/wms/md_manage/vehicleMater/vehicleMater'
const defaultForm = {
id: '',
parent_vehicle_code: '',
child_qty: '0',
remark: '',
update_name: '',
update_time: '',
status: '',
tableData: [],
form_data: {}
}
export default {
name: 'viewDialog',
components: { formstruc, vehicleMater },
mixins: [crud(), form(defaultForm)],
dicts: ['IO_BILL_STATUS', 'ST_INV_CP_IN_TYPE', 'ST_QUALITY_SCODE', 'bill_type', 'product_area', 'PCS_SAL_TYPE'],
props: {
dialogShow: {
type: Boolean,
default: false
},
openParam: {
type: Object
}
},
data() {
return {
cols:[],
dtlCols:[],
tableData:[],
dialogVisible: false,
rules: {
}
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
}
}
},
methods: {
setForm(row){
this.form=row
this.dialogVisible = true
vehicleMater.
},
open() {
formstruc.getHeader('md_gruop_dick').then(res => {
this.cols = res
res.forEach(a => {
this.form.form_data[a.value,'']
})
}),
formstruc.getHeader('md_pb_vehicleivt').then(res => {
this.dtlCols = res
})
},
close() {
this.$emit('AddChanged')
},
formatBaseType(row) {
return this.dict.label.PCS_SAL_TYPE[row.base_bill_type]
}
}
}
</script>
<style>
.crud-opts2 {
padding: 4px 0;
display: -webkit-flex;
display: flex;
align-items: center;
}
.crud-opts2 .crud-opts-right2 {
margin-left: auto;
}
</style>

View File

@@ -209,15 +209,18 @@ export default {
this.crud.notify('同步类型不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
return false
}
const isInvalidRow = this.tableData.some(row => !row.mapping_field)
if (isInvalidRow) {
this.crud.notify('外部字段名称不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
return false
}
const isdtlRow = this.tableDtlData.some(row => !row.mapping_field)
if (isdtlRow) {
this.crud.notify('外部字段名称不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
return false
if (this.form.has_child){
const isdtlRow = this.tableDtlData.some(row => !row.mapping_field)
if (isdtlRow) {
this.crud.notify('外部字段名称不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
return false
}
}
const requestData = {
'mst': this.form,