diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeDetailServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeDetailServiceImpl.java index 00de6a31..8e0d0acc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeDetailServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeDetailServiceImpl.java @@ -140,6 +140,7 @@ public class AftersalesComplaintNoticeDetailServiceImpl implements IAftersalesCo complaintNoticeDetail.setCreateBy(loginName); complaintNoticeDetail.setCreateTime(DateUtils.getNowDate()); String makeNo = complaintNoticeDetail.getMakeNo(); + int enterpriseSum = 0; //保存信息到AftersalesComplaintNotice数据表中 complaintNotice.setComplaintNoticeCode(newCode); complaintNotice.setCreateBy(loginName); @@ -171,10 +172,13 @@ public class AftersalesComplaintNoticeDetailServiceImpl implements IAftersalesCo complaintNoticeDetail.setAdverseReportUrl(aftersalesMaterialVO.getAdverseReportUrl()); // int totalQuantity = warehouseOutOrderMapper.sumOutOrderQuantityByMakeNo(makeNo); complaintNoticeDetail.setShippedGoodsSum(aftersalesMaterialVO.getShippedGoodsSum()); - complaintNotice.setEnterpriseSum(aftersalesMaterialVO.getShippedGoodsSum()); + String snCodes = aftersalesMaterialVO.getSnCode(); + String[] snCodeArray = snCodes.split(","); + enterpriseSum += snCodeArray.length; aftersalesComplaintNoticeDetailMapper.insertAftersalesComplaintNoticeDetail(complaintNoticeDetail); } - } + complaintNotice.setEnterpriseSum(enterpriseSum); + } complaintNoticeMapper.insertAftersalesComplaintNotice(complaintNotice); return 1; } @@ -191,6 +195,7 @@ public class AftersalesComplaintNoticeDetailServiceImpl implements IAftersalesCo { AftersalesComplaintNotice aftersalesComplaintNotice = new AftersalesComplaintNotice(); String loginName = ShiroUtils.getLoginName(); + int enterpriseSum = 0; //更新主表内容 aftersalesComplaintNotice.setComplaintNoticeCode(aftersalesComplaintNoticeDetail.getComplaintNoticeCode()); aftersalesComplaintNotice.setUpdateBy(loginName); @@ -201,44 +206,48 @@ public class AftersalesComplaintNoticeDetailServiceImpl implements IAftersalesCo aftersalesComplaintNotice.setCustomerName(aftersalesComplaintNoticeDetail.getCustomerName()); aftersalesComplaintNotice.setCustomerId(aftersalesComplaintNoticeDetail.getCustomerId()); aftersalesComplaintNotice.setClosingProcedures(aftersalesComplaintNoticeDetail.getClosingProcedures()); - complaintNoticeMapper.updateAftersalesComplaintNotice(aftersalesComplaintNotice); String complaintNoticeCode = aftersalesComplaintNoticeDetail.getComplaintNoticeCode(); List aftersalesMaterialVOs = aftersalesComplaintNoticeDetail.getAftersalesMaterialVOs(); //如果前面相关物料信息为空 if (StringUtils.isEmpty(aftersalesMaterialVOs)){ //删除子表中的数据 int result = aftersalesComplaintNoticeDetailMapper.deleteAftersalesComplaintNoticeDetailByCode(complaintNoticeCode); - return result; - } - //如果有物料信息 - int result = aftersalesComplaintNoticeDetailMapper.deleteAftersalesComplaintNoticeDetailByCode(complaintNoticeCode); - for (AftersalesMaterialVO aftersalesMaterialVO : aftersalesMaterialVOs) { - AftersalesComplaintNoticeDetail complaintNoticeDetail = new AftersalesComplaintNoticeDetail(); - complaintNoticeDetail.setComplaintNoticeCode(complaintNoticeCode); - complaintNoticeDetail.setCreateBy(aftersalesComplaintNoticeDetail.getCreateBy()); - complaintNoticeDetail.setCreateTime(aftersalesComplaintNoticeDetail.getCreateTime()); - complaintNoticeDetail.setUpdateBy(loginName); - complaintNoticeDetail.setUpdateTime(DateUtils.getNowDate()); - complaintNoticeDetail.setCustomerId(aftersalesComplaintNoticeDetail.getCustomerId()); - complaintNoticeDetail.setCustomerName(aftersalesComplaintNoticeDetail.getCustomerName()); - complaintNoticeDetail.setEmergencyDegree(aftersalesComplaintNoticeDetail.getEmergencyDegree()); - complaintNoticeDetail.setMakeNo(aftersalesComplaintNoticeDetail.getMakeNo()); - complaintNoticeDetail.setRemark(aftersalesComplaintNoticeDetail.getRemark()); - complaintNoticeDetail.setMaterialType(aftersalesMaterialVO.getMaterialType()); - complaintNoticeDetail.setMaterialUnit(aftersalesMaterialVO.getMaterialUnit()); - complaintNoticeDetail.setMaterialProcessMethod(aftersalesMaterialVO.getMaterialProcessMethod()); - complaintNoticeDetail.setMaterialName(aftersalesMaterialVO.getMaterialName()); - complaintNoticeDetail.setMaterialDescribe(aftersalesMaterialVO.getMaterialDescribe()); - complaintNoticeDetail.setMaterialNo(aftersalesMaterialVO.getMaterialNo()); - complaintNoticeDetail.setMaterialPhotourl(aftersalesMaterialVO.getMaterialPhotourl()); - complaintNoticeDetail.setMaterialBrand(aftersalesMaterialVO.getMaterialBrand()); - complaintNoticeDetail.setComplaintProblem(aftersalesMaterialVO.getComplaintProblem()); - complaintNoticeDetail.setSnCode(aftersalesMaterialVO.getSnCode()); - complaintNoticeDetail.setAdverseReportUrl(aftersalesMaterialVO.getAdverseReportUrl()); - complaintNoticeDetail.setShippedGoodsSum(aftersalesMaterialVO.getShippedGoodsSum()); - complaintNoticeDetail.setClosingProcedures("1"); - aftersalesComplaintNoticeDetailMapper.insertAftersalesComplaintNoticeDetail(complaintNoticeDetail); + }else{ + //如果有物料信息 + int result = aftersalesComplaintNoticeDetailMapper.deleteAftersalesComplaintNoticeDetailByCode(complaintNoticeCode); + for (AftersalesMaterialVO aftersalesMaterialVO : aftersalesMaterialVOs) { + AftersalesComplaintNoticeDetail complaintNoticeDetail = new AftersalesComplaintNoticeDetail(); + complaintNoticeDetail.setComplaintNoticeCode(complaintNoticeCode); + complaintNoticeDetail.setCreateBy(aftersalesComplaintNoticeDetail.getCreateBy()); + complaintNoticeDetail.setCreateTime(aftersalesComplaintNoticeDetail.getCreateTime()); + complaintNoticeDetail.setUpdateBy(loginName); + complaintNoticeDetail.setUpdateTime(DateUtils.getNowDate()); + complaintNoticeDetail.setCustomerId(aftersalesComplaintNoticeDetail.getCustomerId()); + complaintNoticeDetail.setCustomerName(aftersalesComplaintNoticeDetail.getCustomerName()); + complaintNoticeDetail.setEmergencyDegree(aftersalesComplaintNoticeDetail.getEmergencyDegree()); + complaintNoticeDetail.setMakeNo(aftersalesComplaintNoticeDetail.getMakeNo()); + complaintNoticeDetail.setRemark(aftersalesComplaintNoticeDetail.getRemark()); + complaintNoticeDetail.setMaterialType(aftersalesMaterialVO.getMaterialType()); + complaintNoticeDetail.setMaterialUnit(aftersalesMaterialVO.getMaterialUnit()); + complaintNoticeDetail.setMaterialProcessMethod(aftersalesMaterialVO.getMaterialProcessMethod()); + complaintNoticeDetail.setMaterialName(aftersalesMaterialVO.getMaterialName()); + complaintNoticeDetail.setMaterialDescribe(aftersalesMaterialVO.getMaterialDescribe()); + complaintNoticeDetail.setMaterialNo(aftersalesMaterialVO.getMaterialNo()); + complaintNoticeDetail.setMaterialPhotourl(aftersalesMaterialVO.getMaterialPhotourl()); + complaintNoticeDetail.setMaterialBrand(aftersalesMaterialVO.getMaterialBrand()); + complaintNoticeDetail.setComplaintProblem(aftersalesMaterialVO.getComplaintProblem()); + complaintNoticeDetail.setSnCode(aftersalesMaterialVO.getSnCode()); + complaintNoticeDetail.setAdverseReportUrl(aftersalesMaterialVO.getAdverseReportUrl()); + complaintNoticeDetail.setShippedGoodsSum(aftersalesMaterialVO.getShippedGoodsSum()); + complaintNoticeDetail.setClosingProcedures("1"); + String snCodes = aftersalesMaterialVO.getSnCode(); + String[] snCodeArray = snCodes.split(","); + enterpriseSum += snCodeArray.length; + aftersalesComplaintNoticeDetailMapper.insertAftersalesComplaintNoticeDetail(complaintNoticeDetail); + } } + aftersalesComplaintNotice.setEnterpriseSum(enterpriseSum); + complaintNoticeMapper.updateAftersalesComplaintNotice(aftersalesComplaintNotice); return 1; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/service/ICommonService.java b/ruoyi-admin/src/main/java/com/ruoyi/common/service/ICommonService.java index da2b1b97..891ffdd6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/service/ICommonService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/service/ICommonService.java @@ -18,4 +18,9 @@ public interface ICommonService { AjaxResult delete(Long id); void deleteByIds(List ids); + + /** + * 通用不分文件类型的单文件上传请求 + */ + AjaxResult uploadSingleAllClassFile(MultipartFile file); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/service/impl/CommonServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/common/service/impl/CommonServiceImpl.java index 1b28df27..e64693ec 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/service/impl/CommonServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/service/impl/CommonServiceImpl.java @@ -115,6 +115,48 @@ public class CommonServiceImpl implements ICommonService { } } + + /** + * 通用不分文件类型的单文件上传请求 + */ + @Override + public AjaxResult uploadSingleAllClassFile(MultipartFile file) { + try + { + String loginName = ShiroUtils.getLoginName(); + // 上传文件路径 + String filePath = RuoYiConfig.getUploadPath(); + // 上传并返回新文件名称 + String fileName = FileUploadUtils.upload(filePath, file); + String url = serverConfig.getUrl() + fileName; + String originalFilename = file.getOriginalFilename(); + String fileExt = originalFilename.substring(originalFilename.lastIndexOf(".")+1); + Long fileSize = file.getSize(); + // 保存文件信息 + SysAttachFile sysAttachFile = new SysAttachFile(); + sysAttachFile.setName(originalFilename); + sysAttachFile.setUrl(url); + sysAttachFile.setSize(fileSize); + sysAttachFile.setExt(fileExt); + sysAttachFile.setPath(fileName); + sysAttachFile.setCreateBy(loginName); + sysAttachFile.setCreateTime(DateUtils.getNowDate()); + attachFileService.insertSysAttachFile(sysAttachFile); + Long attachId = sysAttachFile.getAttachId(); + //创建一个ajax结果,这个ajax继承map集合,相当于一个map集合 + AjaxResult ajax = new AjaxResult(); + ajax.put("url",url); + ajax.put("name", originalFilename); + ajax.put("attachId",attachId); + ajax.put("fileName", fileName); + return ajax; + } + catch (Exception e) + { + return AjaxResult.error(e.getMessage()); + } + } + @Override public AjaxResult delete(Long id) { SysAttachFile attachFile = attachFileService.selectSysAttachFileById(id); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialTaxInvoiceController.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialTaxInvoiceController.java index 4d34a4cc..3e68a1ee 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialTaxInvoiceController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialTaxInvoiceController.java @@ -102,9 +102,9 @@ public class FinancialTaxInvoiceController extends BaseController String commonCurrency = taxInvoice.getCommonCurrency(); mmap.put("taxInvoice", taxInvoice); if ("1".equals(commonCurrency)){ - return prefix + "/auditInvoiceRMB"; + return prefix + "/auditInvoiceRmb"; }else { - return prefix + "/auditInvoiceUSD"; + return prefix + "/auditInvoiceUsd"; } } @@ -133,9 +133,9 @@ public class FinancialTaxInvoiceController extends BaseController String commonCurrency = taxInvoice.getCommonCurrency(); mmap.put("taxInvoice", taxInvoice); if ("1".equals(commonCurrency)){ - return prefix + "/uploadInvoiceRMB"; + return prefix + "/uploadInvoiceRmb"; }else { - return prefix + "/uploadInvoiceUSD"; + return prefix + "/uploadInvoiceUsd"; } } @@ -163,9 +163,9 @@ public class FinancialTaxInvoiceController extends BaseController FinancialTaxInvoice taxInvoice = financialTaxInvoiceService.selectFinancialTaxInvoiceById(taxInvoiceId); mmap.put("taxInvoice", taxInvoice); if ("1".equals(taxInvoice.getCommonCurrency())){ - return prefix + "/auditInvoiceRMBDetail"; + return prefix + "/auditInvoiceRmbDetail"; }else { - return prefix + "/auditInvoiceUSDDetail"; + return prefix + "/auditInvoiceUsdDetail"; } } @@ -190,9 +190,9 @@ public class FinancialTaxInvoiceController extends BaseController FinancialTaxInvoice taxInvoice = financialTaxInvoiceService.selectFinancialTaxInvoiceWithAttachById(taxInvoiceId); mmap.put("taxInvoice", taxInvoice); if ("1".equals(taxInvoice.getCommonCurrency())){ - return prefix + "/uploadInvoiceRMBDetail"; + return prefix + "/uploadInvoiceRmbDetail"; }else { - return prefix + "/uploadInvoiceUSDDetail"; + return prefix + "/uploadInvoiceUsdDetail"; } } @@ -210,6 +210,34 @@ public class FinancialTaxInvoiceController extends BaseController } + /** + * 国税发票待审核详情 + */ + @GetMapping("/beforeAuditInvoiceDetail/{taxInvoiceId}") + public String beforeAuditInvoiceDetail(@PathVariable("taxInvoiceId") Long taxInvoiceId, ModelMap mmap){ + FinancialTaxInvoice taxInvoice = financialTaxInvoiceService.selectFinancialTaxInvoiceById(taxInvoiceId); + mmap.put("taxInvoice", taxInvoice); + if ("1".equals(taxInvoice.getCommonCurrency())){ + return prefix + "/beforeAuditInvoiceRmbDetail"; + }else { + return prefix + "/beforeAuditInvoiceUsdDetail"; + } + } + + /** + * 保存国税发票待审核详情 + */ + @Log(title = "国税发票", businessType = BusinessType.UPDATE) + @PostMapping("/beforeAuditInvoiceDetail") + @ResponseBody + public AjaxResult beforeAuditInvoiceDetailSave(FinancialTaxInvoice financialTaxInvoice) + { + return toAjax(financialTaxInvoiceService.detailFinancialTaxInvoice(financialTaxInvoice)); + } + + + + /** * 国税发票物料列表展示 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialTaxInvoice.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialTaxInvoice.java index bcec91d0..c534355a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialTaxInvoice.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialTaxInvoice.java @@ -5,6 +5,7 @@ import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.system.domain.SysAttachFile; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.annotation.Excel; @@ -186,6 +187,9 @@ public class FinancialTaxInvoice extends BaseEntity /** 国税发票物料集合*/ private List invoiceMaterialList; + + private List sysAttachFiles; + public void setTaxInvoiceId(Long taxInvoiceId) { this.taxInvoiceId = taxInvoiceId; @@ -600,6 +604,14 @@ public class FinancialTaxInvoice extends BaseEntity this.photoAttachId = photoAttachId; } + public List getSysAttachFiles() { + return sysAttachFiles; + } + + public void setSysAttachFiles(List sysAttachFiles) { + this.sysAttachFiles = sysAttachFiles; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialTaxInvoiceServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialTaxInvoiceServiceImpl.java index d76860dc..b45207ab 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialTaxInvoiceServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialTaxInvoiceServiceImpl.java @@ -17,6 +17,7 @@ import com.ruoyi.financial.mapper.FinancialTaxInvoiceHistoryMapper; import com.ruoyi.financial.mapper.FinancialTaxInvoiceMaterialMapper; import com.ruoyi.financial.service.IFinancialTaxInvoiceMaterialService; import com.ruoyi.system.domain.SysAttach; +import com.ruoyi.system.domain.SysAttachFile; import com.ruoyi.system.domain.SysCustomerVo; import com.ruoyi.system.domain.SysSalesOrder; import com.ruoyi.system.mapper.SysCustomerMapper; @@ -317,35 +318,50 @@ public class FinancialTaxInvoiceServiceImpl implements IFinancialTaxInvoiceServi financialTaxInvoice.setUpdateTime(new Date()); financialTaxInvoice.setUpdateBy(loginName); - Long taxInvoiceId = financialTaxInvoice.getTaxInvoiceId(); + //Long taxInvoiceId = financialTaxInvoice.getTaxInvoiceId(); String fileIdStr = financialTaxInvoice.getFileIdStr(); Long attachId = null; - if (StringUtils.isNotEmpty(fileIdStr)) { - SysAttach tempAttach = new SysAttach(); - tempAttach.setSourceType("taxInvoice"); - tempAttach.setRelId(taxInvoiceId); - List sysAttaches = attachService.selectSysAttachList(tempAttach); - if (CollectionUtils.isEmpty(sysAttaches)){ - //保存新的文件附件关联 - SysAttach sysAttach = new SysAttach(); - sysAttach.setSourceType("taxInvoice"); - sysAttach.setRelId(taxInvoiceId); - sysAttach.setCreateTime(new Date()); - sysAttach.setCreateBy(loginName); - attachService.insertSysAttach(sysAttach); - attachId = sysAttach.getId(); - }else { - SysAttach sysAttach = sysAttaches.get(0); - sysAttach.setUpdateBy(loginName); - sysAttach.setUpdateTime(new Date()); - attachService.updateSysAttach(sysAttach); - attachId = sysAttach.getId(); - } - //更新附件与文件关联 - List fileIdList = Arrays.asList(fileIdStr.split(",")); - attachFileService.updateAttachIdByIdList(attachId,fileIdList); + + if (StringUtils.isNotEmpty(fileIdStr)){ + //获取业务的id + Long taxInvoiceId = financialTaxInvoice.getTaxInvoiceId(); + //根据文件的id拿到在数据库中的那条文件数据 + SysAttachFile sysAttachFile = attachFileService.selectSysAttachFileById(Long.valueOf(fileIdStr)); + sysAttachFile.setBusinessKey("financialTaxInvoice"); + //把文件数据中的业务Id属性赋值 + sysAttachFile.setBusinessId(taxInvoiceId); + sysAttachFile.setUpdateBy(loginName); + sysAttachFile.setUpdateTime(new Date()); + //更新文件数据库中的这条信息 + attachFileService.updateSysAttachFile(sysAttachFile); } +// if (StringUtils.isNotEmpty(fileIdStr)) { +// SysAttach tempAttach = new SysAttach(); +// tempAttach.setSourceType("taxInvoice"); +// tempAttach.setRelId(taxInvoiceId); +// List sysAttaches = attachService.selectSysAttachList(tempAttach); +// if (CollectionUtils.isEmpty(sysAttaches)){ +// //保存新的文件附件关联 +// SysAttach sysAttach = new SysAttach(); +// sysAttach.setSourceType("taxInvoice"); +// sysAttach.setRelId(taxInvoiceId); +// sysAttach.setCreateTime(new Date()); +// sysAttach.setCreateBy(loginName); +// attachService.insertSysAttach(sysAttach); +// attachId = sysAttach.getId(); +// }else { +// SysAttach sysAttach = sysAttaches.get(0); +// sysAttach.setUpdateBy(loginName); +// sysAttach.setUpdateTime(new Date()); +// attachService.updateSysAttach(sysAttach); +// attachId = sysAttach.getId(); +// } +// //更新附件与文件关联 +// List fileIdList = Arrays.asList(fileIdStr.split(",")); +// attachFileService.updateAttachIdByIdList(attachId,fileIdList); +// } + if ("2".equals(taxInvoiceStatus)) { //审核通过 invoiceHistory.setTaxInvoiceStatus(taxInvoiceStatus); @@ -376,7 +392,12 @@ public class FinancialTaxInvoiceServiceImpl implements IFinancialTaxInvoiceServi */ @Override public FinancialTaxInvoice selectFinancialTaxInvoiceWithAttachById(Long taxInvoiceId) { - FinancialTaxInvoice financialTaxInvoice = financialTaxInvoiceMapper.selectFinancialTaxInvoiceWithAttachById(taxInvoiceId); + FinancialTaxInvoice financialTaxInvoice = financialTaxInvoiceMapper.selectFinancialTaxInvoiceById(taxInvoiceId); + + Long businessId = taxInvoiceId; + List attachFileList = attachFileService.selectSysAttachFileByBusinessId(businessId); + + financialTaxInvoice.setSysAttachFiles(attachFileList); return financialTaxInvoice; } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysAttachFile.java b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysAttachFile.java index e29b54b9..37cecd54 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysAttachFile.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/domain/SysAttachFile.java @@ -45,6 +45,14 @@ public class SysAttachFile extends BaseEntity @Excel(name = "文件路径") private String path; + + /** 某个业务的Id */ + private Long businessId; + + + /** 某个业务的key */ + private String businessKey; + public void setId(Long id) { this.id = id; @@ -117,6 +125,23 @@ public class SysAttachFile extends BaseEntity this.path = path; } + + public Long getBusinessId() { + return businessId; + } + + public void setBusinessId(Long businessId) { + this.businessId = businessId; + } + + public String getBusinessKey() { + return businessKey; + } + + public void setBusinessKey(String businessKey) { + this.businessKey = businessKey; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysAttachFileMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysAttachFileMapper.java index cba08e65..38cf4286 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysAttachFileMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysAttachFileMapper.java @@ -64,4 +64,9 @@ public interface SysAttachFileMapper List selectListByAttachId(Long attachId); int updateAttachIdByIdList(@Param("attachId")Long attachId,@Param("idList")List idList); + + /** + * 通过业务id查询附件集合 + * */ + List selectSysAttachFileByBusinessId(Long businessId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysAttachFileService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysAttachFileService.java index 08788104..d19590cc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysAttachFileService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysAttachFileService.java @@ -65,4 +65,10 @@ public interface ISysAttachFileService int delFileAndAttachById(Long id); int updateAttachIdByIdList(Long attachId,List idList); + + + /** + * 通过业务id查询附件集合 + * */ + List selectSysAttachFileByBusinessId(Long businessId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysAttachFileServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysAttachFileServiceImpl.java index 694254fa..cfe053f3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysAttachFileServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysAttachFileServiceImpl.java @@ -127,4 +127,13 @@ public class SysAttachFileServiceImpl implements ISysAttachFileService public int updateAttachIdByIdList(Long attachId,List idList) { return sysAttachFileMapper.updateAttachIdByIdList(attachId,idList); } + + /** + * 通过业务id查询附件集合 + * */ + @Override + public List selectSysAttachFileByBusinessId(Long businessId) { + return sysAttachFileMapper.selectSysAttachFileByBusinessId(businessId); + + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index f7e7a650..95585512 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -106,6 +106,19 @@ public class CommonController return ajaxResult; } + + /** + * 通用不分文件类型的单文件上传请求 + */ + @PostMapping("/uploadSingleAllClassFile") + @ResponseBody + public AjaxResult uploadSingleAllClassFile(@RequestParam("file") MultipartFile file) throws Exception + { + AjaxResult ajaxResult = commonService.uploadSingleAllClassFile(file); + return ajaxResult; + } + + /** * 删除文件 */ diff --git a/ruoyi-admin/src/main/resources/mapper/erp/ErpMaterialMapper.xml b/ruoyi-admin/src/main/resources/mapper/erp/ErpMaterialMapper.xml index 4b2ed16e..dfe23457 100644 --- a/ruoyi-admin/src/main/resources/mapper/erp/ErpMaterialMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/erp/ErpMaterialMapper.xml @@ -116,7 +116,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and erp.supplier_id = #{supplierId} and erp.business_members = #{businessMembers} - order by erp.create_time desc + order by erp.audit_status asc, erp.create_time desc @@ -44,6 +46,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where attach_id = #{attachId} + + insert into sys_attach_file @@ -59,6 +66,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" size, url, path, + business_id, + business_key, #{delFlag}, @@ -73,6 +82,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{size}, #{url}, #{path}, + #{businessId}, + #{businessKey}, @@ -91,6 +102,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" size = #{size}, url = #{url}, path = #{path}, + business_id = #{businessId}, + business_key = #{businessKey}, where id = #{id} diff --git a/ruoyi-admin/src/main/resources/templates/erp/material/material.html b/ruoyi-admin/src/main/resources/templates/erp/material/material.html index 09694178..e4e17e2d 100644 --- a/ruoyi-admin/src/main/resources/templates/erp/material/material.html +++ b/ruoyi-admin/src/main/resources/templates/erp/material/material.html @@ -126,6 +126,8 @@ pageList: [10, 25, 50], pageSize: 10, showColumns: true, + sortable: true, // 是否启用排序 + sortStable: true, modalName: "物料信息", fixedColumns: true, // 启用冻结列 fixedRightNumber: 1, // 冻结右列个数 @@ -151,7 +153,7 @@ {title: '申请人',field: 'applyUserName', formatter: function(value, row, index) {return '' + (value ? value : "-") + '';} }, - {title: '申请时间',field: 'applyTime',}, + {title: '申请时间',field: 'applyTime',sortable: true,}, {title: '上次更新时间',field: 'updateTime',}, {title: '当前状态',field: 'taskName',align: 'center', formatter: function(value, row, index) { diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRMB.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRmb.html similarity index 100% rename from ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRMB.html rename to ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRmb.html diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRMBDetail.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRmbDetail.html similarity index 100% rename from ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRMBDetail.html rename to ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceRmbDetail.html diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUSD.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUsd.html similarity index 100% rename from ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUSD.html rename to ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUsd.html diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUSDDetail.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUsdDetail.html similarity index 99% rename from ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUSDDetail.html rename to ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUsdDetail.html index 0144dc37..13e0eacc 100644 --- a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUSDDetail.html +++ b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/auditInvoiceUsdDetail.html @@ -236,7 +236,7 @@ function submitHandler() { - $.operate.save(prefix + "/auditInvoiceDetail", $('#form-taxInvoice-form-taxInvoice-auditUsdDetail').serialize()); + $.operate.save(prefix + "/auditInvoiceDetail", $('#form-taxInvoice-auditUsdDetail').serialize()); } diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/beforeAuditInvoiceRmbDetail.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/beforeAuditInvoiceRmbDetail.html new file mode 100644 index 00000000..c0e08df8 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/beforeAuditInvoiceRmbDetail.html @@ -0,0 +1,334 @@ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + % +
+
+
+ +
+ +
+
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+ + +
+ +
+
+ + +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+

开票物料

+
+
+
+
+
+
+
+ +
+
+

开票额度

+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + % +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/beforeAuditInvoiceUsdDetail.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/beforeAuditInvoiceUsdDetail.html new file mode 100644 index 00000000..b7742c79 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/beforeAuditInvoiceUsdDetail.html @@ -0,0 +1,330 @@ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + % +
+
+
+ +
+ +
+
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+ + +
+ +
+
+ + +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+

开票物料

+
+
+
+
+
+
+
+ +
+
+

开票额度

+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + % +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/taxInvoice.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/taxInvoice.html index c89d1aba..3f3ec24c 100644 --- a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/taxInvoice.html +++ b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/taxInvoice.html @@ -261,23 +261,40 @@ align: 'center', formatter: function(value, row, index) { var actions = []; - actions.push('编辑 '); + //actions.push('编辑 '); + + //待审核详情 + if (row.taxInvoiceStatus=="0"){ + actions.push('详情'); + } + if (row.taxInvoiceStatus=="0" && row.commonCurrency=="1"){ actions.push('审核'); - actions.push('详情'); } + if (row.taxInvoiceStatus=="0" && row.commonCurrency=="2"){ actions.push('审核'); - actions.push('详情'); } + //审核详情 + if (row.taxInvoiceStatus=="1"){ + actions.push('详情'); + } + + // if (row.taxInvoiceStatus=="1" ){ + // actions.push('详情'); + // } + if (row.taxInvoiceStatus=="1" && row.commonCurrency=="1"){ actions.push('上传发票'); - actions.push('详情'); } + if (row.taxInvoiceStatus=="1" && row.commonCurrency=="2"){ actions.push('上传发票'); } - + //上传发票详情 + if (row.taxInvoiceStatus=="2" ){ + actions.push('详情'); + } return actions.join(''); } }] @@ -285,6 +302,12 @@ $.table.init(options); }); + //待审核页面详情 + function beforeAuditInvoiceDetail(taxInvoiceId){ + var url = prefix + "/beforeAuditInvoiceDetail/" + taxInvoiceId; + $.modal.open("详情",url); + } + //审核页面详情 @@ -416,7 +439,7 @@ var iframeWin = window[layero.find('iframe')[0]['name']]; var auditRmbData = iframeWin.$('#form-taxInvoice-uploadUsd').serialize(); var taxInvoiceStatus = "3"; - var url= prefix + "/auditInvoice"; + var url= prefix + "/uploadInvoice"; $.operate.save(url, auditRmbData + '&taxInvoiceStatus=' + taxInvoiceStatus); // 添加 false 表示审核拒绝 layer.close(index); $('#bootstrap-table').bootstrapTable('refresh'); // 刷新表格 diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRMB.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRmb.html similarity index 96% rename from ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRMB.html rename to ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRmb.html index 2ed94273..0edd8825 100644 --- a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRMB.html +++ b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRmb.html @@ -273,7 +273,7 @@ var taxInvoice = [[${taxInvoice}]]; var prefix = ctx + "financial/taxInvoice"; - $("#form-taxInvoice-auditRmb").validate({ + $("#form-taxInvoice-uploadRmb").validate({ focusCleanup: true }); @@ -380,6 +380,8 @@ uploadUrl: ctx + "common/uploadSingleFile", maxFileCount: 1, autoReplace: true, + allowedFileExtensions: ['bmp', 'gif', 'jpg', 'jpeg', 'png', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'html', 'htm', 'txt', 'text', 'rar', 'zip', 'gz', 'bz2', 'pdf', 'bpmn', 'bar', 'db'], + previewFileType: ['image', 'txt', 'text', 'pdf', 'bpmn', 'bar', 'db',"doc","docx"], showUpload: false, // 不显示上传按钮 showCaption: false, // 不显示标题 showRemove: true, // 显示移除按钮 @@ -398,8 +400,9 @@ // 可以在这里设置一些上传前的逻辑 }).on('fileuploaded', function (event, data, previewId, index) { log.info("data:" + JSON.stringify(data)) - var response = data.response; - + var response = data.response; + // var rsp = data.response; + // document.getElementById('attachFileId').value = rsp.attachFileId; var attachFileId = response.data.id; if (response.code === web_status.SUCCESS) { $('#fileIdStr').val(attachFileId); diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRMBDetail.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRmbDetail.html similarity index 84% rename from ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRMBDetail.html rename to ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRmbDetail.html index 87d44de1..b4681382 100644 --- a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRMBDetail.html +++ b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceRmbDetail.html @@ -7,10 +7,10 @@
-
+ - +
@@ -251,7 +251,6 @@
-
@@ -274,7 +273,7 @@ var taxInvoice = [[${taxInvoice}]]; var prefix = ctx + "financial/taxInvoice"; - $("#form-taxInvoice-auditRmb").validate({ + $("#form-taxInvoice-uploadRmbDetail").validate({ focusCleanup: true }); @@ -284,6 +283,108 @@ autoclose: true }); + function submitHandler() { + + + $.operate.save(prefix + "/uploadInvoiceDetail", $('#form-taxInvoice-uploadRmbDetail').serialize()); + } + + + $(document).ready(function () { + var initialPreview = []; + var initialPreviewConfig = []; + var initialPreviewFileType = []; + var sysAttachFiles = taxInvoice.sysAttachFiles || []; // 确保 sysAttachFiles 是一个数组 + + // 遍历 sysAttachFiles 并构建 initialPreview 和 initialPreviewConfig + if (sysAttachFiles.length > 0) { + for (var i = 0; i < sysAttachFiles.length; i++) { + var sysAttachFile = sysAttachFiles[i]; + if (sysAttachFile) { + var delSysAttachFile = generFilDel(sysAttachFile); + initialPreview.push(sysAttachFile.url); + initialPreviewConfig.push(delSysAttachFile); + } + } + } + + // 单图上传 + $("#singleFile").fileinput({ + uploadUrl: ctx + "common/uploadSingleFile", + dropZoneTitle: '可以将文件拖放到这里,支持文件上传', + language: 'zh', + allowedFileExtensions: ['bmp', 'gif', 'jpg', 'jpeg', 'png', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'html', 'htm', 'txt', 'text', 'rar', 'zip', 'gz', 'bz2', 'pdf', 'bpmn', 'bar', 'db'], + showPreview: true, // 是否显示预览 + showCaption: false, // 是否显示标题 + fileSizeGetter: true, + previewFileType: ['image', 'txt', 'text','pdf'], + validateInitialCount: true, + preferIconicPreview: true, // 这将强制缩略图按照以下文件扩展名的图标显示 + maxFileCount: 1, + autoReplace: true, // 自动替换 + initialPreview: initialPreview, + initialPreviewConfig: initialPreviewConfig, + initialPreviewFileType: initialPreviewFileType, + initialPreviewAsData: true, // 默认为数据 + }).on('filebatchselected', function (event, data, previewId, index) { + // 当文件被选中时,开始上传 + $(this).fileinput("upload"); + }).on('fileuploaded', function (event, data, previewId, index) { + log.info("data:" + JSON.stringify(data)); + var response = data.response; + + var attachFileId = response.data.id; + if (response.code === web_status.SUCCESS) { + $('#fileIdStr').val(attachFileId); + $.modal.msgSuccess("上传成功"); + } else { + $.modal.alertError(response.msg); + } + }).on('filebatchremoved', function (event, id, index) { + $("#fileIdStr").val(''); + }); + + // 添加清除输入框值的功能 + $(".file-upload").on('fileclear', function (event) { + $("#fileIdStr").val(''); + }); + + // 生成文件删除配置 + function generFilDel(file) { + if (file) { + var type = file.url.substr(file.url.lastIndexOf('.') + 1); + return { + type: getTypeByExtension(type), + size: file.size, + caption: file.name, + url: prefix + "/deletePic", + key: file.id, + downloadUrl: file.url + }; + } + } + + // 根据文件扩展名获取文件类型 + function getTypeByExtension(extension) { + switch (extension) { + case 'pdf': + return "pdf"; + case 'text': + return "text"; + case 'mp4': + return {type: "video", filetype: "video/mp4"}; + case 'txt': + return "txt"; + case 'db': + return "db"; + default: + return ""; + } + } + }); + + + //开票物料 $(function() { var options = { @@ -375,95 +476,11 @@ }); - $(document).ready(function () { - // 单图上传 - $(".file-upload").fileinput({ - uploadUrl: ctx + "common/uploadSingleFile", - maxFileCount: 1, - autoReplace: true, - showUpload: false, // 不显示上传按钮 - showCaption: false, // 不显示标题 - showRemove: true, // 显示移除按钮 - browseClass: "btn btn-primary", // 浏览按钮样式 - removeClass: "btn btn-danger", // 移除按钮样式 - removeIcon: "", // 移除按钮图标 - browseLabel: "选择文件", // 浏览按钮文本 - removeLabel: "删除", // 移除按钮文本 - layoutTemplates: { - main2: "{preview}\n" + - "{remove}\n" + - "{browse}" - } - }).on('filepreupload', function (event, data, previewId, index) { - // 在文件上传前的处理 - // 可以在这里设置一些上传前的逻辑 - }).on('fileuploaded', function (event, data, previewId, index) { - log.info("data:" + JSON.stringify(data)) - var response = data.response; - - var attachFileId = response.data.id; - if (response.code === web_status.SUCCESS) { - $('#fileIdStr').val(attachFileId); - $.modal.msgSuccess("上传成功"); - } else { - $.modal.alertError(response.msg); - } - }).on('filebatchremoved', function (event, id, index) { - $("#fileIdStr").val(''); - }); - - // 添加清除输入框值的功能 - $(".file-upload").on('fileclear', function (event) { - $("#fileIdStr").val(''); - }); - // 绑定详情按钮点击事件 - var photoAttachId = $('#photoAttachId').val(); - if (photoAttachId) { - $.ajax({ - type: "GET", - url: ctx + "system/attach/file/getListByAttachId", - data: {attachId: photoAttachId}, - cache: false, - async: false, // 设置成同步 - dataType: 'json', - success: function (result) { - if (result.code === web_status.SUCCESS) { - var fileList = result.data.map(function (item) { - return { - caption: item.name, - url: item.url, - key: item.id, - extra: { - attachFileId: item.id, - isBind: true - } - }; - }); - - // 清除现有的文件信息 - $(".file-upload").fileinput("clear"); - - // 使用获取的文件信息初始化文件上传组件 - $(".file-upload").fileinput("batchAdd", fileList); - - $.modal.msgSuccess("文件信息加载成功"); - } else { - $.modal.alertError(result.msg); - } - }, - error: function (error) { - $.modal.msgError("获取附件失败。"); - } - }); - } else { - $.modal.msgError("没有文件信息可以显示。"); - } - }); // var attachId = $("#photoAttachId").val(); // var fileIdList=[]; diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceUsd.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceUsd.html new file mode 100644 index 00000000..56e4b502 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceUsd.html @@ -0,0 +1,434 @@ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + % +
+
+
+ +
+ +
+
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+ + +
+ +
+
+ + +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+

开票物料

+
+
+
+
+
+
+
+ +
+
+

开票额度

+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + % +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+

导入发票:

+
+
+ +
+
+ + + + + + + +
+ + + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceUsdDetail.html b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceUsdDetail.html new file mode 100644 index 00000000..c4ce4508 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/financial/taxInvoice/uploadInvoiceUsdDetail.html @@ -0,0 +1,529 @@ + + + + + + + + +
+
+ + + +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + % +
+
+
+ +
+ +
+
+ + +
+
+
+ +
+ +
+
+ + +
+
+
+ + +
+ +
+
+ + +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+

开票物料

+
+
+
+
+
+
+
+ +
+
+

开票额度

+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + % +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+

导入发票:

+
+
+ +
+
+ + + + + + +
+
+ + + + + + \ No newline at end of file