11 changed files with 657 additions and 23 deletions
@ -0,0 +1,175 @@ |
|||
<!--suppress ALL --> |
|||
<template> |
|||
<el-dialog |
|||
append-to-body |
|||
title="单据详情" |
|||
:visible.sync="dialogVisible" |
|||
fullscreen |
|||
@close="close" |
|||
@open="open" |
|||
> |
|||
<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="系统生成" style="width: 210px"/> |
|||
</el-form-item> |
|||
<el-form-item label="单据类型" prop="form_type"> |
|||
<el-input v-model="form.form_type" disabled style="width: 210px"/> |
|||
</el-form-item> |
|||
<el-form-item label="单据日期" prop="source_form_date"> |
|||
<el-input v-model="form.source_form_date" disabled style="width: 210px"/> |
|||
</el-form-item> |
|||
<el-form-item label="物料数量" prop="qty"> |
|||
<el-input v-model="form.qty" disabled style="width: 210px"/> |
|||
</el-form-item> |
|||
<el-form-item label="单据状态" prop="status"> |
|||
<el-select |
|||
v-model="form.status" |
|||
disabled |
|||
size="mini" |
|||
placeholder="单据状态" |
|||
class="filter-item" |
|||
> |
|||
<el-option |
|||
v-for="item in dict.io_bill_status" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="创建时间" prop="create_time"> |
|||
<el-input v-model="form.create_time" disabled clearable style="width: 210px"/> |
|||
</el-form-item> |
|||
</el-form> |
|||
<div class="crud-opts2"> |
|||
<span class="role-span2">单据明细</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" |
|||
:header-cell-style="{background:'#f5f7fa',color:'#606266'}" |
|||
> |
|||
<el-table-column prop="code" label="单据编码" min-width="140" /> |
|||
<el-table-column prop="is_merge" label="是否已合单" :formatter="merge_Format" show-overflow-tooltip /> |
|||
<el-table-column show-overflow-tooltip prop="stor_name" min-width="120" label="仓库" /> |
|||
<el-table-column prop="material_code" label="物料编码" show-overflow-tooltip :min-width="flexWidth('material_code',crud.data,'物料编码')" /> |
|||
<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="unit_name" label="单位" show-overflow-tooltip width="120" /> |
|||
<el-table-column prop="source_form_date" label="单据日期" show-overflow-tooltip width="120" /> |
|||
<el-table-column prop="status" label="单据状态" show-overflow-tooltip :formatter="status_Format" width="120" /> |
|||
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" /> |
|||
</el-table> |
|||
</el-card> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
|
|||
import {crud} from '@crud/crud' |
|||
import crudFormData, {getSonFormData} from './formData' |
|||
|
|||
export default { |
|||
name: 'ViewDialog', |
|||
mixins: [crud()], |
|||
dicts: ['base_data', 'ST_INV_IN_TYPE', 'io_bill_status', 'IS_OR_NOT'], |
|||
props: { |
|||
dialogShow: { |
|||
type: Boolean, |
|||
default: false |
|||
}, |
|||
rowmst: { |
|||
type: Object |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
dialogVisible: false, |
|||
tableDtl: [], |
|||
form: {}, |
|||
formStatus: [ |
|||
{ |
|||
value: '10', |
|||
label: '生成' |
|||
}, |
|||
{ |
|||
value: '20', |
|||
label: '执行中' |
|||
}, |
|||
{ |
|||
value: '99', |
|||
label: '完成' |
|||
} |
|||
] |
|||
} |
|||
}, |
|||
watch: { |
|||
dialogShow: { |
|||
handler(newValue) { |
|||
this.dialogVisible = newValue |
|||
} |
|||
}, |
|||
rowmst: { |
|||
handler(newValue) { |
|||
this.form = newValue |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
open() { |
|||
|
|||
}, |
|||
setForm(row) { |
|||
this.dialogVisible = true |
|||
this.form = row |
|||
this.queryTableDtl(row.id) |
|||
}, |
|||
close() { |
|||
this.dialogVisible = false |
|||
}, |
|||
status_Format(row, column) { |
|||
return this.dict.label.io_bill_status[row.status] |
|||
}, |
|||
merge_Format(row, column) { |
|||
return this.dict.label.IS_OR_NOT[row.is_merge] |
|||
}, |
|||
queryTableDtl(id) { |
|||
crudFormData.getdtl(id).then(res => { |
|||
this.tableDtl = res |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</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-span2 { |
|||
padding: 0px 0px 20px 0px; |
|||
} |
|||
|
|||
.crud-opts2 { |
|||
padding: 10px 0px 0px 50px; |
|||
} |
|||
|
|||
</style> |
@ -0,0 +1,70 @@ |
|||
import request from '@/utils/request' |
|||
|
|||
export function add(data) { |
|||
return request({ |
|||
url: 'api/pmFormData', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function del(ids) { |
|||
return request({ |
|||
url: 'api/pmFormData', |
|||
method: 'delete', |
|||
data: ids |
|||
}) |
|||
} |
|||
|
|||
export function edit(data) { |
|||
return request({ |
|||
url: 'api/pmFormData', |
|||
method: 'put', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function getFormType() { |
|||
return request({ |
|||
url: 'api/bmFormStruc/getTypes', |
|||
method: 'get' |
|||
}) |
|||
} |
|||
|
|||
export function getParentFormTypes() { |
|||
return request({ |
|||
url: 'api/bmFormStruc/getParentFormTypes', |
|||
method: 'get' |
|||
}) |
|||
} |
|||
|
|||
export function getSonFormData(id) { |
|||
return request({ |
|||
url: 'api/pmFormData/getSonFormData/' + id, |
|||
method: 'get' |
|||
}) |
|||
} |
|||
|
|||
export function getdtl(id) { |
|||
return request({ |
|||
url: 'api/pmFormData/getdtl/' + id, |
|||
method: 'get' |
|||
}) |
|||
} |
|||
|
|||
export function tomerge(data) { |
|||
return request({ |
|||
url: '/api/pmFormData/tomerge', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function dismerge(data) { |
|||
return request({ |
|||
url: '/api/pmFormData/dismerge', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
export default { add, edit, del, getParentFormTypes, getSonFormData, dismerge, tomerge, getdtl } |
@ -0,0 +1,264 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<!--工具栏--> |
|||
<div class="head-container"> |
|||
<div> |
|||
<!-- 搜索 --> |
|||
<el-form |
|||
:inline="true" |
|||
class="demo-form-inline" |
|||
label-position="right" |
|||
label-width="90px" |
|||
label-suffix=":" |
|||
> |
|||
<el-form-item label="单据日期" prop="analyseData"> |
|||
<el-date-picker |
|||
v-model="query.datepick" |
|||
type="daterange" |
|||
value-format="yyyy-MM-dd" |
|||
range-separator="至" |
|||
start-placeholder="开始日期" |
|||
end-placeholder="结束日期" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="单据编码"> |
|||
<el-input |
|||
v-model="query.code" |
|||
clearable |
|||
size="mini" |
|||
placeholder="编码" |
|||
@keyup.enter.native="crud.toQuery" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="物料编码"> |
|||
<el-input |
|||
v-model="query.material_code" |
|||
clearable |
|||
style="width: 250px" |
|||
size="mini" |
|||
placeholder="请输入物料编码" |
|||
prefix-icon="el-icon-search" |
|||
class="filter-item" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="是否合单"> |
|||
<el-select |
|||
v-model="query.is_merge" |
|||
clearable |
|||
size="mini" |
|||
placeholder="请选择" |
|||
class="filter-item" |
|||
@change="crud.toQuery" |
|||
> |
|||
<el-option |
|||
v-for="item in dict.IS_OR_NOT" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="单据状态"> |
|||
<el-select |
|||
v-model="query.status" |
|||
clearable |
|||
size="mini" |
|||
placeholder="单据状态" |
|||
class="filter-item" |
|||
@change="crud.toQuery" |
|||
> |
|||
<el-option |
|||
v-for="item in dict.io_bill_status" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<rrOperation :crud="crud" /> |
|||
</el-form> |
|||
</div> |
|||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'--> |
|||
<crudOperation :permission="permission"> |
|||
<el-button |
|||
slot="right" |
|||
class="filter-item" |
|||
size="mini" |
|||
type="warning" |
|||
icon="el-icon-download" |
|||
> |
|||
导入 |
|||
</el-button> |
|||
<el-button |
|||
slot="right" |
|||
class="filter-item" |
|||
size="mini" |
|||
type="primary" |
|||
icon="el-icon-plus" |
|||
@click="tomerge" |
|||
> |
|||
合并清单 |
|||
</el-button> |
|||
<el-button |
|||
slot="right" |
|||
class="filter-item" |
|||
size="mini" |
|||
type="primary" |
|||
icon="el-icon-minus" |
|||
@click="dismerge" |
|||
> |
|||
取消合并 |
|||
</el-button> |
|||
</crudOperation> |
|||
<!--表格渲染--> |
|||
<el-table |
|||
ref="table" |
|||
v-loading="crud.loading" |
|||
lazy |
|||
:data="crud.data" |
|||
> |
|||
<el-table-column type="selection" width="55" /> |
|||
<el-table-column prop="code" label="单据编码" min-width="140"> |
|||
<template slot-scope="scope"> |
|||
<el-link v-if="scope.row.new_merge_flag === '1'" type="warning" @click="toView(scope.row)">{{ |
|||
scope.row.code |
|||
}} |
|||
</el-link> |
|||
<span v-else>{{ scope.row.code }}</span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="is_merge" label="是否已合单" :formatter="merge_Format" show-overflow-tooltip /> |
|||
<el-table-column show-overflow-tooltip prop="stor_name" min-width="120" label="仓库" /> |
|||
<el-table-column prop="material_code" label="物料编码" show-overflow-tooltip :min-width="flexWidth('material_code',crud.data,'物料编码')" /> |
|||
<el-table-column prop="material_name" label="物料名称" show-overflow-tooltip :min-width="flexWidth('material_name',crud.data,'物料名称')" /> |
|||
<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="unit_name" label="单位" show-overflow-tooltip width="120" /> |
|||
<el-table-column prop="source_form_date" label="清单日期" show-overflow-tooltip width="120" /> |
|||
<el-table-column prop="status" label="单据状态" show-overflow-tooltip :formatter="status_Format" width="120" /> |
|||
<el-table-column prop="merge_codes" label="被合单据" show-overflow-tooltip width="120" /> |
|||
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" /> |
|||
</el-table> |
|||
<!--分页组件--> |
|||
<pagination /> |
|||
</div> |
|||
<ViewDialog ref="viewDialog" /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import crudFormData from './formData' |
|||
import CRUD, { crud, header, presenter } from '@crud/crud' |
|||
import crudOperation from '@crud/CRUD.operation.vue' |
|||
import rrOperation from '@crud/RR.operation.vue' |
|||
import pagination from '@crud/Pagination.vue' |
|||
import ViewDialog from './ViewDialog.vue' |
|||
|
|||
export default { |
|||
name: 'FormData2', |
|||
dicts: ['base_data', 'ST_INV_IN_TYPE', 'io_bill_status', 'IS_OR_NOT'], |
|||
components: { pagination, crudOperation, rrOperation, ViewDialog }, |
|||
mixins: [presenter(), header(), crud()], |
|||
cruds() { |
|||
return CRUD({ |
|||
title: '用料清单管理', |
|||
url: 'api/pmFormData', |
|||
idField: 'id', |
|||
sort: 'id,desc', |
|||
crudMethod: { ...crudFormData }, |
|||
optShow: { |
|||
add: false, |
|||
reset: true |
|||
}, |
|||
query: { |
|||
form_type: '1001' |
|||
} |
|||
}) |
|||
}, |
|||
data() { |
|||
return { |
|||
permission: {}, |
|||
rows : [], |
|||
rules: { |
|||
} |
|||
} |
|||
}, |
|||
created() { |
|||
|
|||
}, |
|||
mounted() { |
|||
}, |
|||
methods: { |
|||
[CRUD.HOOK.beforeRefresh]() { |
|||
if (this.query.datepick) { |
|||
this.query.start_time = this.query.datepick[0] |
|||
if (this.query.datepick.length > 1) { |
|||
this.query.end_time = this.query.datepick[1] |
|||
} |
|||
} else { |
|||
this.query.start_time = '' |
|||
this.query.end_time = '' |
|||
} |
|||
}, |
|||
status_Format(row, column) { |
|||
return this.dict.label.io_bill_status[row.status] |
|||
}, |
|||
merge_Format(row, column) { |
|||
return this.dict.label.IS_OR_NOT[row.is_merge] |
|||
}, |
|||
tomerge() { |
|||
this.rows = this.$refs.table.selection |
|||
if (this.rows.length < 2) { |
|||
this.crud.notify('最少选择2个单据进行合单', CRUD.NOTIFICATION_TYPE.INFO) |
|||
return |
|||
} |
|||
const mater = this.rows[0].material_code |
|||
for (let i = 0; i < this.rows.length; i++) { |
|||
const now = this.rows[i] |
|||
if (now.is_merge === '1') { |
|||
this.crud.notify('不允许提交已合单的单据:' + now.code, CRUD.NOTIFICATION_TYPE.INFO) |
|||
return |
|||
} |
|||
if (now.new_merge_flag === '1') { |
|||
this.crud.notify('不允许提交合新合单的单据:' + now.code, CRUD.NOTIFICATION_TYPE.INFO) |
|||
return |
|||
} |
|||
if (now.material_code !== mater) { |
|||
this.crud.notify('合单的物料必须相同:' + now.material_code, CRUD.NOTIFICATION_TYPE.INFO) |
|||
return |
|||
} |
|||
} |
|||
crudFormData.tomerge(this.rows).then(res => { |
|||
this.crud.notify('合单成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) |
|||
this.crud.toQuery() |
|||
}) |
|||
}, |
|||
dismerge() { |
|||
this.rows = this.$refs.table.selection |
|||
if (this.rows.length < 1) { |
|||
this.crud.notify('请选择需要取消合单的单据', CRUD.NOTIFICATION_TYPE.INFO) |
|||
return |
|||
} |
|||
for (let i = 0; i < this.rows.length; i++) { |
|||
const now = this.rows[i] |
|||
if (now.new_merge_flag === '0') { |
|||
this.crud.notify('不允许提交未合单的单据:' + now.code, CRUD.NOTIFICATION_TYPE.INFO) |
|||
return |
|||
} |
|||
} |
|||
crudFormData.dismerge(this.rows).then(res => { |
|||
this.crud.notify('取消合单成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) |
|||
this.crud.toQuery() |
|||
}) |
|||
}, |
|||
toView(row) { |
|||
if (row !== null) { |
|||
this.$refs.viewDialog.setForm(row) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style scoped> |
|||
</style> |
|||
|
Loading…
Reference in new issue