4 changed files with 280 additions and 17 deletions
@ -0,0 +1,265 @@ |
|||
<template> |
|||
<el-dialog |
|||
:title="crud.status.title" |
|||
append-to-body |
|||
fullscreen |
|||
:before-close="crud.cancelCU" |
|||
:visible.sync="crud.status.cu > 0 || crud.status.view > 0" |
|||
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="bill_code"> |
|||
<label slot="label">载具编码:</label> |
|||
<el-input v-model="form.storagevehicle_code" clearable style="width: 210px" /> |
|||
</el-form-item> |
|||
<el-form-item label="仓库" prop="stor_id"> |
|||
<label slot="label">仓 库:</label> |
|||
<el-select |
|||
v-model="form.stor_id" |
|||
clearable |
|||
placeholder="仓库" |
|||
class="filter-item" |
|||
style="width: 210px" |
|||
:disabled="crud.status.view > 0" |
|||
> |
|||
<el-option |
|||
v-for="item in storlist" |
|||
:key="item.stor_id" |
|||
:label="item.stor_name" |
|||
:value="item.stor_id" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="源单据号" prop="ext_code"> |
|||
<label slot="label">源单据号:</label> |
|||
<el-input v-model="form.ext_code" clearable style="width: 210px" /> |
|||
</el-form-item> |
|||
<el-form-item label="源单类型" prop="ext_type"> |
|||
<el-select |
|||
v-model="form.ext_type" |
|||
clearable |
|||
placeholder="源单类型" |
|||
style="width: 210px" |
|||
class="filter-item" |
|||
:disabled="crud.status.view > 0" |
|||
> |
|||
<el-option |
|||
v-for="item in dict.ST_INV_IN_TYPE" |
|||
:key="item.value" |
|||
:disabled="item.value === '0003'" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="备注" prop="remark"> |
|||
<label slot="label">备 注:</label> |
|||
<el-input v-model="form.remark" style="width: 380px;" rows="2" type="textarea" :disabled="crud.status.view > 0" /> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'--> |
|||
<div class="crud-opts2" style="margin-bottom: 5px;"> |
|||
<span class="crud-opts-right2"> |
|||
<!--左侧插槽--> |
|||
<slot name="left" /> |
|||
<el-button |
|||
slot="left" |
|||
class="filter-item" |
|||
type="primary" |
|||
icon="el-icon-plus" |
|||
size="mini" |
|||
@click="insertEvent()" |
|||
> |
|||
添加物料 |
|||
</el-button> |
|||
</span> |
|||
|
|||
</div> |
|||
<!--表格渲染--> |
|||
<el-table |
|||
ref="table" |
|||
:data="form.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 width="180" prop="material_code" label="物料编码" /> |
|||
<el-table-column show-overflow-tooltip width="260" prop="material_name" label="物料名称" /> |
|||
<el-table-column show-overflow-tooltip width="260" prop="material_spec" label="物料规格" /> |
|||
<el-table-column show-overflow-tooltip width="180" prop="pcsn" label="批次号" > |
|||
<template slot-scope="scope"> |
|||
<el-input v-model="scope.row.pcsn" style="width: 150px;" ></el-input> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column show-overflow-tooltip width="180" prop="qty" label="数量" > |
|||
<template slot-scope="scope"> |
|||
<el-input-number v-model="scope.row.qty" style="width: 150px;" ></el-input-number> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column show-overflow-tooltip width="150" prop="qty_unit_name" label="计量单位名称" /> |
|||
<el-table-column v-if="crud.status.cu > 0" align="center" label="操作" width="150" fixed="right"> |
|||
<template scope="scope"> |
|||
<el-button |
|||
type="danger" |
|||
class="filter-item" |
|||
size="mini" |
|||
icon="el-icon-delete" |
|||
@click.native.prevent="deleteRow(scope.$index, form.tableData)" |
|||
/> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<MaterialDialog :dialog-show.sync="dtlShow" :is-Single.sync="isSingle" @materialChoose="materialChoose" /> |
|||
|
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import CRUD, { crud, form } from '@crud/crud' |
|||
import MaterialDialog from '@/views/wms/basedata/material/MaterialDialog' |
|||
import crudBsrealstorattr from '@/views/wms/basedata/bsrealstorattr/bsrealstorattr' |
|||
|
|||
const defaultForm = { |
|||
ext_code: '', |
|||
storagevehicle_code: '', |
|||
stor_id: '', |
|||
status: '10', |
|||
ext_type: '0', |
|||
remark: '', |
|||
biz_date: new Date(), |
|||
create_mode: '', |
|||
tableData: [] |
|||
} |
|||
|
|||
export default { |
|||
name: 'AddDialog', |
|||
components: { MaterialDialog }, |
|||
mixins: [crud(), form(defaultForm)], |
|||
dicts: ['io_bill_status', 'ST_QUALITY_SCODE', 'ST_INV_IN_TYPE'], |
|||
props: { |
|||
dialogShow: { |
|||
type: Boolean, |
|||
default: false |
|||
}, |
|||
bussConfig: { |
|||
type: Object |
|||
}, |
|||
openParam: { |
|||
type: Object |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
dialogVisible: false, |
|||
dtlShow: false, |
|||
isSingle: false, |
|||
bill_btn: false, |
|||
mater_btn: false, |
|||
storlist: [], |
|||
billtypelist: [], |
|||
rules: { |
|||
storagevehicle_code: [ |
|||
{ required: true, message: '载具不能为空', trigger: 'blur' } |
|||
], |
|||
bill_type: [ |
|||
{ required: true, message: '业务类型不能为空', trigger: 'blur' } |
|||
], |
|||
biz_date: [ |
|||
{ required: true, message: '业务日期不能为空', trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
watch: { |
|||
dialogShow: { |
|||
handler(newValue, oldValue) { |
|||
this.dialogVisible = newValue |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
open() { |
|||
crudBsrealstorattr.getStor().then(res => { |
|||
this.storlist = res |
|||
}) |
|||
}, |
|||
close() { |
|||
this.$emit('AddChanged') |
|||
}, |
|||
[CRUD.HOOK.beforeSubmit]() { |
|||
// 提交前校验 |
|||
if (this.form.tableData.length === 0) { |
|||
this.crud.notify('请至少选择一条明细', CRUD.NOTIFICATION_TYPE.INFO) |
|||
return false |
|||
} |
|||
}, |
|||
|
|||
fun(val) { |
|||
return Number(val).toFixed(3) |
|||
}, |
|||
async insertdtl() { |
|||
if (this.form.bill_type === '') { |
|||
this.crud.notify('请选择业务类型!', CRUD.NOTIFICATION_TYPE.INFO) |
|||
return |
|||
} |
|||
this.form.tableData.push({ quality_scode: '01', is_active: '1', ivt_level: '01', qty: '0' }) |
|||
this.form.detail_count = this.form.tableData.length |
|||
}, |
|||
deleteRow(index, rows) { |
|||
const pcsn = rows[index].pcsn |
|||
let len = rows.length |
|||
while (len--) { |
|||
const obj = rows[len] |
|||
if (pcsn === obj.pcsn) { |
|||
const index = rows.indexOf(obj) |
|||
if (index > -1) { // 移除找到的指定元素 |
|||
this.form.total_qty = parseFloat(this.form.total_qty) - parseFloat(rows[index].qty) |
|||
rows.splice(index, 1) |
|||
this.form.detail_count = this.form.tableData.length |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
materialChoose(row) { |
|||
this.form.tableData = row |
|||
// this.form.tableData.material_name = row.material_name |
|||
// this.form.material_id = row.material_id |
|||
// this.form.material_code = row.material_code |
|||
// this.form.material_spec = row.material_spec |
|||
}, |
|||
async insertEvent(row) { |
|||
this.dtlShow = true |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
.crud-opts2 { |
|||
padding: 4px 0; |
|||
display: -webkit-flex; |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
|
|||
.crud-opts2 .crud-opts-right2 { |
|||
margin-left: auto; |
|||
} |
|||
</style> |
Loading…
Reference in new issue