From b4ba324df408dc5f64b6f767b71ea9cfc870e5f0 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期三, 08 十一月 2023 17:09:00 +0800
Subject: [PATCH] Changes

---
 modules/mainPart/src/main/java/com/zt/life/modules/project/dao/SoftwareTestOrderDao.java                |   23 +
 modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/service/TestAgencyInfoService.java       |   40 ++
 modules/mainPart/src/main/java/com/zt/life/modules/project/model/SoftwareTestOrder.java                 |  325 ++++++++++++++++
 web/src/views/modules/sysBaseInfo/TestAgencyInfo.vue                                                    |   44 ++
 modules/mainPart/src/main/java/com/zt/life/modules/project/service/SoftwareTestOrderService.java        |   40 ++
 web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue                                         |  127 ++++++
 modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/controller/TestAgencyInfoController.java |   96 ++++
 web/src/views/modules/project/Project.vue                                                               |   18 
 web/src/views/modules/project/SoftwareTestOrder.vue                                                     |   58 ++
 modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/dao/TestAgencyInfoDao.java               |   23 +
 modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/model/TestAgencyInfo.java                |   48 ++
 modules/mainPart/src/main/java/com/zt/life/modules/project/dto/ProjectDto.java                          |   27 +
 modules/mainPart/src/main/resources/mapper/sysBaseInfo/TestAgencyInfoDao.xml                            |   20 +
 modules/mainPart/src/main/java/com/zt/life/modules/project/controller/SoftwareTestOrderController.java  |   98 ++++
 modules/mainPart/src/main/resources/mapper/newplan/TaskCenterDao.xml                                    |  100 ++--
 modules/mainPart/src/main/resources/mapper/project/SoftwareTestOrderDao.xml                             |   21 +
 web/src/views/modules/sysBaseInfo/TestAgencyInfo-AddOrUpdate.vue                                        |   69 +++
 17 files changed, 1,115 insertions(+), 62 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/SoftwareTestOrderController.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/SoftwareTestOrderController.java
new file mode 100644
index 0000000..6b8bf9f
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/SoftwareTestOrderController.java
@@ -0,0 +1,98 @@
+package com.zt.life.modules.project.controller;
+
+
+import com.zt.common.annotation.LogOperation;
+import com.zt.common.constant.Constant;
+import com.zt.common.annotation.QueryParam;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.servlet.Result;
+import com.zt.common.servlet.PageResult;
+import com.zt.common.validator.AssertUtils;
+import com.zt.common.validator.ValidatorUtils;
+import com.zt.common.validator.group.AddGroup;
+import com.zt.common.validator.group.DefaultGroup;
+import com.zt.common.validator.group.UpdateGroup;
+import com.zt.life.modules.project.model.SoftwareTestOrder;
+import com.zt.life.modules.project.service.SoftwareTestOrderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+/**
+ * software_test_order
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-08
+ */
+@RestController
+@RequestMapping("/project/SoftwareTestOrder/")
+@Api(tags="software_test_order")
+public class SoftwareTestOrderController {
+    @Autowired
+    private SoftwareTestOrderService softwareTestOrderService;
+
+    @GetMapping("page")
+    @ApiOperation("鍒嗛〉")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
+        @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
+        @ApiImplicitParam(name = "testBasis", value = "娴嬭瘯渚濇嵁", dataType = Constant.QT.STRING, format = "test_basis^EQ"),
+        @ApiImplicitParam(name = "testType", value = "娴嬭瘯绫诲瀷", dataType = Constant.QT.STRING, format = "test_type^EQ"),
+        @ApiImplicitParam(name = "testStandard", value = "娴嬭瘯鏍囧噯", dataType = Constant.QT.STRING, format = "test_standard^EQ"),
+        @ApiImplicitParam(name = "articleNature", value = "鐗╁搧鎬ц川", dataType = Constant.QT.STRING, format = "article_nature^EQ")})
+    public PageResult<SoftwareTestOrder> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
+        return PageResult.ok(softwareTestOrderService.page(queryFilter));
+    }
+
+    @GetMapping("{id}")
+    @ApiOperation("淇℃伅")
+    public Result<SoftwareTestOrder> get(@PathVariable("id") Long id){
+        SoftwareTestOrder data = softwareTestOrderService.get(id);
+
+        return Result.ok(data);
+    }
+
+    @PostMapping
+    @ApiOperation("鏂板")
+    @LogOperation("鏂板")
+    public Result insert(@RequestBody SoftwareTestOrder softwareTestOrder){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(softwareTestOrder, AddGroup.class, DefaultGroup.class);
+        softwareTestOrderService.insert(softwareTestOrder);
+
+        return Result.ok();
+    }
+
+    @PutMapping
+    @ApiOperation("淇敼")
+    @LogOperation("淇敼")
+    public Result update(@RequestBody SoftwareTestOrder softwareTestOrder){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(softwareTestOrder, UpdateGroup.class, DefaultGroup.class);
+        softwareTestOrderService.update(softwareTestOrder);
+
+        return Result.ok();
+    }
+
+    @DeleteMapping
+    @ApiOperation("鍒犻櫎")
+    @LogOperation("鍒犻櫎")
+    public Result delete(@RequestBody Long[] ids){
+        //鏁堥獙鏁版嵁
+        AssertUtils.isArrayEmpty(ids, "id");
+        softwareTestOrderService.delete(ids);
+
+        return Result.ok();
+    }
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/dao/SoftwareTestOrderDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/dao/SoftwareTestOrderDao.java
new file mode 100644
index 0000000..e282e25
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/dao/SoftwareTestOrderDao.java
@@ -0,0 +1,23 @@
+package com.zt.life.modules.project.dao;
+
+import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.project.model.SoftwareTestOrder;
+import org.apache.ibatis.annotations.Mapper;
+
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * software_test_order
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-08
+ */
+@Mapper
+public interface SoftwareTestOrderDao extends BaseDao<SoftwareTestOrder> {
+
+    List<SoftwareTestOrder> getList(Map<String, Object> params);
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/dto/ProjectDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/dto/ProjectDto.java
new file mode 100644
index 0000000..6cf4b86
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/dto/ProjectDto.java
@@ -0,0 +1,27 @@
+package com.zt.life.modules.project.dto;
+
+import com.zt.life.modules.project.model.Project;
+import com.zt.life.modules.project.model.SoftwareTestOrder;
+import com.zt.life.modules.project.model.SoftwareTestOrderDeliverable;
+import com.zt.life.modules.project.model.SoftwareTestOrderMeasured;
+import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo;
+import com.zt.life.sys.dto.OssDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class ProjectDto extends Project {
+
+    private SoftwareTestOrder softwareTestOrder;
+    private Project project;
+    private TestAgencyInfo TestAgencyInfo;
+    @ApiModelProperty(value = "琚祴浠�")
+    private List<SoftwareTestOrderMeasured> childrenTable1 = new ArrayList<>();
+    @ApiModelProperty(value = "浜や粯浠�")
+    private List<SoftwareTestOrderDeliverable> childrenTable2 = new ArrayList<>();
+
+}
+
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/model/SoftwareTestOrder.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/model/SoftwareTestOrder.java
new file mode 100644
index 0000000..85cb239
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/model/SoftwareTestOrder.java
@@ -0,0 +1,325 @@
+package com.zt.life.modules.project.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zt.common.entity.BusiEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * software_test_order
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-08
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class SoftwareTestOrder extends BusiEntity {
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "椤圭洰ID")
+	private Long projectId;
+
+	@ApiModelProperty(value = "杩愯鐜")
+	private String optEnviron;
+
+	@ApiModelProperty(value = "缂栫▼璇█")
+	private String programLang;
+
+	@ApiModelProperty(value = "娴嬭瘯渚濇嵁")
+	private String testBasis;
+
+	@ApiModelProperty(value = "娴嬭瘯绫诲瀷")
+	private String testType;
+
+	@ApiModelProperty(value = "娴嬭瘯鏍囧噯")
+	private String testStandard;
+
+	@ApiModelProperty(value = "寮�濮嬫棩鏈�")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date startDate;
+
+	@ApiModelProperty(value = "缁撴潫鏃ユ湡")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date endDate;
+
+	@ApiModelProperty(value = "娴嬭瘯鍦哄湴")
+	private String testVenue;
+
+	@ApiModelProperty(value = "鍏朵粬瑕佹眰")
+	private String otherRequire;
+
+	@ApiModelProperty(value = "娴嬭瘯鏃ユ湡")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date testDate;
+
+	@ApiModelProperty(value = "浜や粯鏃ユ湡")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date deliveryDate;
+
+	@ApiModelProperty(value = "妫�娴嬭垂鐢�")
+	private Integer testCost;
+
+	@ApiModelProperty(value = "鐗╁搧鎬ц川")
+	private String articleNature;
+
+	@ApiModelProperty(value = "鏍峰搧鐘舵��")
+	private String sampleStatus;
+
+	@ApiModelProperty(value = "娴嬭瘎鏈烘瀯鍚嶇О")
+	private String agencyName;
+
+	@ApiModelProperty(value = "鍦板潃")
+	private String site;
+
+	@ApiModelProperty(value = "涓氬姟鑱旂郴")
+	private String businContact;
+
+	@ApiModelProperty(value = "涓氬姟鎶曡瘔")
+	private String businComplaint;
+
+	@ApiModelProperty(value = "瀹為獙瀹よ仈绯讳汉")
+	private String laborContact;
+
+	@ApiModelProperty(value = "瀹為獙瀹よ仈绯荤數璇�")
+	private String labContactNum;
+
+	@ApiModelProperty(value = "閭斂缂栫爜")
+	private String postalCode;
+
+	@ApiModelProperty(value = "浼犵湡")
+	private String fax;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "濮旀墭鍗曚綅鍚嶇О")
+	private String entrustUnitName;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "濮旀墭鍗曚綅鍦板潃")
+	private String entrustUnitAddress;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "濮旀墭鍗曚綅鑱旂郴浜�")
+	private String entrustUnitContact;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "濮旀墭鍗曚綅鑱旂郴鏂瑰紡")
+	private String entrustUnitContWay;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "寮�鍙戝崟浣嶅悕绉�")
+	private String developUnitName;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "寮�鍙戝崟浣嶅湴鍧�")
+	private String developUnitAddress;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "寮�鍙戝崟浣嶈仈绯讳汉")
+	private String developUnitContact;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "寮�鍙戝崟浣嶈仈绯绘柟寮�")
+	private String developUnitContWay;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "杞欢鍚嶇О")
+	private String softwareName;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "椤圭洰缂栧彿")
+	private String code;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "椤圭洰鏍囪瘑")
+	private String identity;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "瀵嗙骇")
+	private Integer secretClass;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "鍏抽敭绛夌骇")
+	private Integer criticalLevel;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "娴嬭瘯绾у埆")
+	private Integer testLevel;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "杞欢绫诲瀷")
+	private String softwareType;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "椤圭洰璐熻矗浜�")
+	private String projectLeader;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "椤圭洰娴嬭瘯浜哄憳")
+	private String projectTesters;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "椤圭洰瀹℃牳浜哄憳")
+	private String projectReviewer;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "鏄惁绛剧讲鍚堝悓")
+	private Integer isContract;
+
+	public String getEntrustUnitName() {
+		return entrustUnitName;
+	}
+
+	public void setEntrustUnitName(String entrustUnitName) {
+		this.entrustUnitName = entrustUnitName;
+	}
+
+	public String getEntrustUnitAddress() {
+		return entrustUnitAddress;
+	}
+
+	public void setEntrustUnitAddress(String entrustUnitAddress) {
+		this.entrustUnitAddress = entrustUnitAddress;
+	}
+
+	public String getEntrustUnitContact() {
+		return entrustUnitContact;
+	}
+
+	public void setEntrustUnitContact(String entrustUnitContact) {
+		this.entrustUnitContact = entrustUnitContact;
+	}
+
+	public String getEntrustUnitContWay() {
+		return entrustUnitContWay;
+	}
+
+	public void setEntrustUnitContWay(String entrustUnitContWay) {
+		this.entrustUnitContWay = entrustUnitContWay;
+	}
+
+	public String getDevelopUnitName() {
+		return developUnitName;
+	}
+
+	public void setDevelopUnitName(String developUnitName) {
+		this.developUnitName = developUnitName;
+	}
+
+	public String getDevelopUnitAddress() {
+		return developUnitAddress;
+	}
+
+	public void setDevelopUnitAddress(String developUnitAddress) {
+		this.developUnitAddress = developUnitAddress;
+	}
+
+	public String getDevelopUnitContact() {
+		return developUnitContact;
+	}
+
+	public void setDevelopUnitContact(String developUnitContact) {
+		this.developUnitContact = developUnitContact;
+	}
+
+	public String getDevelopUnitContWay() {
+		return developUnitContWay;
+	}
+
+	public void setDevelopUnitContWay(String developUnitContWay) {
+		this.developUnitContWay = developUnitContWay;
+	}
+
+	public String getSoftwareName() {
+		return softwareName;
+	}
+
+	public void setSoftwareName(String softwareName) {
+		this.softwareName = softwareName;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getIdentity() {
+		return identity;
+	}
+
+	public void setIdentity(String identity) {
+		this.identity = identity;
+	}
+
+	public Integer getSecretClass() {
+		return secretClass;
+	}
+
+	public void setSecretClass(Integer secretClass) {
+		this.secretClass = secretClass;
+	}
+
+	public Integer getCriticalLevel() {
+		return criticalLevel;
+	}
+
+	public void setCriticalLevel(Integer criticalLevel) {
+		this.criticalLevel = criticalLevel;
+	}
+
+	public Integer getTestLevel() {
+		return testLevel;
+	}
+
+	public void setTestLevel(Integer testLevel) {
+		this.testLevel = testLevel;
+	}
+
+	public String getSoftwareType() {
+		return softwareType;
+	}
+
+	public void setSoftwareType(String softwareType) {
+		this.softwareType = softwareType;
+	}
+
+	public String getProjectLeader() {
+		return projectLeader;
+	}
+
+	public void setProjectLeader(String projectLeader) {
+		this.projectLeader = projectLeader;
+	}
+
+	public String getProjectTesters() {
+		return projectTesters;
+	}
+
+	public void setProjectTesters(String projectTesters) {
+		this.projectTesters = projectTesters;
+	}
+
+	public String getProjectReviewer() {
+		return projectReviewer;
+	}
+
+	public void setProjectReviewer(String projectReviewer) {
+		this.projectReviewer = projectReviewer;
+	}
+
+	public Integer getIsContract() {
+		return isContract;
+	}
+
+	public void setIsContract(Integer isContract) {
+		this.isContract = isContract;
+	}
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/service/SoftwareTestOrderService.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/service/SoftwareTestOrderService.java
new file mode 100644
index 0000000..6526c7b
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/service/SoftwareTestOrderService.java
@@ -0,0 +1,40 @@
+package com.zt.life.modules.project.service;
+
+import com.zt.common.service.BaseService;
+import com.zt.life.modules.project.dao.SoftwareTestOrderDao;
+import com.zt.life.modules.project.model.SoftwareTestOrder;
+import org.springframework.stereotype.Service;
+import com.zt.common.db.query.QueryFilter;
+import javax.annotation.Resource;
+import java.util.List;
+
+
+/**
+ * software_test_order
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-08
+ */
+@Service
+public class SoftwareTestOrderService  extends BaseService<SoftwareTestOrderDao, SoftwareTestOrder> {
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param queryFilter
+     * @return
+     */
+    public List<SoftwareTestOrder> page(QueryFilter queryFilter) {
+        return baseDao.getList(queryFilter.getQueryParams());
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param ids
+     */
+    public void delete(Long[] ids) {
+        super.deleteLogic(ids);
+    }
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/controller/TestAgencyInfoController.java b/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/controller/TestAgencyInfoController.java
new file mode 100644
index 0000000..ebfad3e
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/controller/TestAgencyInfoController.java
@@ -0,0 +1,96 @@
+package com.zt.life.modules.sysBaseInfo.controller;
+
+
+import com.zt.common.annotation.LogOperation;
+import com.zt.common.constant.Constant;
+import com.zt.common.annotation.QueryParam;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.servlet.Result;
+import com.zt.common.servlet.PageResult;
+import com.zt.common.validator.AssertUtils;
+import com.zt.common.validator.ValidatorUtils;
+import com.zt.common.validator.group.AddGroup;
+import com.zt.common.validator.group.DefaultGroup;
+import com.zt.common.validator.group.UpdateGroup;
+import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo;
+import com.zt.life.modules.sysBaseInfo.service.TestAgencyInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+/**
+ * test_agency_info
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-08
+ */
+@RestController
+@RequestMapping("/sysBaseInfo/TestAgencyInfo/")
+@Api(tags="test_agency_info")
+public class TestAgencyInfoController {
+    @Autowired
+    private TestAgencyInfoService testAgencyInfoService;
+
+    @GetMapping("page")
+    @ApiOperation("鍒嗛〉")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
+        @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
+        @ApiImplicitParam(name = "agencyName", value = "娴嬭瘎鏈烘瀯鍚嶇О", dataType = Constant.QT.STRING, format = "agency_name^LK")    })
+    public PageResult<TestAgencyInfo> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
+
+        return PageResult.ok(testAgencyInfoService.page(queryFilter));
+    }
+
+    @GetMapping("{id}")
+    @ApiOperation("淇℃伅")
+    public Result<TestAgencyInfo> get(@PathVariable("id") Long id){
+        TestAgencyInfo data = testAgencyInfoService.get(id);
+
+        return Result.ok(data);
+    }
+
+    @PostMapping
+    @ApiOperation("鏂板")
+    @LogOperation("鏂板")
+    public Result insert(@RequestBody TestAgencyInfo testAgencyInfo){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(testAgencyInfo, AddGroup.class, DefaultGroup.class);
+        testAgencyInfoService.insert(testAgencyInfo);
+
+        return Result.ok();
+    }
+
+    @PutMapping
+    @ApiOperation("淇敼")
+    @LogOperation("淇敼")
+    public Result update(@RequestBody TestAgencyInfo testAgencyInfo){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(testAgencyInfo, UpdateGroup.class, DefaultGroup.class);
+        testAgencyInfoService.update(testAgencyInfo);
+
+        return Result.ok();
+    }
+
+    @DeleteMapping
+    @ApiOperation("鍒犻櫎")
+    @LogOperation("鍒犻櫎")
+    public Result delete(@RequestBody Long[] ids){
+        //鏁堥獙鏁版嵁
+        AssertUtils.isArrayEmpty(ids, "id");
+        testAgencyInfoService.delete(ids);
+
+        return Result.ok();
+    }
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/dao/TestAgencyInfoDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/dao/TestAgencyInfoDao.java
new file mode 100644
index 0000000..056a3b8
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/dao/TestAgencyInfoDao.java
@@ -0,0 +1,23 @@
+package com.zt.life.modules.sysBaseInfo.dao;
+
+import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * test_agency_info
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-08
+ */
+@Mapper
+public interface TestAgencyInfoDao extends BaseDao<TestAgencyInfo> {
+
+    List<TestAgencyInfo> getList(Map<String, Object> params);
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/model/TestAgencyInfo.java b/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/model/TestAgencyInfo.java
new file mode 100644
index 0000000..8d3ca5f
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/model/TestAgencyInfo.java
@@ -0,0 +1,48 @@
+package com.zt.life.modules.sysBaseInfo.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zt.common.entity.BusiEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * test_agency_info
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-08
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("test_agency_info")
+public class TestAgencyInfo extends BusiEntity {
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "娴嬭瘎鏈烘瀯鍚嶇О")
+	private String agencyName;
+
+	@ApiModelProperty(value = "鍦板潃")
+	private String site;
+
+	@ApiModelProperty(value = "涓氬姟鑱旂郴")
+	private String businContact;
+
+	@ApiModelProperty(value = "涓氬姟鎶曡瘔")
+	private String businComplaint;
+
+	@ApiModelProperty(value = "瀹為獙瀹よ仈绯讳汉")
+	private String laborContact;
+
+	@ApiModelProperty(value = "瀹為獙瀹よ仈绯荤數璇�")
+	private String labContactNum;
+
+	@ApiModelProperty(value = "閭斂缂栫爜")
+	private String postalCode;
+
+	@ApiModelProperty(value = "浼犵湡")
+	private String fax;
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/service/TestAgencyInfoService.java b/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/service/TestAgencyInfoService.java
new file mode 100644
index 0000000..5fa5183
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/sysBaseInfo/service/TestAgencyInfoService.java
@@ -0,0 +1,40 @@
+package com.zt.life.modules.sysBaseInfo.service;
+
+import com.zt.common.service.BaseService;
+import com.zt.life.modules.sysBaseInfo.dao.TestAgencyInfoDao;
+import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo;
+import org.springframework.stereotype.Service;
+import com.zt.common.db.query.QueryFilter;
+import javax.annotation.Resource;
+import java.util.List;
+
+
+/**
+ * test_agency_info
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-08
+ */
+@Service
+public class TestAgencyInfoService  extends BaseService<TestAgencyInfoDao, TestAgencyInfo> {
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param queryFilter
+     * @return
+     */
+    public List<TestAgencyInfo> page(QueryFilter queryFilter) {
+        return baseDao.getList(queryFilter.getQueryParams());
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param ids
+     */
+    public void delete(Long[] ids) {
+        super.deleteLogic(ids);
+    }
+
+}
diff --git a/modules/mainPart/src/main/resources/mapper/newplan/TaskCenterDao.xml b/modules/mainPart/src/main/resources/mapper/newplan/TaskCenterDao.xml
index ee32184..b548ba0 100644
--- a/modules/mainPart/src/main/resources/mapper/newplan/TaskCenterDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/newplan/TaskCenterDao.xml
@@ -65,15 +65,15 @@
         a.title  as summary,
         b.STEP_ROUTER,
         b.STEP_ROUTER_ID
-        FROM DJ_WF_RUN_TASK a
-        left join DJ_WF_DEF_STEP b on a.step_id = b.id
+        FROM WF_RUN_TASK a
+        left join WF_DEF_STEP b on a.step_id = b.id
         WHERE a.is_delete =0 and a.status in (0,1)
         AND a.RECEIVE_ID = #{userId}
         <if test="projectId != null and projectId != ''">
             and a.biz_group_id = #{projectId}
          </if>
         <if test="djxlSystem != null and djxlSystem != ''">
-            and a.FLOW_ID in (select id from dj_wf_def where system_type = #{djxlSystem})
+            and a.FLOW_ID in (select id from wf_def where system_type = #{djxlSystem})
         </if>
         ORDER BY a.receive_time DESC
     </select>
@@ -97,13 +97,13 @@
                               a1.receive_time,
                               a1.finish_time as finish_time,
                               a1.status
-                          FROM DJ_WF_RUN_TASK a1
+                          FROM WF_RUN_TASK a1
                           WHERE a1.is_delete = 0
                                 and (a1.receive_id=#{userId}
-                                    or EXISTS(SELECT 1 FROM dj_sys_role s1,dj_sys_role_user s2 WHERE s1.ID = s2.role_id AND s2.USER_id = #{userId} AND
+                                    or EXISTS(SELECT 1 FROM sys_role s1,sys_role_user s2 WHERE s1.ID = s2.role_id AND s2.USER_id = #{userId} AND
                                     s2.is_delete=0 and s1.CODE in ('all','xtglybm')))
                                 <if test="djxlSystem != null and djxlSystem != ''">
-                                    and a1.FLOW_ID in (select id from dj_wf_def where system_type = #{djxlSystem})
+                                    and a1.FLOW_ID in (select id from wf_def where system_type = #{djxlSystem})
                                 </if>
 
                       ) a2
@@ -125,7 +125,7 @@
                  b1.receive_time,
                  b1.status
              from ${pageDone_temp1} a1,
-                  DJ_WF_RUN_TASK b1
+                  WF_RUN_TASK b1
              WHERE b1.is_delete = 0
                and b1.status in(0,1,100)
 
@@ -161,8 +161,8 @@
         a.sender_name as finishUserName
         FROM ${pageDone_temp1} a
         join ${pageDone_temp2} b on a.biz_id = b.biz_id and a.flow_code = b.flow_code
-        left join DJ_WF_DEF_STEP c on a.step_id = c.id
-        left join DJ_WF_DEF_STEP d on b.step_id = d.id
+        left join WF_DEF_STEP c on a.step_id = c.id
+        left join WF_DEF_STEP d on b.step_id = d.id
         group by a.biz_id,a.flow_code,a.step_id
         ORDER BY a.receive_time DESC
     </select>
@@ -184,20 +184,20 @@
             a.create_date AS RECEIVE_TIME,
             DateDiff(CURRENT_DATE,a.create_date) as idleDays
         FROM
-            DJ_ZHGL_ANNUAL_PLAN a
+            ZHGL_ANNUAL_PLAN a
                 LEFT JOIN view_zt_boat_tree p on concat(a.product_id) = p.product_id
-                LEFT JOIN DJ_SYS_DICT_DATA c ON a.maintain_level = c.Dict_Value
-                AND dict_type_id IN(SELECT id FROM DJ_SYS_DICT_TYPE WHERE DICT_TYPE = 'question_level_type')
+                LEFT JOIN SYS_DICT_DATA c ON a.maintain_level = c.Dict_Value
+                AND dict_type_id IN(SELECT id FROM SYS_DICT_TYPE WHERE DICT_TYPE = 'question_level_type')
                 LEFT JOIN SYS_USER u ON u.user_id = a.CREATOR
         WHERE a.is_delete = 0
           and (
                 (CURRENT_STATE = 1
-                    and EXISTS(SELECT 1 FROM dj_sys_role s1,dj_sys_role_user s2
+                    and EXISTS(SELECT 1 FROM sys_role s1,sys_role_user s2
                         WHERE s1.ID = s2.role_id AND s2.USER_id = #{userId} AND
                             s2.is_delete=0 and s1.CODE = 'zlbm')
                     ) or (
                         CURRENT_STATE = '5'
-                        and EXISTS(SELECT 1 FROM dj_sys_role s1,dj_sys_role_user s2
+                        and EXISTS(SELECT 1 FROM sys_role s1,sys_role_user s2
                             WHERE s1.ID = s2.role_id AND s2.USER_id = #{userId} AND
                                 s2.is_delete=0 and s1.CODE = 'czbm')
                     )
@@ -241,17 +241,17 @@
                             when a.CURRENT_STATE = 5 then '澶勯暱'
                             else '' end                                     AS receiveName,
                         DateDiff(CURRENT_DATE, a.create_date)               as idleDays
-                 FROM DJ_ZHGL_ANNUAL_PLAN a
+                 FROM ZHGL_ANNUAL_PLAN a
                           LEFT JOIN view_zt_boat_tree p on concat(a.product_id) = p.product_id
-                          LEFT JOIN DJ_SYS_DICT_DATA c ON a.maintain_level = c.Dict_Value
-                     AND dict_type_id IN (SELECT id FROM DJ_SYS_DICT_TYPE WHERE DICT_TYPE = 'question_level_type')
+                          LEFT JOIN SYS_DICT_DATA c ON a.maintain_level = c.Dict_Value
+                     AND dict_type_id IN (SELECT id FROM SYS_DICT_TYPE WHERE DICT_TYPE = 'question_level_type')
                           LEFT JOIN SYS_USER u ON u.user_id = a.UPDATER
                  WHERE a.is_delete = 0
                    and (
                          (CURRENT_STATE in (1, 10)
                              and EXISTS(SELECT 1
-                                        FROM dj_sys_role s1,
-                                             dj_sys_role_user s2
+                                        FROM sys_role s1,
+                                             sys_role_user s2
                                         WHERE s2.IS_DELETE = 0
                                           and s1.ID = s2.role_id
                                           AND s2.USER_id = #{userId}
@@ -260,8 +260,8 @@
                          or (
                                  CURRENT_STATE in (5, 10)
                                  and EXISTS(SELECT 1
-                                            FROM dj_sys_role s1,
-                                                 dj_sys_role_user s2
+                                            FROM sys_role s1,
+                                                 sys_role_user s2
                                             WHERE s2.IS_DELETE = 0
                                               and s1.ID = s2.role_id
                                               AND s2.USER_id = #{userId}
@@ -269,8 +269,8 @@
                              )
                          or ( CURRENT_STATE in (1, 5, 10)
                             and EXISTS(SELECT 1
-                                    FROM dj_sys_role s1,
-                                         dj_sys_role_user s2
+                                    FROM sys_role s1,
+                                         sys_role_user s2
                                     WHERE s1.ID = s2.role_id
                                       AND s2.USER_id = #{userId}
                                       AND s2.is_delete = 0
@@ -303,7 +303,7 @@
                 SELECT
                     *,'rjh_hz' as STEP_MARKER,'鎬诲巶姹囨��' as STEP_Name,'1648318473140449281' as stepRouterId
                 FROM
-                    dj_wx_daily_plan
+                    wx_daily_plan
                 WHERE
                     IS_DELETE =0
                   and FLOW_Status = 'rjh_hz'
@@ -311,8 +311,8 @@
                         SELECT
                             1
                         FROM
-                            dj_sys_role s1,
-                            dj_sys_role_user s2
+                            sys_role s1,
+                            sys_role_user s2
                         WHERE
                             s1.ID = s2.role_id
                           AND s2.USER_id = #{userId}
@@ -322,7 +322,7 @@
                 SELECT
                     *,'rjh_sh' as STEP_MARKER,'閮ㄩ棬闀垮鏍�' as STEP_Name,'1648318806923161601' as stepRouterId
                 FROM
-                    dj_wx_daily_plan
+                    wx_daily_plan
                 WHERE
                     IS_DELETE =0
                   and FLOW_Status = 'rjh_sh'
@@ -330,8 +330,8 @@
                         SELECT
                             1
                         FROM
-                            dj_sys_role s1,
-                            dj_sys_role_user s2
+                            sys_role s1,
+                            sys_role_user s2
                         WHERE
                             s1.ID = s2.role_id
                           AND s2.USER_id = #{userId}
@@ -341,7 +341,7 @@
                 SELECT
                     *,'rjh_cjfk' as STEP_MARKER,'鍘傚鍙嶉鎯呭喌' as STEP_MARKER,'1648319132719919106' as stepRouterId
                 FROM
-                    dj_wx_daily_plan
+                    wx_daily_plan
                 WHERE
                     IS_DELETE =0
                   and FLOW_Status = 'rjh_fk'
@@ -351,8 +351,8 @@
                         SELECT
                             1
                         FROM
-                            dj_sys_role s1,
-                            dj_sys_role_user s2
+                            sys_role s1,
+                            sys_role_user s2
                         WHERE
                             s1.ID = s2.role_id
                           AND s2.USER_id = #{userId}
@@ -362,7 +362,7 @@
                 SELECT
                     *,'rjh_tyfk' as STEP_MARKER,'鑹囧憳鍙嶉鍔╀慨鎯呭喌' as STEP_Name,'1648318988234534914' as stepRouterId
                 FROM
-                    dj_wx_daily_plan
+                    wx_daily_plan
                 WHERE
                     IS_DELETE =0
                   and FLOW_Status = 'rjh_fk'
@@ -372,8 +372,8 @@
                         SELECT
                             1
                         FROM
-                            dj_sys_role s1,
-                            dj_sys_role_user s2
+                            sys_role s1,
+                            sys_role_user s2
                         WHERE
                             s1.ID = s2.role_id
                           AND s2.USER_id = #{userId}
@@ -383,7 +383,7 @@
                     project_id,
                     plan_date
             ) a
-                left join dj_wx_project b on a.project_id = b.id
+                left join wx_project b on a.project_id = b.id
                 left join sys_user c on a.SUBMIT_PERSONNEL = c.user_id
     </select>
 -->
@@ -413,7 +413,7 @@
                     'monthPlanFlow' as FLOW_CODE,
                     'yjh_hz' as STEP_MARKER,'鎬诲巶姹囨��' as STEP_Name,'1660911405324423170' as stepRouterId
                 FROM
-                    dj_wx_weekly_month_plan
+                    wx_weekly_month_plan
                 WHERE
                     IS_DELETE = 0
                   and PLAN_TYPE = 1
@@ -422,8 +422,8 @@
                         SELECT
                             1
                         FROM
-                            dj_sys_role s1,
-                            dj_sys_role_user s2
+                            sys_role s1,
+                            sys_role_user s2
                         WHERE
                             s1.ID = s2.role_id
                           AND s1.IS_DELETE=0
@@ -441,7 +441,7 @@
                     'weekPlanFlow' as FLOW_CODE,
                     'zjh_hz' as STEP_MARKER,'鎬诲巶姹囨��' as STEP_Name,'1660904721482895361' as stepRouterId
                 FROM
-                    dj_wx_weekly_month_plan
+                    wx_weekly_month_plan
                 WHERE
                     IS_DELETE = 0
                   and PLAN_TYPE = 0
@@ -450,8 +450,8 @@
                         SELECT
                             1
                         FROM
-                            dj_sys_role s1,
-                            dj_sys_role_user s2
+                            sys_role s1,
+                            sys_role_user s2
                         WHERE
                             s1.ID = s2.role_id
                           AND s1.IS_DELETE=0
@@ -469,7 +469,7 @@
                     'rjhFlow' as FLOW_CODE,
                     'rjh_hz' as STEP_MARKER,'鎬诲巶姹囨��' as STEP_Name,'1648318473140449281' as stepRouterId
                 FROM
-                    dj_wx_daily_plan
+                    wx_daily_plan
                 WHERE
                     IS_DELETE = 0
                   and FLOW_Status = 'rjh_hz'
@@ -477,8 +477,8 @@
                         SELECT
                             1
                         FROM
-                            dj_sys_role s1,
-                            dj_sys_role_user s2
+                            sys_role s1,
+                            sys_role_user s2
                         WHERE
                             s1.ID = s2.role_id
                           AND s1.IS_DELETE=0
@@ -489,7 +489,7 @@
                 GROUP BY
                     project_id, plan_date
             ) a
-                left join dj_wx_project b on a.project_id = b.id
+                left join wx_project b on a.project_id = b.id
                 left join sys_user c on a.SUBMIT_PERSONNEL = c.user_id
     </select>
 
@@ -551,16 +551,16 @@
             a.title  as summary,
             b.STEP_ROUTER,
             b.STEP_ROUTER_ID
-        FROM DJ_WF_RUN_TASK a
-                 left join DJ_WF_DEF_STEP b on a.step_id = b.id
+        FROM WF_RUN_TASK a
+                 left join WF_DEF_STEP b on a.step_id = b.id
         WHERE a.is_delete =0 and a.status in (0,1)
-          and a.topic=(select model_name from dj_wx_project where id=#{projectId})
+          and a.topic=(select model_name from wx_project where id=#{projectId})
           and a.step_marker='jsfa_sc'
         ORDER BY a.receive_time DESC limit 1
     </select>
 
     <update id="oneKeyDoneCy">
-        update dj_wf_run_task
+        update wf_run_task
         set status=20, UPDATER=#{userId}, UPDATE_DATE=CURRENT_TIMESTAMP
         where STEP_MARKER in('rjh_cy','zjh_cy','yjh_cy') and status=0 and RECEIVE_ID=#{userId}
     </update>
diff --git a/modules/mainPart/src/main/resources/mapper/project/SoftwareTestOrderDao.xml b/modules/mainPart/src/main/resources/mapper/project/SoftwareTestOrderDao.xml
new file mode 100644
index 0000000..e90c64c
--- /dev/null
+++ b/modules/mainPart/src/main/resources/mapper/project/SoftwareTestOrderDao.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.zt.life.modules.project.dao.SoftwareTestOrderDao">
+
+    <select id="getList" resultType="com.zt.life.modules.project.model.SoftwareTestOrder">
+        SELECT a.*, p.*
+        FROM project p
+        INNER JOIN software_test_order a ON p.id = a.project_id
+        <where>
+            a.is_delete = 0
+            <if test="whereSql!=null">
+                and ${whereSql}
+            </if>
+        </where>
+        <if test="orderBySql!=null">
+            ORDER BY ${orderBySql}
+        </if>
+    </select>
+
+</mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/sysBaseInfo/TestAgencyInfoDao.xml b/modules/mainPart/src/main/resources/mapper/sysBaseInfo/TestAgencyInfoDao.xml
new file mode 100644
index 0000000..b1f1e5e
--- /dev/null
+++ b/modules/mainPart/src/main/resources/mapper/sysBaseInfo/TestAgencyInfoDao.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.zt.life.modules.sysBaseInfo.dao.TestAgencyInfoDao">
+
+    <select id="getList" resultType="com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo">
+        select a.*
+        from test_agency_info a
+        <where>
+            a.is_delete = 0
+            <if test="whereSql!=null">
+                and ${whereSql}
+            </if>
+        </where>
+        <if test="orderBySql!=null">
+            ORDER BY ${orderBySql}
+        </if>
+    </select>
+
+</mapper>
diff --git a/web/src/views/modules/project/Project.vue b/web/src/views/modules/project/Project.vue
index 5fb52f9..4007f79 100644
--- a/web/src/views/modules/project/Project.vue
+++ b/web/src/views/modules/project/Project.vue
@@ -4,28 +4,22 @@
       <zt-table-wraper query-url="/project/Project/page" delete-url="/project/Project" v-slot="{ table }">
         <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
           <el-form-item>
-                                <el-input v-model="dataForm.softwareName" placeholder="璇疯緭鍏ヨ蒋浠跺悕绉�" clearable></el-input>
-              
+            <el-input v-model="dataForm.softwareName" placeholder="璇疯緭鍏ヨ蒋浠跺悕绉�" clearable></el-input>
           </el-form-item>
           <el-form-item>
-                                <zt-dict v-model="dataForm.secretClass" dict="secret_class" clearable></zt-dict>
-              
+            <zt-dict v-model="dataForm.secretClass" dict="secret_class" placeholder="璇烽�夋嫨瀵嗙骇" clearable></zt-dict>
           </el-form-item>
           <el-form-item>
-                                <zt-dict v-model="dataForm.criticalLevel" dict="critical_level" clearable></zt-dict>
-              
+            <zt-dict v-model="dataForm.criticalLevel" dict="critical_level" placeholder="璇烽�夋嫨鍏抽敭绛夌骇" clearable></zt-dict>
           </el-form-item>
           <el-form-item>
-                                <zt-dict v-model="dataForm.testLevel" dict="test_level" clearable></zt-dict>
-              
+            <zt-dict v-model="dataForm.testLevel" dict="test_level" placeholder="璇烽�夋嫨娴嬭瘯绾у埆" clearable></zt-dict>
           </el-form-item>
           <el-form-item>
-                                <zt-dict v-model="dataForm.softwareType" dict="software_type" clearable></zt-dict>
-              
+            <zt-dict v-model="dataForm.softwareType" dict="software_type" placeholder="璇烽�夋嫨杞欢绫诲瀷" clearable></zt-dict>
           </el-form-item>
           <el-form-item>
-                                <zt-dict v-model="dataForm.isContract" dict="is_or_not" clearable></zt-dict>
-              
+            <zt-dict v-model="dataForm.isContract" dict="is_or_not" placeholder="璇烽�夋嫨鏄惁绛剧讲鍚堝悓" clearable></zt-dict>
           </el-form-item>
           <el-form-item>
             <zt-button type="query" @click="table.query()"/>
diff --git a/web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue b/web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue
new file mode 100644
index 0000000..aba7907
--- /dev/null
+++ b/web/src/views/modules/project/SoftwareTestOrder-AddOrUpdate.vue
@@ -0,0 +1,127 @@
+<template>
+  <zt-dialog ref="dialog" column="2" @confirm="formSubmit">
+    <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
+      <zt-form-item label="杩愯鐜" prop="optEnviron" rules="required">
+                        <el-input v-model="dataForm.optEnviron"></el-input>
+                </zt-form-item>
+      <zt-form-item label="缂栫▼璇█" prop="programLang" rules="required">
+                        <el-input v-model="dataForm.programLang"></el-input>
+                </zt-form-item>
+      <zt-form-item label="娴嬭瘯渚濇嵁" prop="testBasis" rules="required">
+                        <zt-dict v-model="dataForm.testBasis" dict="test_basis"></zt-dict>
+                </zt-form-item>
+      <zt-form-item label="娴嬭瘯绫诲瀷" prop="testType" rules="required">
+                        <zt-dict v-model="dataForm.testType" dict="test_type1"></zt-dict>
+                </zt-form-item>
+      <zt-form-item label="娴嬭瘯鏍囧噯" prop="testStandard" rules="required">
+                        <zt-dict v-model="dataForm.testStandard" dict="test_standard"></zt-dict>
+                </zt-form-item>
+      <zt-form-item label="寮�濮嬫棩鏈�" prop="startDate" rules="required">
+                        <el-input v-model="dataForm.startDate"></el-input>
+                </zt-form-item>
+      <zt-form-item label="缁撴潫鏃ユ湡" prop="endDate" rules="required">
+                        <el-input v-model="dataForm.endDate"></el-input>
+                </zt-form-item>
+      <zt-form-item label="娴嬭瘯鍦哄湴" prop="testVenue" rules="required">
+                        <el-input v-model="dataForm.testVenue"></el-input>
+                </zt-form-item>
+      <zt-form-item label="鍏朵粬瑕佹眰" prop="otherRequire" rules="required">
+                        <el-input v-model="dataForm.otherRequire"></el-input>
+                </zt-form-item>
+      <zt-form-item label="娴嬭瘯鏃ユ湡" prop="testDate" rules="required">
+                        <el-input v-model="dataForm.testDate"></el-input>
+                </zt-form-item>
+      <zt-form-item label="浜や粯鏃ユ湡" prop="deliveryDate" rules="required">
+                        <el-input v-model="dataForm.deliveryDate"></el-input>
+                </zt-form-item>
+      <zt-form-item label="妫�娴嬭垂鐢�" prop="testCost" rules="required">
+                        <el-input v-model="dataForm.testCost"></el-input>
+                </zt-form-item>
+      <zt-form-item label="鐗╁搧鎬ц川" prop="articleNature" rules="required">
+                        <zt-dict v-model="dataForm.articleNature" dict="article_nature"></zt-dict>
+                </zt-form-item>
+      <zt-form-item label="鏍峰搧鐘舵��" prop="sampleStatus" rules="required">
+                        <el-input v-model="dataForm.sampleStatus"></el-input>
+                </zt-form-item>
+      <zt-form-item label="娴嬭瘎鏈烘瀯鍚嶇О" prop="agencyName" rules="required">
+                        <el-input v-model="dataForm.agencyName"></el-input>
+                </zt-form-item>
+      <zt-form-item label="鍦板潃" prop="site" rules="required">
+                        <el-input v-model="dataForm.site"></el-input>
+                </zt-form-item>
+      <zt-form-item label="涓氬姟鑱旂郴" prop="businContact" rules="required">
+                        <el-input v-model="dataForm.businContact"></el-input>
+                </zt-form-item>
+      <zt-form-item label="涓氬姟鎶曡瘔" prop="businComplaint" rules="required">
+                        <el-input v-model="dataForm.businComplaint"></el-input>
+                </zt-form-item>
+      <zt-form-item label="瀹為獙瀹よ仈绯讳汉" prop="laborContact" rules="required">
+                        <el-input v-model="dataForm.laborContact"></el-input>
+                </zt-form-item>
+      <zt-form-item label="瀹為獙瀹よ仈绯荤數璇�" prop="labContactNum" rules="required">
+                        <el-input v-model="dataForm.labContactNum"></el-input>
+                </zt-form-item>
+      <zt-form-item label="閭斂缂栫爜" prop="postalCode" rules="required">
+                        <el-input v-model="dataForm.postalCode"></el-input>
+                </zt-form-item>
+      <zt-form-item label="浼犵湡" prop="fax" rules="required">
+                        <el-input v-model="dataForm.fax"></el-input>
+                </zt-form-item>
+    </el-form>
+  </zt-dialog>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        dataForm: {
+          id: '',
+          projectId: '',
+          optEnviron: '',
+          programLang: '',
+          testBasis: '',
+          testType: '',
+          testStandard: '',
+          startDate: '',
+          endDate: '',
+          testVenue: '',
+          otherRequire: '',
+          testDate: '',
+          deliveryDate: '',
+          testCost: '',
+          articleNature: '',
+          sampleStatus: '',
+          agencyName: '',
+          site: '',
+          businContact: '',
+          businComplaint: '',
+          laborContact: '',
+          labContactNum: '',
+          postalCode: '',
+          fax: ''
+        }
+      }
+    },
+    methods: {
+      // 鑾峰彇淇℃伅
+      async getInfo() {
+        let res = await this.$http.get(`/project/SoftwareTestOrder/${this.dataForm.id}`)
+        this.dataForm = {
+          ...this.dataForm,
+          ...res.data
+        }
+        console.log(this.dataForm,"this.dataForm")
+      },
+      // 琛ㄥ崟鎻愪氦
+      async formSubmit() {
+        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/project/SoftwareTestOrder/', this.dataForm)
+        if (res.success) {
+          await this.$tip.success()
+          this.$refs.dialog.close()
+          this.$emit('refreshDataList')
+        }
+      }
+    }
+  }
+</script>
diff --git a/web/src/views/modules/project/SoftwareTestOrder.vue b/web/src/views/modules/project/SoftwareTestOrder.vue
new file mode 100644
index 0000000..4c42107
--- /dev/null
+++ b/web/src/views/modules/project/SoftwareTestOrder.vue
@@ -0,0 +1,58 @@
+<template>
+  <el-card shadow="never" class="aui-card--fill">
+    <div class="mod-project-softwareTestOrder}">
+      <zt-table-wraper query-url="/project/SoftwareTestOrder/page" delete-url="/project/SoftwareTestOrder" v-slot="{ table }">
+        <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
+          <el-form-item>
+            <el-input v-model="dataForm.softwareName" placeholder="璇疯緭鍏ヨ蒋浠跺悕绉�" clearable></el-input>
+          </el-form-item>
+          <el-form-item>
+            <zt-dict v-model="dataForm.testBasis" dict="test_basis" placeholder="璇烽�夋嫨娴嬭瘯渚濇嵁" clearable></zt-dict>
+          </el-form-item>
+          <el-form-item>
+            <zt-dict v-model="dataForm.testStandard" dict="test_standard" placeholder="璇烽�夋嫨娴嬭瘯鏍囧噯" clearable></zt-dict>
+          </el-form-item>
+          <el-form-item>
+            <zt-dict v-model="dataForm.articleNature" dict="article_nature" placeholder="璇烽�夋嫨鐗╁搧鎬ц川" clearable></zt-dict>
+          </el-form-item>
+          <el-form-item>
+            <zt-button type="query" @click="table.query()"/>
+            <zt-button type="add" perm="project:add" @click="table.editHandle()"/>
+            <zt-button type="delete" perm="project:delete" @click="table.deleteHandle()"/>
+          </el-form-item>
+        </el-form>
+        <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle">
+          <el-table-column type="selection" width="40"/>
+          <el-table-column prop="softwareName" label="杞欢鍚嶇О"/>
+          <el-table-column prop="code" label="椤圭洰缂栧彿"/>
+          <el-table-column prop="identity" label="椤圭洰鏍囪瘑"/>
+            <zt-table-column-dict prop="testBasis" label="娴嬭瘯渚濇嵁" dict="test_basis"/>
+            <zt-table-column-dict prop="testStandard" label="娴嬭瘯鏍囧噯" dict="test_standard"/>
+            <zt-table-column-dict prop="articleNature" label="鐗╁搧鎬ц川" dict="article_nature"/>
+              <zt-table-column-handle :table="table" edit-perm="project:update" delete-perm="project::delete"/>
+        </el-table>
+        <!-- 寮圭獥, 鏂板 / 淇敼 -->
+        <add-or-update @refreshDataList="table.query"/>
+      </zt-table-wraper>
+    </div>
+  </el-card>
+</template>
+
+<script>
+  import AddOrUpdate from './SoftwareTestOrder-AddOrUpdate'
+  export default {
+    data() {
+      return {
+        dataForm: {
+          testBasis: '',
+          testType: '',
+          testStandard: '',
+          articleNature: '',
+        }
+      }
+    },
+    components: {
+      AddOrUpdate
+    }
+  }
+</script>
diff --git a/web/src/views/modules/sysBaseInfo/TestAgencyInfo-AddOrUpdate.vue b/web/src/views/modules/sysBaseInfo/TestAgencyInfo-AddOrUpdate.vue
new file mode 100644
index 0000000..a583e44
--- /dev/null
+++ b/web/src/views/modules/sysBaseInfo/TestAgencyInfo-AddOrUpdate.vue
@@ -0,0 +1,69 @@
+<template>
+  <zt-dialog ref="dialog"  @confirm="formSubmit">
+    <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
+      <zt-form-item label="娴嬭瘎鏈烘瀯鍚嶇О" prop="agencyName" rules="required">
+                        <el-input v-model="dataForm.agencyName"></el-input>
+                </zt-form-item>
+      <zt-form-item label="鍦板潃" prop="site" rules="required">
+                        <el-input v-model="dataForm.site"></el-input>
+                </zt-form-item>
+      <zt-form-item label="涓氬姟鑱旂郴" prop="businContact" rules="required">
+                        <el-input v-model="dataForm.businContact"></el-input>
+                </zt-form-item>
+      <zt-form-item label="涓氬姟鎶曡瘔" prop="businComplaint" rules="required">
+                        <el-input v-model="dataForm.businComplaint"></el-input>
+                </zt-form-item>
+      <zt-form-item label="瀹為獙瀹よ仈绯讳汉" prop="laborContact" rules="required">
+                        <el-input v-model="dataForm.laborContact"></el-input>
+                </zt-form-item>
+      <zt-form-item label="瀹為獙瀹よ仈绯荤數璇�" prop="labContactNum" rules="required">
+                        <el-input v-model="dataForm.labContactNum"></el-input>
+                </zt-form-item>
+      <zt-form-item label="閭斂缂栫爜" prop="postalCode" rules="required">
+                        <el-input v-model="dataForm.postalCode"></el-input>
+                </zt-form-item>
+      <zt-form-item label="浼犵湡" prop="fax" rules="required">
+                        <el-input v-model="dataForm.fax"></el-input>
+                </zt-form-item>
+    </el-form>
+  </zt-dialog>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        dataForm: {
+          id: '',
+          agencyName: '',
+          site: '',
+          businContact: '',
+          businComplaint: '',
+          laborContact: '',
+          labContactNum: '',
+          postalCode: '',
+          fax: ''
+        }
+      }
+    },
+    methods: {
+      // 鑾峰彇淇℃伅
+      async getInfo() {
+        let res = await this.$http.get(`/sysBaseInfo/TestAgencyInfo/${this.dataForm.id}`)
+        this.dataForm = {
+          ...this.dataForm,
+          ...res.data
+        }
+      },
+      // 琛ㄥ崟鎻愪氦
+      async formSubmit() {
+        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/sysBaseInfo/TestAgencyInfo/', this.dataForm)
+        if (res.success) {
+          await this.$tip.success()
+          this.$refs.dialog.close()
+          this.$emit('refreshDataList')
+        }
+      }
+    }
+  }
+</script>
diff --git a/web/src/views/modules/sysBaseInfo/TestAgencyInfo.vue b/web/src/views/modules/sysBaseInfo/TestAgencyInfo.vue
new file mode 100644
index 0000000..a1a6b69
--- /dev/null
+++ b/web/src/views/modules/sysBaseInfo/TestAgencyInfo.vue
@@ -0,0 +1,44 @@
+<template>
+  <el-card shadow="never" class="aui-card--fill">
+    <div class="mod-sysBaseInfo-testAgencyInfo}">
+      <zt-table-wraper query-url="/sysBaseInfo/TestAgencyInfo/page" delete-url="/sysBaseInfo/TestAgencyInfo" v-slot="{ table }">
+        <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
+          <el-form-item>
+                                <el-input v-model="dataForm.agencyName" placeholder="璇疯緭鍏ユ祴璇勬満鏋勫悕绉�" clearable></el-input>
+              
+          </el-form-item>
+          <el-form-item>
+            <zt-button type="query" @click="table.query()"/>
+            <zt-button type="add" perm="sysBaseInfo:add" @click="table.editHandle()"/>
+            <zt-button type="delete" perm="sysBaseInfo:delete" @click="table.deleteHandle()"/>
+          </el-form-item>
+        </el-form>
+        <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle">
+          <el-table-column type="selection" width="40"/>
+            <el-table-column prop="agencyName" label="娴嬭瘎鏈烘瀯鍚嶇О"/>
+                <el-table-column prop="businContact" label="涓氬姟鑱旂郴"/>
+                <el-table-column prop="laborContact" label="瀹為獙瀹よ仈绯讳汉"/>
+              <zt-table-column-handle :table="table" edit-perm="sysBaseInfo:update" delete-perm="sysBaseInfo::delete"/>
+        </el-table>
+        <!-- 寮圭獥, 鏂板 / 淇敼 -->
+        <add-or-update @refreshDataList="table.query"/>
+      </zt-table-wraper>
+    </div>
+  </el-card>
+</template>
+
+<script>
+  import AddOrUpdate from './TestAgencyInfo-AddOrUpdate'
+  export default {
+    data() {
+      return {
+        dataForm: {
+          agencyName: '',
+        }
+      }
+    },
+    components: {
+      AddOrUpdate
+    }
+  }
+</script>

--
Gitblit v1.9.1