You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

326 lines
10 KiB

<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<!-- 主表单区域 -->
<a-form :form="form" slot="detail">
<a-row>
<a-col :span="12" >
<a-form-item label="流程发起公司" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-select-depart v-decorator="['company']" multi />
</a-form-item>
</a-col>
<a-col :span="12" >
<a-form-item label="流程发起时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择流程发起时间" v-decorator="['createTime']" :trigger-change="true" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12" >
<a-form-item label="流程发起部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-select-depart v-decorator="['sysOrgCode']" multi />
</a-form-item>
</a-col>
<a-col :span="12" >
<a-form-item label="流程发起人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-select-user-by-dep v-decorator="['createBy']" />
</a-form-item>
</a-col>
<a-col :span="12" >
<a-form-item label="物资类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag type="list" v-decorator="['materialType']" :trigger-change="true" dictCode="" placeholder="请选择物资类型" />
</a-form-item>
</a-col>
<a-col :span="12" >
<a-form-item label="出库时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择出库时间" v-decorator="['deliveryTime']" :trigger-change="true" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12" >
<a-form-item label="文件id" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload v-decorator="['fileId']" :trigger-change="true" ></j-upload>
</a-form-item>
</a-col>
</a-row>
</a-form>
</j-form-container>
<!-- 子表单区域 -->
<a-tabs v-model="activeKey" @change="handleChangeTabs">
<a-tab-pane tab="物资出库流程出库清单" :key="refKeys[0]" :forceRender="true">
<j-editable-table
:ref="refKeys[0]"
:loading="processMaterialsDeliveryListTable.loading"
:columns="processMaterialsDeliveryListTable.columns"
:dataSource="processMaterialsDeliveryListTable.dataSource"
:maxHeight="300"
:disabled="formDisabled"
:rowNumber="true"
:rowSelection="true"
:actionButton="true"/>
</a-tab-pane>
</a-tabs>
</a-spin>
</template>
<script>
import pick from 'lodash.pick'
import { getAction } from '@/api/manage'
import { FormTypes,getRefPromise } from '@/utils/JEditableTableUtil'
import { JEditableTableMixin } from '@/mixins/JEditableTableMixin'
import { validateDuplicateValue } from '@/utils/util'
import JFormContainer from '@/components/jeecg/JFormContainer'
import JDate from '@/components/jeecg/JDate'
import JUpload from '@/components/jeecg/JUpload'
import JSelectDepart from '@/components/jeecgbiz/JSelectDepart'
import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
import JDictSelectTag from "@/components/dict/JDictSelectTag"
export default {
name: 'ProcessMaterialsDeliveryForm',
mixins: [JEditableTableMixin],
components: {
JFormContainer,
JDate,
JUpload,
JSelectDepart,
JSelectUserByDep,
JDictSelectTag,
},
data() {
return {
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
labelCol2: {
xs: { span: 24 },
sm: { span: 3 },
},
wrapperCol2: {
xs: { span: 24 },
sm: { span: 20 },
},
// 新增时子表默认添加几行空数据
addDefaultRowNum: 1,
validatorRules: {
},
refKeys: ['processMaterialsDeliveryList', ],
tableKeys:['processMaterialsDeliveryList', ],
activeKey: 'processMaterialsDeliveryList',
// 物资出库流程出库清单
processMaterialsDeliveryListTable: {
loading: false,
dataSource: [],
columns: [
{
title: '器材编号',
key: 'equipment',
type: FormTypes.sel_search,
dictCode:"",
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: 'WBS',
key: 'wbs',
type: FormTypes.sel_search,
dictCode:"",
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '物料名称及规格型号',
key: 'materialName',
type: FormTypes.sel_search,
dictCode:"",
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '单位',
key: 'materialUnit',
type: FormTypes.select,
dictCode:"",
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '请发数',
key: 'pleaseSendNumber',
type: FormTypes.inputNumber,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '实发数',
key: 'actualSendNumber',
type: FormTypes.inputNumber,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '供货商',
key: 'supplier',
type: FormTypes.sel_search,
dictCode:"",
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '单价',
key: 'materialPrice',
type: FormTypes.inputNumber,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '金额',
key: 'materialAmount',
type: FormTypes.inputNumber,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '用途',
key: 'purpose',
type: FormTypes.input,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '删除标志',
key: 'delFlag',
type: FormTypes.inputNumber,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
{
title: '删除时间',
key: 'delTime',
type: FormTypes.date,
width:"200px",
placeholder: '请输入${title}',
defaultValue:'',
},
]
},
url: {
add: "/hy/processMaterialsDelivery/add",
edit: "/hy/processMaterialsDelivery/edit",
queryById: "/hy/processMaterialsDelivery/queryById",
processMaterialsDeliveryList: {
list: '/hy/processMaterialsDelivery/queryProcessMaterialsDeliveryListByMainId'
},
}
}
},
props: {
//流程表单data
formData: {
type: Object,
default: ()=>{},
required: false
},
//表单模式:false流程表单 true普通表单
formBpm: {
type: Boolean,
default: false,
required: false
},
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
computed: {
formDisabled(){
if(this.formBpm===true){
if(this.formData.disabled===false){
return false
}
return true
}
return this.disabled
},
showFlowSubmitButton(){
if(this.formBpm===true){
if(this.formData.disabled===false){
return true
}
}
return false
}
},
created () {
//如果是流程中表单,则需要加载流程表单data
this.showFlowData();
},
methods: {
addBefore(){
this.form.resetFields()
this.processMaterialsDeliveryListTable.dataSource=[]
},
getAllTable() {
let values = this.tableKeys.map(key => getRefPromise(this, key))
return Promise.all(values)
},
/** 调用完edit()方法之后会自动调用此方法 */
editAfter() {
let fieldval = pick(this.model,'company','createTime','sysOrgCode','createBy','materialType','deliveryTime','fileId')
this.$nextTick(() => {
this.form.setFieldsValue(fieldval)
})
// 加载子表数据
if (this.model.id) {
let params = { id: this.model.id }
this.requestSubTableData(this.url.processMaterialsDeliveryList.list, params, this.processMaterialsDeliveryListTable)
}
},
/** 整理成formData */
classifyIntoFormData(allValues) {
let main = Object.assign(this.model, allValues.formValue)
return {
...main, // 展开
processMaterialsDeliveryListList: allValues.tablesValue[0].values,
}
},
//渲染流程表单数据
showFlowData(){
if(this.formBpm === true){
let params = {id:this.formData.dataId};
getAction(this.url.queryById,params).then((res)=>{
if(res.success){
this.edit (res.result);
}
})
}
},
validateError(msg){
this.$message.error(msg)
},
popupCallback(row){
this.form.setFieldsValue(pick(row,'company','createTime','sysOrgCode','createBy','materialType','deliveryTime','fileId'))
},
}
}
</script>
<style scoped>
</style>