Просмотр исходного кода

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

chenw 7 лет назад
Родитель
Сommit
43a61445d1
100 измененных файлов с 1276 добавлено и 651 удалено
  1. 18 5
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/HomePageServiceImpl.java
  2. 16 16
      applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml
  3. 1 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustomerMapper.java
  4. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorMapper.java
  5. 10 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  6. 11 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  7. 7 0
      applications/document/document-server/src/main/resources/mapper/CustomerMapper.xml
  8. 6 0
      applications/document/document-server/src/main/resources/mapper/VendorMapper.xml
  9. 20 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Bankinformation.java
  10. 34 14
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  11. 28 9
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  12. 9 1
      applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml
  13. 9 1
      applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml
  14. 1 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  15. 4 2
      applications/purchase/purchase-server/src/main/resources/mapper/ProdIODetailMapper.xml
  16. 1 2
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/MakeMapper.java
  17. 2 0
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/MakeMaterialMapper.java
  18. 59 36
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/MakeServiceImpl.java
  19. 5 0
      applications/storage/storage-server/src/main/resources/mapper/MakematerialMapper.xml
  20. 4 2
      applications/storage/storage-server/src/main/resources/mapper/ProdIODetailMapper.xml
  21. 451 5
      frontend/saas-portal-web/src/css/main.css
  22. BIN
      frontend/saas-portal-web/src/img/assets/Group.png
  23. BIN
      frontend/saas-portal-web/src/img/assets/Group@2x.png
  24. BIN
      frontend/saas-portal-web/src/img/assets/Group@3x.png
  25. BIN
      frontend/saas-portal-web/src/img/assets/dalogo-白@3x.png
  26. BIN
      frontend/saas-portal-web/src/img/assets/dalogo@3x.png
  27. BIN
      frontend/saas-portal-web/src/img/assets/logo-蓝.png
  28. BIN
      frontend/saas-portal-web/src/img/assets/logo-蓝@2x.png
  29. BIN
      frontend/saas-portal-web/src/img/assets/logo-蓝@3x.png
  30. BIN
      frontend/saas-portal-web/src/img/assets/logo.png
  31. BIN
      frontend/saas-portal-web/src/img/assets/logo@2x.png
  32. BIN
      frontend/saas-portal-web/src/img/assets/logo@3x.png
  33. BIN
      frontend/saas-portal-web/src/img/assets/timg (1).jpg
  34. BIN
      frontend/saas-portal-web/src/img/assets/任.png
  35. BIN
      frontend/saas-portal-web/src/img/assets/任@2x.png
  36. BIN
      frontend/saas-portal-web/src/img/assets/任@3x.png
  37. BIN
      frontend/saas-portal-web/src/img/assets/刷新.png
  38. BIN
      frontend/saas-portal-web/src/img/assets/刷新@2x.png
  39. BIN
      frontend/saas-portal-web/src/img/assets/刷新@3x.png
  40. BIN
      frontend/saas-portal-web/src/img/assets/叉号.png
  41. BIN
      frontend/saas-portal-web/src/img/assets/叉号@2x.png
  42. BIN
      frontend/saas-portal-web/src/img/assets/叉号@3x.png
  43. BIN
      frontend/saas-portal-web/src/img/assets/密码.png
  44. BIN
      frontend/saas-portal-web/src/img/assets/密码@2x.png
  45. BIN
      frontend/saas-portal-web/src/img/assets/密码@3x.png
  46. BIN
      frontend/saas-portal-web/src/img/assets/寻.png
  47. BIN
      frontend/saas-portal-web/src/img/assets/寻@2x.png
  48. BIN
      frontend/saas-portal-web/src/img/assets/寻@3x.png
  49. BIN
      frontend/saas-portal-web/src/img/assets/导航-注册.png
  50. BIN
      frontend/saas-portal-web/src/img/assets/导航-注册@2x.png
  51. BIN
      frontend/saas-portal-web/src/img/assets/导航-注册@3x.png
  52. BIN
      frontend/saas-portal-web/src/img/assets/导航-登录.png
  53. BIN
      frontend/saas-portal-web/src/img/assets/导航-登录@2x.png
  54. BIN
      frontend/saas-portal-web/src/img/assets/导航-登录@3x.png
  55. BIN
      frontend/saas-portal-web/src/img/assets/微信.png
  56. BIN
      frontend/saas-portal-web/src/img/assets/微信@2x.png
  57. BIN
      frontend/saas-portal-web/src/img/assets/微信@3x.png
  58. BIN
      frontend/saas-portal-web/src/img/assets/手机号.png
  59. BIN
      frontend/saas-portal-web/src/img/assets/手机号@2x.png
  60. BIN
      frontend/saas-portal-web/src/img/assets/手机号@3x.png
  61. BIN
      frontend/saas-portal-web/src/img/assets/插画人物.png
  62. BIN
      frontend/saas-portal-web/src/img/assets/插画人物@2x.png
  63. BIN
      frontend/saas-portal-web/src/img/assets/插画人物@3x.png
  64. BIN
      frontend/saas-portal-web/src/img/assets/未选中.png
  65. BIN
      frontend/saas-portal-web/src/img/assets/未选中@2x.png
  66. BIN
      frontend/saas-portal-web/src/img/assets/未选中@3x.png
  67. BIN
      frontend/saas-portal-web/src/img/assets/电子行业字段.png
  68. BIN
      frontend/saas-portal-web/src/img/assets/电子行业字段@2x.png
  69. BIN
      frontend/saas-portal-web/src/img/assets/电子行业字段@3x.png
  70. BIN
      frontend/saas-portal-web/src/img/assets/背景.png
  71. BIN
      frontend/saas-portal-web/src/img/assets/背景@2x.png
  72. BIN
      frontend/saas-portal-web/src/img/assets/背景@3x.png
  73. BIN
      frontend/saas-portal-web/src/img/assets/资.png
  74. BIN
      frontend/saas-portal-web/src/img/assets/资@2x.png
  75. BIN
      frontend/saas-portal-web/src/img/assets/资@3x.png
  76. BIN
      frontend/saas-portal-web/src/img/assets/轻.png
  77. BIN
      frontend/saas-portal-web/src/img/assets/轻@2x.png
  78. BIN
      frontend/saas-portal-web/src/img/assets/轻@3x.png
  79. BIN
      frontend/saas-portal-web/src/img/assets/返回.png
  80. BIN
      frontend/saas-portal-web/src/img/assets/返回@2x.png
  81. BIN
      frontend/saas-portal-web/src/img/assets/返回@3x.png
  82. BIN
      frontend/saas-portal-web/src/img/assets/进.png
  83. BIN
      frontend/saas-portal-web/src/img/assets/进@2x.png
  84. BIN
      frontend/saas-portal-web/src/img/assets/进@3x.png
  85. BIN
      frontend/saas-portal-web/src/img/assets/选中.png
  86. BIN
      frontend/saas-portal-web/src/img/assets/选中@2x.png
  87. BIN
      frontend/saas-portal-web/src/img/assets/选中@3x.png
  88. BIN
      frontend/saas-portal-web/src/img/assets/验证码.png
  89. BIN
      frontend/saas-portal-web/src/img/assets/验证码@2x.png
  90. BIN
      frontend/saas-portal-web/src/img/assets/验证码@3x.png
  91. 0 0
      frontend/saas-portal-web/src/img/login
  92. BIN
      frontend/saas-portal-web/src/img/logo_w.png
  93. BIN
      frontend/saas-portal-web/src/img/parallax/testimonial.jpg
  94. BIN
      frontend/saas-portal-web/src/img/qr-tech.png
  95. BIN
      frontend/saas-portal-web/src/img/qr_mall.jpg
  96. 498 551
      frontend/saas-portal-web/src/index.html
  97. 71 3
      frontend/saas-portal-web/src/js/main.js
  98. 3 2
      frontend/saas-web/app.json
  99. 2 2
      frontend/saas-web/app/model/chart/DataXY.js
  100. 4 0
      frontend/saas-web/app/view/core/chart/ChartBase.js

+ 18 - 5
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/HomePageServiceImpl.java

@@ -1,7 +1,7 @@
 package com.usoftchina.saas.commons.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONArray;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.mapper.HomePageMapper;
 import com.usoftchina.saas.commons.service.HomePageService;
@@ -43,25 +43,25 @@ public class HomePageServiceImpl implements HomePageService{
         Object json = null;
         if (null != sixMonths && sixMonths) {
             res = homePageMapper.getPurchaseDataInSixMonth(componyId);
-            json = parseJson(res);
+            json = parseJsonArray(res);
             return Result.success(json);
         }
         res = homePageMapper.getPurchaseDataNow(componyId);
-        json = parseJson(res);
+        json = parseJsonArray(res);
         return Result.success(json);
     }
 
     @Override
     public Result storageData() {
         Long componyId = BaseContextHolder.getCompanyId();
-        Object json = parseJson(homePageMapper.getStorageData(componyId));
+        Object json = parseJsonArray(homePageMapper.getStorageData(componyId));
         return Result.success(json);
     }
 
     @Override
     public Result payAndRecData() {
         Long componyId = BaseContextHolder.getCompanyId();
-        Object json = parseJson(homePageMapper.getPayAndRecData(componyId));
+        Object json = parseJsonArray(homePageMapper.getPayAndRecData(componyId));
         return Result.success(json);
     }
 
@@ -77,4 +77,17 @@ public class HomePageServiceImpl implements HomePageService{
         }
         return null;
     }
+
+    private Object parseJsonArray(String text) {
+        Object array = null;
+        if (null != text) {
+            try {
+                array = JSONArray.parse(text);
+            }catch (Exception e) {
+                e.printStackTrace();
+            }
+            return array;
+        }
+        return null;
+    }
 }

+ 16 - 16
applications/commons/commons-server/src/main/resources/mapper/HomePageMapper.xml

@@ -11,51 +11,51 @@
     </select>
 
     <select id="getPurchaseDataNow" parameterType="long" resultType="string">
-        select concat('{',GROUP_CONCAT(concat('"',si_vendname,'":',IFNULL(si_amount,0))),'}') from statsinfo
+        select concat('[',GROUP_CONCAT(concat('{"x":"',si_vendname,'","y":',IFNULL(si_amount,0),'}')),']')  from statsinfo
         where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc
     </select>
 
     <select id="getPurchaseDataInSixMonth" parameterType="long" resultType="string">
-    select concat('{',d1,',',d2,',',d3,',',d4,',',d5,',',d6,'}') from (
-(select concat('"',DATE_FORMAT(now(),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_1,
+    select concat('[',d1,',',d2,',',d3,',',d4,',',d5,',',d6,']') from (
+(select concat('{"x":',DATE_FORMAT(now(),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_1,
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_2,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_2,
 
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_3,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_3,
 
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_4,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc) data_4,
 
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_5,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_5,
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_6)
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='PURC' ORDER BY si_amount desc)data_6)
  </select>
 
 
     <select id="getStorageData" parameterType="long" resultType="string">
-      select concat('{',d1,',',d2,',',d3,',',d4,',',d5,',',d6,'}') from (
+      select concat('[',d1,',',d2,',',d3,',',d4,',',d5,',',d6,']') from (
 
-(select concat('"',DATE_FORMAT(now(),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_1,
+(select concat('{"x":',DATE_FORMAT(now(),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d1 from   statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_1,
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_2,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d2 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 1 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_2,
 
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_3,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d3 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 2 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_3,
 
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_4,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d4 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 3 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc) data_4,
 
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_5,
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d5 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 4 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_5,
 
-(select concat('"',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m'),'":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0')) d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_6);
+(select concat('{"x":',DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m'),',"y":',ifnull(ROUND(sum((ifnull(si_amount,0))),2),'0'),'}') d6 from  statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(date_sub(now(),interval 5 MONTH),'%Y%m') and si_type='STOCK' ORDER BY si_amount desc)data_6);
     </select>
 
 
     <select id="getPayAndRecData" parameterType="long" resultType="string">
-     select concat('{"支出":',ifnull(si_amount_pay,'0'),',"收入":',ifnull(si_amount_rec,'0'),'}') from statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='FUND'
+     select concat('[{"x":"支出","y":',ifnull(si_amount_pay,'0'),'},{"x":"收入","y":',ifnull(si_amount_rec,'0'),'}]') from statsinfo where companyid=#{componyId} and si_yearmonth=DATE_FORMAT(now(),'%Y%m') and si_type='FUND'
     </select>
 
 

+ 1 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustomerMapper.java

@@ -26,4 +26,5 @@ public interface CustomerMapper extends CommonBaseMapper<Customer> {
 
     int validNameAndCodeWhenUpdate(Customer record);
 
+    int validFinish(@Param("id") Long id,@Param("companyId") Long companyId);
 }

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorMapper.java

@@ -26,4 +26,6 @@ public interface VendorMapper extends CommonBaseMapper<Vendor> {
     int getCountByCode(@Param("code") String code, @Param("companyId") Long companyId);
 
     int getCountByName(@Param("name") String name, @Param("companyId") Long companyId);
+
+    int validFinish(@Param("id") Long id,@Param("companyId") Long companyId);
 }

+ 10 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java

@@ -178,6 +178,16 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             throw new BizException(500, "客户名称或编号重复");
         }
 
+        //检查期初日期是否已结转
+        count = getMapper().validFinish(cu_id,companyId);
+        if (count>0) {
+            Customer cutpl = getMapper().selectByPrimaryKey(cu_id);
+            //期初应收
+            customer.setCu_beginaramount(cutpl.getCu_beginaramount());
+            //期初预收
+            customer.setCu_beginprerecamount(cutpl.getCu_beginprerecamount());
+        }
+
         //更新操作
         getMapper().updateByPrimaryKeySelective(customer);
         //添加从表传输对象

+ 11 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java

@@ -138,6 +138,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             messageLogService.save(generateMsgObj(mainId, code));
         }else{
             code = main.getVe_code();
+            Long mainId = main.getId();
             Vendor oldVendor = getMapper().selectByPrimaryKey(main.getId());
             int count = getMapper().getCountByCode(code, companyId);
             if (!code.equals(oldVendor.getVe_code())){
@@ -152,6 +153,16 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
                 }
             }
 
+            //检查期初日期是否已结转
+            count = getMapper().validFinish(mainId,companyId);
+            if (count>0) {
+                Vendor vendortpl = getMapper().selectByPrimaryKey(mainId);
+                //期初应收
+                main.setVe_beginapamount(vendortpl.getVe_beginapamount());
+                //期初预收
+                main.setVe_beginprepayamount(vendortpl.getVe_beginprepayamount());
+            }
+
             getMapper().updateByPrimaryKeySelective(main);
             if (items.size() > 0) {
                 List<Vendorcontact> updateItems = new ArrayList<Vendorcontact>();

+ 7 - 0
applications/document/document-server/src/main/resources/mapper/CustomerMapper.xml

@@ -386,4 +386,11 @@
     where cu_id = #{id,jdbcType=INTEGER}
   </select>
 
+  <select id="validFinish" parameterType="long" resultType="int">
+  select count(1) from periodsdetail where pd_status=99 and pd_detno=(select DATE_FORMAT(cu_begindate,'%Y%m') from customer where cu_id =#{id})
+  and companyId =#{companyId};
+  </select>
+
+
+
 </mapper>

+ 6 - 0
applications/document/document-server/src/main/resources/mapper/VendorMapper.xml

@@ -471,5 +471,11 @@
     <select id="getCountByName" resultType="int">
         SELECT COUNT(*) FROM VENDOR WHERE COMPANYID = #{companyId} AND VE_NAME=#{name}
     </select>
+
+    <select id="validFinish" parameterType="long" resultType="int">
+        select count(1) from periodsdetail where pd_status=99 and pd_detno=(select DATE_FORMAT(ve_begindate,'%Y%m') from vendor where ve_id =#{id})
+        and companyId =#{companyId};
+    </select>
+
 </mapper>
 

+ 20 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Bankinformation.java

@@ -43,6 +43,10 @@ public class Bankinformation extends CommonBaseEntity implements Serializable {
 
     private String bk_remark;
 
+    private Double bk_income;
+
+    private Double bk_spending;
+
     public String getBk_bankcode() {
         return bk_bankcode;
     }
@@ -186,4 +190,20 @@ public class Bankinformation extends CommonBaseEntity implements Serializable {
     public void setBk_remark(String bk_remark) {
         this.bk_remark = bk_remark;
     }
+
+    public Double getBk_income() {
+        return bk_income;
+    }
+
+    public void setBk_income(Double bk_income) {
+        this.bk_income = bk_income;
+    }
+
+    public Double getBk_spending() {
+        return bk_spending;
+    }
+
+    public void setBk_spending(Double bk_spending) {
+        this.bk_spending = bk_spending;
+    }
 }

+ 34 - 14
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java

@@ -192,14 +192,20 @@ public class PaybalanceServiceImpl implements PaybalanceService {
             //更新账户资料金额
             Bankinformation bankinformation = new Bankinformation();
             Bankinformation nowBankInformation = paybalanceMapper.selectBankInformationByPrimaryKey(det.getPd_bankid());
-            bankinformation.setBk_thisamount((nowBankInformation.getBk_thisamount() == null ? new Double(0) : nowBankInformation.getBk_thisamount())
-                    + (det.getPd_amount() == null ? 0.0 : det.getPd_amount()));
+            Double amount = det.getPd_amount() == null ? new Double(0) : det.getPd_amount();
+            Double preamount = nowBankInformation.getBk_beginamount() ==null ? new Double(0):nowBankInformation.getBk_beginamount();//期初金额
+            Double incoming = nowBankInformation.getBk_income() ==null ? new Double(0):nowBankInformation.getBk_income();
+            Double spending = nowBankInformation.getBk_spending() ==null ? new Double(0):nowBankInformation.getBk_spending();
+            bankinformation.setBk_spending(spending+amount);
+            bankinformation.setBk_thisamount(preamount+incoming-(spending+amount));
+            bankinformation.setId(Long.valueOf(String.valueOf(det.getPd_bankid())));
             paybalanceMapper.updateBankByPrimaryKeySelective(bankinformation);
+
         }
         //更新主表pb_pbdamount=从表二金额合计
         Double amountTotal2 = new Double(0);
         for (Paybalancedetail detail : paybalancedetail){
-            amountTotal2 = amountTotal2 + detail.getPbd_amount();
+            amountTotal2 = amountTotal2 + detail.getPbd_nowbalance();
         }
         updatePay.setId(pay.getMain().getId());
         updatePay.setPb_pdamount(amountTotal);
@@ -218,20 +224,25 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         Double payamount = vendorData.getVe_payamount()==null?new Double(0):vendorData.getVe_payamount();
 
         Vendor vendor = new Vendor();
+        Double recbalancePreamount = paybalance.getPb_preamount();
         vendor.setId(Long.valueOf(String.valueOf(paybalance.getPb_vendid())));
-        vendor.setVe_preamount(preamount+amountTotal);
+        vendor.setVe_preamount(preamount+recbalancePreamount);
         vendor.setVe_payamount(payamount-amountTotal2);
-        vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount-amountTotal2-preamount-amountTotal);
+        vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount-amountTotal2-preamount-recbalancePreamount);
         paybalanceMapper.updateVendorByPrimaryKeySelective(vendor);
 
         for (Paybalancedetail detail: paybalancedetail) {
-            Subledger newsubledger = new Subledger();
+            Subledger subledger1 = new Subledger();
             Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getPbd_slid());
-            newsubledger.setId(Long.valueOf(String.valueOf(detail.getPbd_slid())));
-            newsubledger.setSl_yamount(detail.getPbd_nowbalance()+nowSubledger.getSl_yamount());//已核销
-            newsubledger.setSl_namount(nowSubledger.getSl_namount()-detail.getPbd_nowbalance());//未核销
-            subledgerMapper.updateByPrimaryKeySelective(newsubledger);
+            subledger1.setId(Long.valueOf(String.valueOf(detail.getPbd_slid())));
+            Double yamount = nowSubledger.getSl_yamount()==null?new Double(0):nowSubledger.getSl_yamount();
+            Double namount = nowSubledger.getSl_namount()==null?new Double(0):nowSubledger.getSl_namount();
+            Double nowBalance = detail.getPbd_nowbalance()==null?new Double(0):detail.getPbd_nowbalance();
+            subledger1.setSl_yamount(yamount+nowBalance);//已核销
+            subledger1.setSl_namount(namount-nowBalance);//未核销
+            subledgerMapper.updateByPrimaryKeySelective(subledger1);
         }
+
     }
 
     @Override
@@ -260,10 +271,16 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         //更新账户资料金额
         List<Paybalancedet> paybalancedet = paybalancedetMapper.selectByPrimaryKey(id);
         for (Paybalancedet det:paybalancedet) {
+            //更新账户资料金额
             Bankinformation bankinformation = new Bankinformation();
             Bankinformation nowBankInformation = paybalanceMapper.selectBankInformationByPrimaryKey(det.getPd_bankid());
-            bankinformation.setBk_thisamount((nowBankInformation.getBk_thisamount() == null ? new Double(0) : nowBankInformation.getBk_thisamount())
-                    - (det.getPd_amount() == null ? new Double(0) : det.getPd_amount()));
+            Double amount = det.getPd_amount() == null ? new Double(0) : det.getPd_amount();
+            Double bkpreamount = nowBankInformation.getBk_beginamount() ==null ? new Double(0):nowBankInformation.getBk_beginamount();//期初金额
+            Double bkincoming = nowBankInformation.getBk_income() ==null ? new Double(0):nowBankInformation.getBk_income();
+            Double bkspending = nowBankInformation.getBk_spending() ==null ? new Double(0):nowBankInformation.getBk_spending();
+            bankinformation.setBk_spending(bkspending-amount);
+            bankinformation.setBk_thisamount(bkpreamount+bkincoming-(bkspending-amount));
+            bankinformation.setId(Long.valueOf(String.valueOf(det.getPd_bankid())));
             paybalanceMapper.updateBankByPrimaryKeySelective(bankinformation);
         }
 
@@ -272,8 +289,11 @@ public class PaybalanceServiceImpl implements PaybalanceService {
             Subledger subledger1 = new Subledger();
             Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getPbd_slid());
             subledger1.setId(Long.valueOf(String.valueOf(detail.getPbd_slid())));
-            subledger1.setSl_yamount(nowSubledger.getSl_yamount()-detail.getPbd_nowbalance());//已核销
-            subledger1.setSl_namount(nowSubledger.getSl_namount()+detail.getPbd_nowbalance());//未核销
+            Double yamount = nowSubledger.getSl_yamount()==null?new Double(0):nowSubledger.getSl_yamount();
+            Double namount = nowSubledger.getSl_namount()==null?new Double(0):nowSubledger.getSl_namount();
+            Double nowBalance = detail.getPbd_nowbalance()==null?new Double(0):detail.getPbd_nowbalance();
+            subledger1.setSl_yamount(yamount-nowBalance);//已核销
+            subledger1.setSl_namount(namount+nowBalance);//未核销
             subledgerMapper.updateByPrimaryKeySelective(subledger1);
         }
 

+ 28 - 9
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java

@@ -218,7 +218,13 @@ public class RecbalanceServiceImpl implements RecbalanceService {
             //更新账户资料金额
             Bankinformation bankinformation = new Bankinformation();
             Bankinformation nowBankInformation = recbalanceMapper.selectBankInformationByPrimaryKey(det.getRd_bankid());
-            bankinformation.setBk_thisamount(nowBankInformation.getBk_thisamount()+det.getRd_amount());
+            Double amount = det.getRd_amount() == null ? new Double(0) : det.getRd_amount();
+            Double preamount = nowBankInformation.getBk_beginamount() ==null ? new Double(0):nowBankInformation.getBk_beginamount();//期初金额
+            Double incoming = nowBankInformation.getBk_income() ==null ? new Double(0):nowBankInformation.getBk_income();
+            Double spending = nowBankInformation.getBk_spending() ==null ? new Double(0):nowBankInformation.getBk_spending();
+            bankinformation.setBk_income(incoming+amount);
+            bankinformation.setBk_thisamount(preamount+(incoming+amount)-spending);
+            bankinformation.setId(Long.valueOf(String.valueOf(det.getRd_bankid())));
             recbalanceMapper.updateBankByPrimaryKeySelective(bankinformation);
         }
         //更新主表pb_pbdamount=从表二金额合计
@@ -243,11 +249,12 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         Double recamount = customerData.getCu_recamount()==null?new Double(0):customerData.getCu_recamount();
 
         Customer customer = new Customer();
+        Double paybalancePreamount = recbalance.getRb_preamount();
         customer.setId(Long.valueOf(String.valueOf(recbalance.getRb_custid())));
         customer.setId(Long.valueOf(String.valueOf(recbalance.getRb_custid())));
-        customer.setCu_preamount(preamount+amountTotal);
+        customer.setCu_preamount(preamount+paybalancePreamount);
         customer.setCu_recamount(recamount-amountTotal2);
-        customer.setCu_leftamount(beginapamount-beginprepayamount+recamount-amountTotal2-preamount-amountTotal);
+        customer.setCu_leftamount(beginapamount-beginprepayamount+recamount-amountTotal2-preamount-paybalancePreamount);
         recbalanceMapper.updateCustomerByPrimaryKeySelective(customer);
 
         //更新本次核销金额
@@ -255,8 +262,11 @@ public class RecbalanceServiceImpl implements RecbalanceService {
             Subledger subledger1 = new Subledger();
             Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getRbd_slid());
             subledger1.setId(Long.valueOf(String.valueOf(detail.getRbd_slid())));
-            subledger1.setSl_yamount(detail.getRbd_nowbalance() + nowSubledger.getSl_yamount());//已核销
-            subledger1.setSl_namount(nowSubledger.getSl_namount() - detail.getRbd_nowbalance());//未核销
+            Double yamount = nowSubledger.getSl_yamount()==null?new Double(0):nowSubledger.getSl_yamount();
+            Double namount = nowSubledger.getSl_namount()==null?new Double(0):nowSubledger.getSl_namount();
+            Double nowBalance = detail.getRbd_nowbalance()==null?new Double(0):detail.getRbd_nowbalance();
+            subledger1.setSl_yamount(yamount+nowBalance);//已核销
+            subledger1.setSl_namount(namount-nowBalance);//未核销
             subledgerMapper.updateByPrimaryKeySelective(subledger1);
         }
     }
@@ -287,9 +297,16 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         //更新账户资料金额
         List<Recbalancedet> recbalancedet = recbalancedetMapper.selectByPrimaryKey(Math.toIntExact(id));
         for (Recbalancedet det:recbalancedet) {
+            //更新账户资料金额
             Bankinformation bankinformation = new Bankinformation();
             Bankinformation nowBankInformation = recbalanceMapper.selectBankInformationByPrimaryKey(det.getRd_bankid());
-            bankinformation.setBk_thisamount(nowBankInformation.getBk_thisamount()-det.getRd_amount());
+            Double amount = det.getRd_amount() == null ? new Double(0) : det.getRd_amount();
+            Double bkpreamount = nowBankInformation.getBk_beginamount() ==null ? new Double(0):nowBankInformation.getBk_beginamount();//期初金额
+            Double bkincoming = nowBankInformation.getBk_income() ==null ? new Double(0):nowBankInformation.getBk_income();
+            Double bkspending = nowBankInformation.getBk_spending() ==null ? new Double(0):nowBankInformation.getBk_spending();
+            bankinformation.setBk_income(bkincoming-amount);
+            bankinformation.setBk_thisamount(bkpreamount+(bkincoming-amount)-bkspending);
+            bankinformation.setId(Long.valueOf(String.valueOf(det.getRd_bankid())));
             recbalanceMapper.updateBankByPrimaryKeySelective(bankinformation);
         }
 
@@ -310,9 +327,11 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         for(Recbalancedetail detail: recbalancedetail) {
             Subledger subledger1 = new Subledger();
             Subledger nowSubledger = subledgerMapper.selectByPrimaryKey(detail.getRbd_slid());
-            subledger1.setId(Long.valueOf(String.valueOf(detail.getRbd_slid())));
-            subledger1.setSl_yamount(nowSubledger.getSl_yamount()-detail.getRbd_nowbalance());//已核销
-            subledger1.setSl_namount(nowSubledger.getSl_namount()+detail.getRbd_nowbalance());//未核销
+            subledger1.setId(Long.valueOf(String.valueOf(detail.getRbd_slid())));Double yamount = nowSubledger.getSl_yamount()==null?new Double(0):nowSubledger.getSl_yamount();
+            Double namount = nowSubledger.getSl_namount()==null?new Double(0):nowSubledger.getSl_namount();
+            Double nowBalance = detail.getRbd_nowbalance()==null?new Double(0):detail.getRbd_nowbalance();
+            subledger1.setSl_yamount(yamount-nowBalance);//已核销
+            subledger1.setSl_namount(namount+nowBalance);//未核销
             subledgerMapper.updateByPrimaryKeySelective(subledger1);
         }
     }

+ 9 - 1
applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml

@@ -458,7 +458,7 @@
   <sql id="Bank_Column_List" >
     bk_id, bk_bankcode, bk_bankname, bk_date, bk_type, bk_beginamount, bk_thisamount,
     bk_status, bk_statuscode, bk_recorderid, bk_recorder, bk_recorddate, bk_ym, companyid,
-    updaterId, updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark
+    updaterId, updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark,bk_spending,bk_income
   </sql>
   <sql id="Blob_Column_List" >
     bk_remark
@@ -497,6 +497,8 @@
     <result column="bk_text4" property="bk_text4" jdbcType="VARCHAR" />
     <result column="bk_text5" property="bk_text5" jdbcType="VARCHAR" />
     <result column="bk_remark" property="bk_remark" jdbcType="VARCHAR" />
+    <result column="bk_spending" property="bk_spending" jdbcType="DOUBLE" />
+    <result column="bk_income" property="bk_income" jdbcType="DOUBLE" />
   </resultMap>
   <update id="updateBankByPrimaryKeySelective" parameterType="com.usoftchina.saas.money.po.Bankinformation" >
     update bankinformation
@@ -564,6 +566,12 @@
       <if test="bk_remark != null" >
         bk_remark = #{bk_remark,jdbcType=LONGVARCHAR},
       </if>
+      <if test="bk_spending != null" >
+        bk_spending = #{bk_spending,jdbcType=DOUBLE},
+      </if>
+      <if test="bk_income != null" >
+        bk_income = #{bk_income,jdbcType=DOUBLE},
+      </if>
     </set>
     where bk_id = #{id,jdbcType=INTEGER}
   </update>

+ 9 - 1
applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml

@@ -591,7 +591,7 @@
   <sql id="Bank_Column_List" >
     bk_id, bk_bankcode, bk_bankname, bk_date, bk_type, bk_beginamount, bk_thisamount,
     bk_status, bk_statuscode, bk_recorderid, bk_recorder, bk_recorddate, bk_ym, companyid,
-    updaterId, updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark
+    updaterId, updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark,bk_spending,bk_income
   </sql>
   <sql id="Blob_Column_List" >
     bk_remark
@@ -630,6 +630,8 @@
     <result column="bk_text4" property="bk_text4" jdbcType="VARCHAR" />
     <result column="bk_text5" property="bk_text5" jdbcType="VARCHAR" />
     <result column="bk_remark" property="bk_remark" jdbcType="VARCHAR" />
+    <result column="bk_spending" property="bk_spending" jdbcType="DOUBLE" />
+    <result column="bk_income" property="bk_income" jdbcType="DOUBLE" />
   </resultMap>
   <update id="updateBankByPrimaryKeySelective" parameterType="com.usoftchina.saas.money.po.Bankinformation" >
     update bankinformation
@@ -697,6 +699,12 @@
       <if test="bk_remark != null" >
         bk_remark = #{bk_remark,jdbcType=LONGVARCHAR},
       </if>
+      <if test="bk_spending != null" >
+        bk_spending = #{bk_spending,jdbcType=DOUBLE},
+      </if>
+      <if test="bk_income != null" >
+        bk_income = #{bk_income,jdbcType=DOUBLE},
+      </if>
     </set>
     where bk_id = #{id,jdbcType=INTEGER}
   </update>

+ 1 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -138,6 +138,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
                 detail.setPd_puid(pu_id);
                 detail.setPd_code(pu_code);
                 detail.setPd_yqty(new Double(0));
+                detail.setPd_delivery(item.getPd_delivery()==null?purchase.getPu_delivery():item.getPd_delivery());
                 detail.setCompanyId(companyId);
                 detail.setCreatorId(userId);
                 detail.setCreateTime(new Date());

+ 4 - 2
applications/purchase/purchase-server/src/main/resources/mapper/ProdIODetailMapper.xml

@@ -38,6 +38,7 @@
     <result column="pd_text3" jdbcType="VARCHAR" property="pd_text3" />
     <result column="pd_text4" jdbcType="VARCHAR" property="pd_text4" />
     <result column="pd_text5" jdbcType="VARCHAR" property="pd_text5" />
+    <result column="pd_remark" jdbcType="VARCHAR" property="pd_remark" />
     <result column="pd_ym" jdbcType="INTEGER" property="pd_ym" />
     <result column="pd_yqty" jdbcType="DOUBLE" property="pd_yqty" />
     <result column="pd_ioid" jdbcType="INTEGER" property="pd_ioid" />
@@ -603,8 +604,9 @@
       #{item.pd_text5,jdbcType=VARCHAR},
       #{item.pd_ym,jdbcType=INTEGER},
       #{item.pd_yqty,jdbcType=DOUBLE},
-      #{item.pd_remark,jdbcType=LONGVARCHAR},
-      #{item.pd_ioid,jdbcType=INTEGER})
+      #{item.pd_ioid,jdbcType=INTEGER},
+      #{item.pd_remark,jdbcType=LONGVARCHAR}
+      )
     </foreach>
   </insert>
 

+ 1 - 2
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/MakeMapper.java

@@ -25,9 +25,8 @@ public interface MakeMapper extends CommonBaseMapper<Make> {
 
     int validateCodeWhenUpdate(@Param("code") String code, @Param("id") Long id, @Param("companyId") Long company);
 
-    double getOnHand(@Param("prodcode") String prodcode, @Param("whcode") String whcode, @Param("companyId") Long companyId);
+    Double getOnHand(@Param("prodcode") String prodcode, @Param("whcode") String whcode, @Param("companyId") Long companyId);
 
     String selectMakeInOutCode(@Param("code") String code, @Param("companyId") Long companyId, @Param("type") String type);
 
-    void calcMakePriceAndTotal(Long id);
 }

+ 2 - 0
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/MakeMaterialMapper.java

@@ -25,4 +25,6 @@ public interface MakeMaterialMapper {
     void batchInsert(List<MakeMaterial> vendorcontactList);
 
     void batchUpdate(List<MakeMaterial> vendorcontactList);
+
+    void calcdetailtotal(Long ma_id);
 }

+ 59 - 36
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/MakeServiceImpl.java

@@ -105,11 +105,6 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             docBaseDTO = generateMsgObj(make.getId(), make.getMa_code());
             messageLogService.save(docBaseDTO);
 
-
-            //抓取出库单位成本,计算出库成本
-            calcMakePriceAndTotal(make.getId());
-
-
         }else{
             //更新主表
             make.setUpdaterId(BaseContextHolder.getUserId());
@@ -147,17 +142,10 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             docBaseDTO = generateMsgObj(make.getId(), make.getMa_code());
             messageLogService.update(docBaseDTO);
 
-            //抓取出库单位成本,计算出库成本
-            calcMakePriceAndTotal(make.getId());
-
         }
         return docBaseDTO;
     }
 
-    private void calcMakePriceAndTotal(Long id) {
-        getMapper().calcMakePriceAndTotal(id);
-    }
-
 
     /**
      * 校验库存是否足够
@@ -171,8 +159,11 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             int i = 0;
             for(MakeMaterial makeMaterial : makeMaterialList){
                 i++;
-                double qty = makeMaterial.getMm_qty();
-                double onHand = getMapper().getOnHand(makeMaterial.getMm_prodcode(),makeMaterial.getMm_whcode(), BaseContextHolder.getCompanyId());
+                double qty = makeMaterial.getMm_qty()==null?0:makeMaterial.getMm_qty();
+                Double onHand = getMapper().getOnHand(makeMaterial.getMm_prodcode(),makeMaterial.getMm_whcode(), BaseContextHolder.getCompanyId());
+                if (onHand==null){
+                    onHand=0d;
+                }
                 if(onHand < qty){
                     throw new BizException(79402, "行" + i + "库存不足");
                 }
@@ -265,22 +256,21 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             DocBaseDTO docBaseDTO = saveOrUpdate(makeListDTO);
             make.setId(docBaseDTO.getId());
         }
-        //抓取出库单位成本,计算出库成本
-        calcMakePriceAndTotal(make.getId());
-
         //2.校验库存是否足够
         validStorage(makeListDTO);
         //3.生成  完工入库单和领料单 并 过账
         generateProdIO(makeListDTO);
+
         //4.修改单据状态
         Make updateMake = new Make();
+        updateMake.setId(make.getId());
         updateMake.setMa_status(Status.AUDITED.getDisplay());
         updateMake.setMa_statuscode(Status.AUDITED.name());
         updateMake.setUpdateTime(new Date());
         updateMake.setUpdaterId(BaseContextHolder.getUserId());
         updateMake.setMa_auditman("");
         updateMake.setMa_auditdate(new Date());
-        getMapper().updateByPrimaryKeySelective(make);
+        getMapper().updateByPrimaryKeySelective(updateMake);
         DocBaseDTO docBaseDTO = generateMsgObj(make.getId(), make.getMa_code());
         //5.记录LOG
         messageLogService.audit(docBaseDTO);
@@ -292,9 +282,12 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
      * 2.过账
      * @param makeListDTO
      */
+    @Transactional(rollbackFor = Exception.class)
     private void generateProdIO(MakeListDTO makeListDTO) {
         Make make = makeListDTO.getMain();
+        Long ma_id = make.getId();
         List<MakeMaterial> items = makeListDTO.getItems();
+
         if ("组装".equals(make.getMa_type())){
             /** 1.生产领料单 **/
             //a.主表
@@ -303,7 +296,6 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             String code = maxnumberService.getMaxnumber("MakeOut", true).getData();
             prodInOut.setPi_inoutno(code);
             prodInOut.setPi_date(new Date());       //出入库日期
-            //prodInOut.setPi_total(make.getMa_price());
             prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
             prodInOut.setPi_recorddate(new Date());     //录入日期
             prodInOut.setPi_auditdate(new Date());      //审核日期
@@ -353,6 +345,10 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             if (!StringUtils.isEmpty(map.get("result"))){
                 throw new BizException(76201, map.get("result").toString());
             }
+
+            //重新获取更新后的工单
+            make = getMapper().selectByPrimaryKey(ma_id);
+
             /** 2.完工入库单 **/
             //a.主表
             prodInOut = new ProdInOut();
@@ -360,7 +356,6 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             code = maxnumberService.getMaxnumber("MakeIn", true).getData();
             prodInOut.setPi_inoutno(code);
             prodInOut.setPi_date(new Date());       //出入库日期
-            //prodInOut.setPi_total(make.getMa_price());
             prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
             prodInOut.setPi_recorddate(new Date());     //录入日期
             prodInOut.setPi_auditdate(new Date());      //审核日期
@@ -371,6 +366,7 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             prodInOut.setCompanyId(BaseContextHolder.getCompanyId());   //公司ID
             prodInOut.setCreateTime(new Date());
             prodInOut.setCreatorId(BaseContextHolder.getUserId());      //创建人ID
+            prodInOut.setPi_total(make.getMa_total());
             prodInOutMapper.insertSelective(prodInOut);
             pi_id = prodInOut.getId();
             //b.从表
@@ -403,10 +399,10 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
                 throw new BizException(76201, map.get("result").toString());
             }
         }else if ("拆件".equals(make.getMa_type())){
-            /** 1.生产领料单 **/
+            /** 1.拆件领料单 **/
             //a.主表
             ProdInOut prodInOut = new ProdInOut();
-            prodInOut.setPi_class("生产领料单");
+            prodInOut.setPi_class("拆件领料单");
             String code = maxnumberService.getMaxnumber("MakeOut", true).getData();
             prodInOut.setPi_inoutno(code);
             prodInOut.setPi_date(new Date());       //出入库日期
@@ -434,8 +430,8 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             prodIODetail.setPd_prodid(make.getMa_prodid());    //物料ID
             prodIODetail.setPd_prodcode(make.getMa_prodcode()); //物料CODE
             prodIODetail.setPd_outqty(make.getMa_qty());        //出库数
-            prodIODetail.setPd_price(make.getMa_price());       //成本单价 ???
-            prodIODetail.setPd_total(make.getMa_total());      //金额
+            prodIODetail.setPd_price(new Double(0));       //成本单价 ???
+            prodIODetail.setPd_total(new Double(0));      //金额
             prodIODetail.setPd_whid(make.getMa_whid());         //仓库ID
             prodIODetail.setPd_whcode(make.getMa_whcode());     //仓库CODE
             prodIODetail.setPd_whname(make.getMa_whname());     //仓库名称
@@ -446,7 +442,7 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             //c.领料单过账
             Map<String, Object> map = new HashMap<String, Object>();
             map.put("inoutNo", code);
-            map.put("class", "生产领料单");
+            map.put("class", "拆件领料单");
             map.put("commitid", BaseContextHolder.getUserId());
             map.put("companyId", BaseContextHolder.getCompanyId());
             map.put("result", null);
@@ -454,6 +450,14 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             if (!StringUtils.isEmpty(map.get("result"))){
                 throw new BizException(76201, map.get("result").toString());
             }
+
+            //重新获取更新后的工单
+            //合计工单明细
+            makeMaterialMapper.calcdetailtotal(ma_id);
+            make = getMapper().selectByPrimaryKey(ma_id);
+            items = makeMaterialMapper.selectByFK(ma_id,BaseContextHolder.getCompanyId());
+
+
             /** 2.完工入库单 **/
             //a.主表
             prodInOut = new ProdInOut();
@@ -461,7 +465,6 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             code = maxnumberService.getMaxnumber("MakeIn", true).getData();
             prodInOut.setPi_inoutno(code);
             prodInOut.setPi_date(new Date());       //出入库日期
-            //prodInOut.setPi_total(make.getMa_price());
             prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
             prodInOut.setPi_recorddate(new Date());     //录入日期
             prodInOut.setPi_auditdate(new Date());      //审核日期
@@ -474,6 +477,8 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             prodInOut.setCreatorId(BaseContextHolder.getUserId());      //创建人ID
             prodInOutMapper.insertSelective(prodInOut);
             pi_id = prodInOut.getId();
+            //计算完工入库单主表金额
+            prodIODetailMapper.calcProdIn(pi_id);
             //b.从表
             List<ProdIODetail> prodIODetailList = new ArrayList<ProdIODetail>();
             int detno = 0;
@@ -526,11 +531,12 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
         selectProdIO(make);
         //5.修改单据状态
         Make updateMake = new Make();
-        make.setMa_status(Status.UNAUDITED.getDisplay());
-        make.setMa_statuscode(Status.UNAUDITED.name());
-        make.setUpdateTime(new Date());
-        make.setUpdaterId(BaseContextHolder.getUserId());
-        getMapper().updateByPrimaryKeySelective(make);
+        updateMake.setId(make.getId());
+        updateMake.setMa_status(Status.UNAUDITED.getDisplay());
+        updateMake.setMa_statuscode(Status.UNAUDITED.name());
+        updateMake.setUpdateTime(new Date());
+        updateMake.setUpdaterId(BaseContextHolder.getUserId());
+        getMapper().updateByPrimaryKeySelective(updateMake);
         DocBaseDTO docBaseDTO = generateMsgObj(id, make.getMa_code());
         //6.记录LOG
         messageLogService.unAudit(docBaseDTO);
@@ -580,11 +586,18 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
      * 2.反过账
      * @param make
      */
+    @Transactional(rollbackFor = Exception.class)
     private void selectProdIO(Make make) {
         String code = make.getMa_code();
+        String type = make.getMa_type();
+        String outCode="";
         Long companyId = BaseContextHolder.getCompanyId();
         String inCode = getMapper().selectMakeInOutCode(code, companyId, "完工入库单");
-        String outCode = getMapper().selectMakeInOutCode(code, companyId, "生产领料单");
+        if ("拆件".equals(type)){
+            outCode = getMapper().selectMakeInOutCode(code, companyId, "拆件领料单");
+        }else if ("组装".equals(type)){
+            outCode = getMapper().selectMakeInOutCode(code, companyId, "生产领料单");
+        }
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("inoutNo", inCode);
         map.put("class", "完工入库单");
@@ -599,15 +612,25 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
         prodInOutMapper.deleteByInOutNo(inCode, "完工入库单", BaseContextHolder.getCompanyId());
         prodIODetailMapper.deleteByInOutNo(inCode, "完工入库单", BaseContextHolder.getCompanyId());
 
+        if ("拆件".equals(type)){
+            map.put("class", "拆件领料单");
+        }else if ("组装".equals(type)){
+            map.put("class", "生产领料单");
+        }
         map.put("inoutNo", outCode);
-        map.put("class", "生产领料单");
-        //生产领料单反过账
+        map.put("result", null);
+        //生产领料单/拆件领料反过账
         prodInOutMapper.unPost(map);
         if(!StringUtils.isEmpty(map.get("result"))){
             throw new BizException(76204, map.get("result").toString());
         }
-        prodInOutMapper.deleteByInOutNo(outCode, "生产领料单", BaseContextHolder.getCompanyId());
-        prodIODetailMapper.deleteByInOutNo(outCode, "生产领料单", BaseContextHolder.getCompanyId());
+        if ("拆件".equals(type)){
+            prodInOutMapper.deleteByInOutNo(outCode, "拆件领料单", BaseContextHolder.getCompanyId());
+            prodIODetailMapper.deleteByInOutNo(outCode, "拆件领料单", BaseContextHolder.getCompanyId());
+        }else if ("组装".equals(type)){
+            prodInOutMapper.deleteByInOutNo(outCode, "生产领料单", BaseContextHolder.getCompanyId());
+            prodIODetailMapper.deleteByInOutNo(outCode, "生产领料单", BaseContextHolder.getCompanyId());
+        }
     }
 
     /**

+ 5 - 0
applications/storage/storage-server/src/main/resources/mapper/MakematerialMapper.xml

@@ -337,4 +337,9 @@
         where mm_id=#{item.id}
     </foreach>
   </update>
+
+  <update id="calcdetailtotal" parameterType="long" >
+    update MakeMaterial set mm_amount = mm_price*mm_qty where mm_maid = #{id}
+  </update>
+
 </mapper>

+ 4 - 2
applications/storage/storage-server/src/main/resources/mapper/ProdIODetailMapper.xml

@@ -38,6 +38,7 @@
     <result column="pd_text3" jdbcType="VARCHAR" property="pd_text3" />
     <result column="pd_text4" jdbcType="VARCHAR" property="pd_text4" />
     <result column="pd_text5" jdbcType="VARCHAR" property="pd_text5" />
+    <result column="pd_remark" jdbcType="VARCHAR" property="pd_remark" />
     <result column="pd_ym" jdbcType="INTEGER" property="pd_ym" />
     <result column="pd_yqty" jdbcType="DOUBLE" property="pd_yqty" />
     <result column="pd_ioid" jdbcType="INTEGER" property="pd_ioid" />
@@ -603,8 +604,9 @@
       #{item.pd_text5,jdbcType=VARCHAR},
       #{item.pd_ym,jdbcType=INTEGER},
       #{item.pd_yqty,jdbcType=DOUBLE},
-      #{item.pd_remark,jdbcType=LONGVARCHAR},
-      #{item.pd_ioid,jdbcType=INTEGER})
+      #{item.pd_ioid,jdbcType=INTEGER},
+      #{item.pd_remark,jdbcType=LONGVARCHAR}
+      )
     </foreach>
   </insert>
 

+ 451 - 5
frontend/saas-portal-web/src/css/main.css

@@ -78,6 +78,452 @@ main > section {
 .bg-blue {
     background-color: #0aa6bd;
 }
+.logo-img {
+    width: 123px;
+    height: 53px;
+    margin-top: -6px;
+}
+/* 遮罩 */
+.zhezhao {
+    display: none;
+    position: fixed;
+    top: 0;
+    left: 0;
+    height: 100%;
+    width: 100%;
+    background: #000;
+    opacity: 0.8;
+    z-index: 5;
+}
+/* 登录弹窗 */
+
+.box,.box-zc{
+    display:none;
+    width: 378px;
+    height: 382px; 
+    position: fixed;
+    background:white; 
+    top: 55%;
+    left:50%;
+    margin-left: -189px;
+    margin-top: -225px;
+    z-index: 10;
+}
+.box-zc {
+    height: 450px;
+}
+.tc-login {
+    text-align: center;
+    color: black;
+    margin: 24px;
+    /* margin-top: -20px; */
+}
+.tc-logoimg {
+    width: 123px;
+    height: 53px;
+    margin-top: 22px;
+}
+.tc-out {
+    position: absolute;
+    top: 24px;
+    right: 24px;
+    cursor:pointer;
+}
+/* .tc-logo {
+    font-family: PingFangSC-Medium;
+    font-size: 18px;
+    color: #007FE6;
+    letter-spacing: 0.34px;
+    text-align: center;
+    margin-top: 38px;
+} */
+.tc-title {
+    font-family: PingFangSC-Regular;
+    font-size: 14px;
+    color: #999999;
+    letter-spacing: 0.3px;
+    text-align: center;
+    margin-top: 10px;
+    line-height: 30px;
+}
+.tc-hrleft {
+    width: 60px;
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 5px;
+    margin-right: 5px;
+}
+.tc-hrright {
+    width: 50px;
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 5px;
+    margin-left: 5px;
+}
+.tc-phone {
+    background: rgba(32,53,128,0.01);
+    border: 1px solid #D8DCE8;
+    border-radius: 3px;
+    /* width: 330px; */
+    height: 40px;
+    margin: 16px auto;
+}
+.tc-phonebox {
+    line-height: 33px;
+    margin-left: 10px;
+    text-align: left;
+}
+.tc-phonecon {
+    border: 0;
+    width: 94%;
+    height: 38px;
+}
+.tc-phonepwd {
+    border: 0;
+    width: 295px;
+    height: 38px;
+}
+.tc-login-pwd {
+    background-image: linear-gradient(-90deg, #007EE5 0%, #05B3FF 100%, #5533FF 100%);
+    border-radius: 3px;
+    border: 0;
+    box-shadow: 0px 16px 22px -12px #05B3FF;
+    width: 100%;
+    height: 40px;
+    margin-bottom: 12px;
+    color: white;
+}
+.tc-duanxin {
+    font-family: PingFangSC-Medium;
+    font-size: 12px;
+    color: #0080E6;
+    letter-spacing: 0.26px;
+}
+.tc-over {
+    overflow: hidden;
+}
+.tc-duanxin a {
+    text-decoration:underline;
+}
+.tc-color {
+    font-family: PingFangSC-Regular;
+    font-size: 12px;
+    color: #727272;
+    letter-spacing: 0.26px;
+    text-align: center;
+}
+.tc-weixin {
+    font-family: PingFangSC-Regular;
+    font-size: 12px;
+    color: #999999;
+    letter-spacing: 0.26px;
+}
+/* 短信登录 */
+.tc-yanzhengma {
+    border: 0;
+    height: 38px;
+}
+.tc-shibiema {
+    width: 204px;
+    margin-left: -10px;
+}
+.tc-huoqu {
+    background-image: linear-gradient(-90deg, #007EE5 0%, #05B3FF 100%, #5533FF 100%);
+    border-radius: 3px;
+    border: 0;
+    height: 40px;
+    width: 115px;
+    color: white;
+}
+/* 新注册 */ 
+.tc-yanzhengimg {
+    width: 90px;
+    height: 40px;
+    margin-left: 10px;
+    border: #0080E6 1px solid;
+}
+/* 11/12注册页面 ..........................................*/
+.login {
+    margin-top: 12px;
+    color: white;
+    font-size: 14px;
+}
+.login img {
+    width: 25px;
+    height: 24px;
+}
+.login > span:hover{
+    cursor:pointer;
+    color: #0aa6bd;
+}
+.my-label {
+    float: left;
+    line-height: 40px;
+    color:#414141;
+}
+.my-ipt {
+    width: 100%;
+}
+.zc-box {
+    margin: 50px;
+}
+.xieyi {
+    color: #999;
+    margin-bottom: 12px;
+    float: left;
+}
+.form-buttom {
+    float: right;
+    font-family: PingFangSC-Regular;
+    font-size: 12px;
+    color: #727272;
+    letter-spacing: 0.26px;
+}
+.form-buttom a{
+    color: #5533FF;
+    text-decoration: underline;
+}
+.back {
+    background: #6f6f6f;
+}
+/* 首页内容 ..........................................*/
+.my-text {
+    position: absolute;
+    top: 200px;
+    left: 136px;
+    /* z-index: 5; */
+    width: 468px;
+    height: 300px;
+}
+.sy-dianzi {
+    width: 100%;
+    height: 50px;
+}
+.sy-mb {
+    margin-bottom: 25px;
+}
+.sy-mb img{
+    width: 100px;
+    height: 36px;
+}
+.sy-mbimg2 {
+    width: 150px !important;
+}
+.sy-mb>img:nth-child(2) {
+    margin-left: 15px;
+}
+.my-tiyan {
+    background: #5172DD;
+    box-shadow: 0 0 19px 0 rgba(137,143,164,0.63);
+    border-radius: 4px;
+    width: 100px;
+    height: 36px;
+    font-family: PingFangSC-Regular;
+    font-size: 16px;
+    color: #FFFFFF;
+    border: 0;
+}
+.chrw {
+    width: 486px;
+    height: 508px;
+}
+.sy-img {
+    position: absolute;
+    top: 100px;
+    right: 130px;
+}
+/* 特色 .......................................*/
+.ts-box {
+    overflow: hidden;
+    margin-top: 50px;
+}
+.left {
+    float: left;
+}
+.right {
+    float: right;
+}
+.ts-img {
+    width: 500px;
+}
+.right-text {
+    text-align: right;
+}
+.left-text {
+    text-align: left;
+}
+
+/* 功能 .........................................*/
+.gn-img {
+    width: 100%;
+}
+.gn-hei>div {
+    height: 240px;
+}
+
+/* 帮助 ........................................*/
+.bz-box {
+    width: 80%;
+    margin: 0 auto;
+}
+.bz-sousuo {
+    width: 80%;
+    margin: 0 -5px;
+}
+.bz-content {
+    margin-top: 30px;
+    
+}
+.bz-left {
+    width: 10%;
+}
+.bz-left button {
+    width: 100%;
+    background: white;
+    border: 0;
+    height: 30px;
+}
+.actvin {
+    background: #444 !important;
+    color: white;
+}
+.bz-right {
+    width: 90%;
+    background: white;
+    height: 500px;
+}
+.bz-right-conent div {
+    display: none;
+}
+.bz-right-conent li {
+    margin-bottom: 20px;
+}
+.bz-right-conent {
+    margin: 30px;
+}
+/* 底部 ...................................*/
+/*footer*/
+.footer{
+    width: 100%;
+    background: #383838;
+}
+.footer .container{
+    margin: 0 auto;
+    width: 1200px;
+    height: 445px;
+    overflow: hidden;
+    text-align: center;
+}
+.footer-section .link{
+    overflow: hidden;
+    float: left;
+    margin-right: 100px;
+}
+.footer-section ul{
+    float: left;
+    margin-right: 70px;
+}
+.footer-section ul:last-child {
+    margin-right: 0;
+}
+.footer-section ul>li{
+    list-style: none;
+}
+.footer-section ul>li span {
+    display: inline-block;
+    margin-bottom: 28px;
+    font-size: 16px;
+    color: #fff;
+}
+.footer-section ul>li a{
+    display: inline-block;
+    margin-bottom: 20px;
+    font-size: 12px;
+    color: #fff;
+    cursor: pointer;
+}
+.footer-section ul>li:hover a{
+    text-decoration: underline ;
+    color: #e41f2b;
+}
+.footer-section ul>li:hover a.no-link{
+    text-decoration: none;
+    color: #fff;
+    cursor: default;
+}
+.footer-section .about{
+    float: left;
+    margin-right: 90px;
+    width: 245px;
+    text-align: left;
+}
+.footer-section .about .logo{
+    margin-bottom: 32px;
+}
+.footer-section .about .logo img{
+    width: 156px;
+    height: 44px;
+}
+.footer-section .about .time{
+    margin-bottom: 21px;
+    font-size: 14px;
+    color: #fff;
+}
+.footer-section .qr{
+    width: 220px;
+    overflow: hidden;
+    text-align: right;
+}
+.footer-section .qr .qr-top{
+    overflow: hidden;
+}
+.footer-section .qr .qr-code{
+    float: right;
+    width: 90px;
+    font-size: 14px;
+    color: #fff;
+    text-align: center;
+}
+.footer-section .qr .qr-mall{
+    margin-right: 21px;
+}
+.footer-section .qr .qr-code img{
+    width: 100%;
+    margin-bottom: 18px;
+}
+.footer-section .qr .qr-bottom{
+    margin-top: 22px;
+    line-height: 30px;
+    text-align: right;
+    font-size: 13px;
+    color: #fff;
+}
+.footer .footer-list{
+    margin: 55px auto 22px;
+}
+.footer .friend-link{
+    height: 100px;
+    padding: 28px 0 16px;
+    border-top: 1px solid rgba(255,255,255,.2);
+    border-bottom: 1px solid rgba(255,255,255,.2)
+}
+.footer .friend-link ul{
+    overflow: hidden;
+    list-style: none ;
+}
+.footer .friend-link ul li{
+    float: left;
+}
+.footer .friend-link ul li span{
+    font-size: 14px;
+    color: #8b8b8b;
+}
+.footer .friend-link ul li a{
+    display: inline-block;
+    margin-right: 20px;
+    font-size: 14px;
+    color: #8b8b8b;
+}
 
 /* Sweep To Right */
 .btn-effect {
@@ -176,7 +622,7 @@ main > section {
 }
 .section-title p {
     color: #444;
-    font-style: italic;
+    /* font-style: italic; */
     font-size: 13px;
 }
 .section-title.white p {
@@ -301,7 +747,7 @@ main > section {
 h1.navbar-brand {
     font-size: 20px;
     font-weight: 700;
-    margin: 0;
+    margin-top: -12px;
     text-transform: uppercase;
 }
 
@@ -359,13 +805,13 @@ h1.navbar-brand {
     padding: 0;
 }
 .mask-overly {
-    background: rgba(0, 0, 0, 0.2) none repeat scroll 0 0;
+    /* background: rgba(0, 0, 0, 0.2) none repeat scroll 0 0; */
     bottom: 0;
     left: 0;
     position: absolute;
     right: 0;
     top: 0;
-    z-index: 9;
+    /* z-index: 9; */
 
 }
 #slider #nav-arrows > a {
@@ -373,7 +819,7 @@ h1.navbar-brand {
     line-height: 1.5;
 }
 .slider-1 {
-    background-image: url(../img/slider/slider-1.jpg);
+    background-image: url(../img/assets/背景.png);
 }
 .slider-2 {
     background-image: url(../img/slider/slider-2.jpg);

BIN
frontend/saas-portal-web/src/img/assets/Group.png


BIN
frontend/saas-portal-web/src/img/assets/Group@2x.png


BIN
frontend/saas-portal-web/src/img/assets/Group@3x.png


BIN
frontend/saas-portal-web/src/img/assets/dalogo-白@3x.png


BIN
frontend/saas-portal-web/src/img/assets/dalogo@3x.png


BIN
frontend/saas-portal-web/src/img/assets/logo-蓝.png


BIN
frontend/saas-portal-web/src/img/assets/logo-蓝@2x.png


BIN
frontend/saas-portal-web/src/img/assets/logo-蓝@3x.png


BIN
frontend/saas-portal-web/src/img/assets/logo.png


BIN
frontend/saas-portal-web/src/img/assets/logo@2x.png


BIN
frontend/saas-portal-web/src/img/assets/logo@3x.png


BIN
frontend/saas-portal-web/src/img/assets/timg (1).jpg


BIN
frontend/saas-portal-web/src/img/assets/任.png


BIN
frontend/saas-portal-web/src/img/assets/任@2x.png


BIN
frontend/saas-portal-web/src/img/assets/任@3x.png


BIN
frontend/saas-portal-web/src/img/assets/刷新.png


BIN
frontend/saas-portal-web/src/img/assets/刷新@2x.png


BIN
frontend/saas-portal-web/src/img/assets/刷新@3x.png


BIN
frontend/saas-portal-web/src/img/assets/叉号.png


BIN
frontend/saas-portal-web/src/img/assets/叉号@2x.png


BIN
frontend/saas-portal-web/src/img/assets/叉号@3x.png


BIN
frontend/saas-portal-web/src/img/assets/密码.png


BIN
frontend/saas-portal-web/src/img/assets/密码@2x.png


BIN
frontend/saas-portal-web/src/img/assets/密码@3x.png


BIN
frontend/saas-portal-web/src/img/assets/寻.png


BIN
frontend/saas-portal-web/src/img/assets/寻@2x.png


BIN
frontend/saas-portal-web/src/img/assets/寻@3x.png


BIN
frontend/saas-portal-web/src/img/assets/导航-注册.png


BIN
frontend/saas-portal-web/src/img/assets/导航-注册@2x.png


BIN
frontend/saas-portal-web/src/img/assets/导航-注册@3x.png


BIN
frontend/saas-portal-web/src/img/assets/导航-登录.png


BIN
frontend/saas-portal-web/src/img/assets/导航-登录@2x.png


BIN
frontend/saas-portal-web/src/img/assets/导航-登录@3x.png


BIN
frontend/saas-portal-web/src/img/assets/微信.png


BIN
frontend/saas-portal-web/src/img/assets/微信@2x.png


BIN
frontend/saas-portal-web/src/img/assets/微信@3x.png


BIN
frontend/saas-portal-web/src/img/assets/手机号.png


BIN
frontend/saas-portal-web/src/img/assets/手机号@2x.png


BIN
frontend/saas-portal-web/src/img/assets/手机号@3x.png


BIN
frontend/saas-portal-web/src/img/assets/插画人物.png


BIN
frontend/saas-portal-web/src/img/assets/插画人物@2x.png


BIN
frontend/saas-portal-web/src/img/assets/插画人物@3x.png


BIN
frontend/saas-portal-web/src/img/assets/未选中.png


BIN
frontend/saas-portal-web/src/img/assets/未选中@2x.png


BIN
frontend/saas-portal-web/src/img/assets/未选中@3x.png


BIN
frontend/saas-portal-web/src/img/assets/电子行业字段.png


BIN
frontend/saas-portal-web/src/img/assets/电子行业字段@2x.png


BIN
frontend/saas-portal-web/src/img/assets/电子行业字段@3x.png


BIN
frontend/saas-portal-web/src/img/assets/背景.png


BIN
frontend/saas-portal-web/src/img/assets/背景@2x.png


BIN
frontend/saas-portal-web/src/img/assets/背景@3x.png


BIN
frontend/saas-portal-web/src/img/assets/资.png


BIN
frontend/saas-portal-web/src/img/assets/资@2x.png


BIN
frontend/saas-portal-web/src/img/assets/资@3x.png


BIN
frontend/saas-portal-web/src/img/assets/轻.png


BIN
frontend/saas-portal-web/src/img/assets/轻@2x.png


BIN
frontend/saas-portal-web/src/img/assets/轻@3x.png


BIN
frontend/saas-portal-web/src/img/assets/返回.png


BIN
frontend/saas-portal-web/src/img/assets/返回@2x.png


BIN
frontend/saas-portal-web/src/img/assets/返回@3x.png


BIN
frontend/saas-portal-web/src/img/assets/进.png


BIN
frontend/saas-portal-web/src/img/assets/进@2x.png


BIN
frontend/saas-portal-web/src/img/assets/进@3x.png


BIN
frontend/saas-portal-web/src/img/assets/选中.png


BIN
frontend/saas-portal-web/src/img/assets/选中@2x.png


BIN
frontend/saas-portal-web/src/img/assets/选中@3x.png


BIN
frontend/saas-portal-web/src/img/assets/验证码.png


BIN
frontend/saas-portal-web/src/img/assets/验证码@2x.png


BIN
frontend/saas-portal-web/src/img/assets/验证码@3x.png


+ 0 - 0
frontend/saas-portal-web/src/img/login


BIN
frontend/saas-portal-web/src/img/logo_w.png


BIN
frontend/saas-portal-web/src/img/parallax/testimonial.jpg


BIN
frontend/saas-portal-web/src/img/qr-tech.png


BIN
frontend/saas-portal-web/src/img/qr_mall.jpg


+ 498 - 551
frontend/saas-portal-web/src/index.html

@@ -70,7 +70,8 @@
 					<!-- logo -->
 					<h1 class="navbar-brand">
 						<a href="#body">
-							<img src="img/logo.png" alt="">
+							<img class="logo-img" src="./img/assets/dalogo-白@3x.png" alt="">
+							<!-- <img src="./img/assets/logo.png" alt=""><span>企云服</span> -->
 						</a>
 					</h1>
 					<!-- /logo -->
@@ -79,525 +80,382 @@
 				<!-- main nav -->
                 <nav class="collapse navbar-collapse navbar-right" role="navigation">
                     <ul id="nav" class="nav navbar-nav menu">
-                        <li><a href="#body"><span>Home</span></a></li>
-                        <li><a href="#service"><span>Service</span></a></li>
-                        <li><a href="#portfolio"><span>portfolio</span></a></li>
-                        <li><a href="#testimonials"><span>Testimonial</span></a></li>
-                        <li><a href="#price"><span>price</span></a></li>
-                        <li><a href="#contact"><span>Contact</span></a></li>
+                        <li><a href="#body"><span>首页</span></a></li>
+                        <li><a href="#feature"><span>特色</span></a></li>
+                        <li><a href="#service"><span>功能</span></a></li>
+                        <li><a href="#prototype"><span>帮助中心</span></a></li>
+                        <li><a href="#footer"><span>联系我们</span></a></li>
+						</li>
+						<li class="login">
+							<span class="btn1"><img src="./img/assets/导航-登录@3x.png" alt="">登录  &nbsp;</span>
+							<span class="register"><img src="./img/assets/导航-注册@3x.png" alt="">注册</span>
+						</li>
                     </ul>
                 </nav>
 				<!-- /main nav -->
-				
-            </div>
+
         </header>
-        <!--
-        End Fixed Navigation
-        ==================================== -->
+<!--End Fixed Navigation==================================== -->
 		
 		<main class="site-content" role="main">
-		
-        <!--
-        Home Slider
-        ==================================== -->
-		
-		<section id="home-slider">
-            <div id="slider" class="sl-slider-wrapper">
-
-				<div class="sl-slider">
-				
-					<div class="sl-slide" data-orientation="horizontal" data-slice1-rotation="-25" data-slice2-rotation="-25" data-slice1-scale="2" data-slice2-scale="2">
-						<div class="mask-overly"></div>
-						<div class="bg-img slider-1"></div>
-
-						<div class="slide-caption">
-                            <div class="caption-content">
-                                <h2 class="animated fadeInDown">
-                                	Amazing Business Template For Your Business
-                                </h2>
-                                <p class="animated fadeInDown">Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</p>
-                                <a href="#" class="btn btn-blue btn-effect">Join US</a>
-                            </div>
-                        </div>
-						
-					</div>
-					
-					<div class="sl-slide" data-orientation="vertical" data-slice1-rotation="10" data-slice2-rotation="-15" data-slice1-scale="1.5" data-slice2-scale="1.5">
-						<div class="mask-overly"></div>
-						<div class="bg-img slider-2"></div>
-						<div class="slide-caption">
-                            <div class="caption-content">
-                                <h2 class="animated fadeInDown">Amazing Business Template For Your Business</h2>
-                                <p class="animated fadeInDown">Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</p>
-                                <a href="#" class="btn btn-blue btn-effect">Join US</a>
-                            </div>
-                        </div>
-						
-					</div>
-					
-					<div class="sl-slide" data-orientation="horizontal" data-slice1-rotation="3" data-slice2-rotation="3" data-slice1-scale="2" data-slice2-scale="1">
-						<div class="mask-overly"></div>
-						<div class="bg-img slider-3"></div>
-						<div class="slide-caption">
-                            <div class="caption-content">
-                                <h2 class="animated fadeInDown">Amazing Business Template For Your Business</h2>
-                                <p class="animated fadeInDown">
-                                	Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
-                                </p>
-                                <a href="#" class="btn btn-blue btn-effect">Join US</a>
-                            </div>
-                        </div>
-
-					</div>
-
-				</div><!-- /sl-slider -->
-                
-                <nav id="nav-arrows" class="nav-arrows hidden-xs hidden-sm visible-md visible-lg">
-                    <a href="javascript:;" class="sl-prev">
-                        <i class="ion-ios-arrow-back"></i>
-                    </a>
-                    <a href="javascript:;" class="sl-next">
-                        <i class="ion-ios-arrow-forward"></i>
-                    </a>
-                </nav>
-                
-
-				<nav id="nav-dots" class="nav-dots visible-xs visible-sm hidden-md hidden-lg">
-					<span class="nav-dot-current"></span>
-					<span></span>
-					<span></span>
-				</nav>
-
-			</div><!-- /slider-wrapper -->
-		</section>
-		
-        <!--
-        End Home SliderEnd
-        ==================================== -->
-			
-
-			<section id="feature">
-				<div class="container">
-					<div class="row">
-						<div class="section-title text-center">
-							<h2>Best Features</h2>
-							<p >Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br> Accusantium repellendus, ut saepe, consequatur dolor eum!.</p>
+			<!-- 遮罩 -->
+			<div class="zhezhao"></div>
+			<!-- 注册 -->
+			<div id="box-zc" class="box-zc">
+				<div class="tc-login" id="zhuce">
+					<div class="tc-out"><img class="tc-on" src="./img/assets/叉号.png" alt=""></div>
+					<div><img class="tc-logoimg" src="./img/assets/dalogo@3x.png" alt=""></div>
+					<!-- <div class="tc-logo"><img class="tc-logoimg" src="./img/assets/logo-蓝@3x.png" alt="">企云服</div> -->
+					<div class="tc-title"><hr class="tc-hrleft"/>注册<hr class="tc-hrright"/></div>
+					<form action="#" method="post">
+						<div class="tc-phone">
+							<div class="tc-phonebox">
+								<span><img src="./img/assets/手机号.png"></span>
+								<input type="text" class="tc-phonecon" placeholder="请输入您的手机号" name="phone" id="phone">
+							</div>
 						</div>
-						<div class="col-md-4">
-							<h4>The Perfect Spot</h4>
-							<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cum quia praesentium culpa a! Est fuga, blanditiis rem culpa sed unde.</p>
-							<ul class="list-nav">
-								<li><i class="ion-ios-checkmark-empty"></i>Norman Copenhagen focuses on challenging</li>
-								<li><i class="ion-ios-checkmark-empty"></i>The challenge was melting</li>
-								<li><i class="ion-ios-checkmark-empty"></i>We thought air purifier</li>
-								<li><i class="ion-ios-checkmark-empty"></i>Front face is coated with fabric for a familia</li>
-								<li><i class="ion-ios-checkmark-empty"></i>Developing Belyse, I thought the strong characters</li>
-							</ul>
+						<div class="tc-over">
+							<div class="tc-phone left" style="margin: 0 0 16px 0;">
+								<div class="tc-phonebox">
+									<input type="text" class="tc-yanzhengma tc-shibiema" name="" id="">
+								</div>
+							</div>
+							<div class="left"><img class="tc-yanzhengimg" src="./img/assets/timg (1).jpg" alt=""></div>
+							<div class="right" style="line-height: 40px;"><img src="./img/assets/刷新.png" alt=""></div>
 						</div>
-						<div class="col-md-8">
-							<img  class="img-responsive" src="img/features.jpg" alt="">
+						<div style="width: 100%;">
+							<div class="tc-phone left" style="margin: 0 0 16px 0;">
+								<div class="tc-phonebox">
+										<span><img src="./img/assets/验证码.png"></span>
+										<input type="text" class="tc-yanzhengma" placeholder="请输入验证码" name="" id="">
+								</div>
+							</div>
+							<button class="tc-huoqu right">获取验证码</button>
 						</div>
-					</div>
-				</div>
-			</section>
-
-
-			<section id="prototype">
-				<div class="container">
-					<div class="row">
-						<div class="section-title text-center">
-							<h2>What Do You Wanna Know</h2>
-							<p >Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br> Accusantium repellendus, ut saepe, consequatur dolor eum!.</p>
+						<div class="xieyi">
+							<input class="checked" type="checkbox" checked name="xieyi"/> 
+							<span>
+								我已阅读并同意
+								<a href="https://sso.ubtob.com/common/agreement">《优软云服务条款》</a>
+							</span>
 						</div>
-						<div class="col-md-8 col-md-offset-2 text-center">
-							<div class="block">
-								<img src="img/prototype.jpg" alt="" class="">
-								<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate magni, delectus nam qui deserunt perspiciatis, voluptates ratione. Atque voluptate qui dolor veniam voluptatibus, itaque odit, ullam ipsam exercitationem et ex.</p>
-								<a href="#" class="btn btn-blue btn-effect">Learn More</a>
-								
-							</div>
+						<div>
+							<button class="tc-login-pwd form-btn" id="login-pwd">登录</button>
 						</div>
+					</form>
+					<div>
+						<span class="form-buttom">已有账号,去<a href="#" class="go-login">登录</a></span>
 					</div>
 				</div>
-			</section>
-
-			
-			
-			<!-- Service section -->
-			<section id="service">
-				<div class="container">
-					<div class="row">
-					
-						<div class="section-title text-center">
-							<h2>Service</h2>
-							<p >Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br> Accusantium repellendus, ut saepe, consequatur dolor eum!.</p>
-						</div>
-						
-						<div class="col-md-3 col-sm-6 col-xs-12 text-center">
-							<div class="service-item">
-								<div class="service-icon">
-									<i class="ion-laptop"></i>
-								</div>
-								<h3>Fully Responsive</h3>
-								<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p>
+			</div>
+			<!-- 登录窗 -->
+			<div id="box" class="box">
+		<!-- 账号登录 -->
+				<div class="tc-login" id="zhanghao">
+					<div class="tc-out"><img class="tc-on" src="./img/assets/叉号.png" alt=""></div>
+					<div><img class="tc-logoimg" src="./img/assets/dalogo@3x.png" alt=""></div>
+					<!-- <div class="tc-logo"><img class="tc-logoimg" src="./img/assets/logo-蓝@3x.png" alt="">企云服</div> -->
+					<div class="tc-title"><hr class="tc-hrleft"/>账号登录<hr class="tc-hrright"/></div>
+					<form action="#" method="post">
+						<div class="tc-phone">
+							<div class="tc-phonebox">
+								<span><img src="./img/assets/手机号.png"></span>
+								<input type="text" class="tc-phonecon" placeholder="手机号/优软云账号" name="phone" id="phone">
 							</div>
 						</div>
-					
-						<div class="col-md-3 col-sm-6 col-xs-12 text-center" data-wow-delay="0.3s">
-							<div class="service-item">
-								<div class="service-icon">
-									<i class="ion-ios-checkmark-outline"></i>
-								</div>
-								<h3>Well Documented</h3>
-								<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p>
+						<div class="tc-phone">
+							<div class="tc-phonebox">
+								<span><img src="./img/assets/密码.png"></span>
+								<input type="password" class="tc-phonepwd" placeholder="请输入您的密码" name="pwd" id="pwd">
 							</div>
 						</div>
-					
-						<div class="col-md-3 col-sm-6 col-xs-12 text-center ">
-							<div class="service-item">
-								<div class="service-icon">
-									<i class="ion-ios-compose-outline"></i>
-								</div>
-								<h3>Elegant Design</h3>
-								<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p>
-							</div>
+						<div>
+							<button class="tc-login-pwd" id="login-pwd">登录</button>
 						</div>
-					
-						<div class="col-md-3 col-sm-6 col-xs-12 text-center" data-wow-delay="0.9s">
-							<div class="service-item">
-								<div class="service-icon">
-									<i class="ion-ios-paperplane-outline"></i>
-								</div>
-								<h3>Bootstrap Based</h3>
-								<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p>							
-							</div>
+					</form>
+					<div class="tc-over" id="qiehuan">
+						<span id="message" class="left tc-duanxin"><a href="#">短信登录</a></span>
+						<span class="right">
+							<a href="#" class="fr tc-color" id="register">注册 | </a>
+							<a href="#" class="fr tc-color" id="example">忘记密码?</a>
+						</span>
+					</div>
+					<!-- <div class="clearfix" style="margin-top: 47px;">
+						<div class="fl" style="color:#999999;font-size: 14px;text-align: center">
+							<span>-----------------第三方登录------------------</span>
 						</div>
-
-						<div class="col-md-3 col-sm-6 col-xs-12 text-center">
-							<div class="service-item">
-								<div class="service-icon">
-									<i class="ion-laptop"></i>
-								</div>
-								<h3>Fully Responsive</h3>
-								<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p>
-							</div>
+						<div class="aui-form-content-item1" id="weixin-login">
+							<a href="#">
+								<img src="./img/assets/微信.png">
+								<p class="tc-weixin">微信登录</p>
+							</a>
 						</div>
-					
-						<div class="col-md-3 col-sm-6 col-xs-12 text-center">
-							<div class="service-item">
-								<div class="service-icon">
-									<i class="ion-ios-checkmark-outline"></i>
-								</div>
-								<h3>Well Documented</h3>
-								<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p>
+					</div> -->
+				</div>
+		<!-- 短信登录 -->
+
+				<div class="tc-login" id="duanxin" style="display:none">
+					<div class="tc-out"><img class="tc-on" src="./img/assets/叉号.png" alt=""></div>
+					<div><img class="tc-logoimg" src="./img/assets/dalogo@3x.png" alt=""></div>
+					<!-- <div class="tc-logo"><img class="tc-logoimg" src="./img/assets/logo-蓝@3x.png" alt="">企云服</div> -->
+					<div class="tc-title"><hr class="tc-hrleft"/>短信登录<hr class="tc-hrright"/></div>
+					<form action="#" method="post">
+						<div class="tc-phone">
+							<div class="tc-phonebox">
+								<span><img src="./img/assets/手机号.png"></span>
+								<input type="text" class="tc-phonecon" placeholder="请输入您的手机号" name="phone" id="phone">
 							</div>
 						</div>
-					
-						<div class="col-md-3 col-sm-6 col-xs-12 text-center">
-							<div class="service-item">
-								<div class="service-icon">
-									<i class="ion-ios-compose-outline"></i>
+						<div style="width: 100%;">
+							<div class="tc-phone left" style="margin: 0 0 16px 0;">
+								<div class="tc-phonebox">
+										<span><img src="./img/assets/验证码.png"></span>
+										<input type="text" class="tc-yanzhengma" placeholder="请输入验证码" name="" id="">
 								</div>
-								<h3>Elegant Design</h3>
-								<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p>
 							</div>
+							<button class="tc-huoqu right">获取验证码</button>
 						</div>
-					
-						<div class="col-md-3 col-sm-6 col-xs-12 text-center">
-							<div class="service-item">
-								<div class="service-icon">
-									<i class="ion-ios-paperplane-outline"></i>
-								</div>
-								<h3>Bootstrap Based</h3>
-								<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p>							
-							</div>
+						<div>
+							<button class="tc-login-pwd" id="login-pwd">登录</button>
 						</div>
-						
+					</form>
+					<div class="tc-over" id="qiehuan">
+						<span id="user-phone" class="left tc-duanxin"><a href="#">密码登录</a></span>
+						<span class="right">
+							<a href="#" class="fr tc-color dx-zc">注册</a>
+						</span>
 					</div>
+					<!-- <div class="clearfix" style="margin-top: 47px;">
+						<div class="fl" style="color:#999999;font-size: 14px;text-align: center">
+							<span>-----------------第三方登录------------------</span>
+						</div>
+						<div class="aui-form-content-item1" id="weixin-login">
+							<a href="#">
+								<img src="./img/assets/微信.png">
+								<p class="tc-weixin">微信登录</p>
+							</a>
+						</div>
+					</div> -->
 				</div>
-			</section>
-			<!-- end Service section -->
+			</div>
+<!--Home Slider==================================== -->
 
-			<section class="video-bg">
-				<div class="overlay"></div>
-				<div class="container">
-					<div class="row">
-						<div class="col-md-offset-2 col-md-8">
-							<div class="section-title text-center white">
-								<h2>FEATURED PROJECTS</h2>
-								<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
+		<section id="home-slider">
+            <div id="slider" class="sl-slider-wrapper">
+
+				<div class="sl-slider">
+				
+					<div class="sl-slide" data-orientation="horizontal" data-slice1-rotation="-25" data-slice2-rotation="-25" data-slice1-scale="2" data-slice2-scale="2">
+						<div class="mask-overly"></div>
+						<div class="bg-img slider-1">
+							<!-- <img src="./img/assets/背景.png" alt=""> -->
+						</div>
+						<!-- 首页内容 -->
+						<div class="my-text">
+							<img class="sy-dianzi sy-mb" src="./img/assets/电子行业字段.png" alt="">
+							<div class="sy-mb">
+								<img src="./img/assets/寻.png" alt="">
+								<img class='sy-mbimg2' src="./img/assets/进.png" alt="">
 							</div>
-							<div class="modal-section text-center">
-								<a href="#" data-toggle="modal" data-target="#video-modal" class="video-popup-button">
-									<i class="ion-play"></i>
-								</a>
-								<div class="modal fade" id="video-modal" tabindex="-1" role="dialog">
-									<div class="modal-dialog modal-lg" role="document">
-										<div class="modal-content">
-											<div class="modal-header">
-												<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
-											</div>
-											<div class="modal-body">
-												<div class="embed-responsive embed-responsive-16by9">
-													<!--
-												  	<iframe class="embed-responsive-item" src="https://www.youtube.com/embed/u7mhxWKZovc"></iframe>
-													-->
-												</div>
-											</div>
-										</div>
-									</div>
-								</div>
+							<div class="sy-mb">
+								<img src="./img/assets/任.png" alt="">
+								<img src="./img/assets/资.png" alt="">
+							</div>
+							<div class="sy-mb">
+								<img src="./img/assets/Group.png" alt="">
+								<img src="./img/assets/轻.png" alt="">
 							</div>
-							<p>Curabitur nec scelerisque nulla, non pharetra sapien. Praesent ac odio dolor. Pellentesque commodo erat justo, ac facilisis arcu fringilla finibus.</p>
+							<button class='my-tiyan'>立即体验</button> 
 						</div>
+						<div class="sy-img"><img class="chrw" src="./img/assets/插画人物.png" alt=""></div>
+						<div class="slide-caption">
+                        	<div class="caption-content"></div>
+                    	</div>
 					</div>
 				</div>
-			</section>
+			</div>
+		</section>
+		
+    <!-- End Home SliderEnd==================================== -->
 			
-			<!-- portfolio section -->
-			<section id="portfolio">
+			<!-- 特色 -->
+			<section id="feature">
 				<div class="container">
-					<div class="section-title text-center">
-						<h2>FEATURED PROJECTS</h2>
-						<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
-					</div>
-					<ul class="portfolio-filter text-center">
-						<li><a href="#" data-filter="*" class="active">All</a></li>
-						<li><a href="#" data-filter=".photoshop">Photoshop</a></li>
-						<li><a href="#" data-filter=".responsive">Responsive</a></li>
-						<li><a href="#" data-filter=".wordpress">WordPress</a></li>
-						<li><a href="#" data-filter=".illustrator">Illustrator</a></li>
-					</ul>
-					<div class="row project-wrapper">
-						<div class="col-sm-6 col-md-4 photoshop">
-							<div class="portfolio-item">
-								<img src="img/portfolio/item-1.jpg" class="img-responsive" alt="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat">
-								<figcaption class="mask">
-									<h3>Wall street</h3>
-									<p>Responsive</p>
-								</figcaption>
-								<ul class="external">
-									<li><a class="fancybox" title="Araund The world" data-fancybox-group="works" href="img/portfolio/item.jpg"><i class="ion-ios-search"></i></a></li>
-									<li><a href=""><i class="ion-link"></i></a></li>
-								</ul>
-							</div>
+					<div class="row">
+						<div class="section-title text-center">
+							<h2>特色</h2>
+							<p>云端连接 简单易用</p>
 						</div>
-							
-						<div class="col-sm-6 col-md-4 responsive">
-							<div class="portfolio-item">
-								<img src="img/portfolio/item-2.jpg" class="img-responsive" alt="Lorem Ipsum is simply dummy text of the printing and typesetting ndustry. ">
-								<figcaption class="mask">
-									<h3>Wall street</h3>
-									<p>Responsive</p>
-								</figcaption>
-								<ul class="external">
-									<li><a class="fancybox" title="Wall street" href="img/portfolio/item-2.jpg" data-fancybox-group="works" ><i class="ion-ios-search"></i></a></li>
-									<li><a href=""><i class="ion-link"></i></a></li>
-								</ul>
+						<div class="ts-box">
+							<div class="left col-md-8">
+								<img  class="ts-img" src="img/features.jpg" alt="">
 							</div>
-						</div>
-
-						<div class="col-sm-6 col-md-4 wordpress">
-							<div class="portfolio-item">
-								<img src="img/portfolio/item-3.jpg" class="img-responsive" alt="Lorem Ipsum is simply dummy text of the printing and typesetting ndustry. ">
-								<figcaption class="mask">
-									<h3>Wall street</h3>
-									<p>Responsive</p>
-								</figcaption>
-								<ul class="external">
-									<li><a class="fancybox" title="Behind The world" data-fancybox-group="works" href="img/portfolio/item-3.jpg"><i class="ion-ios-search"></i></a></li>
-									<li><a href=""><i class="ion-link"></i></a></li>
-								</ul>
+							<div class="right right-text col-md-4">
+								<p>迅速找到您想要的</p>
+								<p>寻找供应商资源</p>
+								<p>寻找产品资料 货源</p>
 							</div>
 						</div>
-
-						<div class="col-sm-6 col-md-4 illustrator">
-							<div class="portfolio-item">
-								<img src="img/portfolio/item-4.jpg" class="img-responsive" alt="Lorem Ipsum is simply dummy text of the printing and typesetting ndustry.">
-								<figcaption class="mask">
-									<h3>Wall street</h3>
-									<p>Responsive</p>
-								</figcaption>
-								<ul class="external">
-									<li><a class="fancybox" title="Wall street 4" data-fancybox-group="works" href="img/portfolio/item-4.jpg"><i class="ion-ios-search"></i></a></li>
-									<li><a href=""><i class="ion-link"></i></a></li>
-								</ul>
+						<div class="ts-box">
+							<div class="left left-text col-md-4">
+								<p>直观看到您想看的</p>
+								<p>月度销售额 采购额</p>
+								<p>经营指标实时看</p>
 							</div>
-						</div>
-
-						<div class="col-sm-6 col-md-4 photoshop">
-							<div class="portfolio-item">
-								<img src="img/portfolio/item-5.jpg" class="img-responsive" alt="Lorem Ipsum is simply dummy text of the printing and typesetting ndustry. ">
-								<figcaption class="mask">
-									<h3>Wall street</h3>
-									<p>Responsive</p>
-								</figcaption>
-								<ul class="external">
-									<li><a class="fancybox" title="Wall street 5" data-fancybox-group="works" href="img/portfolio/item-5.jpg"><i class="ion-ios-search"></i></a></li>
-									<li><a href=""><i class="ion-link"></i></a></li>
-								</ul>
+							<div class="right">
+								<img  class="ts-img" src="img/features.jpg" alt="">
 							</div>
 						</div>
-
-						<div class="col-sm-6 col-md-4 illustrator">
-							<div class="portfolio-item">
-								<img src="img/portfolio/item-6.jpg" class="img-responsive" alt="Lorem Ipsum is simply dummy text of the printing and typesetting ndustry. ">
-								<figcaption class="mask">
-									<h3>Wall street</h3>
-									<p>Responsive</p>
-								</figcaption>
-								<ul class="external">
-									<li><a class="fancybox" title="Wall street 6" data-fancybox-group="works" href="img/portfolio/item-6.jpg"><i class="ion-ios-search"></i></a></li>
-									<li><a href=""><i class="ion-link"></i></a></li>
-								</ul>
+						<div class="ts-box">
+							<div class="left col-md-8">
+								<img  class="ts-img" src="img/features.jpg" alt="">
+							</div>
+							<div class="right right-text col-md-4">
+								<p>快速上手 生意简单做</p>
+								<p>移动端的体验</p>
+								<p>简单的业务线 让您三分钟上手</p>
 							</div>
 						</div>
 					</div>
 				</div>
 			</section>
-			<!-- end portfolio section -->
-			
-			<!-- Testimonial section -->
-			<section id="testimonials" class="parallax">
+
+			<!-- Service section 功能-->
+			<section id="service">
 				<div class="container">
-						<div class="row">
-						
-							<div class="section-title text-center white ">
-								<h2>What people say</h2>
+					<div class="row">
+						<div class="section-title text-center">
+							<h2>功能</h2>
+						</div>
+						<div class="gn-hei">
+							<div class="col-md-3 col-sm-6 col-xs-12">
+								<div class="service-item">
+									<div>
+										<img class="gn-img" src="img/features.jpg" alt="">
+									</div>
+									<p>任务分配,高效工作,管好每一件事</p>
+								</div>
+							</div>
+							<div class="col-md-3 col-sm-6 col-xs-12">
+								<div class="service-item">
+									<div>
+										<img class="gn-img" src="img/features.jpg" alt="">
+									</div>
+									<p>一键查询,海量供应商产品信息,节约时间</p>
+								</div>
+							</div>
+							<div class="col-md-3 col-sm-6 col-xs-12">
+								<div class="service-item">
+									<div>
+										<img class="gn-img" src="img/features.jpg" alt="">
+									</div>
+									<p>快速制单,利润实时算</p>
+								</div>
 							</div>
-							
-							<div id="testimonial" class="">
-								<div class="testimonial-item text-center">
-									<img src="img/member-1.jpg" alt="Our Clients">
-									<div class="clearfix">
-										<span>Katty Flower</span>
-										<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
+							<div class="col-md-3 col-sm-6 col-xs-12">
+								<div class="service-item">
+									<div>
+										<img class="gn-img" src="img/features.jpg" alt="">
 									</div>
+									<p>寻源,定价,采购,一条流程</p>
 								</div>
-								<div class="testimonial-item text-center">
-									<img src="img/member-1.jpg" alt="Our Clients">
-									<div class="clearfix">
-										<span>Katty Flower</span>
-										<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
+							</div>
+							<div class="col-md-3 col-sm-6 col-xs-12">
+								<div class="service-item">
+									<div>
+										<img class="gn-img" src="img/features.jpg" alt="">
 									</div>
+									<p>库存盘点,库存账龄,呆滞分析</p>
 								</div>
-								<div class="testimonial-item text-center">
-									<img src="img/member-1.jpg" alt="Our Clients">
-									<div class="clearfix">
-										<span>Katty Flower</span>
-										<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
+							</div>
+							<div class="col-md-3 col-sm-6 col-xs-12">
+								<div class="service-item">
+									<div>
+										<img class="gn-img" src="img/features.jpg" alt="">
 									</div>
+									<p>BOM成本及时看,加工单自动出入库作业</p>
+								</div>
+							</div>
+							<div class="col-md-3 col-sm-6 col-xs-12">
+								<div class="service-item">
+									<div>
+										<img class="gn-img" src="img/features.jpg" alt="">
+									</div>
+									<p>清晰核算,实时查看供应商和客户账款情况</p>
+								</div>
+							</div>
+							<div class="col-md-3 col-sm-6 col-xs-12">
+								<div class="service-item">
+									<div>
+										<img class="gn-img" src="img/features.jpg" alt="">
+									</div>
+									<p>直观数据看板,看库存分析,收款分析,付款分析</p>
 								</div>
 							</div>
-						
 						</div>
+					</div>
 				</div>
 			</section>
-			<!-- end Testimonial section -->
-			
-			<!-- Price section -->
-			<section id="price">
+			<!-- end Service section -->
+
+			<!-- 帮助中心 -->
+			<section id="prototype">
 				<div class="container">
 					<div class="row">
 						<div class="section-title text-center">
-							<h2>Price</h2>
-							<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. <br> Vel aspernatur vitae consectetur error quas consequatur inventore iste quod, possimus qui.</p>
+							<h2>帮助中心</h2>
 						</div>
-						
-						<div class="col-sm-4 wow animated fadeInUp">
-							<div class="price-table text-center">
-								<span>Silver</span>
-								<div class="value">
-									<span>$</span>
-									<span>24,35</span><br>
-									<span>month</span>
-								</div>
-								<ul>
-									<li>24/7 Tech Suport</li>
-									<li>Unlimite Uploads</li>
-									<li>Unlimited Email Accounts</li>
-									<li>Cloud Storage</li>
-									<li><a href="#">sign up</a></li>
-								</ul>
-							</div>
+						<div class="bz-box">
+							<select style="margin-top: -1px;height:30px;width: 10%">
+								<option value ="volvo">操作文档</option>
+								<option value ="saab">常见问题</option>
+							</select>
+							<input class="bz-sousuo" type="text" placeholder="输入标题搜索"/>
+							<button style="width:10%">搜索</button>
 						</div>
-						
-						<div class="col-sm-4 wow animated fadeInUp" data-wow-delay="0.4s">
-							<div class="price-table featured text-center">
-								<span>Gold</span>
-								<div class="value">
-									<span>$</span>
-									<span>50,00</span><br>
-									<span>month</span>
-								</div>
-								<ul>
-									<li>24/7 Tech Suport</li>
-									<li>Unlimite Uploads</li>
-									<li>Unlimited Email Accounts</li>
-									<li>Cloud Storage</li>
-									<li><a href="#">sign up</a></li>
-								</ul>
+						<div class="bz-box bz-content">
+							<div class="left bz-left">
+								<button class="actvin">操作文档</button>
+								<button>常见问题</button>
 							</div>
-						</div>
-						
-						<div class="col-sm-4 wow animated fadeInUp" data-wow-delay="0.8s">
-							<div class="price-table text-center">
-								<span>Diamond</span>
-								<div class="value">
-									<span>$</span>
-									<span>123,12</span><br>
-									<span>month</span>
+							<div class="right bz-right">
+								<div class="bz-right-conent">
+									<div>
+										<ul>
+											<li>XXXXXXXXXXXXXXX操作文档</li>
+											<li>XXXXXXXXXXXXXXX操作文档</li>
+											<li>XXXXXXXXXXXXXXX操作文档</li>
+											<li>XXXXXXXXXXXXXXX操作文档</li>
+											<li>XXXXXXXXXXXXXXX操作文档</li>
+											<li>XXXXXXXXXXXXXXX操作文档</li>
+										</ul>
+									</div>
+									<div>
+										<ul>
+											<li>XXXXXXXXXXXXXXX常见问题</li>
+											<li>XXXXXXXXXXXXXXX常见问题</li>
+											<li>XXXXXXXXXXXXXXX常见问题</li>
+											<li>XXXXXXXXXXXXXXX常见问题</li>
+											<li>XXXXXXXXXXXXXXX常见问题</li>
+											<li>XXXXXXXXXXXXXXX常见问题</li>
+										</ul>
+									</div>
 								</div>
-								<ul>
-									<li>24/7 Tech Suport</li>
-									<li>Unlimite Uploads</li>
-									<li>Unlimited Email Accounts</li>
-									<li>Cloud Storage</li>
-									<li><a href="#">sign up</a></li>
-								</ul>
 							</div>
 						</div>
-		
 					</div>
 				</div>
 			</section>
-			<!-- end Price section -->
 			
-			<!-- Social section -->
-			<section id="social" class="parallax">
-				<div class="overlay">
-					<div class="container">
-						<div class="row">
-						
-							<div class="section-title white text-center white ">
-								<h2>FOLLOW US</h2>
-								<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus, <br> sapiente. Libero ipsam, dolore quibusdam magni.</p>
-							</div>
-							
-							<ul class="social-button">
-								<li class="wow animated zoomIn"><a href="http://www.fb.com/themefisher"><i class="ion-social-facebook"></i></a></li>
-								<li class="wow animated zoomIn" data-wow-delay="0.3s"><a href="#"><i class="ion-social-twitter"></i></a></li>
-								<li class="wow animated zoomIn" data-wow-delay="0.6s"><a href="#"><i class="ion-social-dribbble"></i></a></li>
-								<li class="wow animated zoomIn" data-wow-delay="0.9s"><a href="#"><i class="ion-social-linkedin"></i></a></li>							
-							</ul>
-							
-						</div>
-					</div>
-				</div>
-			</section>
-			<!-- end Social section -->
 			
 			<!-- Contact section -->
-			<section id="contact" >
+			<!-- <section id="contact" >
 				<div class="container">
 					<div class="row">
-						
 						<div class="section-title text-center">
 							<h2>Contact</h2>
 							<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus, <br> sapiente. Libero ipsam, dolore quibusdam magni.</p>
 						</div>
-						
-						
 						<div class="col-md-7 contact-form">
 							<form id="contact-form" action="#" method="post">
 								<div class="input-field">
@@ -615,7 +473,6 @@
 						       	<button type="submit" id="submit" class="btn btn-blue btn-effect">Send</button>
 							</form>
 						</div>
-						
 						<div class="col-md-5">
 							<address class="contact-details">
 								<h3>Our Address</h3>						
@@ -624,70 +481,82 @@
 								<p><i class="ion-ios-email-outline"></i>website@yourname.com</p>
 							</address>
 						</div>
-			
 					</div>
 				</div>
-			</section>
+			</section> -->
 			<!-- end Contact section -->
-			<!--
-			<section id="google-map">
-				<div id="map-canvas" class="wow animated fadeInUp"></div>
-			</section>
-			-->
 		</main>
-		
-		<footer id="footer">
+
+	<!-- 底部 ------------------------------------------------>
+		<!--footer begin-->
+		<div class="footer footer-section">
 			<div class="container">
-				<div class="row">
-					<div class="col-md-4">
-						<h4>
-							<a href="">
-								<img src="img/logo.png" alt="">
-							</a>
-						</h4>
-						<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Molestias ullam numquam repudiandae repellat ex autem voluptas vel esse quo excepturi!</p>
-						<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rem, repellendus.</p>
+				<div class="footer-list">
+					<div class="about">
+						<div class="logo"><img src="./img/logo_w.png" alt=""/></div>
+						<div class="time">客服热线:400-830-1818</div>
+						<div class="time">工作时间:周一至周五08:30~18:00</div>
+						<!--<div class="time">意见反馈:usoftmall.com</div>-->
 					</div>
-					<div class="col-md-4">
-						<h4>Company</h4>
+					<div class="link">
+						<ul>
+							<li><span>帐号中心</span></li>
+							<li><a href="http://uas.ubtob.com/serve#/self/find_account">找回帐号密码</a></li>
+							<li><a href="http://uas.ubtob.com/serve#/self/account_excetion">帐号无法登录</a></li>
+							<li><a href="http://uas.ubtob.com/serve#/self/modify_pwd/4.1">修改密码</a></li>
+						</ul>
+						<ul>
+							<li><span>帮助中心</span></li>
+							<li><a href="#">操作视频</a></li>
+							<li><a href="#">操作文档</a></li>
+							<li><a href="#">常见问题</a></li>
+						</ul>
+						<!-- <ul>
+							<li><span>闯客网</span></li>
+							<li><a href="https://www.uuzcc.com/article/detail/13260.html">需求发布流程</a></li>
+							<li><a href="https://www.uuzcc.com/article/detail/13457.html">认证流程</a></li>
+							<li><a href="https://www.uuzcc.com/article/detail/13456.html">服务商规则</a></li>
+						</ul> -->
 						<ul>
-							<li><a href="#">About Us</a></li>
-							<li><a href="#">Press</a></li>
-							<li><a href="#">Jobs</a></li>
-							<li><a href="#">Terms And Condition</a></li>
+							<li><span>关于我们</span></li>
+							<li><a class="no-link">优软云介绍</a></li>
+							<li><a class="no-link">发展历程</a></li>
+							<li><a href="https://www.usoftchina.com/contact">联系我们</a></li>
 						</ul>
 					</div>
-					<div class="col-md-4">
-						<h4>newsletter signup</h4>
-							<p>You will be among the first to know about hot new software and great deals on stuff to enhance and promote</p>
-						<form action="#" method="post" class="subscribe-form wow animated fadeInUp">
-							<div class="input-field">
-								<input type="email" class="subscribe form-control" placeholder="Enter Your Email...">
-								<button type="submit" class="submit-icon">
-									<i class="ion-ios-email"></i>
-								</button>
+					<div class="qr">
+						<div class="qr-top">
+							<div class="qr-tech qr-code">
+								<img src="./img/qr-tech.png" alt="">
+								科技公众号
 							</div>
-						</form>
+							<div class="qr-mall qr-code">
+								<img src="./img/qr_mall.jpg" alt="">
+								商城公众号
+							</div>
+						</div>
+						<div class="qr-bottom">
+							粤ICP备15112126号
+							<br/>2018 © 深圳市优软科技有限公司
+						</div>
 					</div>
 				</div>
-			</div>
-		</footer>
-		<section id="footer-bottom">
-			<div class="container">
-				<div class="row">
-					<div class="col-md-6">
-						<p>
-							COPYRIGHT © 2016 , BLUE PRO | DIGITAL AGENCY
-						</p>
-					</div>
-					<div class="col-md-6 text-right">
-						<p>
-							Design and Developed By <a href="#">Themefisher</a>
-						</p>
-					</div>
+				<div class="friend-link">
+					<ul style="margin-left: -40px;">
+						<li><span>友情链接:</span></li>
+						<li><a href="http://www.worldshine.net">深圳华商龙</a></li>
+						<li><a href="http://www.yitoa.com">深圳市英唐智能科技</a></li>
+						<li><a href="http://uas.usoftchina.com">深圳市优软科技</a></li>
+						<li><a href="http://www.51cube.com">酷比魔方</a></li>
+						<li><a href="http://www.szsoling.com/home">SOLING索菱</a></li>
+						<li><a href="http://www.huashangweitai.com">深圳市华商维泰显示科技</a></li>
+						<li><a href="http://www.szmadigi.com">迈迪杰科技</a></li>
+						<li><a href="http://www.hi-mantech.com">怡海能达</a></li>
+					</ul>
 				</div>
 			</div>
-		</section>
+		</div>
+		<!--footer end-->
 		
 		<!-- Essential jQuery Plugins
 		================================================== -->
@@ -711,72 +580,150 @@
         <script src="js/jquery.ba-cond.min.js"></script>
 		<!-- onscroll animation -->
         <script src="js/wow.min.js"></script>
-		<!-- Custom Functions -->
+		<!-- Custom Functions jq表单提交插件-->
         <script src="js/jquery.form.min.js"></script>
         <script src="js/jquery.validate.min.js"></script>
         <script src="js/main.js"></script>
         <script>
         	$(function() {
-    			$("#contact-form").validate({
-    				rules: {
-    					name: {
-    						required: true,
-    						minlength: 2
-    					},
-    		            email: {
-    		                required: true,
-    		                email: true
-    		            },
-    					subject: {
-    						required: true,
-    		                minlength: 2
-    					},
-    					message: {
-    						required: true,
-    		                minlength: 2
-    					}
-    				},
-    				messages: {
-    					name: {
-    						required: "come on, you have a name don't you?",
-    						minlength: "your name must consist of at least 2 characters"
-    					},
-    		            email: {
-    		                required: "no email, no support"
-    		            },
-    					subject: {
-    						required: "you have a reason to contact, write it here",
-    		                minlength: "thats all? really?"
-    					},
-    					message: {
-    						required: "um...yea, you have to write something to send this form.",
-    						minlength: "thats all? really?"
-    					}
-    				},
-    				submitHandler: function(form) {
-    					$(form).ajaxSubmit({
-    						type:"POST",
-    						data: $(form).serialize(),
-    						url:"mail.php",
-    						success: function() {
-    							$(".contact-form").fadeTo( "slow", 1, function() {
-    		                        $(".contact-form").resetForm();
-    								$(".success").slideDown("slow");
-    							});
-    						},
-    						error: function() {
-    							$(".contact-form").fadeTo( "slow", 1, function() {
-    								$(".error").slideDown("slow");
-    							});
-    						}
-    					});
-    				},
-    		        errorPlacement: function(error, element) {
-    		            element.after(error);
-    		            error.hide().slideDown();
-    		        }
-    			});
-        	});
+				// $.validator.addMethod("isMobile", function(value, element) {       
+				// 	var length = value.length;   
+				// 	var mobile = /^[1][3,4,5,7,8][0-9]{9}$/;   
+				// 	return this.optional(element) || (length == 11 && mobile.test(value));       
+				// }, "请正确填写您的手机号码");
+    			// $("#contact-form").validate({//自定义验证规则
+    			// 	rules: {
+    			// 		name: {
+				// 			required: true,
+				// 			isMobile:true
+    			// 			// minlength: 8
+				// 		},
+				// 		// realName: "required",
+    		    //         email: {
+    		    //             required: true,
+    		    //             email: true
+    		    //         },
+    			// 		subject: {
+    			// 			required: true,
+    		    //             minlength: 2
+    			// 		},
+    			// 		message: {
+    			// 			required: true,
+    		    //             minlength: 2
+    			// 		}
+    			// 	},
+				// 	messages: {//提示文字
+				// 		name: {
+				// 			required: "姓名不能为空",
+				// 			// telephone: '请填写正确的手机号'
+				// 		},
+    			// 		// name: {
+    			// 		// 	required: "姓名不能为空",
+    			// 		// 	minlength: "至少输入8位字母和数字"
+    			// 		// },
+    		    //         email: {
+    		    //             required: "no email, no support"
+    		    //         },
+    			// 		subject: {
+    			// 			required: "you have a reason to contact, write it here",
+    		    //             minlength: "thats all? really?"
+    			// 		},
+    			// 		message: {
+    			// 			required: "um...yea, you have to write something to send this form.",
+    			// 			minlength: "thats all? really?"
+    			// 		}
+    			// 	},
+    			// 	submitHandler: function(form) {
+    			// 		$(form).ajaxSubmit({//jq表单提交
+    			// 			type:"POST",
+    			// 			data: $(form).serialize(),//获取form中的所有数据
+    			// 			url:"mail.php",
+    			// 			success: function() {
+    			// 				$(".contact-form").fadeTo( "slow", 1, function() {
+    		    //                     $(".contact-form").resetForm();//清空form
+    			// 					$(".success").slideDown("slow");//滑动方式显示隐藏元素
+    			// 				});
+    			// 			},
+    			// 			error: function() {
+    			// 				$(".contact-form").fadeTo( "slow", 1, function() {
+    			// 					$(".error").slideDown("slow");
+    			// 				});
+    			// 			}
+    			// 		});
+    			// 	},
+    		    //     errorPlacement: function(error, element) {
+    		    //         element.after(error);
+    		    //         error.hide().slideDown();
+    		    //     }
+    			// });
+			});
+			// 关闭弹窗X
+			$(".tc-on").click(function(){
+				$('#box-zc').css('display','none');
+				$('#box').css('display','none');
+				$(".zhezhao").css("display","none")
+			})
+			// 登录弹出
+            $(".btn1").click(function(){
+				if($('#box').css('display') =="none") {
+					$('#box').show();
+					$('#box-zc').css('display','none');
+					$(".zhezhao").css("display","block")
+				}else {
+					$('#box').hide();
+					$(".zhezhao").css("display","none")
+				}
+            });
+            /*点击短信登录*/
+            $("#message").click(function(){
+				$("#zhanghao").css("display","none")
+				$("#duanxin").css("display","block")
+			})
+			// 点击账号登录
+            $("#user-phone").click(function(){
+				$("#zhanghao").css("display","block")
+				$("#duanxin").css("display","none")
+
+            })
+
+			// 注册弹出
+			$('.register').click(function(){
+				if($('#box-zc').css('display') =="none") {
+					$('#box-zc').show();
+					$('#box').css('display','none');
+					$(".zhezhao").css("display","block")
+				}else {
+					$('#box-zc').hide();
+					$(".zhezhao").css("display","none")
+				}
+			})
+			$('#register').click(function(){
+				$("#box").css('display','none');
+				$('#box-zc').css('display','block');
+			})
+			$('.dx-zc').click(function(){
+				$("#box").css('display','none');
+				$('#box-zc').css('display','block');
+			})
+			// 返回登录
+			$("#go-login").click(function(){
+				$("#box").css('display','block');
+				$('#box-zc').css('display','none');
+			})
+			$(".go-login").click(function(){
+				$("#box").css('display','block');
+				$('#box-zc').css('display','none');
+			})
+
+
+			$("#callback").click(function(){
+                $("#bbb").css("display","none");
+                $("#aaa").css("display","block");
+            })
+            $("#weixin-login").click(function(){
+                $("#bbb").css("display","block");
+                $("#aaa").css("display","none");
+            })
         </script>
     </body>
 </html>

+ 71 - 3
frontend/saas-portal-web/src/js/main.js

@@ -4,8 +4,75 @@
 
 jQuery(window).load(function(){
 
-	$("#preloader").fadeOut("slow");
-
+    $("#preloader").fadeOut("slow");
+    
+    // ........................
+    // 手机验证
+    isPhone = function (phone) {
+        var myreg = /^[1][3,4,5,7,8][0-9]{9}$/;
+        if (!myreg.test(phone)) {
+            return false;
+        } else {
+            return true;
+        }
+    };
+    // 密码验证
+    isMima = function(mima){
+        let mimareg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/;
+        if (!mimareg.test(mima)) {
+            return false;
+        } else {
+            return true;
+        }
+    };
+    // $('#pwd').change(function(){
+    //     if (isMima($(this).val())) {
+    //         return
+    //     } else {
+    //         alert("密码格式不对")
+    //     }
+    // })
+    // $("#phone").change(function(){
+    //     if (isPhone($(this).val())) {
+    //         return
+    //     } else {
+    //         alert("手机号码格式不对")
+    //     }
+    // })
+    // 登录点击
+    // $("#login-pwd").click(function(){
+    //     let name = $("#phone").val();
+    //     let pwd = $("#pwd").val();
+    //     console.log('姓名是'+name+'密码是'+pwd)
+    // })
+    //注册点击
+    // $("#zc-login").click(function(){
+    //     let name = $("#zc-phone").val();
+    //     let pwd = $("#zc-password").val();
+    //     let yanzheng  = $("#zc-yanzhengma").val();
+    //     console.log('姓名是'+name+'密码是'+pwd+'验证码是'+yanzheng)
+    // })
+
+    // 注册协议按钮同意可以点击注册
+    $(".checked").click(function(){
+        if ($(".checked").get(0).checked) {
+            $(".form-btn").attr('disabled',false);
+            $(".form-btn").removeClass("back");
+        } else {
+            $(".form-btn").attr('disabled',true);
+            $(".form-btn").addClass("back");
+        }
+    })
+    
+    // 帮助中心
+    $(".bz-right-conent>div").eq(0).show()
+    let abtn = $(".bz-left").children('button').click(function(){
+        console.log($(this).text())
+        var _index = $(this).index();
+        //让内容框的第 _index 个显示出来,其他的被隐藏
+        $(".bz-right-conent>div").eq(_index).show().siblings().hide();
+        $(this).addClass("actvin").siblings().removeClass('actvin')
+    });
 });
 
 /* ========================================================================= */
@@ -132,7 +199,7 @@ $(document).ready(function(){
 	});
 	
     $(window).scroll(function () {
-        if ($(window).scrollTop() > 400) {
+        if ($(window).scrollTop() > 10) {
             $(".navbar-brand a").css("color","#fff");
             $("#navigation").removeClass("animated-header");
         } else {
@@ -296,3 +363,4 @@ var wow = new WOW ({
 	mobile:       false,       // trigger animations on mobile devices (default is true)
 });
 wow.init();
+

+ 3 - 2
frontend/saas-web/app.json

@@ -291,9 +291,10 @@
         "cache": {
             "enable": true
         },
-        "compressor": {
+        /**"compressor": {
             "type": "yui"
-        },
+        },*/
+        "compressor":null,
         "server": {
             "basePath": "http://192.168.0.181:8560",
             "urlPattern": "^\/api\/"

+ 2 - 2
frontend/saas-web/app/model/chart/DataXY.js

@@ -3,10 +3,10 @@ Ext.define('saas.model.chart.DataXY', {
 
     fields: [
         {
-            name: 'xvalue'
+            name: 'x'
         },
         {
-            name: 'yvalue'
+            name: 'y'
         }
     ]
 });

+ 4 - 0
frontend/saas-web/app/view/core/chart/ChartBase.js

@@ -1,6 +1,10 @@
 Ext.define('saas.view.core.chart.ChartBase', {
     extend: 'Ext.panel.Panel',
 
+    requires: [
+        'Ext.chart.*'
+    ],
+
     height: 300,
 
     layout: 'fit',

Некоторые файлы не были показаны из-за большого количества измененных файлов