合同子表添加

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<ContractRelationEntity> getContractRelationList(String id);
//副表数据方法
String checkForm(ContractLForm form,int i);
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;
@Autowired
private ContractLPaymentService contractLPaymentService;
@Autowired
private ContractRelationService contractRelationService;
@Resource
private ContractLMapper contractLMapper;
@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())){
contractLNum++;
@ -553,6 +567,14 @@ public class ContractLServiceImpl extends ServiceImpl<ContractLMapper, ContractL
queryWrapper.lambda().eq(ContractLPaymentEntity::getContractId, id);
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修改*/
@Override
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());
if (ObjectUtil.isNotEmpty(productWarehouseEntity) && productWarehouseEntity.getInventoryType().equals("1") && ObjectUtil.isNotEmpty(businessCargoEntity)){
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.setProduceTime(DateUtil.getNowDate());

@ -644,4 +644,56 @@ public class ContractLController {
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;
import jnpf.model.contractrelation.ContractRelationForm;
import lombok.Data;
import java.util.List;
import java.math.BigDecimal;
@ -28,6 +29,9 @@ public class ContractLForm {
/** 子表数据 **/
@JsonProperty("contractLPaymentList")
private List<ContractLPaymentModel> contractLPaymentList;
/** 子表数据 **/
@JsonProperty("contractRelationList")
private List<ContractRelationModel> contractRelationList;
/** 乐观锁 **/
@JsonProperty("version")
private Integer version;

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

@ -34,316 +34,150 @@
<!-- 具体表单 -->
<el-col :span="24">
<jnpf-form-tip-item>
<JnpfGroupTitle content="基础信息" contentPosition="left">
<JnpfGroupTitle content="合同信息" contentPosition="left">
</JnpfGroupTitle>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8">
<jnpf-form-tip-item label="凭证类型" prop="voucherType">
<JnpfSelect v-model="dataForm.voucherType" @change="changeData('voucherType',-1)"
placeholder="请选择" clearable :style='{"width":"100%"}'
:options="voucherTypeOptions" :props="voucherTypeProps">
</JnpfSelect>
<jnpf-form-tip-item label="合同名称" prop="contractName">
<JnpfInput v-model="dataForm.contractName" disabled="true"
@change="changeData('contractName', -1)" placeholder="请输入" clearable
:style="{ width: '100%' }">
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8">
<jnpf-form-tip-item label="合同名称" prop="contractName">
<JnpfInput v-model="dataForm.contractName" @change="changeData('contractName', -1)"
placeholder="请输入" clearable :style="{ width: '100%' }">
<jnpf-form-tip-item label="合同编号" prop="contractNumber">
<JnpfInput v-model="dataForm.contractNumber" disabled="true"
@change="changeData('contractNumber', -1)" placeholder="请输入" clearable
:style="{ width: '100%' }">
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8">
<jnpf-form-tip-item label="制单时间" prop="preparationTime">
<JnpfDatePicker v-model="dataForm.preparationTime"
@change="changeData('preparationTime',-1)" :startTime="dateTime(false,1,1,'','')"
:endTime="dateTime(false,1,1,'','')" placeholder="请选择" clearable
:style='{"width":"100%"}' type="date" format="yyyy-MM-dd">
</JnpfDatePicker>
<jnpf-form-tip-item label="对方合同编号" prop="contractNo">
<JnpfInput v-model="dataForm.contractNo" disabled="true"
@change="changeData('contractNo', -1)" placeholder="请输入" clearable
:style="{ width: '100%' }">
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8">
<jnpf-form-tip-item label="配送方式" prop="deliveryType">
<JnpfSelect v-model="dataForm.deliveryType" @change="changeData('deliveryType',-1)"
placeholder="请选择" clearable :style='{"width":"100%"}'
:options="deliveryTypeOptions" :props="deliveryTypeProps">
<jnpf-form-tip-item label="合同类型" prop="contractType">
<JnpfSelect v-model="dataForm.contractType" @change="changeData('contractType',-1)"
placeholder="请选择" clearable :style='{"width":"100%"}' disabled="true"
:options="contractTypeOptions" :props="contractTypeProps">
</JnpfSelect>
</jnpf-form-tip-item>
</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">
<jnpf-form-tip-item label="发货单位" prop="supplierId">
<JnpfPopupSelect v-model="dataForm.supplierId" @change="changeData('supplierId',-1)"
:rowIndex="null" :formData="dataForm" :templateJson="interfaceRes.supplierId"
placeholder="请选择" propsValue="f_id" popupWidth="800px" popupTitle="选择数据"
popupType="dialog" relationField='f_full_name' field='supplierId'
interfaceId="522729853024209157" :pageSize="20"
:columnOptions="supplierIdcolumnOptions" clearable :style='{"width":"100%"}'>
</JnpfPopupSelect>
<jnpf-form-tip-item label="采购模式" prop="procurementModel">
<JnpfSelect v-model="dataForm.procurementModel"
@change="changeData('procurementModel',-1)" placeholder="请选择" clearable
:style='{"width":"100%"}' disabled="true" :options="procurementModelOptions"
:props="procurementModelProps">
</JnpfSelect>
</jnpf-form-tip-item>
</el-col>
<el-col :span="8">
<jnpf-form-tip-item label="收货单位" prop="customerId">
<JnpfPopupSelect v-model="dataForm.customerId" @change="changeData('customerId',-1)"
:rowIndex="null" :formData="dataForm" :templateJson="interfaceRes.customerId"
placeholder="请选择" propsValue="id" popupWidth="800px" popupTitle="选择数据"
popupType="dialog" relationField='name' field='customerId'
interfaceId="522693551289534725" :pageSize="20"
:columnOptions="customerIdcolumnOptions" clearable :style='{"width":"100%"}'>
</JnpfPopupSelect>
<el-col :span="24">
<jnpf-form-tip-item>
<JnpfGroupTitle content="关联信息" contentPosition="left">
</JnpfGroupTitle>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24">
<jnpf-form-tip-item label-width="0">
<div class="JNPF-common-title">
<h2></h2>
</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 label="订单序号" prop="orderNo" width="200">
<el-table-column label="销售合同编码" prop="purchaseContractCode"
v-if="dataForm.procurementModel==1">
<template slot="header" v-if="false">
<span class="required-sign">*</span>订单序号
<span class="required-sign">*</span>销售合同编码
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.orderNo"
<JnpfInput v-model="scope.row.purchaseContractCode"
@change="changeData('voucherproduct-spec',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="商品名称" prop="productId" width="300">
<template slot="header" v-if="true">
<span class="required-sign">*</span>商品名称
</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">
<el-table-column label="销售合同名称" prop="purchaseContractName"
v-if="dataForm.procurementModel==1">
<template slot="header" v-if="false">
<span class="required-sign">*</span>规格
<span class="required-sign">*</span>销售合同名称
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.spec"
@change="changeData('voucherproduct-spec',scope.$index)" placeholder="请输入"
<JnpfInput v-model="scope.row.purchaseContractName"
@change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="单位" prop="unit" width="100">
<template slot="header" v-if="false">
<span class="required-sign">*</span>单位
</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">
<el-table-column label="销售合同对方合同号" prop="purchaseContractNo"
v-if="dataForm.procurementModel==1">
<template slot="header" v-if="false">
<span class="required-sign">*</span>运费
<span class="required-sign">*</span>销售合同对方合同号
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.freight"
<JnpfInput v-model="scope.row.purchaseContractNo"
@change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="车牌号" prop="vehicleId" width="180">
<template slot="header" v-if="true">
<span class="required-sign">*</span>车牌号
</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">
<el-table-column label="采购合同编号" prop="purchaseContractCode"
v-if="dataForm.procurementModel==2">
<template slot="header" v-if="false">
<span class="required-sign">*</span>承运商
<span class="required-sign">*</span>采购合同编号
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.carrier"
@change="changeData('voucherproduct-batchNo',scope.$index)"
placeholder="请输入" clearable :style='{"width":"100%"}'>
<JnpfInput v-model="scope.row.purchaseContractCode"
@change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="起运地" prop="placeDispatch" width="250">
<template slot="header" v-if="true">
<span class="required-sign">*</span>起运地
</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">
<el-table-column label="采购合同名称" prop="purchaseContractName"
v-if="dataForm.procurementModel==2">
<template slot="header" v-if="false">
<span class="required-sign">*</span>销售合同编号
<span class="required-sign">*</span>采购合同名称
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.saleContractNo"
<JnpfInput v-model="scope.row.purchaseContractName"
@change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</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">
<span class="required-sign">*</span>销售额
<span class="required-sign">*</span>采购合同对方合同号
</template>
<template slot-scope="scope">
<JnpfInput v-model="scope.row.saleAmount"
<JnpfInput v-model="scope.row.purchaseContractNo"
@change="changeData('voucherproduct-remark',scope.$index)" placeholder="请输入"
clearable :style='{"width":"100%"}'>
</JnpfInput>
</template>
</el-table-column>
<el-table-column label="操作" width="50">
<template slot-scope="scope">
<el-button size="mini" type="text" class="JNPF-table-delBtn"
@ -351,9 +185,9 @@
</template>
</el-table-column>
</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>
</div> -->
</div>
</jnpf-form-tip-item>
</el-col>
<!-- 表单结束 -->
@ -361,6 +195,9 @@
</el-form>
<SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
ref="selectDialog" @select="addForSelect" @close="selectDialogVisible=false" />
<ContractList v-if="contractVisible" ref="contractListBox" @refreshDataList="initList" />
</el-row>
</div>
</transition>
@ -376,8 +213,10 @@ import { getDefaultCurrentValueUserId } from '@/api/permission/user'
import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize'
import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js'
import { thousandsFormat } from "@/components/Generator/utils/index"
import ContractList from '@/views/scm/publicPopup/ContractLBox'
export default {
components: {},
components: { ContractList },
props: [],
data() {
return {
@ -395,6 +234,7 @@ export default {
eventType: '',
userBoxVisible: false,
selectDialogVisible: false,
contractVisible: false,
currTableConf: {},
dataValueAll: {},
addTableConf: {
@ -441,41 +281,19 @@ export default {
Vmodel: "",
currVmodel: "",
dataForm: {
voucherType: undefined,
preparationTime: undefined,
deliveryType: undefined,
supplierId: undefined,
customerId: undefined,
documentType: "2",
voucherStatus: "2",
businessType: "2",
voucherProductBatchList: [],
id: undefined,
contractName: undefined,
contractNumber: undefined,
contractNo: undefined,
contractType: undefined,
procurementModel: undefined,
contractRelationList: [],
version: 0,
},
tableRequiredData: {},
dataRule:
{
voucherType: [
{
required: true,
message: '请选择',
trigger: 'change'
},
],
preparationTime: [
{
required: true,
message: '请选择',
trigger: 'change'
},
],
deliveryType: [
{
required: true,
message: '请选择',
trigger: 'change'
},
],
supplierId: [
{
required: true,
@ -491,18 +309,13 @@ export default {
},
],
},
voucherTypeOptions: [{ "fullName": "磅单", "id": "1" }, { "fullName": "收据", "id": "2" }, { "fullName": "其他", "id": "3" }],
voucherTypeProps: { "label": "fullName", "value": "id" },
deliveryTypeOptions: [{ "fullName": "仓配", "id": "1" }, { "fullName": "直送", "id": "2" }],
deliveryTypeProps: { "label": "fullName", "value": "id" },
supplierIdcolumnOptions: [{ "label": "机构编码", "value": "f_en_code" }, { "label": "机构名称", "value": "f_full_name" }],
customerIdcolumnOptions: [{ "label": "客户名称", "value": "name" }, { "label": "国家", "value": "country" }, { "label": "地址", "value": "address" }, { "label": "电话", "value": "phone" }],
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" },
contractTypeOptions: [{ "fullName": "采购合同", "id": "1" }, { "fullName": "销售合同", "id": "2" }],
contractTypeProps: { "label": "fullName", "value": "id" },
procurementModelOptions: [{ "fullName": "以销定采", "id": "1" }, { "fullName": "以采定销", "id": "2" }],
procurementModelProps: { "label": "fullName", "value": "id" },
voucherproductproductIdcolumnOptions: [{ "label": "商品编码", "value": "code" }, { "label": "商品名称", "value": "name" }, { "label": "规格", "value": "spec" },],
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" }],
@ -550,30 +363,56 @@ export default {
},
mounted() { },
methods: {
//
initContractData(selectData) {
const data = selectData
if (!data) {
debugger
// const id = selectData[0].id
const id = selectData
if (!id) {
return
}
let id
data.forEach(item => {
id = item.id
});
request({
url: `/api/scm/ContractL/getList`,
method: 'post',
data: id
url: `/api/scm/ContractL/relation/${id}`,
method: "Get",
// data: data
}).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
this.dataForm.voucherProductBatchList = voucherInfo.voucherProductList
this.dataForm.supplierId = voucherInfo.customerId
this.dataForm.customerId = ''
choice(val) {
this.contractVisible = true
let excludeIdList = [];
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() {
this.index--
if (this.index === 0) {
@ -652,98 +491,7 @@ export default {
},
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() {
this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
},
@ -789,30 +537,37 @@ export default {
//
dataFormSubmit(type) {
this.dataFormSubmitType = type ? type : 0
this.$refs['formRef'].validate((valid) => {
if (valid) {
if (!this.voucherproductExist()) return
this.request()
}
})
// this.$refs['formRef'].validate((valid) => {
// if (valid) {
// if (!this.voucherproductExist()) return
// this.request()
// }
// })
this.request()
},
request() {
debugger
let _data = this.dataList()
if (this.dataFormSubmitType == 2) {
this.continueBtnLoading = true
} else {
this.btnLoading = true
}
// if (!this.dataForm.id) {
// if (this.dataFormSubmitType == 2) {
// this.continueBtnLoading = true
// } else {
// this.btnLoading = true
// }
// debugger
let id = this.dataForm.id
request({
url: '/api/scm/Voucher/batchCreate',
method: 'post',
// url: '/api/scm/ContractL/batch/',
url: `/api/scm/ContractL/batch/${id}`,
method: 'put',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
if (this.dataFormSubmitType == 2) {
this.$nextTick(() => {
@ -826,33 +581,12 @@ export default {
this.btnLoading = false
this.$emit('refresh', true)
}
})
}).catch(() => {
this.btnLoading = false
this.continueBtnLoading = false
// this.$router.back(1)
})
// } 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() {
let item = {
@ -879,7 +613,7 @@ export default {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
this.dataForm.voucherProductBatchList.splice(index, 1);
this.dataForm.contractRelationList.splice(index, 1);
}).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) {
this.excludeIdList = excludeIdList;
}
if (val && typeof(val) == 'string') {
if (val && typeof (val) == 'string') {
this.val = val;
}
let query = {
@ -95,10 +95,6 @@ export default {
documentType: this.val,
}
/* GoodsList(query).then(res => {
this.list = res.data.list
this.listLoading = false
}) */
request({
url: `/api/scm/Voucher/getInspectionVoucherList`,
method: 'post',

Loading…
Cancel
Save