合同子表添加

jg-waiwang-pro
XI_TENG\xixi_ 3 months ago
parent 567a562972
commit 2c70e232af

@ -43,9 +43,14 @@ public interface ContractLService extends IService<ContractLEntity> {
List<ContractLPaymentEntity> getContractLPaymentList(String id); List<ContractLPaymentEntity> getContractLPaymentList(String id);
List<ContractRelationEntity> getContractRelationList(String id);
//副表数据方法 //副表数据方法
String checkForm(ContractLForm form,int i); String checkForm(ContractLForm form,int i);
void saveOrUpdate(ContractLForm contractLForm,String id, boolean isSave) throws Exception; void saveOrUpdate(ContractLForm contractLForm,String id, boolean isSave) throws Exception;
void saveOrUpdateContract(ContractLForm contractLForm,String id, boolean isSave) throws Exception;
} }

@ -61,6 +61,8 @@ public class ContractLServiceImpl extends ServiceImpl<ContractLMapper, ContractL
private ContractLFeeClauseService contractLFeeClauseService; private ContractLFeeClauseService contractLFeeClauseService;
@Autowired @Autowired
private ContractLPaymentService contractLPaymentService; private ContractLPaymentService contractLPaymentService;
@Autowired
private ContractRelationService contractRelationService;
@Resource @Resource
private ContractLMapper contractLMapper; private ContractLMapper contractLMapper;
@Autowired @Autowired
@ -337,6 +339,18 @@ public class ContractLServiceImpl extends ServiceImpl<ContractLMapper, ContractL
} }
if(ObjectUtil.isNotEmpty(contractLPagination.getKeyword())){
contractLNum++;
String value = String.valueOf(contractLPagination.getKeyword());
contractLQueryWrapper.like("a.contract_number",value);
}
if(contractLPagination.getExcludeIdList() != null && contractLPagination.getExcludeIdList().size() > 0){
contractLNum++;
contractLQueryWrapper.notIn("a.contract_number",contractLPagination.getExcludeIdList());
}
if(ObjectUtil.isNotEmpty(contractLPagination.getContractName())){ if(ObjectUtil.isNotEmpty(contractLPagination.getContractName())){
contractLNum++; contractLNum++;
@ -553,6 +567,14 @@ public class ContractLServiceImpl extends ServiceImpl<ContractLMapper, ContractL
queryWrapper.lambda().eq(ContractLPaymentEntity::getContractId, id); queryWrapper.lambda().eq(ContractLPaymentEntity::getContractId, id);
return contractLPaymentService.list(queryWrapper); return contractLPaymentService.list(queryWrapper);
} }
@Override
public List<ContractRelationEntity> getContractRelationList(String id) {
QueryWrapper<ContractRelationEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ContractRelationEntity::getBusinessId, id);
return contractRelationService.list(queryWrapper);
}
/** 验证表单唯一字段,正则,非空 i-0新增-1修改*/ /** 验证表单唯一字段,正则,非空 i-0新增-1修改*/
@Override @Override
public String checkForm(ContractLForm form,int i) { public String checkForm(ContractLForm form,int i) {
@ -679,4 +701,43 @@ public class ContractLServiceImpl extends ServiceImpl<ContractLMapper, ContractL
} }
} }
} }
@Override
public void saveOrUpdateContract(ContractLForm contractLForm, String id, boolean isSave) throws Exception {
UserInfo userInfo=userProvider.get();
UserEntity userEntity = generaterSwapUtil.getUser(userInfo.getUserId());
contractLForm = JsonUtil.getJsonToBean(
generaterSwapUtil.swapDatetime(ContractLConstant.getFormData(),contractLForm),ContractLForm.class);
ContractLEntity entity = JsonUtil.getJsonToBean(contractLForm, ContractLEntity.class);
if(isSave){
String mainId = id ;
entity.setId(mainId);
entity.setFlowId(contractLForm.getFlowId());
entity.setVersion(0);
entity.setCurrency("1"); //币种默认人民币
}else{
entity.setFlowId(contractLForm.getFlowId());
}
this.saveOrUpdate(entity);
//ContractRelation子表数据新增修改
if(!isSave){
QueryWrapper<ContractRelationEntity> contractRelationQueryWrapper = new QueryWrapper<>();
contractRelationQueryWrapper.lambda().eq(ContractRelationEntity::getBusinessId, entity.getId());
contractRelationService.remove(contractRelationQueryWrapper);
}
if (contractLForm.getContractRelationList()!=null){
List<ContractRelationEntity> tableField1531 = JsonUtil.getJsonToList(contractLForm.getContractRelationList(),ContractRelationEntity.class);
for(ContractRelationEntity entitys : tableField1531){
entitys.setId(RandomUtil.uuId());
entitys.setBusinessId(entity.getId());
if(isSave){
}else{
}
contractRelationService.saveOrUpdate(entitys);
}
}
}
} }

@ -505,7 +505,10 @@ public class ReceiptOrderServiceImpl extends ServiceImpl<ReceiptOrderMapper, Rec
BusinessCargoEntity businessCargoEntity = businessCargoService.getById(entitys.getCargoId()); BusinessCargoEntity businessCargoEntity = businessCargoService.getById(entitys.getCargoId());
if (ObjectUtil.isNotEmpty(productWarehouseEntity) && productWarehouseEntity.getInventoryType().equals("1") && ObjectUtil.isNotEmpty(businessCargoEntity)){ if (ObjectUtil.isNotEmpty(productWarehouseEntity) && productWarehouseEntity.getInventoryType().equals("1") && ObjectUtil.isNotEmpty(businessCargoEntity)){
entitys.setBatchNo(businessCargoEntity.getId()); entitys.setBatchNo(businessCargoEntity.getId());
}else { }else if (ObjectUtil.isNotEmpty(productWarehouseEntity) && ObjectUtil.isNotEmpty(businessCargoEntity) && entity.getWarehouseId().equals("580435348526465093")){
entitys.setBatchNo(businessCargoEntity.getId());
}
else {
entitys.setBatchNo(generaterSwapUtil.getBillNumber("batch", false)); entitys.setBatchNo(generaterSwapUtil.getBillNumber("batch", false));
} }
entitys.setProduceTime(DateUtil.getNowDate()); entitys.setProduceTime(DateUtil.getNowDate());

@ -644,4 +644,56 @@ public class ContractLController {
return ActionResult.success(contractLMap); return ActionResult.success(contractLMap);
} }
/**
* ()
* 使-
* @param id
* @return
*/
@Operation(summary = "信息")
@GetMapping("/relation/{id}")
public ActionResult relationInfo(@PathVariable("id") String id){
ContractLEntity entity= contractLService.getInfo(id);
if(entity==null){
return ActionResult.fail("表单数据不存在!");
}
Map<String, Object> contractLMap=JsonUtil.entityToMap(entity);
contractLMap.put("id", contractLMap.get("id"));
//副表数据
//子表数据
// List<ContractLPriceFormulaEntity> contractLPriceFormulaList = contractLService.getContractLPriceFormulaList(entity.getId());
// contractLMap.put("contractLPriceFormulaList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractLPriceFormulaList)));
// List<ContractLCommodityEntity> contractLCommodityList = contractLService.getContractLCommodityList(entity.getId());
// contractLMap.put("contractLCommodityList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractLCommodityList)));
// List<ContractLFeeClauseEntity> contractLFeeClauseList = contractLService.getContractLFeeClauseList(entity.getId());
// contractLMap.put("contractLFeeClauseList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractLFeeClauseList)));
// List<ContractLPaymentEntity> contractLPaymentList = contractLService.getContractLPaymentList(entity.getId());
// contractLMap.put("contractLPaymentList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractLPaymentList)));
List<ContractRelationEntity> contractRelationList = contractLService.getContractRelationList(entity.getId());
contractLMap.put("contractRelationList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractRelationList)));
contractLMap = generaterSwapUtil.swapDataForm(contractLMap,ContractLConstant.getFormData(),ContractLConstant.TABLEFIELDKEY,ContractLConstant.TABLERENAMES);
return ActionResult.success(contractLMap);
}
/**
*
*
* @param contractLForm
* @return
*/
@PutMapping("/batch/{id}")
@Operation(summary = "更新")
public ActionResult update1(@PathVariable("id") String id,@RequestBody @Valid ContractLForm contractLForm,
@RequestParam(value = "isImport", required = false) boolean isImport){
try{
contractLService.saveOrUpdateContract(contractLForm, id ,false);
}catch(Exception e){
return ActionResult.fail("修改数据失败");
}
return ActionResult.success("修改成功");
}
} }

@ -1,5 +1,6 @@
package jnpf.model.contractl; package jnpf.model.contractl;
import jnpf.model.contractrelation.ContractRelationForm;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -28,6 +29,9 @@ public class ContractLForm {
/** 子表数据 **/ /** 子表数据 **/
@JsonProperty("contractLPaymentList") @JsonProperty("contractLPaymentList")
private List<ContractLPaymentModel> contractLPaymentList; private List<ContractLPaymentModel> contractLPaymentList;
/** 子表数据 **/
@JsonProperty("contractRelationList")
private List<ContractRelationModel> contractRelationList;
/** 乐观锁 **/ /** 乐观锁 **/
@JsonProperty("version") @JsonProperty("version")
private Integer version; private Integer version;

@ -36,4 +36,6 @@ public class ContractLPagination extends Pagination {
/** 合同名称 */ /** 合同名称 */
@JsonProperty("contractName") @JsonProperty("contractName")
private Object contractName; private Object contractName;
@JsonProperty("excludeIdList")
private List<String> excludeIdList;
} }

@ -0,0 +1,29 @@
package jnpf.model.contractl;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* contractRelation
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-07-15
*/
@Data
public class ContractRelationModel {
/** 主表id **/
@JSONField(name = "businessId")
private Object businessId;
/** 合同编码 **/
@JSONField(name = "purchaseContractCode")
private Object purchaseContractCode;
/** 合同名称 **/
@JSONField(name = "purchaseContractName")
private Object purchaseContractName;
/** 对方合同号 **/
@JSONField(name = "purchaseContractNo")
private Object purchaseContractNo;
}

@ -43,7 +43,6 @@
<!-- <el-button type="primary" icon="icon-ym icon-ym-btn-add" v-has="'btn_add'" <!-- <el-button type="primary" icon="icon-ym icon-ym-btn-add" v-has="'btn_add'"
@click="addContractList() ">合同关联 @click="addContractList() ">合同关联
</el-button> --> </el-button> -->
<!-- <el-button <!-- <el-button
type="text" type="text"
icon="icon-ym icon-ym-btn-clearn" icon="icon-ym icon-ym-btn-clearn"
@ -168,15 +167,15 @@
<el-button size="mini" type="text" :disabled="!scope.row.flowState" <el-button size="mini" type="text" :disabled="!scope.row.flowState"
@click="updateHandle(scope.row, scope.row.flowState)">详情</el-button> @click="updateHandle(scope.row, scope.row.flowState)">详情</el-button>
<!-- <el-button <el-button
v-if="scope.row.contractType == '采购合同' && scope.row.procurementModel == '以销定采' " v-if="scope.row.contractType == '采购合同' && scope.row.procurementModel == '以销定采' "
type="text" @click="addContractList(scope.row)" v-has="'btn_edit'">采购合同关联 type="text" @click="addContractList(scope.row.id)" v-has="'btn_edit'">采购合同关联
</el-button> </el-button>
<el-button <el-button
v-if="scope.row.contractType == '销售合同' && scope.row.procurementModel == '以采定销' " v-if="scope.row.contractType == '销售合同' && scope.row.procurementModel == '以采定销' "
type="text" @click="addContractList(scope.row)" v-has="'btn_edit'">销售合同关联 type="text" @click="addContractList(scope.row.id)" v-has="'btn_edit'">销售合同关联
</el-button> --> </el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -367,17 +366,23 @@ export default {
}, },
methods: { methods: {
addContractList() { addContractList(id) {
debugger debugger
if (!this.multipleSelectionItem.length) { // if (!this.multipleSelectionItem.length) {
this.$message({ // this.$message({
type: 'error', // type: 'error',
message: '请选择一条数据', // message: '',
duration: 1500, // duration: 1500,
}) // })
return // return
} // }
const selectData = this.multipleSelectionItem
// const selectData = this.multipleSelectionItem
const selectData = id
const moshi = selectData[0].contractType;
const leixi = selectData[0].procurementModel;
this.contractListVisible = true this.contractListVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ContractList.initContractData(selectData) this.$refs.ContractList.initContractData(selectData)

@ -34,316 +34,150 @@
<!-- 具体表单 --> <!-- 具体表单 -->
<el-col :span="24"> <el-col :span="24">
<jnpf-form-tip-item> <jnpf-form-tip-item>
<JnpfGroupTitle content="基础信息" contentPosition="left"> <JnpfGroupTitle content="合同信息" contentPosition="left">
</JnpfGroupTitle> </JnpfGroupTitle>
</jnpf-form-tip-item> </jnpf-form-tip-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<jnpf-form-tip-item label="凭证类型" prop="voucherType"> <jnpf-form-tip-item label="合同名称" prop="contractName">
<JnpfSelect v-model="dataForm.voucherType" @change="changeData('voucherType',-1)" <JnpfInput v-model="dataForm.contractName" disabled="true"
placeholder="请选择" clearable :style='{"width":"100%"}' @change="changeData('contractName', -1)" placeholder="请输入" clearable
:options="voucherTypeOptions" :props="voucherTypeProps"> :style="{ width: '100%' }">
</JnpfSelect> </JnpfInput>
</jnpf-form-tip-item> </jnpf-form-tip-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<jnpf-form-tip-item label="合同名称" prop="contractName"> <jnpf-form-tip-item label="合同编号" prop="contractNumber">
<JnpfInput v-model="dataForm.contractName" @change="changeData('contractName', -1)" <JnpfInput v-model="dataForm.contractNumber" disabled="true"
placeholder="请输入" clearable :style="{ width: '100%' }"> @change="changeData('contractNumber', -1)" placeholder="请输入" clearable
:style="{ width: '100%' }">
</JnpfInput> </JnpfInput>
</jnpf-form-tip-item> </jnpf-form-tip-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<jnpf-form-tip-item label="制单时间" prop="preparationTime"> <jnpf-form-tip-item label="对方合同编号" prop="contractNo">
<JnpfDatePicker v-model="dataForm.preparationTime" <JnpfInput v-model="dataForm.contractNo" disabled="true"
@change="changeData('preparationTime',-1)" :startTime="dateTime(false,1,1,'','')" @change="changeData('contractNo', -1)" placeholder="请输入" clearable
:endTime="dateTime(false,1,1,'','')" placeholder="请选择" clearable :style="{ width: '100%' }">
:style='{"width":"100%"}' type="date" format="yyyy-MM-dd"> </JnpfInput>
</JnpfDatePicker>
</jnpf-form-tip-item> </jnpf-form-tip-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<jnpf-form-tip-item label="配送方式" prop="deliveryType"> <jnpf-form-tip-item label="合同类型" prop="contractType">
<JnpfSelect v-model="dataForm.deliveryType" @change="changeData('deliveryType',-1)" <JnpfSelect v-model="dataForm.contractType" @change="changeData('contractType',-1)"
placeholder="请选择" clearable :style='{"width":"100%"}' placeholder="请选择" clearable :style='{"width":"100%"}' disabled="true"
:options="deliveryTypeOptions" :props="deliveryTypeProps"> :options="contractTypeOptions" :props="contractTypeProps">
</JnpfSelect> </JnpfSelect>
</jnpf-form-tip-item> </jnpf-form-tip-item>
</el-col> </el-col>
<el-col :span="24">
<jnpf-form-tip-item>
<JnpfGroupTitle content="凭证信息" contentPosition="left">
</JnpfGroupTitle>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<jnpf-form-tip-item label="发货单位" prop="supplierId"> <jnpf-form-tip-item label="采购模式" prop="procurementModel">
<JnpfPopupSelect v-model="dataForm.supplierId" @change="changeData('supplierId',-1)" <JnpfSelect v-model="dataForm.procurementModel"
:rowIndex="null" :formData="dataForm" :templateJson="interfaceRes.supplierId" @change="changeData('procurementModel',-1)" placeholder="请选择" clearable
placeholder="请选择" propsValue="f_id" popupWidth="800px" popupTitle="选择数据" :style='{"width":"100%"}' disabled="true" :options="procurementModelOptions"
popupType="dialog" relationField='f_full_name' field='supplierId' :props="procurementModelProps">
interfaceId="522729853024209157" :pageSize="20" </JnpfSelect>
:columnOptions="supplierIdcolumnOptions" clearable :style='{"width":"100%"}'>
</JnpfPopupSelect>
</jnpf-form-tip-item> </jnpf-form-tip-item>
</el-col> </el-col>
<el-col :span="8">
<jnpf-form-tip-item label="收货单位" prop="customerId"> <el-col :span="24">
<JnpfPopupSelect v-model="dataForm.customerId" @change="changeData('customerId',-1)" <jnpf-form-tip-item>
:rowIndex="null" :formData="dataForm" :templateJson="interfaceRes.customerId" <JnpfGroupTitle content="关联信息" contentPosition="left">
placeholder="请选择" propsValue="id" popupWidth="800px" popupTitle="选择数据" </JnpfGroupTitle>
popupType="dialog" relationField='name' field='customerId'
interfaceId="522693551289534725" :pageSize="20"
:columnOptions="customerIdcolumnOptions" clearable :style='{"width":"100%"}'>
</JnpfPopupSelect>
</jnpf-form-tip-item> </jnpf-form-tip-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<jnpf-form-tip-item label-width="0"> <jnpf-form-tip-item label-width="0">
<div class="JNPF-common-title"> <div class="JNPF-common-title">
<h2></h2> <h2></h2>
</div> </div>
<el-table :data="dataForm.voucherProductBatchList" size='mini'> <el-table :data="dataForm.contractRelationList" size='mini'>
<el-table-column type="index" width="50" label="序号" align="center" /> <el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column label="订单序号" prop="orderNo" width="200">
<el-table-column label="销售合同编码" prop="purchaseContractCode"
v-if="dataForm.procurementModel==1">
<template slot="header" v-if="false"> <template slot="header" v-if="false">
<span class="required-sign">*</span>订单序号 <span class="required-sign">*</span>销售合同编码
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<JnpfInput v-model="scope.row.orderNo" <JnpfInput v-model="scope.row.purchaseContractCode"
@change="changeData('voucherproduct-spec',scope.$index)" placeholder="请输入" @change="changeData('voucherproduct-spec',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'> clearable :style='{"width":"100%"}'>
</JnpfInput> </JnpfInput>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="商品名称" prop="productId" width="300">
<template slot="header" v-if="true"> <el-table-column label="销售合同名称" prop="purchaseContractName"
<span class="required-sign">*</span>商品名称 v-if="dataForm.procurementModel==1">
</template>
<template slot-scope="scope">
<JnpfPopupSelect v-model="scope.row.productId"
@change="changeData('voucherproduct-productId',scope.$index)"
:rowIndex="scope.$index" :formData="dataForm"
:templateJson="interfaceRes.voucherproductproductId" placeholder="请选择"
disabled propsValue="id" popupWidth="800px" popupTitle="选择数据"
popupType="dialog" relationField='name' :field="'productId'+scope.$index"
interfaceId="529919666429100229" :pageSize="20"
:columnOptions="voucherproductproductIdcolumnOptions" clearable
:style='{"width":"100%"}'>
</JnpfPopupSelect>
</template>
</el-table-column>
<el-table-column label="规格" prop="spec" width="200">
<template slot="header" v-if="false"> <template slot="header" v-if="false">
<span class="required-sign">*</span>规格 <span class="required-sign">*</span>销售合同名称
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<JnpfInput v-model="scope.row.spec" <JnpfInput v-model="scope.row.purchaseContractName"
@change="changeData('voucherproduct-spec',scope.$index)" placeholder="请输入" @change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'> clearable :style='{"width":"100%"}'>
</JnpfInput> </JnpfInput>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单位" prop="unit" width="100">
<template slot="header" v-if="false"> <el-table-column label="销售合同对方合同号" prop="purchaseContractNo"
<span class="required-sign">*</span>单位 v-if="dataForm.procurementModel==1">
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.unit"
@change="changeData('voucherproduct-unit',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}' disabled>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="毛重" prop="grossWeight" width="180">
<template slot="header" v-if="false">
<span class="required-sign">*</span>毛重
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.grossWeight"
@change="changeData('voucherproduct-grossWeight',scope.$index)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="皮重" prop="tareWeight" width="180">
<template slot="header" v-if="false">
<span class="required-sign">*</span>皮重
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.tareWeight"
@change="changeData('voucherproduct-tareWeight',scope.$index)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="扣重" prop="buckleWeight" width="180">
<template slot="header" v-if="false">
<span class="required-sign">*</span>扣重
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.buckleWeight"
@change="changeData('voucherproduct-buckleWeight',scope.$index)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="结算量" prop="netWeight" width="180">
<template slot="header" v-if="false">
<span class="required-sign">*</span>结算量
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.netWeight"
@change="changeData('voucherproduct-netWeight',scope.$index)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="净重" prop="netWeight" width="180">
<template slot="header" v-if="false">
<span class="required-sign">*</span>净重
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.clearWeight"
@change="changeData('voucherproduct-netWeight',scope.$index)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="运费" prop="freight" width="180">
<template slot="header" v-if="false"> <template slot="header" v-if="false">
<span class="required-sign">*</span>运费 <span class="required-sign">*</span>销售合同对方合同号
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<JnpfInput v-model="scope.row.freight" <JnpfInput v-model="scope.row.purchaseContractNo"
@change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入" @change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'> clearable :style='{"width":"100%"}'>
</JnpfInput> </JnpfInput>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="车牌号" prop="vehicleId" width="180">
<template slot="header" v-if="true"> <el-table-column label="采购合同编号" prop="purchaseContractCode"
<span class="required-sign">*</span>车牌号 v-if="dataForm.procurementModel==2">
</template>
<template slot-scope="scope">
<JnpfPopupSelect v-model="scope.row.vehicleId"
@change="changeData('voucherproduct-printTime',scope.$index)"
:rowIndex="scope.$index" :formData="dataForm"
:templateJson="interfaceRes.voucherproductprintTime" placeholder="请选择"
propsValue="id" popupWidth="800px" popupTitle="选择数据" popupType="dialog"
relationField='vehicle_number' :field="'printTime'+scope.$index"
interfaceId="529920852288864453" :pageSize="20"
:columnOptions="voucherproductprintTimecolumnOptions" clearable
:style='{"width":"100%"}'>
</JnpfPopupSelect>
</template>
</el-table-column>
<el-table-column label="驾驶员名称" prop="driverName" width="160">
<template slot="header" v-if="false">
<span class="required-sign">*</span>驾驶员名称
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.driverName"
@change="changeData('voucherproduct-receiptUnit',scope.$index)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="磅单编号" prop="poundCode" width="250">
<template slot="header" v-if="false">
<span class="required-sign">*</span>磅单编号
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.poundCode"
@change="changeData('voucherproduct-tenantId',scope.$index)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="运输方式" prop="modeTransport" width="150">
<template slot="header" v-if="true">
<span class="required-sign">*</span>运输方式
</template>
<template slot-scope="scope">
<JnpfSelect v-model="scope.row.modeTransport"
@change="changeData('voucherproduct-cargoId',scope.$index)"
placeholder="请选择" clearable :style='{"width":"100%"}'
:options="voucherproductcargoIdOptions" :props="voucherproductcargoIdProps">
</JnpfSelect>
</template>
</el-table-column>
<el-table-column label="承运方式" prop="transportationMethod" width="150">
<template slot="header" v-if="true">
<span class="required-sign">*</span>承运方式
</template>
<template slot-scope="scope">
<JnpfSelect v-model="scope.row.transportationMethod"
@change="changeData('voucherproduct-receiptNum',scope.$index)"
placeholder="请选择" clearable :style='{"width":"100%"}'
:options="voucherproductreceiptNumOptions"
:props="voucherproductreceiptNumProps">
</JnpfSelect>
</template>
</el-table-column>
<el-table-column label="承运商" prop="carrier" width="150">
<template slot="header" v-if="false"> <template slot="header" v-if="false">
<span class="required-sign">*</span>承运商 <span class="required-sign">*</span>采购合同编号
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<JnpfInput v-model="scope.row.carrier" <JnpfInput v-model="scope.row.purchaseContractCode"
@change="changeData('voucherproduct-batchNo',scope.$index)" @change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
placeholder="请输入" clearable :style='{"width":"100%"}'> clearable :style='{"width":"100%"}'>
</JnpfInput> </JnpfInput>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="起运地" prop="placeDispatch" width="250">
<template slot="header" v-if="true"> <el-table-column label="采购合同名称" prop="purchaseContractName"
<span class="required-sign">*</span>起运地 v-if="dataForm.procurementModel==2">
</template>
<template slot-scope="scope">
<JnpfAreaSelect v-model="scope.row.placeDispatch"
@change="changeData('voucherproduct-deliveryUnit',scope.$index)"
placeholder="请选择" selectType="all" clearable :style='{"width":"100%"}'
:level="2">
</JnpfAreaSelect>
</template>
</el-table-column>
<el-table-column label="到达地" prop="destination" width="250">
<template slot="header" v-if="true">
<span class="required-sign">*</span>到达地
</template>
<template slot-scope="scope">
<JnpfAreaSelect v-model="scope.row.destination"
@change="changeData('voucherproduct-deliveryNum',scope.$index)"
placeholder="请选择" selectType="all" clearable :style='{"width":"100%"}'
:level="2">
</JnpfAreaSelect>
</template>
</el-table-column>
<el-table-column label="销售合同编号" prop="saleContractNo" width="180">
<template slot="header" v-if="false"> <template slot="header" v-if="false">
<span class="required-sign">*</span>销售合同编号 <span class="required-sign">*</span>采购合同名称
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<JnpfInput v-model="scope.row.saleContractNo" <JnpfInput v-model="scope.row.purchaseContractName"
@change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入" @change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'> clearable :style='{"width":"100%"}'>
</JnpfInput> </JnpfInput>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="销售额" prop="saleAmount" width="180">
<el-table-column label="采购合同对方合同号" prop="purchaseContractNo"
v-if="dataForm.procurementModel==2">
<template slot="header" v-if="false"> <template slot="header" v-if="false">
<span class="required-sign">*</span>销售额 <span class="required-sign">*</span>采购合同对方合同号
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<JnpfInput v-model="scope.row.saleAmount" <JnpfInput v-model="scope.row.purchaseContractNo"
@change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入" @change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'> clearable :style='{"width":"100%"}'>
</JnpfInput> </JnpfInput>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="50"> <el-table-column label="操作" width="50">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" class="JNPF-table-delBtn" <el-button size="mini" type="text" class="JNPF-table-delBtn"
@ -351,9 +185,9 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- <div class="table-actions" @click="addvoucherproductList()"> <div class="table-actions" @click="choice(dataForm.contractType)">
<el-button type="text" icon="el-icon-plus">添加</el-button> <el-button type="text" icon="el-icon-plus">添加</el-button>
</div> --> </div>
</jnpf-form-tip-item> </jnpf-form-tip-item>
</el-col> </el-col>
<!-- 表单结束 --> <!-- 表单结束 -->
@ -361,6 +195,9 @@
</el-form> </el-form>
<SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm" <SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
ref="selectDialog" @select="addForSelect" @close="selectDialogVisible=false" /> ref="selectDialog" @select="addForSelect" @close="selectDialogVisible=false" />
<ContractList v-if="contractVisible" ref="contractListBox" @refreshDataList="initList" />
</el-row> </el-row>
</div> </div>
</transition> </transition>
@ -376,8 +213,10 @@ import { getDefaultCurrentValueUserId } from '@/api/permission/user'
import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize' import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize'
import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js' import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js'
import { thousandsFormat } from "@/components/Generator/utils/index" import { thousandsFormat } from "@/components/Generator/utils/index"
import ContractList from '@/views/scm/publicPopup/ContractLBox'
export default { export default {
components: {}, components: { ContractList },
props: [], props: [],
data() { data() {
return { return {
@ -395,6 +234,7 @@ export default {
eventType: '', eventType: '',
userBoxVisible: false, userBoxVisible: false,
selectDialogVisible: false, selectDialogVisible: false,
contractVisible: false,
currTableConf: {}, currTableConf: {},
dataValueAll: {}, dataValueAll: {},
addTableConf: { addTableConf: {
@ -441,41 +281,19 @@ export default {
Vmodel: "", Vmodel: "",
currVmodel: "", currVmodel: "",
dataForm: { dataForm: {
voucherType: undefined, id: undefined,
preparationTime: undefined, contractName: undefined,
deliveryType: undefined, contractNumber: undefined,
supplierId: undefined, contractNo: undefined,
customerId: undefined, contractType: undefined,
documentType: "2", procurementModel: undefined,
voucherStatus: "2", contractRelationList: [],
businessType: "2",
voucherProductBatchList: [],
version: 0, version: 0,
}, },
tableRequiredData: {}, tableRequiredData: {},
dataRule: dataRule:
{ {
voucherType: [
{
required: true,
message: '请选择',
trigger: 'change'
},
],
preparationTime: [
{
required: true,
message: '请选择',
trigger: 'change'
},
],
deliveryType: [
{
required: true,
message: '请选择',
trigger: 'change'
},
],
supplierId: [ supplierId: [
{ {
required: true, required: true,
@ -491,18 +309,13 @@ export default {
}, },
], ],
}, },
voucherTypeOptions: [{ "fullName": "磅单", "id": "1" }, { "fullName": "收据", "id": "2" }, { "fullName": "其他", "id": "3" }],
voucherTypeProps: { "label": "fullName", "value": "id" }, contractTypeOptions: [{ "fullName": "采购合同", "id": "1" }, { "fullName": "销售合同", "id": "2" }],
deliveryTypeOptions: [{ "fullName": "仓配", "id": "1" }, { "fullName": "直送", "id": "2" }], contractTypeProps: { "label": "fullName", "value": "id" },
deliveryTypeProps: { "label": "fullName", "value": "id" },
supplierIdcolumnOptions: [{ "label": "机构编码", "value": "f_en_code" }, { "label": "机构名称", "value": "f_full_name" }], procurementModelOptions: [{ "fullName": "以销定采", "id": "1" }, { "fullName": "以采定销", "id": "2" }],
customerIdcolumnOptions: [{ "label": "客户名称", "value": "name" }, { "label": "国家", "value": "country" }, { "label": "地址", "value": "address" }, { "label": "电话", "value": "phone" }], procurementModelProps: { "label": "fullName", "value": "id" },
documentTypeOptions: [{ "fullName": "收货凭证", "id": "1" }, { "fullName": "发货凭证", "id": "2" }],
documentTypeProps: { "label": "fullName", "value": "id" },
voucherStatusOptions: [{ "fullName": "待提交", "id": "1" }, { "fullName": "待审核", "id": "2" }, { "fullName": "待质检", "id": "3" }, { "fullName": "已完成", "id": "4" }, { "fullName": "已关闭", "id": "5" }],
voucherStatusProps: { "label": "fullName", "value": "id" },
businessTypeOptions: [{ "fullName": "采购", "id": "1" }, { "fullName": "销售", "id": "2" }],
businessTypeProps: { "label": "fullName", "value": "id" },
voucherproductproductIdcolumnOptions: [{ "label": "商品编码", "value": "code" }, { "label": "商品名称", "value": "name" }, { "label": "规格", "value": "spec" },], voucherproductproductIdcolumnOptions: [{ "label": "商品编码", "value": "code" }, { "label": "商品名称", "value": "name" }, { "label": "规格", "value": "spec" },],
voucherproductprintTimecolumnOptions: [{ "label": "车牌号", "value": "vehicle_number" }, { "label": "驾驶员", "value": "name" }, { "label": "电话", "value": "mobile" }], voucherproductprintTimecolumnOptions: [{ "label": "车牌号", "value": "vehicle_number" }, { "label": "驾驶员", "value": "name" }, { "label": "电话", "value": "mobile" }],
voucherproductcargoIdOptions: [{ "fullName": "公路", "id": "1" }, { "fullName": "铁路", "id": "2" }, { "fullName": "轮船", "id": "3" }, { "fullName": "空运", "id": "4" }, { "fullName": "无", "id": "5" }], voucherproductcargoIdOptions: [{ "fullName": "公路", "id": "1" }, { "fullName": "铁路", "id": "2" }, { "fullName": "轮船", "id": "3" }, { "fullName": "空运", "id": "4" }, { "fullName": "无", "id": "5" }],
@ -550,30 +363,56 @@ export default {
}, },
mounted() { }, mounted() { },
methods: { methods: {
// //
initContractData(selectData) { initContractData(selectData) {
const data = selectData debugger
if (!data) { // const id = selectData[0].id
const id = selectData
if (!id) {
return return
} }
let id
data.forEach(item => {
id = item.id
});
request({ request({
url: `/api/scm/ContractL/getList`, url: `/api/scm/ContractL/relation/${id}`,
method: 'post', method: "Get",
data: id // data: data
}).then(res => { }).then(res => {
var voucherInfo = res.data; var Info = res.data;
this.dataForm.contractName = Info.contractName,
this.dataForm.contractNumber = Info.contractNumber,
this.dataForm.contractNo = Info.contractNo,
this.dataForm.contractType = Info.contractType,
this.dataForm.procurementModel = Info.procurementModel,
this.dataForm.id = Info.id,
this.dataForm.contractRelationList = Info.contractRelationList
})
},
this.dataForm = voucherInfo choice(val) {
this.dataForm.voucherProductBatchList = voucherInfo.voucherProductList this.contractVisible = true
this.dataForm.supplierId = voucherInfo.customerId let excludeIdList = [];
this.dataForm.customerId = '' for (let i = 0; i < this.dataForm.contractRelationList.length; i++) {
excludeIdList.push(this.dataForm.contractRelationList[i].purchaseContractCode);
}
this.$nextTick(() => {
this.$refs.contractListBox.init(excludeIdList, val)
}) })
}, },
initList(list) {
for (let i = 0; i < list.length; i++) {
const e = list[i];
let item = {
purchaseContractCode: e.contractNumber,
purchaseContractName: e.contractName,
purchaseContractNo: e.contractNo,
}
this.dataForm.contractRelationList.push(item)
}
},
prev() { prev() {
this.index-- this.index--
if (this.index === 0) { if (this.index === 0) {
@ -652,98 +491,7 @@ export default {
}, },
dataAll() { dataAll() {
}, },
voucherproductExist() {
let isOk = true;
for (let i = 0; i < this.dataForm.voucherProductBatchList.length; i++) {
const e = this.dataForm.voucherProductBatchList[i];
var tareWeight = e.tareWeight;//
var grossWeight = e.grossWeight;//
var buckleWeight = e.buckleWeight;//
var netWeight = e.netWeight;//
if (!e.productId) {
this.$message({
message: '商品名称不能为空',
type: 'error',
duration: 1000
});
isOk = false
break
}
if (!e.vehicleId) {
this.$message({
message: '车牌号不能为空',
type: 'error',
duration: 1000
});
isOk = false
break
}
if (!e.modeTransport) {
this.$message({
message: '运输方式不能为空',
type: 'error',
duration: 1000
});
isOk = false
break
}
if (!e.transportationMethod) {
this.$message({
message: '承运方式不能为空',
type: 'error',
duration: 1000
});
isOk = false
break
}
if (!e.placeDispatch.length) {
this.$message({
message: '起运地不能为空',
type: 'error',
duration: 1000
});
isOk = false
break
}
if (!e.destination.length) {
this.$message({
message: '到达地不能为空',
type: 'error',
duration: 1000
});
isOk = false
break
}
if (grossWeight < this.jnpf.floatAdd(this.jnpf.floatAdd(tareWeight, buckleWeight), netWeight)) {
this.$message({
message: '毛重不得小于皮重+扣重+净重',
type: 'error',
duration: 1000
})
isOk = false
break
}
// if (buckleWeight >= netWeight) {
// this.$message({
// message: '',
// type: 'error',
// duration: 1000
// })
// isOk = false
// break
// }
if (buckleWeight >= grossWeight) {
this.$message({
message: '扣重不得大于毛重',
type: 'error',
duration: 1000
})
isOk = false
break
}
}
return isOk;
},
clearData() { clearData() {
this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll)) this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
}, },
@ -789,30 +537,37 @@ export default {
// //
dataFormSubmit(type) { dataFormSubmit(type) {
this.dataFormSubmitType = type ? type : 0 this.dataFormSubmitType = type ? type : 0
this.$refs['formRef'].validate((valid) => { // this.$refs['formRef'].validate((valid) => {
if (valid) { // if (valid) {
if (!this.voucherproductExist()) return // if (!this.voucherproductExist()) return
this.request() // this.request()
} // }
}) // })
this.request()
}, },
request() { request() {
debugger
let _data = this.dataList() let _data = this.dataList()
if (this.dataFormSubmitType == 2) {
this.continueBtnLoading = true // if (this.dataFormSubmitType == 2) {
} else { // this.continueBtnLoading = true
this.btnLoading = true // } else {
} // this.btnLoading = true
// if (!this.dataForm.id) { // }
// debugger
let id = this.dataForm.id
request({ request({
url: '/api/scm/Voucher/batchCreate', // url: '/api/scm/ContractL/batch/',
method: 'post',
url: `/api/scm/ContractL/batch/${id}`,
method: 'put',
data: _data data: _data
}).then((res) => { }).then((res) => {
this.$message({ this.$message({
message: res.msg, message: res.msg,
type: 'success', type: 'success',
duration: 1000, duration: 1000,
onClose: () => { onClose: () => {
if (this.dataFormSubmitType == 2) { if (this.dataFormSubmitType == 2) {
this.$nextTick(() => { this.$nextTick(() => {
@ -826,33 +581,12 @@ export default {
this.btnLoading = false this.btnLoading = false
this.$emit('refresh', true) this.$emit('refresh', true)
} }
}) })
}).catch(() => { // this.$router.back(1)
this.btnLoading = false
this.continueBtnLoading = false
}) })
// } else {
// request({
// url: '/api/scm/Voucher/' + this.dataForm.id,
// method: 'PUT',
// data: _data
// }).then((res) => {
// this.$message({
// message: res.msg,
// type: 'success',
// duration: 1000,
// onClose: () => {
// if (this.dataFormSubmitType == 2) return this.continueBtnLoading = false
// this.visible = false
// this.btnLoading = false
// this.$emit('refresh', true)
// }
// })
// }).catch(() => {
// this.btnLoading = false
// this.continueBtnLoading = false
// })
// }
}, },
addvoucherproductList() { addvoucherproductList() {
let item = { let item = {
@ -879,7 +613,7 @@ export default {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.dataForm.voucherProductBatchList.splice(index, 1); this.dataForm.contractRelationList.splice(index, 1);
}).catch(() => { }).catch(() => {
}); });
}, },

@ -0,0 +1,150 @@
<template>
<el-dialog title="选择合同" :close-on-click-modal="false" :visible.sync="visible"
class="JNPF-dialog JNPF-dialog_center" lock-scroll append-to-body width="1200px">
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent>
<el-col :span="10">
<el-form-item label="合同编码查询">
<el-input v-model="keyword" placeholder="合同编码查询" clearable
@keyup.enter.native="search()" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item>
<el-button type="primary" icon="el-icon-search"
@click="search()">{{ $t("common.search") }}
</el-button>
<el-button icon="el-icon-refresh-right" @click="refresh()">{{ $t("common.reset") }}
</el-button>
</el-form-item>
</el-col>
</el-form>
<div class="JNPF-common-search-box-right">
<el-tooltip effect="dark" :content="$t('common.refresh')" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false"
@click="search()" />
</el-tooltip>
</div>
</el-row>
<JNPF-table v-loading="listLoading" :data="list" hasC @selection-change="handleSelectionChange"
:border="false">
<el-table-column prop="contractName" label="合同名称" align="left">
</el-table-column>
<el-table-column prop="contractNumber" label="合同编码" align="left">
</el-table-column>
<el-table-column prop="contractNo" label="对方合同号" align="left">
</el-table-column>
<!-- <el-table-column prop="fieldList" label="字段配置" width="200" align="left">
</el-table-column> -->
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize"
@pagination="init" />
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="select()"></el-button>
</span>
</el-dialog>
</template>
<script>
import request from "@/utils/request";
import { GoodsList } from "@/api/extend/order";
export default {
data() {
return {
visible: false,
listLoading: true,
keyword: "",
list: [],
total: 0,
listQuery: {
currentPage: 1,
dataType: 0,
keyword: "",
menuId: "519520333632372869",
moduleId: "519502523443183621",
pageSize: 20,
sidx: "",
sort: "desc",
superQueryJson: ""
},
checked: []
};
},
methods: {
init(excludeIdList, val) {
debugger
this.visible = true
this.listLoading = true
if (excludeIdList && excludeIdList instanceof Array) {
this.excludeIdList = excludeIdList;
}
if (val && typeof (val) == 'string') {
if (val == 1 || val == "1") {
this.val = 2;
} else {
this.val = 1;
}
}
let query = {
...this.listQuery,
keyword: this.keyword,
excludeIdList: this.excludeIdList,
dataType: 0,
contractType: this.val,
}
request({
url: `/api/scm/ContractL/getList`,
method: 'post',
data: query
}).then(res => {
this.list = res.data.list
this.listLoading = false
this.total = res.data.pagination.total
})
},
refresh() {
this.keyword = "";
this.listQuery.currentPage = 1;
this.listQuery.pageSize = 20;
this.listQuery.sort = "desc";
this.listQuery.sidx = "";
this.init();
},
search() {
this.listQuery.currentPage = 1;
this.listQuery.pageSize = 20;
this.listQuery.sort = "desc";
this.listQuery.sidx = "";
this.init();
},
select() {
if (!this.checked.length) return;
this.visible = false;
this.$emit("refreshDataList", this.checked);
},
handleSelectionChange(val) {
this.checked = val;
}
}
};
</script>
<style lang="scss" scoped>
>>> .el-dialog__body {
height: 70vh;
padding: 0 0 10px !important;
display: flex;
flex-direction: column;
overflow: hidden;
.JNPF-common-search-box {
margin-bottom: 0;
.JNPF-common-search-box-right {
padding: 10px 10px 0 0;
}
}
}
</style>

@ -84,7 +84,7 @@ export default {
if (excludeIdList && excludeIdList instanceof Array) { if (excludeIdList && excludeIdList instanceof Array) {
this.excludeIdList = excludeIdList; this.excludeIdList = excludeIdList;
} }
if (val && typeof(val) == 'string') { if (val && typeof (val) == 'string') {
this.val = val; this.val = val;
} }
let query = { let query = {
@ -95,10 +95,6 @@ export default {
documentType: this.val, documentType: this.val,
} }
/* GoodsList(query).then(res => {
this.list = res.data.list
this.listLoading = false
}) */
request({ request({
url: `/api/scm/Voucher/getInspectionVoucherList`, url: `/api/scm/Voucher/getInspectionVoucherList`,
method: 'post', method: 'post',

Loading…
Cancel
Save