Prechádzať zdrojové kódy

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper into master

seyason 1 rok pred
rodič
commit
8ffe6f6aa1

+ 10 - 0
fhKeeper/formulahousekeeper/management-workshop/pom.xml

@@ -137,6 +137,16 @@
             <groupId>org.aspectj</groupId>
             <artifactId>aspectjweaver</artifactId>
         </dependency>
+       <!-- <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+            <version>2.0.1.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate.validator</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <version>6.2.0.Final</version>
+        </dependency>-->
 
         <!-- logback -->
         <!--<dependency>

+ 1 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdProcedureController.java

@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;

+ 4 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProductController.java

@@ -6,12 +6,14 @@ import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.PlanService;
 import com.management.platform.service.ProductService;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
 
 /**
  * <p>
@@ -40,7 +42,7 @@ public class ProductController {
     }
 
     @RequestMapping("/saveProductInfo")
-    public HttpRespMsg saveProductInfo(Product product) {
+    public HttpRespMsg saveProductInfo( Product product) {
         return productService.saveProductInfo(product, request);
     }
 
@@ -81,7 +83,7 @@ public class ProductController {
 
     @RequestMapping("/exportData")
     public HttpRespMsg exportData(String date,Integer productType){
-        return productService.exportData(date,productType);
+        return productService.exportData(date,productType,request);
     }
 
     /**

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedure.java

@@ -60,7 +60,7 @@ public class ProdProcedure extends Model<ProdProcedure> {
      * 单件工时
      */
     @TableField("working_time")
-    private Integer workingTime;
+    private Double workingTime;
 
     /**
      * 版本号

+ 8 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Product.java

@@ -8,6 +8,12 @@ import java.io.Serializable;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
 
 /**
  * <p>
@@ -58,10 +64,10 @@ public class Product extends Model<Product> {
     private String code;
 
     /**
-     * 编组
+     * 编组
      */
     @TableField("group_number")
-    private Integer groupNumber;
+    private String groupNumber;
 
     /**
      * 订单数量

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProductService.java

@@ -28,7 +28,7 @@ public interface ProductService extends IService<Product> {
     HttpRespMsg importData(MultipartFile file, Integer categoryId, HttpServletRequest request);
 
 
-    HttpRespMsg exportData(String date, Integer productType);
+    HttpRespMsg exportData(String date, Integer productType, HttpServletRequest request);
 
     HttpRespMsg insertProductInfo(String name, Integer id, HttpServletRequest request);
 }

+ 125 - 20
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
+import com.management.platform.service.ExcelExportService;
 import com.management.platform.service.ProdMaterialService;
 import com.management.platform.service.ProdProcedureService;
 import com.management.platform.service.ProductService;
@@ -15,7 +16,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
 import org.apache.poi.EncryptedDocumentException;
-import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFCell;
@@ -23,7 +23,7 @@ import org.apache.poi.xssf.usermodel.XSSFRow;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
-import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -46,8 +46,8 @@ import java.util.*;
 @Service
 @Transactional
 public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
-    /*@Value(value = "${upload.path}")
-    private String path;*/
+    @Value(value = "${upload.path}")
+    private String path;
     @Resource
     ProductMapper productMapper;
     @Resource
@@ -64,7 +64,11 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     PlanMapper planMapper;
     @Resource
     ProdCategoryMapper prodCategoryMapper;
+    @Resource
+    WxCorpInfoMapper wxCorpInfoMapper;
 
+    @Resource
+    private ExcelExportService excelExportService;
 
     @Override
     public HttpRespMsg getProductPage(Integer cateId, Integer pageIndex, Integer pageSize, String name, String code, HttpServletRequest request) {
@@ -104,11 +108,13 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
         User user = userMapper.selectById(token);
 
         product.setCompanyId(user.getCompanyId());
+
+        Integer count = productMapper.selectCount(new LambdaQueryWrapper<Product>()
+                .eq(user.getCompanyId() != null, Product::getCompanyId, user.getCompanyId())
+                .eq(!StringUtils.isEmpty(product.getName()), Product::getName, product.getName())
+        );
         if (product.getId() == null) {
-            Integer count = productMapper.selectCount(new LambdaQueryWrapper<Product>()
-                    .eq(user.getCompanyId() != null, Product::getCompanyId, user.getCompanyId())
-                    .eq(!StringUtils.isEmpty(product.getName()), Product::getName, product.getName())
-            );
+            //新增
             if(count==0){
                 productMapper.insert(product);
 
@@ -116,12 +122,18 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                 msg.setError("产品名重复");
             }
         } else {
-            Product selectOne = productMapper.selectOne(new LambdaQueryWrapper<Product>()
-                    .eq(user.getCompanyId() != null, Product::getCompanyId, user.getCompanyId())
-                    .eq(!StringUtils.isEmpty(product.getName()), Product::getName, product.getName())
-            );
-            if(selectOne.getId()==product.getId()){
+            //修改
+            if(count<2){
                 productMapper.updateById(product);
+
+                //修改对应工序中产品的名字
+                ProdProcedure prodProcedure=new ProdProcedure();
+                prodProcedure.setProductName(product.getName());
+                prodProcedureService.update(prodProcedure,
+                        new LambdaQueryWrapper<ProdProcedure>()
+                                .eq(product.getId()!=null,ProdProcedure::getProductId,product.getId())
+                                .eq(user.getCompanyId() != null, ProdProcedure::getCompanyId, user.getCompanyId())
+                );
             }else{
                 msg.setError("产品名重复");
             }
@@ -258,7 +270,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                     unitCell.setCellType(CellType.STRING);
                 }
                 if(groupNumberCell!=null){
-                    groupNumberCell.setCellType(CellType.NUMERIC);
+                    groupNumberCell.setCellType(CellType.STRING);
                 }
                 if(columnNumberCell!=null){
                     columnNumberCell.setCellType(CellType.NUMERIC);
@@ -312,7 +324,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                     return msg;
                 }
                 if(groupNumberCell!=null){
-                    product.setGroupNumber((int) Math.round(groupNumberCell.getNumericCellValue()));
+                    product.setGroupNumber(groupNumberCell.getStringCellValue());
                 }else{
                     msg.setError("编组不能为空");
                     return msg;
@@ -387,7 +399,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                     msg.setError("工序名称不能为空");
                 }
                 if(workingTimeCell!=null){
-                    prodProcedure.setWorkingTime((int) Math.round(workingTimeCell.getNumericCellValue()));
+                    prodProcedure.setWorkingTime(workingTimeCell.getNumericCellValue());
 
                 }else{
                     msg.setError("单件工时不能为空");
@@ -415,6 +427,16 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             //检查同一版本的同一版本号工序中有没有重复的
             for (ProdProcedure prodProcedure : prodProcedureList) {
 
+                if(prodProcedureList.stream().filter(procedure ->{
+                    return prodProcedure.getName().equals(procedure.getName())&&!prodProcedure.getVersionNumber().equals(procedure.getVersionNumber());
+                } ).count()>0){
+                    msg.setError("一个产品只能导入一个产品号");
+                    return msg;
+                }
+
+
+
+
                 long count = prodProcedureList.stream()
                         .filter(procedure -> procedure.getProductName().equals(prodProcedure.getProductName()) && procedure.getVersionNumber().equals(prodProcedure.getVersionNumber()) && procedure.getName().equals(prodProcedure.getName()))
                         .count();
@@ -480,7 +502,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     }
 
 
-    @Override
+/*    @Override
     public HttpRespMsg exportData(String date, Integer productType)  {
         HttpRespMsg msg=new HttpRespMsg();
 
@@ -598,9 +620,12 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             }
 
 
-            //导出excel
+      *//*      //导出excel
             String result="系统提示:Excel文件导出成功!";
-
+            //生成Excel文件
+            String fileUrlSuffix = "产品详情"+System.currentTimeMillis();
+            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileUrlSuffix,dataList,path);*//*
+//
             String title= "产品详情"+System.currentTimeMillis();
             String fileName= title+".xlsx";
             String path="D://cloud/upload/";
@@ -619,10 +644,90 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                 e.printStackTrace();
             }
 
-            msg.data ="/upload/"+fileName;
+//            msg.data ="/upload/"+fileName;
 
         }
         return msg;
+    }*/
+
+
+    @Override
+    public HttpRespMsg exportData(String date, Integer productType, HttpServletRequest request)  {
+        List<Integer> productIdList =Arrays.asList( JSONObject.parseObject(date, Integer[].class));
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
+        if(productIdList!=null&&productIdList.size()>0) {
+
+            //获取数据
+            List<Product> productList = productMapper.selectBatchIds(productIdList);
+            List<ProdProcedure> prodProcedureList = prodProcedureMapper.selectList(new LambdaQueryWrapper<ProdProcedure>().in(ProdProcedure::getProductId, productIdList));
+
+            List<List<String>> dataProductList = new ArrayList<>();
+            List<String> titleProductList = new ArrayList<>();
+            titleProductList.add("产品名称");
+            titleProductList.add("项目代码");
+            titleProductList.add("订单数量");
+            titleProductList.add("单位");
+            titleProductList.add("编组");
+            titleProductList.add("每列数量");
+            titleProductList.add("每辆数量");
+            titleProductList.add("描述");
+
+            dataProductList.add(titleProductList);
+            for (Product product : productList) {
+                List<String> item=new ArrayList<>();
+                item.add(product.getName());
+                item.add(product.getCode());
+                item.add(product.getOrderNumber().toString());
+                item.add(product.getUnit());
+                item.add(product.getGroupNumber());
+                item.add(product.getColumnNumber().toString());
+                item.add(product.getVehicleNumber().toString());
+                item.add(product.getDescription());
+
+                dataProductList.add(item);
+            }
+
+
+
+            List<List<String>> dataProcedureList = new ArrayList<>();
+            List<String> titleProcedureList = new ArrayList<>();
+            titleProcedureList.add("产品名称");
+            titleProcedureList.add("版本号");
+            titleProcedureList.add("工序名称");
+            titleProcedureList.add("单件工时");
+            titleProcedureList.add("单件工价");
+            titleProcedureList.add("质检类型");
+
+
+
+            dataProcedureList.add(titleProcedureList);
+            for (ProdProcedure prodProcedure : prodProcedureList) {
+                List<String> item=new ArrayList<>();
+                item.add(prodProcedure.getProductName());
+                item.add(prodProcedure.getVersionNumber());
+                item.add(prodProcedure.getName());
+                item.add(prodProcedure.getWorkingTime().toString());
+                item.add(prodProcedure.getUnitPrice().toString());
+
+                switch (prodProcedure.getCheckType()){
+                    case 0: item.add("自检");break;
+                    case 1: item.add("互检");break;
+                    case 2: item.add("专检");break;
+                }
+            }
+
+        }
+
+
+
+
+     /*       //导出excel
+            String result="系统提示:Excel文件导出成功!";
+            //生成Excel文件
+            String fileName = "产品详情"+System.currentTimeMillis();
+            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileName,dataList,path);*/
+        return null;
     }
 
     @Override

+ 2 - 4
fhKeeper/formulahousekeeper/timesheet-workshop-h5/package-lock.json

@@ -3737,8 +3737,7 @@
       "version": "4.6.0",
       "resolved": "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
       "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "coa": {
       "version": "2.0.2",
@@ -10416,8 +10415,7 @@
       "version": "4.0.8",
       "resolved": "https://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz",
       "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "rx-lite-aggregates": {
       "version": "4.0.8",

+ 3 - 2
fhKeeper/formulahousekeeper/timesheet-workshop-h5/vue.config.js

@@ -6,9 +6,10 @@ const Timestamp = new Date().getTime();
 
 // var ip = '47.101.180.183'
 // var ip = '47.100.37.243'
-var ip = '192.168.2.12'
+//var ip = '192.168.2.12'
 // var ip = '192.168.2.12'
-// var ip = '127.0.0.1'
+ var ip = '127.0.0.1'
+
 
 // var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
 // for (var i in ifaces) {

+ 125 - 72
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/product/list.vue

@@ -18,11 +18,11 @@
                 </el-form-item>
                 <!--操作按钮-->
                 <el-form-item style="float:right;">
-                    <el-link type="primary" :underline="false" @click="importProduct()">导出产品</el-link>
+                    <el-link type="primary" :underline="false"  :disabled="productSelections.length==0" @click="importProduct()">导出产品</el-link>
                 </el-form-item>
                 <el-form-item style="float:right;">
                     <el-upload class="filter-item" name="file" action :on-error="uploadFalse" :on-success="uploadSuccess"
-                        :before-upload="beforeAvatarUpload" :limit="1" ref="upload" accept=".xlsx,.xls"
+                        :before-upload="beforeAvatarUpload"  ref="upload" accept=".xlsx,.xls"
                         :show-file-list="false" :file-list="fileList" :http-request="uploadFile">
 
                         <el-link type="primary" :underline="false">导入产品</el-link>
@@ -110,7 +110,7 @@
 
             <el-table-column type="selection" width="55">
             </el-table-column>
-            <el-table-column prop="name" label="产品名称" sortable="custom" width="300"></el-table-column>
+            <el-table-column prop="name" label="产品名称"  width="300"></el-table-column>
             <el-table-column prop="code" label="项目代码" width="200"></el-table-column>
             <el-table-column prop="orderNumber" label="订单数量" width="100"></el-table-column>
             <el-table-column prop="unit" label="单位" width="100"></el-table-column>
@@ -155,6 +155,19 @@
                 style="float:right;"></el-pagination>
         </el-col>
 
+        <div class="layout-container-floor">
+          <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="pageIndex"
+            :page-sizes="[10, 20, 50, 100]"
+            :page-size="pageSize"
+            layout="total, prev, pager, next, sizes, jumper"
+            :total="total"
+          >
+          </el-pagination>
+        </div>
+
         <!--新增界面-->
         <el-dialog :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false"
             customClass="customWidth" width="960px" :top="'6vh'">
@@ -168,35 +181,35 @@
             </el-steps>
             <div v-if="prodEditActive == 0" style="height: 72vh;overflow-y: auto;overflow-x: hidden;">
                 <el-form ref="form1" :model="addForm" :rules="rules" label-width="120px">
-                    <el-form-item label="产品名称">
+                    <el-form-item label="产品名称" prop="name">
                         <!-- <el-input v-model="addForm.code" :disabled="!permissions.projectManagement && addForm.creatorId != user.id" placeholder="请输入项目编号" clearable></el-input> -->
                         <el-input v-model="addForm.name" :placeholder="$t('peaseenterthe')" clearable maxlength="50"
                             show-word-limit="true"></el-input>
                     </el-form-item>
-                    <el-form-item label="项目代码">
+                    <el-form-item label="项目代码" prop="code">
                         <!-- <el-input v-model="addForm.code" :disabled="!permissions.projectManagement && addForm.creatorId != user.id" placeholder="请输入项目编号" clearable></el-input> -->
                         <el-input v-model="addForm.code" :placeholder="$t('peaseenterthe')" clearable maxlength="50"
                             show-word-limit="true"></el-input>
                     </el-form-item>
-                    <el-form-item label="订单数量">
+                    <el-form-item label="订单数量" prop="orderNumber">
                         <el-input-number v-model="addForm.orderNumber" :placeholder="$t('peaseenterthe')" clearable
-                            :min="1"></el-input-number>
+                            :min="1" :max="10000"></el-input-number>
                     </el-form-item>
-                    <el-form-item label="单位">
+                    <el-form-item label="单位" prop="unit">
                         <el-input v-model="addForm.unit" :placeholder="$t('peaseenterthe')" clearable
                             maxlength="10"></el-input>
                     </el-form-item>
-                    <el-form-item label="编组">
+                    <el-form-item label="编组" prop="groupNumber">
                         <el-input v-model="addForm.groupNumber" :placeholder="$t('peaseenterthe')" clearable
                             maxlength="10"></el-input>
                     </el-form-item>
                     <el-form-item label="每列数量">
                         <el-input-number v-model="addForm.columnNumber" :placeholder="$t('peaseenterthe')"
-                            :min="1"></el-input-number>
+                            :min="1" :max="10000"></el-input-number>
                     </el-form-item>
                     <el-form-item label="每辆数量">
                         <el-input-number v-model="addForm.vehicleNumber" :placeholder="$t('peaseenterthe')"
-                            :min="1"></el-input-number>
+                            :min="1" :max="10000"></el-input-number>
                     </el-form-item>
 
                     <el-form-item label="描述" prop="description">
@@ -209,22 +222,33 @@
                 </el-form>
             </div>
             <div v-if="prodEditActive == 1">
-                <!--此处是录入工序的模块-->
-                <el-input placeholder="请输入工序版本号" v-model="procedureVersion" class="input-pM"></el-input>
+                 <!--此处是录入工序的模块-->
+                <!-- el-form ref="form2"  :rules="rules1" label-width="120px">
+                    <el-form-item  prop="version">
+                        <el-input placeholder="请输入工序版本号" v-model="procedureVersion" class="input-pM"></el-input>
+                    </el-form-item>
+
+
+                    <el-form-item label=""></el-form-item>
+                </el-form> -->
+
+
+
+                <el-input placeholder="请输入工序版本号" v-model="procedureVersion" clearable maxlength="50" class="input-pM"></el-input>
                 <el-table :data="procedureLit" style="width: 100%">
-                    <el-table-column prop="name" label="工序名称" width="180">
+                    <el-table-column prop="name" label="工序名称" clearable maxlength="30" width="180">
                         <template slot-scope="scope">
                             <el-input v-model="scope.row.name" placeholder="请输入"></el-input>
                         </template>
                     </el-table-column>
-                    <el-table-column prop="unitPrice" label="单件工时" width="180">
+                    <el-table-column prop="workingTime" label="单件工时"  width="180">
                         <template slot-scope="scope">
-                            <el-input v-model="scope.row.unitPrice" placeholder="请输入"></el-input>
+                            <el-input v-model="scope.row.unitPrice" clearable maxlength="11" placeholder="请输入"></el-input>
                         </template>
                     </el-table-column>
-                    <el-table-column prop="workingTime" label="单件工价" width="180">
+                    <el-table-column prop="unitPrice" label="单件工价"  width="180">
                         <template slot-scope="scope">
-                            <el-input v-model="scope.row.workingTime" placeholder="请输入"></el-input>
+                            <el-input v-model="scope.row.workingTime" clearable maxlength="9"  placeholder="请输入"></el-input>
                         </template>
                     </el-table-column>
                     <el-table-column label="质检类型" width="180">
@@ -305,7 +329,7 @@
                     :loading="addLoading">保存</el-button>
                 <el-button v-if="prodEditActive == 0" type="primary" @click="submitInsert(1)"
                     :loading="addLoading">保存并编辑工序</el-button>
-                <el-button v-if="prodEditActive == 1" type="primary" @click="submitSequence(0)"
+                <el-button v-if="prodEditActive == 1" type="primary"  @click="submitSequence(0)"
                     :loading="addLoading">保存工序</el-button>
                 <!-- <el-button v-if="prodEditActive == 1" type="primary" @click="submitSequence(1)"
                     :loading="addLoading">保存并编辑物料</el-button>
@@ -377,20 +401,6 @@
                 <el-button type="primary" @click=" saveCopyProduct()">确定</el-button>
             </span>
         </el-dialog>
-        <!-- 复制产品 -->
-        <el-dialog :title="title" :visible.sync="copyVisible" width="30%">
-            <div>
-                <el-form ref="form" :model="category" label-width="80px">
-                    <el-form-item label="产品名称">
-                        <el-input v-model="pdName"></el-input>
-                    </el-form-item>
-                </el-form>
-            </div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="copyVisible = false">取 消</el-button>
-                <el-button type="primary" @click=" saveCopyProduct()">确定</el-button>
-            </span>
-        </el-dialog>
 
         <!-- 新增产品分类 -->
         <el-dialog :title="title" :visible.sync="isganttshowCa" width="30%">
@@ -626,12 +636,14 @@ a {
 import util from "../../common/js/util";
 // 自定义select组件
 import selectCat from "@/components/select.vue"
+import { version } from 'vue';
 export default {
     components: {
         selectCat
     },
     data() {
         return {
+            
             copyVisible: false,
             pdName: '',
             productSelections: [], //选中的产品id集合
@@ -776,6 +788,11 @@ export default {
             rules: {
                 name: [{ required: true, message: this.$t('pleaseentername'), trigger: "blur" }],
                 code: [{ required: true, message: this.$t('qing-shu-ru-bian-hao'), trigger: "blur" }],
+                orderNumber: [{ required: true, message:' 请输入订单数量', trigger: "blur" }],
+                unit: [{ required: true, message: '请输入单位', trigger: "blur" }],
+                groupNumber: [{ required: true, message: '请输入编组', trigger: "blur" }],
+                
+
                 projectStageName: [{ required: true, message: this.$t('pleaseentername'), trigger: "blur" }],
                 projectLevelName: [{ required: true, message: this.$t('pleaseentername'), trigger: "blur" }],
             },
@@ -917,9 +934,9 @@ export default {
             this.$refs.productTbl.doLayout();
         })
     },
+
     methods: {
         uploadFile(params) {
-
             let str = params.file.name.split(".");
             let format1 = str[str.length - 1];
             if (format1 != "xls" && format1 != "xlsx") {
@@ -998,7 +1015,7 @@ export default {
                     } else {
                         this.$message({
                             showClose: true,
-                            message: '该分类正在使用中,不能删除',
+                            message: '已有产品为此分类,无法删除',
                             type: 'warning'
                         });
                     }
@@ -1015,7 +1032,7 @@ export default {
                     } else {
                         this.$message({
                             showClose: true,
-                            message: '该分类已在',
+                            message: '该分类已在',
                             type: 'warning'
                         });
                     }
@@ -1027,7 +1044,7 @@ export default {
 
         getCategoryList() {
             this.isganttshow = true
-            console.log("======")
+           
             console.log(this.categoryList)
             this.http.post("/prod-category/getList", null,
                 res => {
@@ -1121,49 +1138,73 @@ export default {
 
         },
         submitSequence(addSequence) {
-            this.addLoading = true;
-            let procedureString = JSON.stringify(this.procedureLit);
-            this.http.post('/prod-procedure/changeProdProcedure', {
-                productId: this.productId,
-                version: this.procedureVersion,
-                prodProcedures: procedureString,
-                productName: this.productName
-            },
-                res => {
-                    this.addLoading = false;
-                    if (res.code == "ok") {
-                        this.$message({
-                            message: (this.addForm.id != null ? this.$t('xiu-gai') : this.$t('create')) + this.$t('other.successful'),
-                            type: "success"
-                        });
-                        if (addSequence) {
-                            //进入物料录入
+            let flag=true
+            
 
-                            this.http.post('/prod-material/getProdMaterialList', { productId: this.productId },
-                                res => {
-                                    this.prodMaterialList = res.data.prodMaterialList;
-                                    this.prodMaterialVersion = res.data.version;
-                                })
-                            this.prodEditActive = 2;
+            if (version === '') {
+                flag=false
+            }
 
+            for (let i = 0; i < this.procedureLit.length; i++) {
+                console.log(this.procedureLit[i].name === '')
+                if (this.procedureLit[i].name === '' || this.procedureLit[i].unitPrice === '' || this.procedureLit[i].workingTime === '' || this.procedureLit[i].checkType === '') {
+                    flag= false
+                    break
+                }
+            }
+           
+            if(flag){
+                 this.addLoading = true;
+                let procedureString = JSON.stringify(this.procedureLit);
+                this.http.post('/prod-procedure/changeProdProcedure', {
+                    productId: this.productId,
+                    version: this.procedureVersion,
+                    prodProcedures: procedureString,
+                    productName: this.productName
+                },
+                    res => {
+                        this.addLoading = false;
+                        if (res.code == "ok") {
+                            this.$message({
+                                message: (this.addForm.id != null ? this.$t('xiu-gai') : this.$t('create')) + this.$t('other.successful'),
+                                type: "success"
+                            });
+                            if (addSequence) {
+                                //进入物料录入
+/* 
+                                this.http.post('/prod-material/getProdMaterialList', { productId: this.productId },
+                                    res => {
+                                        this.prodMaterialList = res.data.prodMaterialList;
+                                        this.prodMaterialVersion = res.data.version;
+                                    })
+                                this.prodEditActive = 2;
+ */
 
+                            } else {
+                                this.addFormVisible = false;
+                            }
                         } else {
-                            this.addFormVisible = false;
+                            this.$message({
+                                message: res.msg,
+                                type: "error"
+                            });
                         }
-                    } else {
+                    },
+                    error => {
+                        this.addLoading = false;
                         this.$message({
-                            message: res.msg,
+                            message: error,
                             type: "error"
                         });
-                    }
-                },
-                error => {
-                    this.addLoading = false;
-                    this.$message({
-                        message: error,
-                        type: "error"
                     });
+            }else{
+                this.$message({
+                    message: "版本号或工序中部分数据为空",
+                    type: "error"
                 });
+            }
+
+           
 
         },
 
@@ -1192,6 +1233,7 @@ export default {
                 name: '',
                 unitPrice: '',
                 workingTime: '',
+                checkType: 0
 
             }]
         },
@@ -2968,7 +3010,7 @@ export default {
         //复制产品
         copyProduct(item) {
             this.copyVisible = true
-            this.pdName = ''
+            this.pdName = item.name
             this.productId = item.id
 
         },
@@ -3151,7 +3193,11 @@ export default {
         },
         submitInsert(addSequence) {
             this.$refs.form1.validate(valid => {
+                console.log(valid)
                 if (valid) {
+
+                    if(Number.isInteger(this.addForm.orderNumber)&& Number.isInteger(this.addForm.columnNumber) && Number.isInteger(this.addForm.vehicleNumber)){    
+                    //console.log("valid",valid)
                     this.addLoading = true;
                     this.addForm.categoryId = this.cateId;
                     this.http.post('/product/saveProductInfo', this.addForm,
@@ -3178,7 +3224,7 @@ export default {
                                     this.addFormVisible = false;
                                 }
                                 this.getList();
-                            } else {
+                            }else {
                                 this.$message({
                                     message: res.msg,
                                     type: "error"
@@ -3192,6 +3238,13 @@ export default {
                                 type: "error"
                             });
                         });;
+                    } else {
+                         this.$message({
+                            message: "数量要为整数",
+                            type: "error"
+                        });
+                    }
+
                 }
             });
         },