Răsfoiți Sursa

Merge branch 'dev' of licailing/uwip into master

licailing 4 ani în urmă
părinte
comite
aae368a4fa
45 a modificat fișierele cu 954 adăugiri și 69 ștergeri
  1. 17 1
      src/main/java/com/izouma/uwip/domain/InternationalPatent.java
  2. 26 0
      src/main/java/com/izouma/uwip/domain/Message.java
  3. 136 0
      src/main/java/com/izouma/uwip/dto/InternationalPatentDTO.java
  4. 17 8
      src/main/java/com/izouma/uwip/enums/InternationalWorkflow.java
  5. 23 0
      src/main/java/com/izouma/uwip/repo/InternationalPatentRepo.java
  6. 141 0
      src/main/java/com/izouma/uwip/service/InternationalPatentService.java
  7. 78 0
      src/main/java/com/izouma/uwip/web/InternationalPatentController.java
  8. 0 0
      src/main/resources/genjson/InternationalPatent.json
  9. 1 1
      src/main/vue/src/components/AttachmentAdd.vue
  10. 1 1
      src/main/vue/src/components/AttachmentUpload.vue
  11. 1 1
      src/main/vue/src/components/domesticPatent/AddSupplierNo.vue
  12. 1 1
      src/main/vue/src/components/domesticPatent/AnnualFee.vue
  13. 1 1
      src/main/vue/src/components/domesticPatent/BackSupplier.vue
  14. 1 1
      src/main/vue/src/components/domesticPatent/MaintainCase.vue
  15. 1 1
      src/main/vue/src/components/domesticPatent/Register.vue
  16. 1 1
      src/main/vue/src/components/domesticPatent/RegisterComplate.vue
  17. 1 1
      src/main/vue/src/components/domesticPatent/RegisterPayment.vue
  18. 1 1
      src/main/vue/src/components/domesticPatent/Reply.vue
  19. 1 1
      src/main/vue/src/components/domesticPatent/ReplyBack.vue
  20. 3 2
      src/main/vue/src/components/domesticPatent/ReplyResult.vue
  21. 1 1
      src/main/vue/src/components/domesticPatent/replySubmissions.vue
  22. 1 1
      src/main/vue/src/components/fee/BackBill.vue
  23. 9 9
      src/main/vue/src/components/fee/FeeAdd.vue
  24. 1 1
      src/main/vue/src/components/fee/Pay.vue
  25. 1 1
      src/main/vue/src/components/logoPatent/Accept.vue
  26. 1 1
      src/main/vue/src/components/logoPatent/Announcement.vue
  27. 1 1
      src/main/vue/src/components/logoPatent/Correction.vue
  28. 1 1
      src/main/vue/src/components/logoPatent/Dismiss.vue
  29. 1 1
      src/main/vue/src/components/logoPatent/Handle.vue
  30. 1 1
      src/main/vue/src/components/logoPatent/Maintenance.vue
  31. 1 1
      src/main/vue/src/components/logoPatent/Payment.vue
  32. 1 1
      src/main/vue/src/components/logoPatent/Review.vue
  33. 1 1
      src/main/vue/src/components/logoPatent/ReviewSeF.vue
  34. 1 1
      src/main/vue/src/components/logoPatent/ReviewSeS.vue
  35. 1 1
      src/main/vue/src/components/logoPatent/ReviewSeT.vue
  36. 1 1
      src/main/vue/src/components/logoPatent/Signed.vue
  37. 12 18
      src/main/vue/src/mixins/domesticPatent.js
  38. 2 2
      src/main/vue/src/plugins/http.js
  39. 18 0
      src/main/vue/src/router.js
  40. 34 2
      src/main/vue/src/views/DomesticPatentEdit.vue
  41. 1 1
      src/main/vue/src/views/GenCodeEdit.vue
  42. 145 0
      src/main/vue/src/views/InternationalPatentEdit.vue
  43. 188 0
      src/main/vue/src/views/InternationalPatentList.vue
  44. 61 0
      src/test/java/com/izouma/uwip/service/InternationalPatentServiceTest.java
  45. 17 0
      src/test/java/com/izouma/uwip/web/InternationalPatentControllerTest.java

+ 17 - 1
src/main/java/com/izouma/uwip/domain/InternationalPatent.java

@@ -1,5 +1,7 @@
 package com.izouma.uwip.domain;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.izouma.uwip.dto.InternationalPatentDTO;
 import com.izouma.uwip.enums.InternationalWorkflow;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -7,15 +9,22 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Where;
 
+import javax.persistence.*;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 
 @AllArgsConstructor
 @Data
 @Builder
 @NoArgsConstructor
+@Entity
 @ApiModel(value = "国际申请")
 public class InternationalPatent extends BaseEntity {
+    private Long patentId;
+
+    @Enumerated(EnumType.STRING)
     @ApiModelProperty(value = "流程")
     private InternationalWorkflow workflow;
 
@@ -23,7 +32,7 @@ public class InternationalPatent extends BaseEntity {
     private String pctApplyNo;
 
     @ApiModelProperty(value = "pct申请日")
-    private String pctApplyDate;
+    private LocalDate pctApplyDate;
 
     @ApiModelProperty(value = "官费实际金额")
     private BigDecimal actualOfficialAmount;
@@ -34,4 +43,11 @@ public class InternationalPatent extends BaseEntity {
     @ApiModelProperty(value = "是否继续官文流转")
     private Boolean officialCirculation;
 
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "patentId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    private Patent patent;
+
+    public InternationalPatent(InternationalPatentDTO dto) {
+        BeanUtil.copyProperties(dto, this);
+    }
 }

+ 26 - 0
src/main/java/com/izouma/uwip/domain/Message.java

@@ -0,0 +1,26 @@
+package com.izouma.uwip.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Where;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel(value = "系统消息")
+@Where(clause = "del = 0")
+public class Message extends BaseEntity {
+    @ApiModelProperty(value = "接收人")
+    private Long receiveUserId;
+
+    @ApiModelProperty(value = "是否已读")
+    private boolean read;
+
+    @ApiModelProperty(value = "内容")
+    private String content;
+}

+ 136 - 0
src/main/java/com/izouma/uwip/dto/InternationalPatentDTO.java

@@ -0,0 +1,136 @@
+package com.izouma.uwip.dto;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.izouma.uwip.annotations.Searchable;
+import com.izouma.uwip.domain.Handle;
+import com.izouma.uwip.domain.InternationalPatent;
+import com.izouma.uwip.domain.Patent;
+import com.izouma.uwip.enums.ApplyStatus;
+import com.izouma.uwip.enums.InternationalWorkflow;
+import com.izouma.uwip.enums.PatentType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.*;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+@AllArgsConstructor
+@Data
+@Builder
+@NoArgsConstructor
+@ApiModel(value = "国际申请")
+public class InternationalPatentDTO {
+    private Long iid;
+
+    private Long patentId;
+
+    @ApiModelProperty(value = "流程")
+    private InternationalWorkflow workflow;
+
+    @ApiModelProperty(value = "pct申请号")
+    private String pctApplyNo;
+
+    @ApiModelProperty(value = "pct申请日")
+    private LocalDate pctApplyDate;
+
+    @ApiModelProperty(value = "官费实际金额")
+    private BigDecimal actualOfficialAmount;
+
+    @ApiModelProperty(value = "答复意见状态")
+    private String replyStatus;
+
+    @ApiModelProperty(value = "是否继续官文流转")
+    private Boolean officialCirculation;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "patentId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    private Patent patent;
+
+    @ApiModelProperty(value = "专利名称")
+    private String name;
+
+    @Enumerated(EnumType.STRING)
+    private ApplyStatus applyStatus;
+
+    @ApiModelProperty(value = "专利类型")
+    @Enumerated(EnumType.STRING)
+    private PatentType type;
+
+    /*
+    客户编码(由客户经理填写)+年份+案件类型+连接符+案件阶段[+国家]+序列号
+     */
+    @Searchable
+    @ApiModelProperty(value = "寰球案号")
+    private String uwNo;
+
+    @ApiModelProperty(value = "客户id")
+    private Long clientPartnerId;
+
+    @ApiModelProperty(value = "供应商")
+    private Long supplierPartnerId;
+
+    @ApiModelProperty(value = "供应商案号")
+    private String supplierNo;
+
+    @ApiModelProperty(value = "供应商提交期限")
+    private LocalDate supplierSubmitPeriod;
+
+    @ApiModelProperty(value = "申请人名称")
+    private String applicantName;
+
+    @ApiModelProperty(value = "申请人英文名称")
+    private String applicantEnName;
+
+    @ApiModelProperty(value = "申请人地址")
+    private String applicantAddress;
+
+    @ApiModelProperty(value = "申请人英文地址")
+    private String applicantEnAddress;
+
+    @ApiModelProperty(value = "发明人名称")
+    private String inventorName;
+
+    @ApiModelProperty(value = "发明人英文名称")
+    private String inventorEnName;
+
+    @ApiModelProperty(value = "优先权号")
+    private String priorityNo;
+
+    @ApiModelProperty(value = "优先权日")
+    private LocalDate priorityDate;
+
+    @ApiModelProperty(value = "优先权国别")
+    private String priorityCountry;
+
+    @ApiModelProperty(value = "提交期限/内部期限")
+    private LocalDate submitPeriod;
+
+    /*
+    =优先权日+30个月
+     */
+    @ApiModelProperty(value = "官方期限")
+    private LocalDate officialPeriod;
+
+    @ApiModelProperty(value = "申请号")
+    private String applyNo;
+
+    @ApiModelProperty(value = "申请日")
+    private LocalDate applyDate;
+
+    public List<AttachmentDTO> attachments;
+
+    private List<Handle> handle = new ArrayList<>();
+
+    public InternationalPatentDTO(InternationalPatent iPatent, Patent patent) {
+        BeanUtil.copyProperties(iPatent, this);
+        BeanUtil.copyProperties(patent, this);
+        this.iid = iPatent.getId();
+    }
+}

+ 17 - 8
src/main/java/com/izouma/uwip/enums/InternationalWorkflow.java

@@ -2,24 +2,33 @@ package com.izouma.uwip.enums;
 
 /*
 国际申请流程
+1 客户经理
+2 项目经理
  */
 public enum InternationalWorkflow {
-    ADD_SUPPLIERS("待添加供应商"),
-    SUPPLIER_MATERIALS("待提交供应商材料"),
-    MAINTAIN_CASE("待维护案件"),
-    OFFICIAL_CIRCULATION("待官文流转"),
-    SUPPLEMENTARY_REPLY("待补正答复"),
-    CONFIRM_REPLY("待确认答复状态"),
-    COMPLETED("已完成"),
+    ADD_SUPPLIERS("待添加供应商", 2),
+    SUPPLIER_MATERIALS("待提交供应商材料", 2),
+    MAINTAIN_CASE("待维护案件", 1),
+    OFFICIAL_CIRCULATION("待官文流转", 2),
+    SUPPLEMENTARY_REPLY("待补正答复", 2),
+    REPLY_SUBMISSION("待上传答复意见书", 1),
+    CONFIRM_REPLY("待确认答复状态", 2),
+    COMPLETED("已完成", 2),
     ;
 
     private final String description;
+    private final int    authority;
 
     public String getDescription() {
         return description;
     }
 
-    InternationalWorkflow(String description) {
+    public int getAuthority() {
+        return authority;
+    }
+
+    InternationalWorkflow(String description, int authority) {
         this.description = description;
+        this.authority = authority;
     }
 }

+ 23 - 0
src/main/java/com/izouma/uwip/repo/InternationalPatentRepo.java

@@ -0,0 +1,23 @@
+package com.izouma.uwip.repo;
+
+import com.izouma.uwip.domain.InternationalPatent;
+import com.izouma.uwip.dto.InternationalPatentDTO;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+
+import javax.transaction.Transactional;
+import java.util.Optional;
+
+public interface InternationalPatentRepo extends JpaRepository<InternationalPatent, Long>, JpaSpecificationExecutor<InternationalPatent> {
+    @Query("update InternationalPatent t set t.del = true where t.id = ?1")
+    @Modifying
+    @Transactional
+    void softDelete(Long id);
+
+    @Query("select new com.izouma.uwip.dto.InternationalPatentDTO(i,p) " +
+            "from InternationalPatent i join Patent p on i.patentId = p.id " +
+            "where i.id = ?1 and p.del = false and i.del = false")
+    Optional<InternationalPatentDTO> findInternationalDTO(Long id);
+}

+ 141 - 0
src/main/java/com/izouma/uwip/service/InternationalPatentService.java

@@ -0,0 +1,141 @@
+package com.izouma.uwip.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.izouma.uwip.domain.Handle;
+import com.izouma.uwip.domain.InternationalPatent;
+import com.izouma.uwip.domain.Patent;
+import com.izouma.uwip.dto.InternationalPatentDTO;
+import com.izouma.uwip.dto.PageQuery;
+import com.izouma.uwip.enums.*;
+import com.izouma.uwip.exception.BusinessException;
+import com.izouma.uwip.repo.InternationalPatentRepo;
+import com.izouma.uwip.repo.PatentRepo;
+import com.izouma.uwip.utils.JpaUtils;
+import com.izouma.uwip.utils.ObjUtils;
+import lombok.AllArgsConstructor;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.data.domain.Page;
+import org.springframework.stereotype.Service;
+
+import javax.persistence.criteria.Path;
+import javax.persistence.criteria.Predicate;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@AllArgsConstructor
+public class InternationalPatentService {
+
+    private final InternationalPatentRepo internationalPatentRepo;
+    private final PatentRepo              patentRepo;
+    private final AttachmentService       attachmentService;
+    private final PartnerService          partnerService;
+
+    public Page<InternationalPatent> all(PageQuery pageQuery) {
+        return internationalPatentRepo.findAll(JpaUtils.toSpecification(pageQuery, InternationalPatent.class), JpaUtils.toPageRequest(pageQuery));
+    }
+
+    public InternationalPatent saveDTO(InternationalPatentDTO record, Long userId) {
+        if (record.getIid() != null) {
+            InternationalPatent orig = internationalPatentRepo.findById(record.getIid())
+                    .orElseThrow(new BusinessException("无记录"));
+            InternationalPatent iPatent = new InternationalPatent(record);
+            ObjUtils.merge(orig, iPatent);
+            orig = internationalPatentRepo.save(orig);
+
+            Patent orig1 = patentRepo.findById(record.getPatentId()).orElseThrow(new BusinessException("无记录"));
+            Patent patent = new Patent();
+            BeanUtil.copyProperties(record, patent);
+            ObjUtils.mergePatent(orig1, patent);
+            List<Handle> handleList = orig1.getHandle();
+            if (handleList == null) {
+                handleList = new ArrayList<>();
+            }
+            handleList.add(Handle.builder()
+                    .workflow(record.getWorkflow().toString())
+                    .userId(userId)
+                    .checkAt(LocalDateTime.now())
+                    .build());
+            orig1.setHandle(handleList);
+            if (ObjectUtil.isNull(record.getApplyStatus()) || !ApplyStatus.COMPLETED.equals(record.getApplyStatus())) {
+                orig1.setApplyStatus(this.getApplyStatus(record.getWorkflow()));
+            }
+            patentRepo.save(orig1);
+
+            // 保存附件
+            if (CollectionUtils.isNotEmpty(record.getAttachments())) {
+                attachmentService.batchSave(record.getAttachments(), userId, record.getIid());
+            }
+            return orig;
+        }
+
+        Patent patent = new Patent();
+        BeanUtil.copyProperties(record, patent);
+        patent.setSort(patentRepo.findMax());
+
+        //寰球案号
+        PatentType type = patent.getType();
+        patent.setUwNo(partnerService.getUwNo(patent.getClientPartnerId(), CaseType.valueOf(type.name()), CaseStage.PCT, patent
+                .getSort()));
+        patent.setApplyStatus(ApplyStatus.APPLY_STAGE);
+        patent = patentRepo.save(patent);
+
+        InternationalPatent iPatent = new InternationalPatent(record);
+        iPatent.setPatentId(patent.getId());
+        iPatent = internationalPatentRepo.save(iPatent);
+
+        // 保存附件
+        if (CollectionUtils.isNotEmpty(record.getAttachments())) {
+            attachmentService.batchSave(record.getAttachments(), userId, record.getIid());
+        }
+        return iPatent;
+    }
+
+    public ApplyStatus getApplyStatus(InternationalWorkflow workflow) {
+        switch (workflow) {
+            case ADD_SUPPLIERS://待添加供应商
+            case SUPPLIER_MATERIALS://供应商反馈文件
+            case MAINTAIN_CASE://申请号/申请日
+                return ApplyStatus.APPLY_STAGE;//申请阶段
+            case OFFICIAL_CIRCULATION://待官文流转
+            case SUPPLEMENTARY_REPLY://待补正答复
+            case REPLY_SUBMISSION://待上传答复意见书
+            case CONFIRM_REPLY://待确认答复状态
+                return ApplyStatus.SUBSTANTIVE_STAGE;// 实审阶段
+            default://不答复终止
+                return ApplyStatus.COMPLETED;
+        }
+    }
+
+    public Page<InternationalPatent> allDTO(PageQuery pageQuery) {
+        return internationalPatentRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
+            List<Predicate> and = new ArrayList<>();
+            Path<Object> patent = root.get("patent");
+            if (StrUtil.isNotBlank(pageQuery.getSearch())) {
+                List<Predicate> or = new ArrayList<>();
+                or.add(criteriaBuilder.like(patent.get("name"), "%" + pageQuery.getSearch() + "%"));
+                or.add(criteriaBuilder.like(patent.get("uwNo"), "%" + pageQuery.getSearch() + "%"));
+                and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
+            }
+            Map<String, Object> query = pageQuery.getQuery();
+            query.keySet().forEach(key -> {
+                if (JpaUtils.isExistField(key, InternationalPatent.class)) {
+                    Predicate predicate = JpaUtils.getPredicate(key, query.get(key), InternationalPatent.class, root, criteriaBuilder, false);
+                    if (ObjectUtil.isNotNull(predicate)) {
+                        and.add(predicate);
+                    }
+                } else {
+                    Predicate predicate = JpaUtils.getPredicate(key, query.get(key), Patent.class, root, criteriaBuilder, true);
+                    if (ObjectUtil.isNotNull(predicate)) {
+                        and.add(predicate);
+                    }
+                }
+            });
+            return criteriaBuilder.and(and.toArray(new Predicate[0]));
+        }), JpaUtils.toPageRequest(pageQuery));
+    }
+}

+ 78 - 0
src/main/java/com/izouma/uwip/web/InternationalPatentController.java

@@ -0,0 +1,78 @@
+package com.izouma.uwip.web;
+
+import com.izouma.uwip.domain.InternationalPatent;
+import com.izouma.uwip.dto.InternationalPatentDTO;
+import com.izouma.uwip.service.InternationalPatentService;
+import com.izouma.uwip.dto.PageQuery;
+import com.izouma.uwip.exception.BusinessException;
+import com.izouma.uwip.repo.InternationalPatentRepo;
+import com.izouma.uwip.utils.ObjUtils;
+import com.izouma.uwip.utils.SecurityUtils;
+import com.izouma.uwip.utils.excel.ExcelUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.data.domain.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+@RestController
+@RequestMapping("/internationalPatent")
+@AllArgsConstructor
+public class InternationalPatentController extends BaseController {
+    private final InternationalPatentService internationalPatentService;
+    private final InternationalPatentRepo    internationalPatentRepo;
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @PostMapping("/save")
+    public InternationalPatent save(@RequestBody InternationalPatent record) {
+        if (record.getId() != null) {
+            InternationalPatent orig = internationalPatentRepo.findById(record.getId())
+                    .orElseThrow(new BusinessException("无记录"));
+            ObjUtils.merge(orig, record);
+            return internationalPatentRepo.save(orig);
+        }
+        return internationalPatentRepo.save(record);
+    }
+
+    @PostMapping("/saveDTO")
+    public InternationalPatent saveDTO(@RequestBody InternationalPatentDTO record) {
+        return internationalPatentService.saveDTO(record, SecurityUtils.getAuthenticatedUser().getId());
+    }
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @PostMapping("/all")
+    public Page<InternationalPatent> all(@RequestBody PageQuery pageQuery) {
+        return internationalPatentService.all(pageQuery);
+    }
+
+    @PostMapping("/allDTO")
+    public Page<InternationalPatent> allDTO(PageQuery pageQuery) {
+        return internationalPatentService.allDTO(pageQuery);
+    }
+
+    @GetMapping("/get/{id}")
+    public InternationalPatent get(@PathVariable Long id) {
+        return internationalPatentRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+    }
+
+    @GetMapping("/getDTO/{id}")
+    public InternationalPatentDTO getDTO(@PathVariable Long id) {
+        return internationalPatentRepo.findInternationalDTO(id).orElseThrow(new BusinessException("无记录"));
+    }
+
+    @PostMapping("/del/{id}")
+    public void del(@PathVariable Long id) {
+        internationalPatentRepo.softDelete(id);
+    }
+
+    @GetMapping("/excel")
+    @ResponseBody
+    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
+        List<InternationalPatent> data = all(pageQuery).getContent();
+        ExcelUtils.export(response, data);
+    }
+}
+

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/resources/genjson/InternationalPatent.json


+ 1 - 1
src/main/vue/src/components/AttachmentAdd.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="新增附件" :visible.sync="show" center width="600px">
+    <el-dialog title="新增附件" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/AttachmentUpload.vue

@@ -86,7 +86,7 @@ export default {
         fileSize: {},
         size: {
             type: Number,
-            default: 1 //单位MB
+            default: 5 //单位MB
         }
     },
     data() {

+ 1 - 1
src/main/vue/src/components/domesticPatent/AddSupplierNo.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="添加供应商" :visible.sync="show" center width="600px">
+    <el-dialog title="添加供应商" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/domesticPatent/AnnualFee.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="维护年费费用" :visible.sync="show" center width="600px">
+    <el-dialog title="维护年费费用" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/domesticPatent/BackSupplier.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="上传供应商反馈文件" :visible.sync="show" center width="600px">
+    <el-dialog title="上传供应商反馈文件" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/domesticPatent/MaintainCase.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="维护案件信息" :visible.sync="show" center width="600px">
+    <el-dialog title="维护案件信息" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/domesticPatent/Register.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="补充办登信息" :visible.sync="show" center width="600px">
+    <el-dialog title="补充办登信息" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/domesticPatent/RegisterComplate.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="办理登记" :visible.sync="show" center width="600px">
+    <el-dialog title="办理登记" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/domesticPatent/RegisterPayment.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="补充办登信息" :visible.sync="show" center width="600px">
+    <el-dialog title="补充办登信息" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/domesticPatent/Reply.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="上传答复通知" :visible.sync="show" center width="600px">
+    <el-dialog title="上传答复通知" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/domesticPatent/ReplyBack.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="确定答复意向" :visible.sync="show" center width="600px">
+    <el-dialog title="确定答复意向" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 3 - 2
src/main/vue/src/components/domesticPatent/ReplyResult.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="确定答复结果" :visible.sync="show" center width="600px">
+    <el-dialog title="确定答复结果" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"
@@ -38,7 +38,8 @@ export default {
             form: {
                 replyPassed: true
             },
-            show: false
+            show: false,
+            rules: {}
         };
     },
     methods: {

+ 1 - 1
src/main/vue/src/components/domesticPatent/replySubmissions.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="上传答复意见书" :visible.sync="show" center width="600px">
+    <el-dialog title="上传答复意见书" :visible.sync="show" destroy-on-close center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/fee/BackBill.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="发票回传" :visible.sync="show" center width="600px">
+    <el-dialog title="发票回传" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 9 - 9
src/main/vue/src/components/fee/FeeAdd.vue

@@ -1,16 +1,16 @@
 <template>
-    <el-dialog title="新增费用" :visible.sync="show" center width="600px">
+    <el-dialog title="新增费用" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"
             :rules="rules"
             ref="form"
             label-width="140px"
-            style="padding-right: 130px;"
+            style="padding-right: 130px"
             class="fee"
         >
             <el-form-item prop="feeName" label="费用名称">
-                <el-select v-model="form.feeType" filterable placeholder="请选择" style="width: 100px;">
+                <el-select v-model="form.feeType" filterable placeholder="请选择" style="width: 100px">
                     <el-option
                         v-for="item in feeMaintenanceIdOptions"
                         :key="item.value"
@@ -26,7 +26,7 @@
                     allow-create
                     default-first-option
                     placeholder="请输入或选择"
-                    style="width: 170px; margin-left: 10px;"
+                    style="width: 170px; margin-left: 10px"
                 >
                     <el-option v-for="item in feeList" :key="item.value" :label="item.label" :value="item.value">
                     </el-option>
@@ -61,9 +61,9 @@
                 </el-select>
             </el-form-item>
             <el-form-item prop="amount" label="金额">
-                <el-input-number style="width: 170px;" type="number" v-model="form.amount"></el-input-number>
+                <el-input-number style="width: 170px" type="number" v-model="form.amount"></el-input-number>
                 <el-select
-                    style="width: 100px; margin-left: 10px;"
+                    style="width: 100px; margin-left: 10px"
                     v-model="form.currencyMaintenanceId"
                     filterable
                     placeholder="请选择"
@@ -83,7 +83,7 @@
                     type="date"
                     value-format="yyyy-MM-dd"
                     placeholder="选择日期"
-                    style="width: 100%;"
+                    style="width: 100%"
                 >
                 </el-date-picker>
             </el-form-item>
@@ -95,8 +95,8 @@
             </el-form-item>
 
             <el-form-item>
-                <el-button style="width: 150px;" size="normal" type="primary" @click="onSave">提交</el-button>
-                <el-button style="width: 120px;" size="normal" @click="show = false">取消</el-button>
+                <el-button style="width: 150px" size="normal" type="primary" @click="onSave">提交</el-button>
+                <el-button style="width: 120px" size="normal" @click="show = false">取消</el-button>
             </el-form-item>
         </el-form>
     </el-dialog>

+ 1 - 1
src/main/vue/src/components/fee/Pay.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="支付费用" :visible.sync="show" center width="600px">
+    <el-dialog title="支付费用" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/Accept.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="受理信息" :visible.sync="show" center width="600px">
+    <el-dialog title="受理信息" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/Announcement.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="公告初审" :visible.sync="show" center width="600px">
+    <el-dialog title="公告初审" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/Correction.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="受理信息" :visible.sync="show" center width="600px">
+    <el-dialog title="受理信息" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/Dismiss.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="驳回处理" :visible.sync="show" center width="600px">
+    <el-dialog title="驳回处理" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/Handle.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="证件办理" :visible.sync="show" center width="600px">
+    <el-dialog title="证件办理" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/Maintenance.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="维护案件信息" :visible.sync="show" center width="600px">
+    <el-dialog title="维护案件信息" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/Payment.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="确定答复意向" :visible.sync="show" center width="600px">
+    <el-dialog title="确定答复意向" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/Review.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="审查" :visible.sync="show" center width="600px">
+    <el-dialog title="审查" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/ReviewSeF.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="复审" :visible.sync="show" center width="600px">
+    <el-dialog title="复审" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/ReviewSeS.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="复审" :visible.sync="show" center width="600px">
+    <el-dialog title="复审" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/ReviewSeT.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="复审" :visible.sync="show" center width="600px">
+    <el-dialog title="复审" destroy-on-close :visible.sync="show" center width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 1 - 1
src/main/vue/src/components/logoPatent/Signed.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="是否决定签约" center :visible.sync="show" width="600px">
+    <el-dialog title="是否决定签约" destroy-on-close center :visible.sync="show" width="600px">
         <el-form
             hide-required-asterisk
             :model="form"

+ 12 - 18
src/main/vue/src/mixins/domesticPatent.js

@@ -18,7 +18,7 @@ export default {
                     value: 'SUBSTANTIVE_STAGE',
                     type: 'warning',
                     workflows: [
-                        { label: '待审查', value: 'PENDING_REVIEW' },
+                        { label: '待确定答复意向', value: 'PENDING_REVIEW' },
                         { label: '不答复终止', value: 'NO_REPLY' },
                         { label: '上传答复意见书', value: 'REPLY_SUBMISSIONS' }
                     ]
@@ -27,7 +27,7 @@ export default {
                     label: '复审阶段',
                     value: 'REVIEW_STAGE',
                     type: 'warning',
-                    workflows: [{ label: '上传答复结果', value: 'REPLY_RESULT' }]
+                    workflows: [{ label: '待确定答复结果', value: 'REPLY_RESULT' }]
                 },
                 {
                     label: '授权阶段',
@@ -35,7 +35,7 @@ export default {
                     type: 'info',
                     workflows: [
                         { label: '待办登', value: 'PENDING_REGISTER' },
-                        { label: '补充办登信息', value: 'PAYMENT_REGISTER' },
+                        { label: '待办登', value: 'PAYMENT_REGISTER' },
                         { label: '办理登记', value: 'REGISTER' },
                         { label: '待维护年费信息', value: 'ANNUAL_FEE' }
                     ]
@@ -47,21 +47,6 @@ export default {
                     workflows: [{ label: '已完成', value: 'COMPLETED' }]
                 }
             ],
-            workflowOptions: [
-                { label: '待添加供应商', value: 'ADD_SUPPLIERS' },
-                { label: '待提交供应商材料', value: 'SUPPLIER_MATERIALS' },
-                { label: '待维护案件', value: 'MAINTAIN_CASE' },
-                { label: '待上传答复通知', value: 'REPLY_TO_NOTICE' },
-                { label: '待审查', value: 'PENDING_REVIEW' },
-                { label: '不答复终止', value: 'NO_REPLY' },
-                { label: '上传答复意见书', value: 'REPLY_SUBMISSIONS' },
-                { label: '上传答复结果', value: 'REPLY_RESULT' },
-                { label: '待办登', value: 'PENDING_REGISTER' },
-                { label: '补充办登信息', value: 'PAYMENT_REGISTER' },
-                { label: '办理登记', value: 'REGISTER' },
-                { label: '待维护年费信息', value: 'ANNUAL_FEE' },
-                { label: '已完成', value: 'COMPLETED' }
-            ],
             typeOptions: [
                 { label: '发明专利', value: 'INVENTION' },
                 { label: '实用新型专利', value: 'UTILITY_MODEL' },
@@ -69,6 +54,15 @@ export default {
             ]
         };
     },
+    computed: {
+        workflowOptions() {
+            return [...this.statusOptions]
+                .map(item => {
+                    return item.workflows;
+                })
+                .flat();
+        }
+    },
     methods: {
         applyStatusFormatter(row, column, cellValue, index) {
             let selectedOption = this.statusOptions.find(i => i.value === cellValue);

+ 2 - 2
src/main/vue/src/plugins/http.js

@@ -5,8 +5,8 @@ import qs from 'qs';
 let baseUrl = 'http://localhost:8080';
 switch (process.env.NODE_ENV) {
     case 'development':
-        baseUrl = 'http://uwip.izouma.com';
-        // baseUrl = 'http://192.168.50.127:8080';
+        // baseUrl = 'http://uwip.izouma.com';
+        baseUrl = 'http://localhost:8080';
         break;
     case 'test':
         baseUrl = 'http://localhost:8080';

+ 18 - 0
src/main/vue/src/router.js

@@ -257,6 +257,24 @@ const router = new Router({
                     meta: {
                         title: '国内专利申请'
                     }
+                },
+                {
+                    path: '/internationalPatentEdit',
+                    name: 'InternationalPatentEdit',
+                    component: () =>
+                        import(/* webpackChunkName: "internationalPatentEdit" */ '@/views/InternationalPatentEdit.vue'),
+                    meta: {
+                        title: '国际专利申请编辑'
+                    }
+                },
+                {
+                    path: '/internationalPatentList',
+                    name: 'InternationalPatentList',
+                    component: () =>
+                        import(/* webpackChunkName: "internationalPatentList" */ '@/views/InternationalPatentList.vue'),
+                    meta: {
+                        title: '国际专利申请'
+                    }
                 }
                 /**INSERT_LOCATION**/
             ]

+ 34 - 2
src/main/vue/src/views/DomesticPatentEdit.vue

@@ -1,7 +1,12 @@
 <template>
     <div class="edit-view">
         <page-title>
-            <template slot="title"> 专利详情:{{ formData.name }} </template>
+            <template slot="title">
+                专利详情:{{ formData.name }}
+                <el-tag :type="statusInfo.type" style="margin-left: 10px">
+                    {{ statusInfo.label }}
+                </el-tag>
+            </template>
         </page-title>
         <el-tabs class="edit-tabs" v-model="activeName" @tab-click="tabClick">
             <div class="right-btns">
@@ -23,7 +28,7 @@
 
                 <div class="tips-text">
                     <span class="name">处理截止日期</span>
-                    <span class="val"></span>
+                    <span class="val">{{ date }}</span>
                 </div>
 
                 <el-button @click="action" type="text" size="small">立即处理</el-button>
@@ -146,9 +151,36 @@ export default {
             } else {
                 return '';
             }
+        },
+        date() {
+            if (this.formData.workflow === 'SUPPLIER_MATERIALS') {
+                return this.formData.supplierSubmitPeriod;
+            } else {
+                return '无';
+            }
+        },
+        statusInfo() {
+            let info = [...this.statusOptions].find(item => {
+                return item.value === this.formData.applyStatus;
+            });
+
+            return (
+                info || {
+                    type: '',
+                    label: ''
+                }
+            );
         }
     },
     methods: {
+        applyStatusFormatter(status) {
+            let selectedOption = this.statusOptions.find(i => i.value === status);
+            if (selectedOption) {
+                return selectedOption;
+            } else {
+                return null;
+            }
+        },
         getInfo() {
             this.$http
                 .get('domesticPatent/getDTO/' + this.$route.query.id)

+ 1 - 1
src/main/vue/src/views/GenCodeEdit.vue

@@ -58,7 +58,7 @@
                                     <el-input v-model="row.remark"></el-input>
                                 </template>
                             </el-table-column>
-                            <el-table-column width="130" align="center">
+                            <el-table-column width="230" align="center">
                                 <template slot-scope="{ row, column, $index }">
                                     <el-button @click="moveUp($index)" type="text">上移</el-button>
                                     <el-button @click="moveDown($index)" type="text">下移</el-button>

+ 145 - 0
src/main/vue/src/views/InternationalPatentEdit.vue

@@ -0,0 +1,145 @@
+<template>
+    <div class="edit-view">
+        <page-title>
+            <el-button @click="$router.go(-1)">取消</el-button>
+            <el-button @click="del" :loading="$store.state.fetchingData" type="danger" v-if="formData.id">
+                删除
+            </el-button>
+            <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+        </page-title>
+        <div class="edit-view__content-wrapper">
+            <div class="edit-view__content-section">
+                <divider />
+                <el-form
+                    :model="formData"
+                    :rules="rules"
+                    ref="form"
+                    label-width="136px"
+                    label-position="right"
+                    size="small"
+                    style="max-width: 500px;"
+                >
+                    <el-form-item prop="workflow" label="流程">
+                        <el-select v-model="formData.workflow" clearable filterable placeholder="请选择">
+                            <el-option
+                                v-for="item in workflowOptions"
+                                :key="item.value"
+                                :label="item.label"
+                                :value="item.value"
+                            >
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item prop="pctApplyNo" label="pct申请号">
+                        <el-input v-model="formData.pctApplyNo"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="pctApplyDate" label="pct申请日">
+                        <el-date-picker
+                            v-model="formData.pctApplyDate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择日期"
+                        >
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item prop="actualOfficialAmount" label="官费实际金额">
+                        <el-input-number type="number" v-model="formData.actualOfficialAmount"></el-input-number>
+                    </el-form-item>
+                    <el-form-item prop="replyStatus" label="答复意见状态">
+                        <el-input v-model="formData.replyStatus"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="officialCirculation" label="是否继续官文流转">
+                        <el-switch v-model="formData.officialCirculation"></el-switch>
+                    </el-form-item>
+                    <el-form-item class="form-submit">
+                        <el-button @click="onSave" :loading="saving" size="default" type="primary">保存 </el-button>
+                        <el-button @click="onDelete" :loading="saving" size="default" type="danger" v-if="formData.id"
+                            >删除
+                        </el-button>
+                        <el-button @click="$router.go(-1)" size="default">取消</el-button>
+                    </el-form-item>
+                </el-form>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    name: 'InternationalPatentEdit',
+    created() {
+        if (this.$route.query.id) {
+            this.$http
+                .get('internationalPatent/get/' + this.$route.query.id)
+                .then(res => {
+                    this.formData = res;
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$message.error(e.error);
+                });
+        }
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {},
+            rules: {},
+            workflowOptions: [
+                { label: '待添加供应商', value: 'ADD_SUPPLIERS' },
+                { label: '待提交供应商材料', value: 'SUPPLIER_MATERIALS' },
+                { label: '待维护案件', value: 'MAINTAIN_CASE' },
+                { label: '待官文流转', value: 'OFFICIAL_CIRCULATION' },
+                { label: '待补正答复', value: 'SUPPLEMENTARY_REPLY' },
+                { label: '待上传答复意见书', value: 'REPLY_SUBMISSION' },
+                { label: '待确认答复状态', value: 'CONFIRM_REPLY' },
+                { label: '已完成', value: 'COMPLETED' }
+            ]
+        };
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            let data = { ...this.formData };
+
+            this.saving = true;
+            this.$http
+                .post('/internationalPatent/save', data, { body: 'json' })
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+                .then(() => {
+                    return this.$http.post(`/internationalPatent/del/${this.formData.id}`);
+                })
+                .then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                })
+                .catch(e => {
+                    if (e !== 'cancel') {
+                        console.log(e);
+                        this.$message.error((e || {}).error || '删除失败');
+                    }
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped></style>

+ 188 - 0
src/main/vue/src/views/InternationalPatentList.vue

@@ -0,0 +1,188 @@
+<template>
+    <div class="list-view">
+        <page-title>
+            <el-button @click="addRow" type="primary" icon="el-icon-plus" :loading="downloading" class="filter-item">
+                新增
+            </el-button>
+            <el-button @click="download" icon="el-icon-upload2" :loading="downloading" class="filter-item">
+                导出
+            </el-button>
+        </page-title>
+        <div class="filters-container">
+            <el-input
+                placeholder="搜索..."
+                v-model="search"
+                clearable
+                class="filter-item search"
+                @keyup.enter.native="getData"
+            >
+                <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
+            </el-input>
+        </div>
+        <el-table
+            :data="tableData"
+            row-key="id"
+            ref="table"
+            header-row-class-name="table-header-row"
+            header-cell-class-name="table-header-cell"
+            row-class-name="table-row"
+            cell-class-name="table-cell"
+            :height="tableHeight"
+        >
+            <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
+            <el-table-column prop="id" label="ID" width="100"> </el-table-column>
+            <el-table-column prop="workflow" label="流程" :formatter="workflowFormatter"> </el-table-column>
+            <el-table-column prop="pctApplyNo" label="pct申请号"> </el-table-column>
+            <el-table-column prop="pctApplyDate" label="pct申请日"> </el-table-column>
+            <el-table-column prop="actualOfficialAmount" label="官费实际金额"> </el-table-column>
+            <el-table-column prop="replyStatus" label="答复意见状态"> </el-table-column>
+            <el-table-column prop="officialCirculation" label="是否继续官文流转">
+                <template slot-scope="{ row }">
+                    <el-tag :type="row.officialCirculation ? '' : 'info'">{{ row.officialCirculation }}</el-tag>
+                </template>
+            </el-table-column>
+            <el-table-column label="操作" align="center" fixed="right" min-width="150">
+                <template slot-scope="{ row }">
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <!-- <div class="multiple-mode-wrapper">
+                <el-button v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button @click="operation1">批量操作1</el-button>
+                    <el-button @click="operation2">批量操作2</el-button>
+                    <el-button @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div> -->
+            <el-pagination
+                background
+                @size-change="onSizeChange"
+                @current-change="onCurrentChange"
+                :current-page="page"
+                :page-sizes="[10, 20, 30, 40, 50]"
+                :page-size="pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="totalElements"
+            >
+            </el-pagination>
+        </div>
+    </div>
+</template>
+<script>
+import { mapState } from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
+
+export default {
+    name: 'InternationalPatentList',
+    mixins: [pageableTable],
+    data() {
+        return {
+            multipleMode: false,
+            search: '',
+            url: '/internationalPatent/all',
+            downloading: false,
+            workflowOptions: [
+                { label: '待添加供应商', value: 'ADD_SUPPLIERS' },
+                { label: '待提交供应商材料', value: 'SUPPLIER_MATERIALS' },
+                { label: '待维护案件', value: 'MAINTAIN_CASE' },
+                { label: '待官文流转', value: 'OFFICIAL_CIRCULATION' },
+                { label: '待补正答复', value: 'SUPPLEMENTARY_REPLY' },
+                { label: '待上传答复意见书', value: 'REPLY_SUBMISSION' },
+                { label: '待确认答复状态', value: 'CONFIRM_REPLY' },
+                { label: '已完成', value: 'COMPLETED' }
+            ]
+        };
+    },
+    computed: {
+        selection() {
+            return this.$refs.table.selection.map(i => i.id);
+        }
+    },
+    methods: {
+        workflowFormatter(row, column, cellValue, index) {
+            let selectedOption = this.workflowOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        },
+        beforeGetData() {
+            return { search: this.search };
+        },
+        toggleMultipleMode(multipleMode) {
+            this.multipleMode = multipleMode;
+            if (!multipleMode) {
+                this.$refs.table.clearSelection();
+            }
+        },
+        addRow() {
+            this.$router.push({
+                path: '/internationalPatentEdit',
+                query: {
+                    ...this.$route.query
+                }
+            });
+        },
+        editRow(row) {
+            this.$router.push({
+                path: '/internationalPatentEdit',
+                query: {
+                    id: row.id
+                }
+            });
+        },
+        download() {
+            this.downloading = true;
+            this.$axios
+                .get('/internationalPatent/excel', {
+                    responseType: 'blob',
+                    params: { size: 10000 }
+                })
+                .then(res => {
+                    console.log(res);
+                    this.downloading = false;
+                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                    const link = document.createElement('a');
+                    link.href = downloadUrl;
+                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
+                    document.body.appendChild(link);
+                    link.click();
+                    link.remove();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    this.$message.error(e.error);
+                });
+        },
+        operation1() {
+            this.$notify({
+                title: '提示',
+                message: this.selection
+            });
+        },
+        operation2() {
+            this.$message('操作2');
+        },
+        deleteRow(row) {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+                .then(() => {
+                    return this.$http.post(`/internationalPatent/del/${row.id}`);
+                })
+                .then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                })
+                .catch(e => {
+                    if (e !== 'cancel') {
+                        this.$message.error(e.error);
+                    }
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped></style>

+ 61 - 0
src/test/java/com/izouma/uwip/service/InternationalPatentServiceTest.java

@@ -0,0 +1,61 @@
+package com.izouma.uwip.service;
+
+import com.izouma.uwip.domain.InternationalPatent;
+import com.izouma.uwip.dto.InternationalPatentDTO;
+import com.izouma.uwip.dto.PageQuery;
+import com.izouma.uwip.enums.InternationalWorkflow;
+import com.izouma.uwip.enums.PatentType;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.domain.Page;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.time.LocalDate;
+import java.util.Map;
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class InternationalPatentServiceTest {
+
+    @Autowired
+    private InternationalPatentService internationalPatentService;
+
+    @Test
+    public void saveDTO() {
+//        InternationalPatentDTO dto = InternationalPatentDTO.builder()
+//                .name("一种视频监控分析系统和方法")
+//                .type(PatentType.INVENTION)
+//                .clientPartnerId(168L)
+//                .applicantName("王")
+//                .applicantEnName("Wang")
+//                .applicantAddress("南京市")
+//                .applicantEnAddress("NanJing")
+//                .inventorName("李")
+//                .inventorEnName("Li")
+//                .priorityNo("xxx")
+//                .priorityDate(LocalDate.now())
+//                .priorityCountry("中国")
+//                .workflow(InternationalWorkflow.ADD_SUPPLIERS)
+//                .build();
+        InternationalPatentDTO dto = InternationalPatentDTO.builder()
+                .iid(261L)
+                .patentId(260L)
+                .workflow(InternationalWorkflow.SUPPLIER_MATERIALS)
+                .supplierPartnerId(171L)
+                .supplierNo("GYS")
+                .supplierSubmitPeriod(LocalDate.now().plusWeeks(1))
+                .build();
+        System.out.println(internationalPatentService.saveDTO(dto, 1L));
+    }
+
+    @Test
+    public void test() {
+        PageQuery pageQuery = new PageQuery();
+        Map<String, Object> query = pageQuery.getQuery();
+        query.put("applyStatus", "SUBSTANTIVE_STAGE");
+        Page<InternationalPatent> all = internationalPatentService.allDTO(pageQuery);
+        System.out.println(all.getContent());
+    }
+}

+ 17 - 0
src/test/java/com/izouma/uwip/web/InternationalPatentControllerTest.java

@@ -0,0 +1,17 @@
+package com.izouma.uwip.web;
+
+import com.izouma.uwip.ApplicationTests;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+public class InternationalPatentControllerTest extends ApplicationTests {
+
+    @Autowired
+    private InternationalPatentController internationalPatentController;
+
+    @Test
+    public void getDTO() {
+        System.out.println(internationalPatentController.getDTO(261L));
+    }
+}

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff