Browse Source

代码提交

hy 7 years ago
parent
commit
ee50044794
82 changed files with 711 additions and 6184 deletions
  1. 34 6
      README.md
  2. 2 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/BillCodeSeq.java
  3. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/EndProductMapper.java
  4. 1 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/EndProductServiceImpl.java
  5. 5 4
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/ExcelServiceImpl.java
  6. 5 0
      applications/commons/commons-server/src/main/resources/mapper/EndProductMapper.xml
  7. 6 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/CustomerController.java
  8. 7 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/VendorController.java
  9. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java
  10. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustomerMapper.java
  11. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorMapper.java
  12. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/CustomerService.java
  13. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/VendorService.java
  14. 26 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  15. 69 4
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  16. 69 4
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  17. 2 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/WarehouseServiceImpl.java
  18. 8 0
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  19. 3 0
      applications/document/document-server/src/main/resources/mapper/CustomerMapper.xml
  20. 4 0
      applications/document/document-server/src/main/resources/mapper/VendorMapper.xml
  21. 1 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  22. 1 1
      applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml
  23. 2 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java
  24. 31 18
      frontend/saas-portal-web/src/components/conenter/addgongsi.vue
  25. 8 8
      frontend/saas-portal-web/src/components/conenter/company.vue
  26. 17 5
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  27. 3 22
      frontend/saas-portal-web/src/components/conenter/home.vue
  28. 33 36
      frontend/saas-portal-web/src/components/conenter/problem.vue
  29. 1 1
      frontend/saas-portal-web/src/components/conenter/qiyexiangxi.vue
  30. 25 0
      frontend/saas-portal-web/src/pages/cell/cell.html
  31. 0 0
      frontend/saas-portal-web/src/pages/cell/cell.js
  32. 15 0
      frontend/saas-portal-web/src/pages/cell/cell.vue
  33. 1 12
      frontend/saas-portal-web/src/pages/index/index.html
  34. 0 3296
      frontend/saas-portal-web/static/css/animate.css
  35. 3 3
      frontend/saas-portal-web/static/css/gongsi.css
  36. 0 274
      frontend/saas-portal-web/static/css/jquery.fancybox.css
  37. 40 920
      frontend/saas-portal-web/static/css/main.css
  38. 0 231
      frontend/saas-portal-web/static/css/owl.carousel.css
  39. 0 221
      frontend/saas-portal-web/static/css/slit-slider.css
  40. 0 12
      frontend/saas-portal-web/static/js/jquery.ba-cond.min.js
  41. 0 46
      frontend/saas-portal-web/static/js/jquery.fancybox.pack.js
  42. 0 10
      frontend/saas-portal-web/static/js/jquery.form.min.js
  43. 0 676
      frontend/saas-portal-web/static/js/jquery.slitslider.js
  44. 0 1
      frontend/saas-portal-web/static/js/jquery.validate.min.js
  45. 6 107
      frontend/saas-portal-web/static/js/mains.js
  46. 0 3
      frontend/saas-portal-web/static/js/modernizr-2.6.2.min.js
  47. 0 9
      frontend/saas-portal-web/static/js/owl.carousel.min.js
  48. 0 1
      frontend/saas-portal-web/static/js/wow.min.js
  49. 5 3
      frontend/saas-web/app/view/core/base/GridPanel.js
  50. 26 3
      frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js
  51. 25 23
      frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js
  52. 5 1
      frontend/saas-web/app/view/core/form/FormPanel.js
  53. 6 44
      frontend/saas-web/app/view/core/report/ReportPanel.js
  54. 3 0
      frontend/saas-web/app/view/document/kind/Kind.js
  55. 1 1
      frontend/saas-web/app/view/home/infoCardList/Payment.js
  56. 17 23
      frontend/saas-web/app/view/home/infoCardList/SaleOut.js
  57. 1 1
      frontend/saas-web/app/view/home/infoCardList/UnauditCheckIn.js
  58. 8 6
      frontend/saas-web/app/view/main/Navigation.scss
  59. 1 1
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  60. 1 1
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  61. 6 6
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  62. 14 4
      frontend/saas-web/app/view/money/report/PayDetail.js
  63. 22 8
      frontend/saas-web/app/view/money/report/RecDetail.js
  64. 6 6
      frontend/saas-web/app/view/money/report/VendorCheck.js
  65. 50 0
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  66. 1 1
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js
  67. 1 0
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  68. 1 1
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js
  69. 1 3
      frontend/saas-web/app/view/sale/sale/FormPanel.js
  70. 5 11
      frontend/saas-web/app/view/sale/sale/FormPanelController.js
  71. 1 1
      frontend/saas-web/app/view/sale/saleIn/FormPanel.js
  72. 13 11
      frontend/saas-web/app/view/sale/saleIn/FormPanelController.js
  73. 1 1
      frontend/saas-web/app/view/sale/saleOut/FormPanel.js
  74. 9 2
      frontend/saas-web/app/view/sale/saleOut/FormPanelController.js
  75. 1 1
      frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js
  76. 14 15
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  77. 10 8
      frontend/saas-web/app/view/stock/make/FormPanel.js
  78. 0 53
      frontend/saas-web/app/view/stock/make/FormPanelController.js
  79. 1 1
      frontend/saas-web/app/view/stock/otherIn/FormPanel.js
  80. 1 1
      frontend/saas-web/app/view/stock/otherOut/FormPanel.js
  81. 4 0
      frontend/saas-web/ext/packages/ux/src/feature/MySummary.js
  82. 8 8
      frontend/saas-web/resources/json/navigation.json

+ 34 - 6
README.md

@@ -106,13 +106,15 @@
 | 192.168.0.178 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 20G |
 | 192.168.0.179 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 20G |
 | 192.168.0.180 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 20G |
-| 192.168.0.181 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 80G |
+| 192.168.0.181 |  root  | select123*** |  CentOS7, Docker  | Cpu: 8, Mem: 16G, Disk: 80G |
 | 192.168.0.182 |  root  | select123*** |  CentOS7, Redis  | Cpu: 2, Mem: 8G, Disk: 20G |
 | 192.168.0.183 |  root  | select123*** |  CentOS7, Mongo  | Cpu: 4, Mem: 8G, Disk: 50G |
+| 192.168.0.184 |  root  | select123*** |  CentOS7, Docker  | Cpu: 8, Mem: 16G, Disk: 50G |
+| 192.168.0.185 |  root  | select123*** |  CentOS7, Docker  | Cpu: 8, Mem: 16G, Disk: 50G |
 
 > 构建
 
-* [jenkins](http://192.168.0.181:8080/job/saas) **账号** admin **密码** select123***
+* [jenkins](http://192.168.0.181:8080/job/saas/view/dev) **账号** admin **密码** select123***
 
 > 日志
 
@@ -123,11 +125,9 @@
 > 服务
 
 * [eureka http://192.168.0.181:8500](http://192.168.0.181:8500) **账号** admin **密码** select111***
-* [eureka 本地调试 http://192.168.0.181:8510](http://192.168.0.181:8510) **账号** admin **密码** select111***
 * [gateway http://192.168.0.181:8560](http://192.168.0.181:8560)
-* [gateway 本地调试 http://192.168.0.181:8570](http://192.168.0.181:8570)
-* [admin](http://192.168.0.181:8520) **账号** admin **密码** select111***
-* [zipkin](http://192.168.0.181:8540) **账号** admin **密码** select111***
+* [admin http://192.168.0.181:8520](http://192.168.0.181:8520) **账号** admin **密码** select111***
+* [zipkin http://192.168.0.181:8540](http://192.168.0.181:8540) **账号** admin **密码** select111***
 
 > 访问
 
@@ -136,6 +136,34 @@
 * [打印 https://saas-report-dev.usoftchina.com:5443](https://saas-report-dev.usoftchina.com:5443)
 * [接口 https://saas-api-dev.usoftchina.com:5443](https://saas-api-dev.usoftchina.com:5443)
 
+# 本地调试环境
+
+> 服务
+
+* [eureka http://192.168.0.181:8510](http://192.168.0.181:8510) **账号** admin **密码** select111***
+* [gateway http://192.168.0.181:8570](http://192.168.0.181:8570)
+
+
+# 测试环境
+
+> 构建
+
+* [jenkins](http://192.168.0.181:8080/job/saas/view/test) **账号** admin **密码** select123***
+
+> 服务
+
+* [eureka http://192.168.0.181:8515](http://192.168.0.181:8515) **账号** admin **密码** select111***
+* [gateway http://192.168.0.181:8575](http://192.168.0.181:8575)
+* [admin http://192.168.0.181:8535](http://192.168.0.181:8535) **账号** admin **密码** select111***
+* [zipkin http://192.168.0.181:8555](http://192.168.0.181:8555) **账号** admin **密码** select111***
+
+> 访问
+
+* [门户 https://saas-test.usoftchina.com:5443](https://saas-test.usoftchina.com:5443)
+* [系统 https://trade-test.usoftchina.com:5443](https://trade-test.usoftchina.com:5443)
+* [打印 https://saas-report-dev.usoftchina.com:5443](https://saas-report-dev.usoftchina.com:5443)
+* [接口 https://saas-api-test.usoftchina.com:5443](https://saas-api-test.usoftchina.com:5443)
+
 # 生产环境
 
 > 数据库

+ 2 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/BillCodeSeq.java

@@ -14,6 +14,8 @@ public enum  BillCodeSeq {
 
     VENDOR("供应商资料", "Vendor"),
 
+    BANKINFORMATION("资金账户资料", "Bankinformation"),
+
     WAREHOUSE("仓库资料", "Warehouse"),
 
     PURCHASE("采购订单", "Purchase"),

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/EndProductMapper.java

@@ -10,6 +10,8 @@ public interface EndProductMapper {
 
     void endProduct(Map<String, Object> map);
 
+    void endFund(Map<String, Object> map);
+
     String selectPeriod(@Param("companyId") Long companyId);
 
     String selectUnPeriod(@Param("companyId") Long companyId);

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

@@ -64,6 +64,7 @@ public class EndProductServiceImpl implements EndProductService {
         map.put("companyId", BaseContextHolder.getCompanyId());
         map.put("result", null);
         endProductMapper.endProduct(map);
+        endProductMapper.endFund(map);
         endProductMapper.updatePeriodStatus(99L, period, BaseContextHolder.getCompanyId());
         DocBaseDTO docBaseDTO = generateMsgObj(Long.parseLong(period));
         messageLogService.customizeLog(docBaseDTO, Operation.ENDPRODUCT);

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

@@ -84,10 +84,11 @@ public class ExcelServiceImpl implements ExcelService{
         di.setDi_toformal(0);
         di.setDi_success(0);
         List<Map<String,String>> datas = new ArrayList<Map<String,String>>();
-        String cols = "[{\"description\":\"物料编号\",\"necessary\":\"true\",\"position\":\"main\",\"field\":\"pr_code\",\"codefield\":true}," +
-                "{\"description\":\"物料名称\",\"necessary\":\"true\",\"position\":\"main\",\"field\":\"pr_detail\",\"codefield\":false},{\"description\":\"规格\",\"necessary\":\"true\",\"position\":\"main\",\"field\":\"pr_spec\",\"codefield\":false},{\"description\":\"类型\",\"necessary\":\"true\",\"position\":\"main\",\"field\":\"pr_kind\",\"codefield\":false},{\"description\":\"型号\",\"necessary\":\"false\",\"position\":\"main\",\"field\":\"pr_orispeccode\",\"codefield\":false}" +
-                ",{\"description\":\"品牌\",\"necessary\":\"false\",\"position\":\"main\",\"field\":\"pr_brand\",\"codefield\":false},{\"description\":\"单位\",\"necessary\":\"true\",\"position\":\"main\",\"field\":\"pr_unit\",\"codefield\":false},{\"description\":\"仓库编号\",\"necessary\":\"false\",\"position\":\"main\",\"field\":\"pr_whcode\",\"codefield\":false},{\"description\":\"仓库名称\",\"necessary\":\"false\",\"position\":\"main\",\"field\":\"pr_whname\",\"codefield\":false},{\"description\":\"最新采购单价\",\"necessary\":\"false\",\"position\":\"main\",\"field\":\"pr_purcprice\",\"codefield\":false}" +
-                ",{\"description\":\"最新出货单价\",\"necessary\":\"false\",\"position\":\"main\",\"field\":\"pr_saleprice\",\"codefield\":false},{\"description\":\"替代料仓库编号\",\"necessary\":\"true\",\"position\":\"detail\",\"field\":\"pd_whcode\",\"codefield\":false},{\"description\":\"替代料仓库名称\",\"necessary\":\"false\",\"position\":\"detail\",\"field\":\"pd_whname\",\"codefield\":false},{\"description\":\"期初数量\",\"necessary\":\"true\",\"position\":\"detail\",\"field\":\"pd_num\",\"codefield\":false},{\"description\":\"单位成本\",\"necessary\":\"true\",\"position\":\"detail\",\"field\":\"pd_price\",\"codefield\":false}]";
+        DataTemplet dataTemplet = dataTempletMapper.selectByCaller(caller, companyId);
+        String cols = dataTemplet.getDt_columns();
+        if (StringUtils.isEmpty(cols)) {
+            throw new BizException(12135, "没有查询到对应的excel配置");
+        }
         //前端列表信息
         List<TempletSet> templetSets = JSONArray.parseArray(cols, TempletSet.class);
         Map<String, List<TempletSet>> columns = CollectionUtils.groupBy(templetSets, TempletSet::getPosition);

+ 5 - 0
applications/commons/commons-server/src/main/resources/mapper/EndProductMapper.xml

@@ -28,6 +28,11 @@
     <select id="endProduct" parameterMap="spParamMap" statementType="CALLABLE">
         CALL SP_ENDPRODUCT(?, ?, ?)
     </select>
+
+    <select id="endFund" parameterMap="spParamMap" statementType="CALLABLE">
+        CALL SP_ENDFUND(?, ?, ?)
+    </select>
+
     <update id="updatePeriodStatus" >
         update periodsdetail set pd_status=#{status} where pd_detno=#{period} and companyId=#{companyId}
     </update>

+ 6 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/CustomerController.java

@@ -174,4 +174,10 @@ public class CustomerController {
         return Result.success();
     }
 
+    //导入保存至列表
+    @RequestMapping("/saveToFormal")
+    public Result saveToFormal(Integer id, boolean update) {
+        customerService.saveToFormal(id, update);
+        return Result.success();
+    }
 }

+ 7 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/VendorController.java

@@ -134,4 +134,11 @@ public class VendorController {
         return Result.success();
     }
 
+    //导入保存至列表
+    @RequestMapping("/saveToFormal")
+    public Result saveToFormal(Integer id, boolean update) {
+        vendorService.saveToFormal(id, update);
+        return Result.success();
+    }
+
 }

+ 4 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java

@@ -31,4 +31,8 @@ public interface BankinformationMapper extends CommonBaseMapper<Bankinformation>
 
     Double selectamount(Long id);
 
+    int validateCodeWhenInsert(@Param("code") String code, @Param("companyId") Long companyId);
+
+    int validateCodeWhenUpdate(@Param("code") String code, @Param("id") Long id, @Param("companyId") Long company);
+
 }

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

@@ -37,4 +37,6 @@ public interface CustomerMapper extends CommonBaseMapper<Customer> {
     int validNameAndCodeWhenRelated(Customer customer);
 
     List<ComboDTO> getCombo(@Param("id") Long id,@Param("companyId") Long companyId);
+
+    Long selectIdByCode(@Param("code") String code, @Param("companyId") Long companyId);
 }

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

@@ -31,4 +31,6 @@ public interface VendorMapper extends CommonBaseMapper<Vendor> {
     int validFinish(@Param("id") Long id,@Param("companyId") Long companyId);
 
     void check(Map<String, Object> map);
+
+    Long selectIdByCode(@Param("code") String code, @Param("companyId") Long companyId);
 }

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/CustomerService.java

@@ -44,4 +44,6 @@ public interface CustomerService extends CommonBaseService<CustomerMapper, Custo
     PageInfo<CustomerList> getDbfind(PageRequest page, ListReqDTO listReqDTO);
 
     List<ComboDTO> getAddressCombo(Long id);
+
+    void saveToFormal(Integer id, boolean update);
 }

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/VendorService.java

@@ -95,4 +95,6 @@ public interface VendorService extends CommonBaseService<VendorMapper, Vendor>{
      * @return
      */
     boolean batchDelete(BatchDealBaseDTO baseDTOs);
+
+    void saveToFormal(Integer id, boolean update);
 }

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

@@ -3,11 +3,13 @@ package com.usoftchina.saas.document.service.impl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.ComboDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
+import com.usoftchina.saas.commons.po.BillCodeSeq;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.entities.Bankinformation;
 import com.usoftchina.saas.document.entities.Banksubledger;
@@ -17,6 +19,7 @@ import com.usoftchina.saas.document.service.BankinformationService;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.utils.DateUtils;
+import com.usoftchina.saas.utils.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -41,6 +44,8 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
     private BanksubledgerMapper banksubledgerMapper;
     @Autowired
     private MessageLogService messageLogService;
+    @Autowired
+    private MaxnumberService maxnumberService;
 
     @Transactional
     @Override
@@ -53,6 +58,9 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
         bankinformation.setCreatorName(BaseContextHolder.getUserName());
         int bid = Math.toIntExact(bankinformation.getId());
 
+        String bk_code = RegexpUtils.replaceSpecCharacter(bankinformation.getBk_bankcode());
+        String code = pushMaxnubmer(bk_code, bankinformation.getId());
+
         String bktion = bankinformationMapper.selectBankcode(bankinformation.getBk_bankcode() ,BaseContextHolder.getCompanyId());
         //先判断ID,再判断编号
         if (bankinformation.getId() == 0)
@@ -61,6 +69,7 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
                 throw new BizException(500, BizExceptionCode.ACCOUNT_EXISTS.getMessage());
             }
             bankinformation.setBk_thisamount(bankinformation.getBk_beginamount());
+            bankinformation.setBk_bankcode(code);
             bankinformationMapper.insertSelective(bankinformation);
             Banksubledger banksubledger = this.changBanksubledger(bankinformation);
             banksubledgerMapper.insertSelective(banksubledger);
@@ -220,4 +229,21 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
         }
         return null;
     }
+
+    /**
+     * @Description: 检验获取并更新单号
+     * @Param: [code, id]
+     * @return: java.lang.String
+     * @Author: chenwei
+     * @Date: 2018/10/26
+     */
+    private String pushMaxnubmer(String code, Long id) {
+        if (null == code) {
+            throw new BizException(BizExceptionCode.NULL_CODE);
+        }
+        Long companyId = BaseContextHolder.getCompanyId();
+        Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(code, companyId) :
+                getMapper().validateCodeWhenUpdate(code, id, companyId);
+        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.BANKINFORMATION.getCaller()).getData();
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.document.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
@@ -11,25 +12,25 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.DataImportDetail;
 import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
-import com.usoftchina.saas.document.dto.CustomerDTO;
-import com.usoftchina.saas.document.dto.CustomerFormDTO;
-import com.usoftchina.saas.document.dto.CustomeraddressDTO;
-import com.usoftchina.saas.document.dto.CustomercontactDTO;
+import com.usoftchina.saas.document.dto.*;
 import com.usoftchina.saas.document.entities.*;
 import com.usoftchina.saas.document.mapper.*;
 import com.usoftchina.saas.document.service.CustomerService;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.utils.BeanMapper;
+import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.DateUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
+import sun.reflect.generics.tree.LongSignature;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -59,6 +60,8 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
     private SubledgerMapper subledgerMapper;
     @Autowired
     private CustomerMapper customerMapper;
+    @Autowired
+    private DataImportMapper dataImportMapper;
 
 
     @Override
@@ -488,6 +491,68 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         return getMapper().getCombo(id,BaseContextHolder.getCompanyId());
     }
 
+    @Override
+    public void saveToFormal(Integer id, boolean update) {
+        if (null == id || "0".equals(id)) {
+            return;
+        }
+        Long companyId = BaseContextHolder.getCompanyId();
+        StringBuilder err = new StringBuilder();
+        List<CustomerFormDTO> list = new ArrayList<>();
+        CustomerFormDTO listDTO = null;
+        List<DataImportDetail> details = dataImportMapper.selectDataById(id);
+        if (!CollectionUtils.isEmpty(details)) {
+            Map<String, List<DataImportDetail>> datas = CollectionUtils.groupBy(details, DataImportDetail::getDd_codevalue);
+            Integer detno = null;
+            for (String code : datas.keySet()) {
+                listDTO = new CustomerFormDTO();
+                List<CustomercontactDTO> details_ = new ArrayList<>();
+                int i = getMapper().validateCodeWhenInsert(code, companyId);
+                List<DataImportDetail> data = datas.get(code);
+                DataImportDetail main = dataImportMapper.selectMainBycode(code, id, companyId);
+                CustomerDTO customerDTO = JSONObject.parseObject(main.getDd_maindata(), CustomerDTO.class);
+                customerDTO.setCu_status(Status.OPEN.getDisplay());
+                customerDTO.setCu_statuscode(Status.OPEN.name());
+                //编号不存在
+                if (i == 0) {
+                    customerDTO.setId(0l);
+                    //编号存在、需要更新
+                } else if (update){
+                    Long cu_id = getMapper().selectIdByCode(code, companyId);
+                    customerDTO.setId(cu_id);
+                    //编号存在、不需要处理
+                } else {
+                    continue;
+                }
+                //添加从表
+                if (data.size() > 0) {
+                    detno = 1;
+                    for (DataImportDetail vendorDetail : data) {
+                        CustomercontactDTO detail = JSONObject.parseObject(vendorDetail.getDd_detaildata(), CustomercontactDTO.class);
+                        if (null != detail) {
+                            detail.setCc_cuid(customerDTO.getId());
+                            detail.setCc_detno(detno);
+                            detno++;
+                            details_.add(detail);
+                        }
+                    }
+                }
+                listDTO.setMain(customerDTO);
+                listDTO.setItems1(details_);
+                listDTO.setItems2(new ArrayList<CustomeraddressDTO>());
+                list.add(listDTO);
+            }
+            if (err.length() > 0) {
+                dataImportMapper.updateDataImportError(err.toString(), id);
+                throw new BizException(12345, err.toString());
+            }
+            for (CustomerFormDTO  dto : list) {
+                saveFormData(dto);
+            }
+            dataImportMapper.updateDataImport(id);
+        }
+    }
+
 
     private List<CustomerList> getListByMode(ListReqDTO req) {
         List<CustomerList> list = null;

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

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.document.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
@@ -10,21 +11,22 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.DataImportDetail;
 import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.document.dto.ProductListDTO;
 import com.usoftchina.saas.document.dto.VendorDTO;
 import com.usoftchina.saas.document.dto.VendorListDTO;
-import com.usoftchina.saas.document.entities.Subledger;
-import com.usoftchina.saas.document.entities.Vendor;
-import com.usoftchina.saas.document.entities.VendorList;
-import com.usoftchina.saas.document.entities.Vendorcontact;
+import com.usoftchina.saas.document.entities.*;
+import com.usoftchina.saas.document.mapper.DataImportMapper;
 import com.usoftchina.saas.document.mapper.SubledgerMapper;
 import com.usoftchina.saas.document.mapper.VendorMapper;
 import com.usoftchina.saas.document.mapper.VendorcontactMapper;
 import com.usoftchina.saas.document.service.VendorService;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.DateUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,6 +54,8 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
     private SubledgerMapper subledgerMapper;
     @Autowired
     private VendorMapper vendorMapper;
+    @Autowired
+    private DataImportMapper dataImportMapper;
 
     @Override
     public PageInfo<VendorDTO> getVendorsByCondition(PageRequest page, ListReqDTO listReqDTO) {
@@ -429,6 +433,67 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         return true;
     }
 
+    @Override
+    public void saveToFormal(Integer id, boolean update) {
+        if (null == id || "0".equals(id)) {
+            return;
+        }
+        Long companyId = BaseContextHolder.getCompanyId();
+        StringBuilder err = new StringBuilder();
+        List<VendorListDTO> list = new ArrayList<>();
+        VendorListDTO listDTO = null;
+        List<DataImportDetail> details = dataImportMapper.selectDataById(id);
+        if (!CollectionUtils.isEmpty(details)) {
+            Map<String, List<DataImportDetail>> datas = CollectionUtils.groupBy(details, DataImportDetail::getDd_codevalue);
+            Integer detno = null;
+            for (String code : datas.keySet()) {
+                listDTO = new VendorListDTO();
+                List<Vendorcontact> details_ = new ArrayList<>();
+                int i = getMapper().validateCodeWhenInsert(code, companyId);
+                List<DataImportDetail> data = datas.get(code);
+                DataImportDetail main = dataImportMapper.selectMainBycode(code, id, companyId);
+                Vendor vendor = JSONObject.parseObject(main.getDd_maindata(), Vendor.class);
+                vendor.setVe_status(Status.OPEN.getDisplay());
+                vendor.setVe_statuscode(Status.OPEN.name());
+                //编号不存在
+                if (i == 0) {
+                    vendor.setId(0l);
+                    //编号存在、需要更新
+                } else if (update){
+                    Long pr_id = getMapper().selectIdByCode(code, companyId);
+                    vendor.setId(pr_id);
+                    //编号存在、不需要处理
+                } else {
+                    continue;
+                }
+                //添加从表
+                if (data.size() > 0) {
+                    detno = 1;
+                    for (DataImportDetail productDetail : data) {
+                        Vendorcontact detail = JSONObject.parseObject(productDetail.getDd_detaildata(), Vendorcontact.class);
+                        if (null != detail) {
+                            detail.setVc_veid(vendor.getId());
+                            detail.setVc_detno(detno);
+                            detno++;
+                            details_.add(detail);
+                        }
+                    }
+                }
+                listDTO.setMain(vendor);
+                listDTO.setItems(details_);
+                list.add(listDTO);
+            }
+            if (err.length() > 0) {
+                dataImportMapper.updateDataImportError(err.toString(), id);
+                throw new BizException(12345, err.toString());
+            }
+            for (VendorListDTO  dto : list) {
+                saveFormData(dto);
+            }
+            dataImportMapper.updateDataImport(id);
+        }
+    }
+
     private List<VendorDTO> getList(ListReqDTO listReqDTO){
         Long companyId = BaseContextHolder.getCompanyId();
         String condition = listReqDTO.getFinalCondition();

+ 2 - 3
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/WarehouseServiceImpl.java

@@ -232,8 +232,7 @@ public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper,
     public void delete(Long id) {
         //删除前检测物料是否存在默认仓库
         Long companyId = BaseContextHolder.getCompanyId();
-        companyId = 1l;
-        Integer num = 0;
+        int num = 0;
         num = warehouseMapper.deleteCheckProduct(id, companyId);
         if (num > 0) {
             throw new BizException(BizExceptionCode.PRODUCT_HAS_WAREHOUSE);
@@ -254,8 +253,8 @@ public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper,
     private void singleDelete(Long id) {
         if (null != id) {
             //主表删除
-            getMapper().deleteByPrimaryKey(id);
             DocBaseDTO docBaseDTO = getBaseDTOById(id);
+            getMapper().deleteByPrimaryKey(id);
             //日志
             messageLogService.delete(docBaseDTO);
         }

+ 8 - 0
applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml

@@ -347,4 +347,12 @@
     <parameter property="v_companyid" jdbcType="INTEGER" mode="IN" />
     <parameter property="v_res" jdbcType="VARCHAR" mode="OUT" />
   </parameterMap>
+
+
+  <select id="validateCodeWhenInsert" resultType="int">
+        select count(*) from bankinformation where bk_bankcode = #{code} and companyId =#{companyId}
+    </select>
+  <select id="validateCodeWhenUpdate" resultType="int" >
+        select count(*) from bankinformation where bk_bankcode = #{code} and bk_id != #{id} and companyId =#{companyId}
+    </select>
 </mapper>

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

@@ -408,5 +408,8 @@
     SELECT ca_address display,ca_address value FROM customeraddress WHERE ca_cuid=#{id} and COMPANYID=#{companyId} order by ca_id desc
   </select>
 
+  <select id="selectIdByCode" resultType="long">
+    select ve_id from VENDOR where ve_code=#{code} and companyId=#{companyId}
+  </select>
 
 </mapper>

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

@@ -482,5 +482,9 @@
         <parameter property="v_companyid" jdbcType="INTEGER" mode="IN" />
         <parameter property="v_res" jdbcType="VARCHAR" mode="OUT" />
     </parameterMap>
+
+    <select id="selectIdByCode" resultType="long">
+        select ve_id from VENDOR where ve_code=#{code} and companyId=#{companyId}
+    </select>
 </mapper>
 

+ 1 - 1
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java

@@ -704,7 +704,7 @@ public class SaleServiceImpl implements SaleService{
         }
         Long companyId = BaseContextHolder.getCompanyId();
         List<HashMap<String, Object>> list = prodInOutMapper.getWareHouseByCode(code, companyId);
-        if (null != list) {
+        if (null != list && list.size() > 0) {
             return list.get(0);
         }
         return null;

+ 1 - 1
applications/sale/sale-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -536,7 +536,7 @@ update ProdInOut SET
   </update>
 
   <select id="getWareHouseByCode" resultType="java.util.HashMap">
-    select pr_whid,pr_whcode,pr_whname from product where pr_code=#{code} and companyid=#{companyId} and pr_statuscode='OPEN'
+    select pr_whid,pr_whcode,pr_whname from product where pr_code=#{code} and companyid=#{companyId} and pr_statuscode='ENABLE'
   </select>
   <update id="updateCreator">
     update ProdInOut set creatorId = #{userId} , createTime=now(), creatorName=#{userName} where pi_id=#{id}

+ 2 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java

@@ -101,6 +101,8 @@ public class AccountCenterServiceImpl implements AccountCenterService {
         if (role != null) {
             accountService.bindRole(accountId, role.getId());
         }
+        //清除角色缓存
+        accountService.clearCache(accountId);
         return Result.success(company.getId());
     }
 

+ 31 - 18
frontend/saas-portal-web/src/components/conenter/addgongsi.vue

@@ -1,5 +1,9 @@
 <template>
     <div>
+        <div class="tanchuang addspace" v-if="isadd">
+            <div class="tc-conent"><img src="/static/img/qiye/dengji@1x.png" alt=""></div>
+            <div class="tc-text"><span>添加企业成功</span></div>
+        </div>
         <span class="tjtishi" ref="tjtishi"></span>
         <div>
             <div class="gs-worp qy-worp tj-up">
@@ -82,6 +86,7 @@
 <script>
 import Session from '@/utils/session'
 import VDistpicker from 'v-distpicker'
+import { setTimeout } from 'timers';
     export default {
         data(){
             return {
@@ -97,7 +102,8 @@ import VDistpicker from 'v-distpicker'
                 isname: true,//姓名验证
                 isspaceName: false,//公司名验证
                 isemail: true,//验证邮箱
-                disabled: true
+                disabled: true,
+                isadd: false,//添加成功弹窗
             }
         },
         components:{
@@ -216,9 +222,9 @@ import VDistpicker from 'v-distpicker'
                 // console.log('企业名字',this.isspaceName)//企业名字正则
                 // console.log('邮箱',this.isemail)//邮箱正则
                 if (name == '') {
-                    this.$refs.tjtishi.innerHTML = '个人姓名不能为空'
+                    this.$refs.tjtishi.innerHTML = '个人姓名不能为空';
                 } else if (qyname == '') {
-                    this.$refs.tjtishi.innerHTML = '企业名字不能为空'
+                    this.$refs.tjtishi.innerHTML = '企业名字不能为空';
                 } else {
                     switch (this.qymingzi && this.isaddress && this.isname && this.isspaceName && this.isemail && this.isaddressname) {
                         case this.qymingzi:
@@ -236,35 +242,38 @@ import VDistpicker from 'v-distpicker'
                                 }
                             })
                             .then(res=>{
-                                let id = res.data.data
-                                let logoUrl = null
-                                let name = qyname
-                                let addenterprise = {'id':id, 'logoUrl': logoUrl, 'name': name}
-                                let session = JSON.parse(window.localStorage.getItem('app-state-session'))
-                                session.account.companies.push(addenterprise)
+                                let id = res.data.data;
+                                let logoUrl = null;
+                                let name = qyname;
+                                let addenterprise = {'id':id, 'logoUrl': logoUrl, 'name': name};
+                                let session = JSON.parse(window.localStorage.getItem('app-state-session'));
+                                session.account.companies.push(addenterprise);
                                 Session.set(session);
-                                document.documentElement.scrollTop = 0;
-                                this.$router.push({name:'company'})
+                                this.isadd = true;
+                                setTimeout(()=>{
+                                    document.documentElement.scrollTop = 0;
+                                    this.$router.push({name:'company'})
+                                },1000)
                             })
-                            this.$refs.tjtishi.innerHTML = ''
+                            this.$refs.tjtishi.innerHTML = '';
                         } else {
-                            this.$refs.tjtishi.innerHTML = '企业名字已在优软云注册'
+                            this.$refs.tjtishi.innerHTML = '企业名字已在优软云注册';
                         }
                         break;
                         case this.isaddressname:
-                        this.$refs.tjtishi.innerHTML = '企业地址不能为空'
+                        this.$refs.tjtishi.innerHTML = '企业地址不能为空';
                         break;
                         case this.isaddress:
-                        this.$refs.tjtishi.innerHTML = '企业地址不能包含非法字符'
+                        this.$refs.tjtishi.innerHTML = '企业地址不能包含非法字符';
                         break;
                         case this.isname:
-                        this.$refs.tjtishi.innerHTML = '个人姓名不能包含非法字符'
+                        this.$refs.tjtishi.innerHTML = '个人姓名不能包含非法字符';
                         break;
                         case this.isspaceName:
-                        this.$refs.tjtishi.innerHTML = '企业名字不能包含非法字符'
+                        this.$refs.tjtishi.innerHTML = '企业名字不能包含非法字符';
                         break;
                         case this.isemail:
-                        this.$refs.tjtishi.innerHTML = '请输入正确邮箱'
+                        this.$refs.tjtishi.innerHTML = '请输入正确邮箱';
                         break;
                     }
                 }
@@ -287,6 +296,10 @@ import VDistpicker from 'v-distpicker'
     text-align: center;
     height: 20px;
 }
+.addspace {
+    height: 200px;
+    border: 1px solid #cccccc
+}
 .tj-up {
     width: 100%;
     margin-bottom: 0px;

+ 8 - 8
frontend/saas-portal-web/src/components/conenter/company.vue

@@ -56,7 +56,7 @@
       </div>
     </div>
 
-        <div class="gs-qiyebox" ref="qiyebox" style="margin-top: 70px;" :class="isheigh ? 'heigh' : ''">
+        <div class="gs-qiyebox" ref="qiyebox" :class="isheigh ? 'heigh' : ''">
             <!-- 点击查看企业详情 -->
             <div v-for="(d , i) in arr " :key="i" class="gs-xiangqing xs">
                 <div class="left gs-xqleft" @click= "getEnterpriseInfo(d)">
@@ -261,8 +261,8 @@
                 .then(res=>{
                     // console.log('请求成功',res)
                     if (res.data.success) {
-                        // this.saasid = res.data.data
-                        // this.ktsass = false;
+                        this.saasid = res.data.data
+                        this.ktsass = false;
                         let id = res.data.data
                         let name = qyname
                         let logoUrl = null
@@ -284,11 +284,11 @@
                 })
             },
             //进入saas服务
-            // showServeWin(){
-            //     let id = this.saasid;
-            //     this.isOpensaas = false;
-            //     this.selectServe(id)
-            // },
+            showServeWin(){
+                let id = this.saasid;
+                this.isOpensaas = false;
+                this.selectServe(id)
+            },
             //查看企业详情
             getEnterpriseInfo(d){
                 document.documentElement.scrollTop = 0;

+ 17 - 5
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -48,9 +48,9 @@
                 </div>
     <!-- 个人信息------------------------------------------------------------------- -->
                 <div :class= "{gsqiye:nowindex == 1}">
-                    <div class="over gr-worp" style="margin-bottom: 30px;margin-top: 60px;">
+                    <div class="over gr-worp" style="margin-bottom: 30px;">
                         <div class="left gr-left">
-                            <img src="../../../static/img/qiye/yonghu@2x.png" alt="">
+                            <img src="/static/img/qiye/yonghu@2x.png" alt="">
                         </div>
                         <div class="left gr-right">
                             <ul>
@@ -74,14 +74,14 @@
 
                 <div :class="{gsqiye:nowindex == 2}">
                     <div class="gs-anquanxinxi">
-                        <div class="over aq-title"><span class="left">登录密码</span><button class="right dianji">更换密码</button></div>
+                        <div class="over aq-title"><span class="left">登录密码</span><button @click="changpasd" class="right dianji">更换密码</button></div>
                         <div class="aq-text">
                             <p>安全性高的密码可以使账号更安全,建议您定期更换密码,并且设置一个包含数字和字母,长度超过8位以上的密码。
                             </p>
                         </div>
                     </div>
                     <div class="gs-anquanxinxi">
-                        <div class="over aq-title"><span class="left">手机验证</span><button class="right dianji">修改手机号</button></div>
+                        <div class="over aq-title"><span class="left">手机验证</span><button @click="changphone" class="right dianji">修改手机号</button></div>
                         <div class="aq-text">
                             <p>您绑定的手机:{{mobile}}。若已丢失或停用,请立即更换,避免账户被盗。
                             </p>
@@ -112,7 +112,8 @@ import { setTimeout } from 'timers';
             }
         },
         mounted(){
-            let mob = this.mytoken.mobile;
+            let mob = this.mytoken.mobile.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
+            this.mobile = mob
         },
         computed :{
             setTokenPage() {
@@ -130,6 +131,14 @@ import { setTimeout } from 'timers';
                 frame.postMessage('', '*')
                 Session.remove()
                 window.location.href=this.$url.sso+'/logquit?appId=sp&returnURL=https://'+window.location.host
+            },
+            //修改密码
+            changpasd(){
+                window.location.href = 'https://sso.ubtob.com/reset/forgetPasswordValidationAccount?returnURL='+this.$url.web+'&appId=sp'
+            },
+            //修改手机号
+            changphone(){
+                window.location.href = 'https://sso.ubtob.com/validation/phoneValidation?returnURL='+this.$url.web+'&appId=sp'
             }
         },
     }
@@ -140,4 +149,7 @@ import { setTimeout } from 'timers';
         padding-top: 100px;
         background: #FDFDFD;
     }
+    .gsqiye div:last-child {
+        margin-bottom: 100px;
+    }
 </style>

+ 3 - 22
frontend/saas-portal-web/src/components/conenter/home.vue

@@ -15,7 +15,7 @@
                     </a>
                 </h1>
             </div>
-            <div class="collapse navbar-collapse navbar-right" role="navigation">
+        <div class="collapse navbar-collapse navbar-right" role="navigation">
           <ul @click="gohome" id="nav" class="nav navbar-nav menu">
             <li><a href="#"><span>首页</span></a></li>
             <li><a href="https://www.usoftchina.com/" target="_blank"><span>优软云</span></a></li>
@@ -76,27 +76,8 @@
       </div>
     <main v-if="isproblem" 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">
-                <img src="/static/img/banner@3x@2x.png" alt="">
-              </div>
-              <div class="my-text">
-                <button class='my-tiyan' @click="experience">立即体验</button>
-              </div>
-              <div class="slide-caption">
-                <div class="caption-content"></div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </section> -->
       <div>
-        <div class="bg-img slider-1" style="position: relative;">
+        <div class="slider-1" style="position: relative;">
           <img src="/static/img/banner@3x@2x.png" alt="">
           <div class="my-text" style="top:63%">
             <button class='my-tiyan' @click="experience">立即体验</button>
@@ -342,7 +323,7 @@
             me.isLogin = false
             if (!account.companyId) {
               // 添加企业
-              me.$router.push({path: '/enterprise', query: {mydata: account}})
+              me.$router.push({path: '/enterprise'})
               me.$store.commit('Logintrue')
             } else {
               // 跳转应用页面

+ 33 - 36
frontend/saas-portal-web/src/components/conenter/problem.vue

@@ -13,33 +13,19 @@
                 </div>
                 <button class="bz-btn">搜索</button>
               </div>
-              <div class="bz-content">
-                <div class="bz-right">
-                  <div class="bz-right-conent">
-                    <div class= "shows">
-                      <ul>
-                        <li>
-                          <span class="left bz-yuandian"></span>
-                          <span class="left">方式不同吧好像是差不多 </span>
-                          <img @click="shows" class="right bz-copy" :class="isrotate ? 'rotates' : 'norotate'" src="/static/img/Triangle Copy 4.png" alt="">
-                          <div class="Text-content" :class="isshow ? 'dispays' : 'hides'">
-                            <p>警方圣诞快乐JFK的实力积分积分累积角度考虑实际疯狂的世界佛教埃及空军看见反抗类毒素解放就</p>
-                          </div>
-                        </li>
-                        <li>
-                          <span class="left bz-yuandian"></span>
-                          <span class="left">XXXXXXXXXXXXXXX操作文档</span>
-                          <img class="right bz-copy" src="/static/img/Triangle Copy 4.png" alt="">
-                        </li>
-                        <li>
-                          <span class="left bz-yuandian"></span>
-                          <span class="left">XXXXXXXXXXXXXXX操作文档</span>
-                          <img class="right bz-copy" src="/static/img/Triangle Copy 4.png" alt="">
-                        </li>
-                      </ul>
+              <div class="bz-right-conent">
+                <ul>
+                  <li v-for="(d , i) in arr" :key="i">
+                    <div class="over Text-title" @click="shows(d,i)">
+                      <span class="left bz-yuandian"></span>
+                      <span class="left">{{d.title}}</span>
+                      <img  class="right bz-copy" :class="d.isshow ? 'rotates' : 'norotate'" src="/static/img/Triangle Copy 4.png" alt="">
                     </div>
-                  </div>
-                </div>
+                    <div ref="title" class="Text-content" :class="d.isshow ? 'dispays' : 'hides'">
+                      <p ref="text">{{d.centent}}</p>
+                    </div>
+                  </li>
+                </ul>
               </div>
             </div>
           </div>
@@ -51,14 +37,18 @@
     export default {
         data(){
           return {
-            isshow: false,
-            isrotate: false
+            arr:[
+              {isshow: true, title:'方式不同吧好像是差不多',centent:'警方圣诞快乐JFK的实力积分积分累积角度考虑实际疯狂的世界佛教埃及空军看见反抗类毒素解放就'},
+              {isshow: false, title:'上的换个环境操作文档',centent:'警方圣诞K的实力积分积分累积角度狂的世界佛教埃及空军看见反抗类毒素解放就'},
+              {isshow: false, title:'房贷首付操作文档',centent:'警方圣诞快分积分累积角度考虑实际疯狂的世界佛教埃及空军看见反抗类毒素解放就'},
+            ]
           }
         },
         methods: {
-          shows(){
-            this.isshow = !this.isshow
-            this.isrotate = !this.isrotate
+          shows(d,i){
+            d.isshow = !d.isshow
+            let textH =  this.$refs.text[i].offsetHeight;
+            this.$refs.title[i].style.height = textH + 'px'
           }
         }
     }
@@ -66,25 +56,32 @@
 
 <style scoped>
 .dispays {
-  /* display: block; */
-  height: 60px;
   transition: All 0.4s ease-in-out;
   -webkit-transition: All 0.4s ease-in-out;
   -moz-transition: All 0.4s ease-in-out;
   -o-transition: All 0.4s ease-in-out;
 }
 .hides {
-  /* display: none; */
-  height: 0;
+  height: 0 !important;
   margin-bottom: -13px;
   transition: All 0.4s ease-in-out;
   -webkit-transition: All 0.4s ease-in-out;
   -moz-transition: All 0.4s ease-in-out;
   -o-transition: All 0.4s ease-in-out;
 }
+.Text-title {
+  cursor: pointer;
+  opacity: 0.9;
+  font-family: PingFangSC-Regular;
+  font-size: 14px;
+  color: #0D253E;
+  letter-spacing: 0;
+  line-height: 30px;
+}
 .Text-content {
   float: left;
   width: 90%;
+  font-size: 14px;
   margin-left: 4%;
   margin-top: 2%;
 }
@@ -128,7 +125,7 @@
 }
 .bz-copy {
     margin-right: 7px;
-    cursor: pointer;
+    margin-top: 5px;
     transition: All 0.4s ease-in-out;
     -webkit-transition: All 0.4s ease-in-out;
     -moz-transition: All 0.4s ease-in-out;

+ 1 - 1
frontend/saas-portal-web/src/components/conenter/qiyexiangxi.vue

@@ -5,7 +5,7 @@
         <div v-if="xiugai">
             <div class="gs-worp qy-worp" style="width:100%">
                 <div class="qy-title">
-                    <span><img @click= "gobick" style="float: left;padding: 20px; cursor:pointer" src="../../../static/img/fanhui.png" alt=""></span>
+                    <span><img @click= "gobick" style="float: left;padding: 20px; cursor:pointer" src="/static/img/fanhui.png" alt=""></span>
                     <span>企业基本信息</span>
                     <span v-if="isxiugaiId" @click="xiugaiqiye" class="qy-xiugai dianji">修改</span>
                 </div>

+ 25 - 0
frontend/saas-portal-web/src/pages/cell/cell.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>Document</title>
+</head>
+<body>
+    <div id="app">hello</div>
+    <script>
+        // iframe接收消息
+        window.addEventListener('message', function(e) {
+            if (e.data == 'removeToken') {
+                if (e.source != window.parent) {
+                    return;
+                }
+                var storeKey = 'app-state-session';
+                localStorage.removeItem(storeKey);
+                window.parent.postMessage("success", "*");
+            }
+        });
+    </script>
+</body>
+</html>

+ 0 - 0
frontend/saas-portal-web/src/pages/cell/cell.js


+ 15 - 0
frontend/saas-portal-web/src/pages/cell/cell.vue

@@ -0,0 +1,15 @@
+<template>
+    <div>
+
+    </div>
+</template>
+
+<script>
+    export default {
+        
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 12
frontend/saas-portal-web/src/pages/index/index.html

@@ -15,30 +15,19 @@
         <meta name="author" content="优软科技">
         <meta name="Robots" content="all|index|follow">
         
-        <!-- <link rel="icon" type="image/x-icon" href="./static/img/logo.png"/> -->
-        <link rel="icon" type="image/x-icon" href="../../../static/img/logo.png"/>
+        <link rel="icon" type="image/x-icon" href="/static/img/logo.png"/>
 
-        <link rel="stylesheet" href="./static/css/animate.css">
         <link rel="stylesheet" href="./static/css/bootstrap.min.css">
         <link rel="stylesheet" href="./static/css/ionicons.min.css">
-        <link rel="stylesheet" href="./static/css/jquery.fancybox.css">
-        <link rel="stylesheet" href="./static/css/owl.carousel.css">
-        <link rel="stylesheet" href="./static/css/slit-slider.css">
         <link rel="stylesheet" href="./static/css/main.css">
         <link rel="stylesheet" href="./static/css/gongsi.css">
 
-        <script src="./static/js/modernizr-2.6.2.min.js"></script>
 
         <script src="./static/js/jquery-1.11.1.min.js"></script>
         <script src="./static/js/bootstrap.min.js"></script>
         <script src="./static/js/jquery.singlePageNav.min.js"></script> 
-        <script src="./static/js/jquery.fancybox.pack.js"></script>
-        <script src="./static/js/owl.carousel.min.js"></script>
         <script src="./static/js/isotope.pkgd.min.js"></script>
         <script src="./static/js/jquery.easing.min.js"></script>
-        <script src="./static/js/jquery.slitslider.js"></script>
-        <script src="./static/js/jquery.ba-cond.min.js"></script>
-        <script src="./static/js/wow.min.js"></script>
         <script src="./static/js/mains.js"></script>
 
         <script src="./static/js/sockjs.min.js"></script>

+ 0 - 3296
frontend/saas-portal-web/static/css/animate.css

@@ -1,3296 +0,0 @@
-/*!
-Animate.css - http://daneden.me/animate
-Licensed under the MIT license - http://opensource.org/licenses/MIT
-
-Copyright (c) 2013 Daniel Eden
-*/
-
-
-.animated {
-  -webkit-animation-duration: 1s;
-          animation-duration: 1s;
-  -webkit-animation-fill-mode: both;
-          animation-fill-mode: both;
-}
-
-.animated.infinite {
-  -webkit-animation-iteration-count: infinite;
-          animation-iteration-count: infinite;
-}
-
-.animated.hinge {
-  -webkit-animation-duration: 2s;
-          animation-duration: 2s;
-}
-
-@-webkit-keyframes bounce {
-  0%, 20%, 50%, 80%, 100% {
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  40% {
-    -webkit-transform: translateY(-30px);
-    transform: translateY(-30px);
-  }
-
-  60% {
-    -webkit-transform: translateY(-15px);
-    transform: translateY(-15px);
-  }
-}
-
-@keyframes bounce {
-  0%, 20%, 50%, 80%, 100% {
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  40% {
-    -webkit-transform: translateY(-30px);
-    -ms-transform: translateY(-30px);
-    transform: translateY(-30px);
-  }
-
-  60% {
-    -webkit-transform: translateY(-15px);
-    -ms-transform: translateY(-15px);
-    transform: translateY(-15px);
-  }
-}
-
-.bounce {
-  -webkit-animation-name: bounce;
-  animation-name: bounce;
-}
-
-@-webkit-keyframes flash {
-  0%, 50%, 100% {
-    opacity: 1;
-  }
-
-  25%, 75% {
-    opacity: 0;
-  }
-}
-
-@keyframes flash {
-  0%, 50%, 100% {
-    opacity: 1;
-  }
-
-  25%, 75% {
-    opacity: 0;
-  }
-}
-
-.flash {
-  -webkit-animation-name: flash;
-  animation-name: flash;
-}
-
-/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
-
-@-webkit-keyframes pulse {
-  0% {
-    -webkit-transform: scale(1);
-    transform: scale(1);
-  }
-
-  50% {
-    -webkit-transform: scale(1.1);
-    transform: scale(1.1);
-  }
-
-  100% {
-    -webkit-transform: scale(1);
-    transform: scale(1);
-  }
-}
-
-@keyframes pulse {
-  0% {
-    -webkit-transform: scale(1);
-    -ms-transform: scale(1);
-    transform: scale(1);
-  }
-
-  50% {
-    -webkit-transform: scale(1.1);
-    -ms-transform: scale(1.1);
-    transform: scale(1.1);
-  }
-
-  100% {
-    -webkit-transform: scale(1);
-    -ms-transform: scale(1);
-    transform: scale(1);
-  }
-}
-
-.pulse {
-  -webkit-animation-name: pulse;
-  animation-name: pulse;
-}
-
-@-webkit-keyframes rubberBand {
-  0% {
-    -webkit-transform: scale(1);
-    transform: scale(1);
-  }
-
-  30% {
-    -webkit-transform: scaleX(1.25) scaleY(0.75);
-    transform: scaleX(1.25) scaleY(0.75);
-  }
-
-  40% {
-    -webkit-transform: scaleX(0.75) scaleY(1.25);
-    transform: scaleX(0.75) scaleY(1.25);
-  }
-
-  60% {
-    -webkit-transform: scaleX(1.15) scaleY(0.85);
-    transform: scaleX(1.15) scaleY(0.85);
-  }
-
-  100% {
-    -webkit-transform: scale(1);
-    transform: scale(1);
-  }
-}
-
-@keyframes rubberBand {
-  0% {
-    -webkit-transform: scale(1);
-    -ms-transform: scale(1);
-    transform: scale(1);
-  }
-
-  30% {
-    -webkit-transform: scaleX(1.25) scaleY(0.75);
-    -ms-transform: scaleX(1.25) scaleY(0.75);
-    transform: scaleX(1.25) scaleY(0.75);
-  }
-
-  40% {
-    -webkit-transform: scaleX(0.75) scaleY(1.25);
-    -ms-transform: scaleX(0.75) scaleY(1.25);
-    transform: scaleX(0.75) scaleY(1.25);
-  }
-
-  60% {
-    -webkit-transform: scaleX(1.15) scaleY(0.85);
-    -ms-transform: scaleX(1.15) scaleY(0.85);
-    transform: scaleX(1.15) scaleY(0.85);
-  }
-
-  100% {
-    -webkit-transform: scale(1);
-    -ms-transform: scale(1);
-    transform: scale(1);
-  }
-}
-
-.rubberBand {
-  -webkit-animation-name: rubberBand;
-  animation-name: rubberBand;
-}
-
-@-webkit-keyframes shake {
-  0%, 100% {
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  10%, 30%, 50%, 70%, 90% {
-    -webkit-transform: translateX(-10px);
-    transform: translateX(-10px);
-  }
-
-  20%, 40%, 60%, 80% {
-    -webkit-transform: translateX(10px);
-    transform: translateX(10px);
-  }
-}
-
-@keyframes shake {
-  0%, 100% {
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  10%, 30%, 50%, 70%, 90% {
-    -webkit-transform: translateX(-10px);
-    -ms-transform: translateX(-10px);
-    transform: translateX(-10px);
-  }
-
-  20%, 40%, 60%, 80% {
-    -webkit-transform: translateX(10px);
-    -ms-transform: translateX(10px);
-    transform: translateX(10px);
-  }
-}
-
-.shake {
-  -webkit-animation-name: shake;
-  animation-name: shake;
-}
-
-@-webkit-keyframes swing {
-  20% {
-    -webkit-transform: rotate(15deg);
-    transform: rotate(15deg);
-  }
-
-  40% {
-    -webkit-transform: rotate(-10deg);
-    transform: rotate(-10deg);
-  }
-
-  60% {
-    -webkit-transform: rotate(5deg);
-    transform: rotate(5deg);
-  }
-
-  80% {
-    -webkit-transform: rotate(-5deg);
-    transform: rotate(-5deg);
-  }
-
-  100% {
-    -webkit-transform: rotate(0deg);
-    transform: rotate(0deg);
-  }
-}
-
-@keyframes swing {
-  20% {
-    -webkit-transform: rotate(15deg);
-    -ms-transform: rotate(15deg);
-    transform: rotate(15deg);
-  }
-
-  40% {
-    -webkit-transform: rotate(-10deg);
-    -ms-transform: rotate(-10deg);
-    transform: rotate(-10deg);
-  }
-
-  60% {
-    -webkit-transform: rotate(5deg);
-    -ms-transform: rotate(5deg);
-    transform: rotate(5deg);
-  }
-
-  80% {
-    -webkit-transform: rotate(-5deg);
-    -ms-transform: rotate(-5deg);
-    transform: rotate(-5deg);
-  }
-
-  100% {
-    -webkit-transform: rotate(0deg);
-    -ms-transform: rotate(0deg);
-    transform: rotate(0deg);
-  }
-}
-
-.swing {
-  -webkit-transform-origin: top center;
-  -ms-transform-origin: top center;
-  transform-origin: top center;
-  -webkit-animation-name: swing;
-  animation-name: swing;
-}
-
-@-webkit-keyframes tada {
-  0% {
-    -webkit-transform: scale(1);
-    transform: scale(1);
-  }
-
-  10%, 20% {
-    -webkit-transform: scale(0.9) rotate(-3deg);
-    transform: scale(0.9) rotate(-3deg);
-  }
-
-  30%, 50%, 70%, 90% {
-    -webkit-transform: scale(1.1) rotate(3deg);
-    transform: scale(1.1) rotate(3deg);
-  }
-
-  40%, 60%, 80% {
-    -webkit-transform: scale(1.1) rotate(-3deg);
-    transform: scale(1.1) rotate(-3deg);
-  }
-
-  100% {
-    -webkit-transform: scale(1) rotate(0);
-    transform: scale(1) rotate(0);
-  }
-}
-
-@keyframes tada {
-  0% {
-    -webkit-transform: scale(1);
-    -ms-transform: scale(1);
-    transform: scale(1);
-  }
-
-  10%, 20% {
-    -webkit-transform: scale(0.9) rotate(-3deg);
-    -ms-transform: scale(0.9) rotate(-3deg);
-    transform: scale(0.9) rotate(-3deg);
-  }
-
-  30%, 50%, 70%, 90% {
-    -webkit-transform: scale(1.1) rotate(3deg);
-    -ms-transform: scale(1.1) rotate(3deg);
-    transform: scale(1.1) rotate(3deg);
-  }
-
-  40%, 60%, 80% {
-    -webkit-transform: scale(1.1) rotate(-3deg);
-    -ms-transform: scale(1.1) rotate(-3deg);
-    transform: scale(1.1) rotate(-3deg);
-  }
-
-  100% {
-    -webkit-transform: scale(1) rotate(0);
-    -ms-transform: scale(1) rotate(0);
-    transform: scale(1) rotate(0);
-  }
-}
-
-.tada {
-  -webkit-animation-name: tada;
-  animation-name: tada;
-}
-
-/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
-
-@-webkit-keyframes wobble {
-  0% {
-    -webkit-transform: translateX(0%);
-    transform: translateX(0%);
-  }
-
-  15% {
-    -webkit-transform: translateX(-25%) rotate(-5deg);
-    transform: translateX(-25%) rotate(-5deg);
-  }
-
-  30% {
-    -webkit-transform: translateX(20%) rotate(3deg);
-    transform: translateX(20%) rotate(3deg);
-  }
-
-  45% {
-    -webkit-transform: translateX(-15%) rotate(-3deg);
-    transform: translateX(-15%) rotate(-3deg);
-  }
-
-  60% {
-    -webkit-transform: translateX(10%) rotate(2deg);
-    transform: translateX(10%) rotate(2deg);
-  }
-
-  75% {
-    -webkit-transform: translateX(-5%) rotate(-1deg);
-    transform: translateX(-5%) rotate(-1deg);
-  }
-
-  100% {
-    -webkit-transform: translateX(0%);
-    transform: translateX(0%);
-  }
-}
-
-@keyframes wobble {
-  0% {
-    -webkit-transform: translateX(0%);
-    -ms-transform: translateX(0%);
-    transform: translateX(0%);
-  }
-
-  15% {
-    -webkit-transform: translateX(-25%) rotate(-5deg);
-    -ms-transform: translateX(-25%) rotate(-5deg);
-    transform: translateX(-25%) rotate(-5deg);
-  }
-
-  30% {
-    -webkit-transform: translateX(20%) rotate(3deg);
-    -ms-transform: translateX(20%) rotate(3deg);
-    transform: translateX(20%) rotate(3deg);
-  }
-
-  45% {
-    -webkit-transform: translateX(-15%) rotate(-3deg);
-    -ms-transform: translateX(-15%) rotate(-3deg);
-    transform: translateX(-15%) rotate(-3deg);
-  }
-
-  60% {
-    -webkit-transform: translateX(10%) rotate(2deg);
-    -ms-transform: translateX(10%) rotate(2deg);
-    transform: translateX(10%) rotate(2deg);
-  }
-
-  75% {
-    -webkit-transform: translateX(-5%) rotate(-1deg);
-    -ms-transform: translateX(-5%) rotate(-1deg);
-    transform: translateX(-5%) rotate(-1deg);
-  }
-
-  100% {
-    -webkit-transform: translateX(0%);
-    -ms-transform: translateX(0%);
-    transform: translateX(0%);
-  }
-}
-
-.wobble {
-  -webkit-animation-name: wobble;
-  animation-name: wobble;
-}
-
-@-webkit-keyframes bounceIn {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.3);
-    transform: scale(.3);
-  }
-
-  50% {
-    opacity: 1;
-    -webkit-transform: scale(1.05);
-    transform: scale(1.05);
-  }
-
-  70% {
-    -webkit-transform: scale(.9);
-    transform: scale(.9);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: scale(1);
-    transform: scale(1);
-  }
-}
-
-@keyframes bounceIn {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.3);
-    -ms-transform: scale(.3);
-    transform: scale(.3);
-  }
-
-  50% {
-    opacity: 1;
-    -webkit-transform: scale(1.05);
-    -ms-transform: scale(1.05);
-    transform: scale(1.05);
-  }
-
-  70% {
-    -webkit-transform: scale(.9);
-    -ms-transform: scale(.9);
-    transform: scale(.9);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: scale(1);
-    -ms-transform: scale(1);
-    transform: scale(1);
-  }
-}
-
-.bounceIn {
-  -webkit-animation-name: bounceIn;
-  animation-name: bounceIn;
-}
-
-@-webkit-keyframes bounceInDown {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: translateY(30px);
-    transform: translateY(30px);
-  }
-
-  80% {
-    -webkit-transform: translateY(-10px);
-    transform: translateY(-10px);
-  }
-
-  100% {
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-@keyframes bounceInDown {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    -ms-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: translateY(30px);
-    -ms-transform: translateY(30px);
-    transform: translateY(30px);
-  }
-
-  80% {
-    -webkit-transform: translateY(-10px);
-    -ms-transform: translateY(-10px);
-    transform: translateY(-10px);
-  }
-
-  100% {
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-.bounceInDown {
-  -webkit-animation-name: bounceInDown;
-  animation-name: bounceInDown;
-}
-
-@-webkit-keyframes bounceInLeft {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: translateX(30px);
-    transform: translateX(30px);
-  }
-
-  80% {
-    -webkit-transform: translateX(-10px);
-    transform: translateX(-10px);
-  }
-
-  100% {
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-@keyframes bounceInLeft {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    -ms-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: translateX(30px);
-    -ms-transform: translateX(30px);
-    transform: translateX(30px);
-  }
-
-  80% {
-    -webkit-transform: translateX(-10px);
-    -ms-transform: translateX(-10px);
-    transform: translateX(-10px);
-  }
-
-  100% {
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-.bounceInLeft {
-  -webkit-animation-name: bounceInLeft;
-  animation-name: bounceInLeft;
-}
-
-@-webkit-keyframes bounceInRight {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: translateX(-30px);
-    transform: translateX(-30px);
-  }
-
-  80% {
-    -webkit-transform: translateX(10px);
-    transform: translateX(10px);
-  }
-
-  100% {
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-@keyframes bounceInRight {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    -ms-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: translateX(-30px);
-    -ms-transform: translateX(-30px);
-    transform: translateX(-30px);
-  }
-
-  80% {
-    -webkit-transform: translateX(10px);
-    -ms-transform: translateX(10px);
-    transform: translateX(10px);
-  }
-
-  100% {
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-.bounceInRight {
-  -webkit-animation-name: bounceInRight;
-  animation-name: bounceInRight;
-}
-
-@-webkit-keyframes bounceInUp {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: translateY(-30px);
-    transform: translateY(-30px);
-  }
-
-  80% {
-    -webkit-transform: translateY(10px);
-    transform: translateY(10px);
-  }
-
-  100% {
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-@keyframes bounceInUp {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    -ms-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: translateY(-30px);
-    -ms-transform: translateY(-30px);
-    transform: translateY(-30px);
-  }
-
-  80% {
-    -webkit-transform: translateY(10px);
-    -ms-transform: translateY(10px);
-    transform: translateY(10px);
-  }
-
-  100% {
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-.bounceInUp {
-  -webkit-animation-name: bounceInUp;
-  animation-name: bounceInUp;
-}
-
-@-webkit-keyframes bounceOut {
-  0% {
-    -webkit-transform: scale(1);
-    transform: scale(1);
-  }
-
-  25% {
-    -webkit-transform: scale(.95);
-    transform: scale(.95);
-  }
-
-  50% {
-    opacity: 1;
-    -webkit-transform: scale(1.1);
-    transform: scale(1.1);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.3);
-    transform: scale(.3);
-  }
-}
-
-@keyframes bounceOut {
-  0% {
-    -webkit-transform: scale(1);
-    -ms-transform: scale(1);
-    transform: scale(1);
-  }
-
-  25% {
-    -webkit-transform: scale(.95);
-    -ms-transform: scale(.95);
-    transform: scale(.95);
-  }
-
-  50% {
-    opacity: 1;
-    -webkit-transform: scale(1.1);
-    -ms-transform: scale(1.1);
-    transform: scale(1.1);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.3);
-    -ms-transform: scale(.3);
-    transform: scale(.3);
-  }
-}
-
-.bounceOut {
-  -webkit-animation-name: bounceOut;
-  animation-name: bounceOut;
-}
-
-@-webkit-keyframes bounceOutDown {
-  0% {
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  20% {
-    opacity: 1;
-    -webkit-transform: translateY(-20px);
-    transform: translateY(-20px);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-}
-
-@keyframes bounceOutDown {
-  0% {
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  20% {
-    opacity: 1;
-    -webkit-transform: translateY(-20px);
-    -ms-transform: translateY(-20px);
-    transform: translateY(-20px);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    -ms-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-}
-
-.bounceOutDown {
-  -webkit-animation-name: bounceOutDown;
-  animation-name: bounceOutDown;
-}
-
-@-webkit-keyframes bounceOutLeft {
-  0% {
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  20% {
-    opacity: 1;
-    -webkit-transform: translateX(20px);
-    transform: translateX(20px);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-}
-
-@keyframes bounceOutLeft {
-  0% {
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  20% {
-    opacity: 1;
-    -webkit-transform: translateX(20px);
-    -ms-transform: translateX(20px);
-    transform: translateX(20px);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    -ms-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-}
-
-.bounceOutLeft {
-  -webkit-animation-name: bounceOutLeft;
-  animation-name: bounceOutLeft;
-}
-
-@-webkit-keyframes bounceOutRight {
-  0% {
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  20% {
-    opacity: 1;
-    -webkit-transform: translateX(-20px);
-    transform: translateX(-20px);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-}
-
-@keyframes bounceOutRight {
-  0% {
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  20% {
-    opacity: 1;
-    -webkit-transform: translateX(-20px);
-    -ms-transform: translateX(-20px);
-    transform: translateX(-20px);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    -ms-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-}
-
-.bounceOutRight {
-  -webkit-animation-name: bounceOutRight;
-  animation-name: bounceOutRight;
-}
-
-@-webkit-keyframes bounceOutUp {
-  0% {
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  20% {
-    opacity: 1;
-    -webkit-transform: translateY(20px);
-    transform: translateY(20px);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-}
-
-@keyframes bounceOutUp {
-  0% {
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  20% {
-    opacity: 1;
-    -webkit-transform: translateY(20px);
-    -ms-transform: translateY(20px);
-    transform: translateY(20px);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    -ms-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-}
-
-.bounceOutUp {
-  -webkit-animation-name: bounceOutUp;
-  animation-name: bounceOutUp;
-}
-
-@-webkit-keyframes fadeIn {
-  0% {
-    opacity: 0;
-  }
-
-  100% {
-    opacity: 1;
-  }
-}
-
-@keyframes fadeIn {
-  0% {
-    opacity: 0;
-  }
-
-  100% {
-    opacity: 1;
-  }
-}
-
-.fadeIn {
-  -webkit-animation-name: fadeIn;
-  animation-name: fadeIn;
-}
-
-@-webkit-keyframes fadeInDown {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(-20px);
-    transform: translateY(-20px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-@keyframes fadeInDown {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(-20px);
-    -ms-transform: translateY(-20px);
-    transform: translateY(-20px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-.fadeInDown {
-  -webkit-animation-name: fadeInDown;
-  animation-name: fadeInDown;
-}
-
-@-webkit-keyframes fadeInDownBig {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-@keyframes fadeInDownBig {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    -ms-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-.fadeInDownBig {
-  -webkit-animation-name: fadeInDownBig;
-  animation-name: fadeInDownBig;
-}
-
-@-webkit-keyframes fadeInLeft {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-20px);
-    transform: translateX(-20px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-@keyframes fadeInLeft {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-20px);
-    -ms-transform: translateX(-20px);
-    transform: translateX(-20px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-.fadeInLeft {
-  -webkit-animation-name: fadeInLeft;
-  animation-name: fadeInLeft;
-}
-
-@-webkit-keyframes fadeInLeftBig {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-@keyframes fadeInLeftBig {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    -ms-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-.fadeInLeftBig {
-  -webkit-animation-name: fadeInLeftBig;
-  animation-name: fadeInLeftBig;
-}
-
-@-webkit-keyframes fadeInRight {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(20px);
-    transform: translateX(20px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-@keyframes fadeInRight {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(20px);
-    -ms-transform: translateX(20px);
-    transform: translateX(20px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-.fadeInRight {
-  -webkit-animation-name: fadeInRight;
-  animation-name: fadeInRight;
-}
-
-@-webkit-keyframes fadeInRightBig {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-@keyframes fadeInRightBig {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    -ms-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-.fadeInRightBig {
-  -webkit-animation-name: fadeInRightBig;
-  animation-name: fadeInRightBig;
-}
-
-@-webkit-keyframes fadeInUp {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(20px);
-    transform: translateY(20px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-@keyframes fadeInUp {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(20px);
-    -ms-transform: translateY(20px);
-    transform: translateY(20px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-.fadeInUp {
-  -webkit-animation-name: fadeInUp;
-  animation-name: fadeInUp;
-}
-
-@-webkit-keyframes fadeInUpBig {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-@keyframes fadeInUpBig {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    -ms-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-.fadeInUpBig {
-  -webkit-animation-name: fadeInUpBig;
-  animation-name: fadeInUpBig;
-}
-
-@-webkit-keyframes fadeOut {
-  0% {
-    opacity: 1;
-  }
-
-  100% {
-    opacity: 0;
-  }
-}
-
-@keyframes fadeOut {
-  0% {
-    opacity: 1;
-  }
-
-  100% {
-    opacity: 0;
-  }
-}
-
-.fadeOut {
-  -webkit-animation-name: fadeOut;
-  animation-name: fadeOut;
-}
-
-@-webkit-keyframes fadeOutDown {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(20px);
-    transform: translateY(20px);
-  }
-}
-
-@keyframes fadeOutDown {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(20px);
-    -ms-transform: translateY(20px);
-    transform: translateY(20px);
-  }
-}
-
-.fadeOutDown {
-  -webkit-animation-name: fadeOutDown;
-  animation-name: fadeOutDown;
-}
-
-@-webkit-keyframes fadeOutDownBig {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-}
-
-@keyframes fadeOutDownBig {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    -ms-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-}
-
-.fadeOutDownBig {
-  -webkit-animation-name: fadeOutDownBig;
-  animation-name: fadeOutDownBig;
-}
-
-@-webkit-keyframes fadeOutLeft {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(-20px);
-    transform: translateX(-20px);
-  }
-}
-
-@keyframes fadeOutLeft {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(-20px);
-    -ms-transform: translateX(-20px);
-    transform: translateX(-20px);
-  }
-}
-
-.fadeOutLeft {
-  -webkit-animation-name: fadeOutLeft;
-  animation-name: fadeOutLeft;
-}
-
-@-webkit-keyframes fadeOutLeftBig {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-}
-
-@keyframes fadeOutLeftBig {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    -ms-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-}
-
-.fadeOutLeftBig {
-  -webkit-animation-name: fadeOutLeftBig;
-  animation-name: fadeOutLeftBig;
-}
-
-@-webkit-keyframes fadeOutRight {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(20px);
-    transform: translateX(20px);
-  }
-}
-
-@keyframes fadeOutRight {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(20px);
-    -ms-transform: translateX(20px);
-    transform: translateX(20px);
-  }
-}
-
-.fadeOutRight {
-  -webkit-animation-name: fadeOutRight;
-  animation-name: fadeOutRight;
-}
-
-@-webkit-keyframes fadeOutRightBig {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-}
-
-@keyframes fadeOutRightBig {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    -ms-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-}
-
-.fadeOutRightBig {
-  -webkit-animation-name: fadeOutRightBig;
-  animation-name: fadeOutRightBig;
-}
-
-@-webkit-keyframes fadeOutUp {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(-20px);
-    transform: translateY(-20px);
-  }
-}
-
-@keyframes fadeOutUp {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(-20px);
-    -ms-transform: translateY(-20px);
-    transform: translateY(-20px);
-  }
-}
-
-.fadeOutUp {
-  -webkit-animation-name: fadeOutUp;
-  animation-name: fadeOutUp;
-}
-
-@-webkit-keyframes fadeOutUpBig {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-}
-
-@keyframes fadeOutUpBig {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    -ms-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-}
-
-.fadeOutUpBig {
-  -webkit-animation-name: fadeOutUpBig;
-  animation-name: fadeOutUpBig;
-}
-
-@-webkit-keyframes flip {
-  0% {
-    -webkit-transform: perspective(400px) translateZ(0) rotateY(-360deg) scale(1);
-    transform: perspective(400px) translateZ(0) rotateY(-360deg) scale(1);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-
-  40% {
-    -webkit-transform: perspective(400px) translateZ(150px) rotateY(-190deg) scale(1);
-    transform: perspective(400px) translateZ(150px) rotateY(-190deg) scale(1);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-
-  50% {
-    -webkit-transform: perspective(400px) translateZ(150px) rotateY(-170deg) scale(1);
-    transform: perspective(400px) translateZ(150px) rotateY(-170deg) scale(1);
-    -webkit-animation-timing-function: ease-in;
-    animation-timing-function: ease-in;
-  }
-
-  80% {
-    -webkit-transform: perspective(400px) translateZ(0) rotateY(0deg) scale(.95);
-    transform: perspective(400px) translateZ(0) rotateY(0deg) scale(.95);
-    -webkit-animation-timing-function: ease-in;
-    animation-timing-function: ease-in;
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) translateZ(0) rotateY(0deg) scale(1);
-    transform: perspective(400px) translateZ(0) rotateY(0deg) scale(1);
-    -webkit-animation-timing-function: ease-in;
-    animation-timing-function: ease-in;
-  }
-}
-
-@keyframes flip {
-  0% {
-    -webkit-transform: perspective(400px) translateZ(0) rotateY(-360deg) scale(1);
-    -ms-transform: perspective(400px) translateZ(0) rotateY(-360deg) scale(1);
-    transform: perspective(400px) translateZ(0) rotateY(-360deg) scale(1);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-
-  40% {
-    -webkit-transform: perspective(400px) translateZ(150px) rotateY(-190deg) scale(1);
-    -ms-transform: perspective(400px) translateZ(150px) rotateY(-190deg) scale(1);
-    transform: perspective(400px) translateZ(150px) rotateY(-190deg) scale(1);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-
-  50% {
-    -webkit-transform: perspective(400px) translateZ(150px) rotateY(-170deg) scale(1);
-    -ms-transform: perspective(400px) translateZ(150px) rotateY(-170deg) scale(1);
-    transform: perspective(400px) translateZ(150px) rotateY(-170deg) scale(1);
-    -webkit-animation-timing-function: ease-in;
-    animation-timing-function: ease-in;
-  }
-
-  80% {
-    -webkit-transform: perspective(400px) translateZ(0) rotateY(0deg) scale(.95);
-    -ms-transform: perspective(400px) translateZ(0) rotateY(0deg) scale(.95);
-    transform: perspective(400px) translateZ(0) rotateY(0deg) scale(.95);
-    -webkit-animation-timing-function: ease-in;
-    animation-timing-function: ease-in;
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) translateZ(0) rotateY(0deg) scale(1);
-    -ms-transform: perspective(400px) translateZ(0) rotateY(0deg) scale(1);
-    transform: perspective(400px) translateZ(0) rotateY(0deg) scale(1);
-    -webkit-animation-timing-function: ease-in;
-    animation-timing-function: ease-in;
-  }
-}
-
-.animated.flip {
-  -webkit-backface-visibility: visible;
-  -ms-backface-visibility: visible;
-  backface-visibility: visible;
-  -webkit-animation-name: flip;
-  animation-name: flip;
-}
-
-@-webkit-keyframes flipInX {
-  0% {
-    -webkit-transform: perspective(400px) rotateX(90deg);
-    transform: perspective(400px) rotateX(90deg);
-    opacity: 0;
-  }
-
-  40% {
-    -webkit-transform: perspective(400px) rotateX(-10deg);
-    transform: perspective(400px) rotateX(-10deg);
-  }
-
-  70% {
-    -webkit-transform: perspective(400px) rotateX(10deg);
-    transform: perspective(400px) rotateX(10deg);
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) rotateX(0deg);
-    transform: perspective(400px) rotateX(0deg);
-    opacity: 1;
-  }
-}
-
-@keyframes flipInX {
-  0% {
-    -webkit-transform: perspective(400px) rotateX(90deg);
-    -ms-transform: perspective(400px) rotateX(90deg);
-    transform: perspective(400px) rotateX(90deg);
-    opacity: 0;
-  }
-
-  40% {
-    -webkit-transform: perspective(400px) rotateX(-10deg);
-    -ms-transform: perspective(400px) rotateX(-10deg);
-    transform: perspective(400px) rotateX(-10deg);
-  }
-
-  70% {
-    -webkit-transform: perspective(400px) rotateX(10deg);
-    -ms-transform: perspective(400px) rotateX(10deg);
-    transform: perspective(400px) rotateX(10deg);
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) rotateX(0deg);
-    -ms-transform: perspective(400px) rotateX(0deg);
-    transform: perspective(400px) rotateX(0deg);
-    opacity: 1;
-  }
-}
-
-.flipInX {
-  -webkit-backface-visibility: visible !important;
-  -ms-backface-visibility: visible !important;
-  backface-visibility: visible !important;
-  -webkit-animation-name: flipInX;
-  animation-name: flipInX;
-}
-
-@-webkit-keyframes flipInY {
-  0% {
-    -webkit-transform: perspective(400px) rotateY(90deg);
-    transform: perspective(400px) rotateY(90deg);
-    opacity: 0;
-  }
-
-  40% {
-    -webkit-transform: perspective(400px) rotateY(-10deg);
-    transform: perspective(400px) rotateY(-10deg);
-  }
-
-  70% {
-    -webkit-transform: perspective(400px) rotateY(10deg);
-    transform: perspective(400px) rotateY(10deg);
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) rotateY(0deg);
-    transform: perspective(400px) rotateY(0deg);
-    opacity: 1;
-  }
-}
-
-@keyframes flipInY {
-  0% {
-    -webkit-transform: perspective(400px) rotateY(90deg);
-    -ms-transform: perspective(400px) rotateY(90deg);
-    transform: perspective(400px) rotateY(90deg);
-    opacity: 0;
-  }
-
-  40% {
-    -webkit-transform: perspective(400px) rotateY(-10deg);
-    -ms-transform: perspective(400px) rotateY(-10deg);
-    transform: perspective(400px) rotateY(-10deg);
-  }
-
-  70% {
-    -webkit-transform: perspective(400px) rotateY(10deg);
-    -ms-transform: perspective(400px) rotateY(10deg);
-    transform: perspective(400px) rotateY(10deg);
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) rotateY(0deg);
-    -ms-transform: perspective(400px) rotateY(0deg);
-    transform: perspective(400px) rotateY(0deg);
-    opacity: 1;
-  }
-}
-
-.flipInY {
-  -webkit-backface-visibility: visible !important;
-  -ms-backface-visibility: visible !important;
-  backface-visibility: visible !important;
-  -webkit-animation-name: flipInY;
-  animation-name: flipInY;
-}
-
-@-webkit-keyframes flipOutX {
-  0% {
-    -webkit-transform: perspective(400px) rotateX(0deg);
-    transform: perspective(400px) rotateX(0deg);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) rotateX(90deg);
-    transform: perspective(400px) rotateX(90deg);
-    opacity: 0;
-  }
-}
-
-@keyframes flipOutX {
-  0% {
-    -webkit-transform: perspective(400px) rotateX(0deg);
-    -ms-transform: perspective(400px) rotateX(0deg);
-    transform: perspective(400px) rotateX(0deg);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) rotateX(90deg);
-    -ms-transform: perspective(400px) rotateX(90deg);
-    transform: perspective(400px) rotateX(90deg);
-    opacity: 0;
-  }
-}
-
-.flipOutX {
-  -webkit-animation-name: flipOutX;
-  animation-name: flipOutX;
-  -webkit-backface-visibility: visible !important;
-  -ms-backface-visibility: visible !important;
-  backface-visibility: visible !important;
-}
-
-@-webkit-keyframes flipOutY {
-  0% {
-    -webkit-transform: perspective(400px) rotateY(0deg);
-    transform: perspective(400px) rotateY(0deg);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) rotateY(90deg);
-    transform: perspective(400px) rotateY(90deg);
-    opacity: 0;
-  }
-}
-
-@keyframes flipOutY {
-  0% {
-    -webkit-transform: perspective(400px) rotateY(0deg);
-    -ms-transform: perspective(400px) rotateY(0deg);
-    transform: perspective(400px) rotateY(0deg);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: perspective(400px) rotateY(90deg);
-    -ms-transform: perspective(400px) rotateY(90deg);
-    transform: perspective(400px) rotateY(90deg);
-    opacity: 0;
-  }
-}
-
-.flipOutY {
-  -webkit-backface-visibility: visible !important;
-  -ms-backface-visibility: visible !important;
-  backface-visibility: visible !important;
-  -webkit-animation-name: flipOutY;
-  animation-name: flipOutY;
-}
-
-@-webkit-keyframes lightSpeedIn {
-  0% {
-    -webkit-transform: translateX(100%) skewX(-30deg);
-    transform: translateX(100%) skewX(-30deg);
-    opacity: 0;
-  }
-
-  60% {
-    -webkit-transform: translateX(-20%) skewX(30deg);
-    transform: translateX(-20%) skewX(30deg);
-    opacity: 1;
-  }
-
-  80% {
-    -webkit-transform: translateX(0%) skewX(-15deg);
-    transform: translateX(0%) skewX(-15deg);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: translateX(0%) skewX(0deg);
-    transform: translateX(0%) skewX(0deg);
-    opacity: 1;
-  }
-}
-
-@keyframes lightSpeedIn {
-  0% {
-    -webkit-transform: translateX(100%) skewX(-30deg);
-    -ms-transform: translateX(100%) skewX(-30deg);
-    transform: translateX(100%) skewX(-30deg);
-    opacity: 0;
-  }
-
-  60% {
-    -webkit-transform: translateX(-20%) skewX(30deg);
-    -ms-transform: translateX(-20%) skewX(30deg);
-    transform: translateX(-20%) skewX(30deg);
-    opacity: 1;
-  }
-
-  80% {
-    -webkit-transform: translateX(0%) skewX(-15deg);
-    -ms-transform: translateX(0%) skewX(-15deg);
-    transform: translateX(0%) skewX(-15deg);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: translateX(0%) skewX(0deg);
-    -ms-transform: translateX(0%) skewX(0deg);
-    transform: translateX(0%) skewX(0deg);
-    opacity: 1;
-  }
-}
-
-.lightSpeedIn {
-  -webkit-animation-name: lightSpeedIn;
-  animation-name: lightSpeedIn;
-  -webkit-animation-timing-function: ease-out;
-  animation-timing-function: ease-out;
-}
-
-@-webkit-keyframes lightSpeedOut {
-  0% {
-    -webkit-transform: translateX(0%) skewX(0deg);
-    transform: translateX(0%) skewX(0deg);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: translateX(100%) skewX(-30deg);
-    transform: translateX(100%) skewX(-30deg);
-    opacity: 0;
-  }
-}
-
-@keyframes lightSpeedOut {
-  0% {
-    -webkit-transform: translateX(0%) skewX(0deg);
-    -ms-transform: translateX(0%) skewX(0deg);
-    transform: translateX(0%) skewX(0deg);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: translateX(100%) skewX(-30deg);
-    -ms-transform: translateX(100%) skewX(-30deg);
-    transform: translateX(100%) skewX(-30deg);
-    opacity: 0;
-  }
-}
-
-.lightSpeedOut {
-  -webkit-animation-name: lightSpeedOut;
-  animation-name: lightSpeedOut;
-  -webkit-animation-timing-function: ease-in;
-  animation-timing-function: ease-in;
-}
-
-@-webkit-keyframes rotateIn {
-  0% {
-    -webkit-transform-origin: center center;
-    transform-origin: center center;
-    -webkit-transform: rotate(-200deg);
-    transform: rotate(-200deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: center center;
-    transform-origin: center center;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-@keyframes rotateIn {
-  0% {
-    -webkit-transform-origin: center center;
-    -ms-transform-origin: center center;
-    transform-origin: center center;
-    -webkit-transform: rotate(-200deg);
-    -ms-transform: rotate(-200deg);
-    transform: rotate(-200deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: center center;
-    -ms-transform-origin: center center;
-    transform-origin: center center;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-.rotateIn {
-  -webkit-animation-name: rotateIn;
-  animation-name: rotateIn;
-}
-
-@-webkit-keyframes rotateInDownLeft {
-  0% {
-    -webkit-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(-90deg);
-    transform: rotate(-90deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-@keyframes rotateInDownLeft {
-  0% {
-    -webkit-transform-origin: left bottom;
-    -ms-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(-90deg);
-    -ms-transform: rotate(-90deg);
-    transform: rotate(-90deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: left bottom;
-    -ms-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-.rotateInDownLeft {
-  -webkit-animation-name: rotateInDownLeft;
-  animation-name: rotateInDownLeft;
-}
-
-@-webkit-keyframes rotateInDownRight {
-  0% {
-    -webkit-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(90deg);
-    transform: rotate(90deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-@keyframes rotateInDownRight {
-  0% {
-    -webkit-transform-origin: right bottom;
-    -ms-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(90deg);
-    -ms-transform: rotate(90deg);
-    transform: rotate(90deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: right bottom;
-    -ms-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-.rotateInDownRight {
-  -webkit-animation-name: rotateInDownRight;
-  animation-name: rotateInDownRight;
-}
-
-@-webkit-keyframes rotateInUpLeft {
-  0% {
-    -webkit-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(90deg);
-    transform: rotate(90deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-@keyframes rotateInUpLeft {
-  0% {
-    -webkit-transform-origin: left bottom;
-    -ms-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(90deg);
-    -ms-transform: rotate(90deg);
-    transform: rotate(90deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: left bottom;
-    -ms-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-.rotateInUpLeft {
-  -webkit-animation-name: rotateInUpLeft;
-  animation-name: rotateInUpLeft;
-}
-
-@-webkit-keyframes rotateInUpRight {
-  0% {
-    -webkit-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(-90deg);
-    transform: rotate(-90deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-@keyframes rotateInUpRight {
-  0% {
-    -webkit-transform-origin: right bottom;
-    -ms-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(-90deg);
-    -ms-transform: rotate(-90deg);
-    transform: rotate(-90deg);
-    opacity: 0;
-  }
-
-  100% {
-    -webkit-transform-origin: right bottom;
-    -ms-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-}
-
-.rotateInUpRight {
-  -webkit-animation-name: rotateInUpRight;
-  animation-name: rotateInUpRight;
-}
-
-@-webkit-keyframes rotateOut {
-  0% {
-    -webkit-transform-origin: center center;
-    transform-origin: center center;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: center center;
-    transform-origin: center center;
-    -webkit-transform: rotate(200deg);
-    transform: rotate(200deg);
-    opacity: 0;
-  }
-}
-
-@keyframes rotateOut {
-  0% {
-    -webkit-transform-origin: center center;
-    -ms-transform-origin: center center;
-    transform-origin: center center;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: center center;
-    -ms-transform-origin: center center;
-    transform-origin: center center;
-    -webkit-transform: rotate(200deg);
-    -ms-transform: rotate(200deg);
-    transform: rotate(200deg);
-    opacity: 0;
-  }
-}
-
-.rotateOut {
-  -webkit-animation-name: rotateOut;
-  animation-name: rotateOut;
-}
-
-@-webkit-keyframes rotateOutDownLeft {
-  0% {
-    -webkit-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(90deg);
-    transform: rotate(90deg);
-    opacity: 0;
-  }
-}
-
-@keyframes rotateOutDownLeft {
-  0% {
-    -webkit-transform-origin: left bottom;
-    -ms-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: left bottom;
-    -ms-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(90deg);
-    -ms-transform: rotate(90deg);
-    transform: rotate(90deg);
-    opacity: 0;
-  }
-}
-
-.rotateOutDownLeft {
-  -webkit-animation-name: rotateOutDownLeft;
-  animation-name: rotateOutDownLeft;
-}
-
-@-webkit-keyframes rotateOutDownRight {
-  0% {
-    -webkit-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(-90deg);
-    transform: rotate(-90deg);
-    opacity: 0;
-  }
-}
-
-@keyframes rotateOutDownRight {
-  0% {
-    -webkit-transform-origin: right bottom;
-    -ms-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: right bottom;
-    -ms-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(-90deg);
-    -ms-transform: rotate(-90deg);
-    transform: rotate(-90deg);
-    opacity: 0;
-  }
-}
-
-.rotateOutDownRight {
-  -webkit-animation-name: rotateOutDownRight;
-  animation-name: rotateOutDownRight;
-}
-
-@-webkit-keyframes rotateOutUpLeft {
-  0% {
-    -webkit-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(-90deg);
-    transform: rotate(-90deg);
-    opacity: 0;
-  }
-}
-
-@keyframes rotateOutUpLeft {
-  0% {
-    -webkit-transform-origin: left bottom;
-    -ms-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: left bottom;
-    -ms-transform-origin: left bottom;
-    transform-origin: left bottom;
-    -webkit-transform: rotate(-90deg);
-    -ms-transform: rotate(-90deg);
-    transform: rotate(-90deg);
-    opacity: 0;
-  }
-}
-
-.rotateOutUpLeft {
-  -webkit-animation-name: rotateOutUpLeft;
-  animation-name: rotateOutUpLeft;
-}
-
-@-webkit-keyframes rotateOutUpRight {
-  0% {
-    -webkit-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(90deg);
-    transform: rotate(90deg);
-    opacity: 0;
-  }
-}
-
-@keyframes rotateOutUpRight {
-  0% {
-    -webkit-transform-origin: right bottom;
-    -ms-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform-origin: right bottom;
-    -ms-transform-origin: right bottom;
-    transform-origin: right bottom;
-    -webkit-transform: rotate(90deg);
-    -ms-transform: rotate(90deg);
-    transform: rotate(90deg);
-    opacity: 0;
-  }
-}
-
-.rotateOutUpRight {
-  -webkit-animation-name: rotateOutUpRight;
-  animation-name: rotateOutUpRight;
-}
-
-@-webkit-keyframes slideInDown {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-
-  100% {
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-@keyframes slideInDown {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    -ms-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-
-  100% {
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-.slideInDown {
-  -webkit-animation-name: slideInDown;
-  animation-name: slideInDown;
-}
-
-@-webkit-keyframes slideInLeft {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-
-  100% {
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-@keyframes slideInLeft {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    -ms-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-
-  100% {
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-.slideInLeft {
-  -webkit-animation-name: slideInLeft;
-  animation-name: slideInLeft;
-}
-
-@-webkit-keyframes slideInRight {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-
-  100% {
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-@keyframes slideInRight {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    -ms-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-
-  100% {
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-}
-
-.slideInRight {
-  -webkit-animation-name: slideInRight;
-  animation-name: slideInRight;
-}
-
-@-webkit-keyframes slideOutLeft {
-  0% {
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-}
-
-@keyframes slideOutLeft {
-  0% {
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(-2000px);
-    -ms-transform: translateX(-2000px);
-    transform: translateX(-2000px);
-  }
-}
-
-.slideOutLeft {
-  -webkit-animation-name: slideOutLeft;
-  animation-name: slideOutLeft;
-}
-
-@-webkit-keyframes slideOutRight {
-  0% {
-    -webkit-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-}
-
-@keyframes slideOutRight {
-  0% {
-    -webkit-transform: translateX(0);
-    -ms-transform: translateX(0);
-    transform: translateX(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(2000px);
-    -ms-transform: translateX(2000px);
-    transform: translateX(2000px);
-  }
-}
-
-.slideOutRight {
-  -webkit-animation-name: slideOutRight;
-  animation-name: slideOutRight;
-}
-
-@-webkit-keyframes slideOutUp {
-  0% {
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-}
-
-@keyframes slideOutUp {
-  0% {
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(-2000px);
-    -ms-transform: translateY(-2000px);
-    transform: translateY(-2000px);
-  }
-}
-
-.slideOutUp {
-  -webkit-animation-name: slideOutUp;
-  animation-name: slideOutUp;
-}
-
-@-webkit-keyframes slideInUp {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-@keyframes slideInUp {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    -ms-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-}
-
-.slideInUp {
-  -webkit-animation-name: slideInUp;
-  animation-name: slideInUp;
-}
-
-@-webkit-keyframes slideOutDown {
-  0% {
-    -webkit-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-}
-
-@keyframes slideOutDown {
-  0% {
-    -webkit-transform: translateY(0);
-    -ms-transform: translateY(0);
-    transform: translateY(0);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateY(2000px);
-    -ms-transform: translateY(2000px);
-    transform: translateY(2000px);
-  }
-}
-
-.slideOutDown {
-  -webkit-animation-name: slideOutDown;
-  animation-name: slideOutDown;
-}
-
-@-webkit-keyframes hinge {
-  0% {
-    -webkit-transform: rotate(0);
-    transform: rotate(0);
-    -webkit-transform-origin: top left;
-    transform-origin: top left;
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  20%, 60% {
-    -webkit-transform: rotate(80deg);
-    transform: rotate(80deg);
-    -webkit-transform-origin: top left;
-    transform-origin: top left;
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  40% {
-    -webkit-transform: rotate(60deg);
-    transform: rotate(60deg);
-    -webkit-transform-origin: top left;
-    transform-origin: top left;
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  80% {
-    -webkit-transform: rotate(60deg) translateY(0);
-    transform: rotate(60deg) translateY(0);
-    -webkit-transform-origin: top left;
-    transform-origin: top left;
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: translateY(700px);
-    transform: translateY(700px);
-    opacity: 0;
-  }
-}
-
-@keyframes hinge {
-  0% {
-    -webkit-transform: rotate(0);
-    -ms-transform: rotate(0);
-    transform: rotate(0);
-    -webkit-transform-origin: top left;
-    -ms-transform-origin: top left;
-    transform-origin: top left;
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  20%, 60% {
-    -webkit-transform: rotate(80deg);
-    -ms-transform: rotate(80deg);
-    transform: rotate(80deg);
-    -webkit-transform-origin: top left;
-    -ms-transform-origin: top left;
-    transform-origin: top left;
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  40% {
-    -webkit-transform: rotate(60deg);
-    -ms-transform: rotate(60deg);
-    transform: rotate(60deg);
-    -webkit-transform-origin: top left;
-    -ms-transform-origin: top left;
-    transform-origin: top left;
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  80% {
-    -webkit-transform: rotate(60deg) translateY(0);
-    -ms-transform: rotate(60deg) translateY(0);
-    transform: rotate(60deg) translateY(0);
-    -webkit-transform-origin: top left;
-    -ms-transform-origin: top left;
-    transform-origin: top left;
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-    opacity: 1;
-  }
-
-  100% {
-    -webkit-transform: translateY(700px);
-    -ms-transform: translateY(700px);
-    transform: translateY(700px);
-    opacity: 0;
-  }
-}
-
-.hinge {
-  -webkit-animation-name: hinge;
-  animation-name: hinge;
-}
-
-/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
-
-@-webkit-keyframes rollIn {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-100%) rotate(-120deg);
-    transform: translateX(-100%) rotate(-120deg);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0px) rotate(0deg);
-    transform: translateX(0px) rotate(0deg);
-  }
-}
-
-@keyframes rollIn {
-  0% {
-    opacity: 0;
-    -webkit-transform: translateX(-100%) rotate(-120deg);
-    -ms-transform: translateX(-100%) rotate(-120deg);
-    transform: translateX(-100%) rotate(-120deg);
-  }
-
-  100% {
-    opacity: 1;
-    -webkit-transform: translateX(0px) rotate(0deg);
-    -ms-transform: translateX(0px) rotate(0deg);
-    transform: translateX(0px) rotate(0deg);
-  }
-}
-
-.rollIn {
-  -webkit-animation-name: rollIn;
-  animation-name: rollIn;
-}
-
-/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
-
-@-webkit-keyframes rollOut {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0px) rotate(0deg);
-    transform: translateX(0px) rotate(0deg);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(100%) rotate(120deg);
-    transform: translateX(100%) rotate(120deg);
-  }
-}
-
-@keyframes rollOut {
-  0% {
-    opacity: 1;
-    -webkit-transform: translateX(0px) rotate(0deg);
-    -ms-transform: translateX(0px) rotate(0deg);
-    transform: translateX(0px) rotate(0deg);
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: translateX(100%) rotate(120deg);
-    -ms-transform: translateX(100%) rotate(120deg);
-    transform: translateX(100%) rotate(120deg);
-  }
-}
-
-.rollOut {
-  -webkit-animation-name: rollOut;
-  animation-name: rollOut;
-}
-
-@-webkit-keyframes zoomIn {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.3);
-    transform: scale(.3);
-  }
-
-  50% {
-    opacity: 1;
-  }
-}
-
-@keyframes zoomIn {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.3);
-    -ms-transform: scale(.3);
-    transform: scale(.3);
-  }
-
-  50% {
-    opacity: 1;
-  }
-}
-
-.zoomIn {
-  -webkit-animation-name: zoomIn;
-  animation-name: zoomIn;
-}
-
-@-webkit-keyframes zoomInDown {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateY(-2000px);
-    transform: scale(.1) translateY(-2000px);
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateY(60px);
-    transform: scale(.475) translateY(60px);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-}
-
-@keyframes zoomInDown {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateY(-2000px);
-    -ms-transform: scale(.1) translateY(-2000px);
-    transform: scale(.1) translateY(-2000px);
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateY(60px);
-    -ms-transform: scale(.475) translateY(60px);
-    transform: scale(.475) translateY(60px);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-}
-
-.zoomInDown {
-  -webkit-animation-name: zoomInDown;
-  animation-name: zoomInDown;
-}
-
-@-webkit-keyframes zoomInLeft {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateX(-2000px);
-    transform: scale(.1) translateX(-2000px);
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateX(48px);
-    transform: scale(.475) translateX(48px);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-}
-
-@keyframes zoomInLeft {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateX(-2000px);
-    -ms-transform: scale(.1) translateX(-2000px);
-    transform: scale(.1) translateX(-2000px);
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateX(48px);
-    -ms-transform: scale(.475) translateX(48px);
-    transform: scale(.475) translateX(48px);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-}
-
-.zoomInLeft {
-  -webkit-animation-name: zoomInLeft;
-  animation-name: zoomInLeft;
-}
-
-@-webkit-keyframes zoomInRight {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateX(2000px);
-    transform: scale(.1) translateX(2000px);
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateX(-48px);
-    transform: scale(.475) translateX(-48px);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-}
-
-@keyframes zoomInRight {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateX(2000px);
-    -ms-transform: scale(.1) translateX(2000px);
-    transform: scale(.1) translateX(2000px);
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateX(-48px);
-    -ms-transform: scale(.475) translateX(-48px);
-    transform: scale(.475) translateX(-48px);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-}
-
-.zoomInRight {
-  -webkit-animation-name: zoomInRight;
-  animation-name: zoomInRight;
-}
-
-@-webkit-keyframes zoomInUp {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateY(2000px);
-    transform: scale(.1) translateY(2000px);
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateY(-60px);
-    transform: scale(.475) translateY(-60px);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-}
-
-@keyframes zoomInUp {
-  0% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateY(2000px);
-    -ms-transform: scale(.1) translateY(2000px);
-    transform: scale(.1) translateY(2000px);
-    -webkit-animation-timing-function: ease-in-out;
-    animation-timing-function: ease-in-out;
-  }
-
-  60% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateY(-60px);
-    -ms-transform: scale(.475) translateY(-60px);
-    transform: scale(.475) translateY(-60px);
-    -webkit-animation-timing-function: ease-out;
-    animation-timing-function: ease-out;
-  }
-}
-
-.zoomInUp {
-  -webkit-animation-name: zoomInUp;
-  animation-name: zoomInUp;
-}
-
-@-webkit-keyframes zoomOut {
-  0% {
-    opacity: 1;
-    -webkit-transform: scale(1);
-    transform: scale(1);
-  }
-
-  50% {
-    opacity: 0;
-    -webkit-transform: scale(.3);
-    transform: scale(.3);
-  }
-
-  100% {
-    opacity: 0;
-  }
-}
-
-@keyframes zoomOut {
-  0% {
-    opacity: 1;
-    -webkit-transform: scale(1);
-    -ms-transform: scale(1);
-    transform: scale(1);
-  }
-
-  50% {
-    opacity: 0;
-    -webkit-transform: scale(.3);
-    -ms-transform: scale(.3);
-    transform: scale(.3);
-  }
-
-  100% {
-    opacity: 0;
-  }
-}
-
-.zoomOut {
-  -webkit-animation-name: zoomOut;
-  animation-name: zoomOut;
-}
-
-@-webkit-keyframes zoomOutDown {
-  40% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateY(-60px);
-    transform: scale(.475) translateY(-60px);
-    -webkit-animation-timing-function: linear;
-    animation-timing-function: linear;
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateY(2000px);
-    transform: scale(.1) translateY(2000px);
-    -webkit-transform-origin: center bottom;
-    transform-origin: center bottom;
-  }
-}
-
-@keyframes zoomOutDown {
-  40% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateY(-60px);
-    -ms-transform: scale(.475) translateY(-60px);
-    transform: scale(.475) translateY(-60px);
-    -webkit-animation-timing-function: linear;
-    animation-timing-function: linear;
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateY(2000px);
-    -ms-transform: scale(.1) translateY(2000px);
-    transform: scale(.1) translateY(2000px);
-    -webkit-transform-origin: center bottom;
-    -ms-transform-origin: center bottom;
-    transform-origin: center bottom;
-  }
-}
-
-.zoomOutDown {
-  -webkit-animation-name: zoomOutDown;
-  animation-name: zoomOutDown;
-}
-
-@-webkit-keyframes zoomOutLeft {
-  40% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateX(42px);
-    transform: scale(.475) translateX(42px);
-    -webkit-animation-timing-function: linear;
-    animation-timing-function: linear;
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateX(-2000px);
-    transform: scale(.1) translateX(-2000px);
-    -webkit-transform-origin: left center;
-    transform-origin: left center;
-  }
-}
-
-@keyframes zoomOutLeft {
-  40% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateX(42px);
-    -ms-transform: scale(.475) translateX(42px);
-    transform: scale(.475) translateX(42px);
-    -webkit-animation-timing-function: linear;
-    animation-timing-function: linear;
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateX(-2000px);
-    -ms-transform: scale(.1) translateX(-2000px);
-    transform: scale(.1) translateX(-2000px);
-    -webkit-transform-origin: left center;
-    -ms-transform-origin: left center;
-    transform-origin: left center;
-  }
-}
-
-.zoomOutLeft {
-  -webkit-animation-name: zoomOutLeft;
-  animation-name: zoomOutLeft;
-}
-
-@-webkit-keyframes zoomOutRight {
-  40% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateX(-42px);
-    transform: scale(.475) translateX(-42px);
-    -webkit-animation-timing-function: linear;
-    animation-timing-function: linear;
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateX(2000px);
-    transform: scale(.1) translateX(2000px);
-    -webkit-transform-origin: right center;
-    transform-origin: right center;
-  }
-}
-
-@keyframes zoomOutRight {
-  40% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateX(-42px);
-    -ms-transform: scale(.475) translateX(-42px);
-    transform: scale(.475) translateX(-42px);
-    -webkit-animation-timing-function: linear;
-    animation-timing-function: linear;
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateX(2000px);
-    -ms-transform: scale(.1) translateX(2000px);
-    transform: scale(.1) translateX(2000px);
-    -webkit-transform-origin: right center;
-    -ms-transform-origin: right center;
-    transform-origin: right center;
-  }
-}
-
-.zoomOutRight {
-  -webkit-animation-name: zoomOutRight;
-  animation-name: zoomOutRight;
-}
-
-@-webkit-keyframes zoomOutUp {
-  40% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateY(60px);
-    transform: scale(.475) translateY(60px);
-    -webkit-animation-timing-function: linear;
-    animation-timing-function: linear;
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateY(-2000px);
-    transform: scale(.1) translateY(-2000px);
-    -webkit-transform-origin: center top;
-    transform-origin: center top;
-  }
-}
-
-@keyframes zoomOutUp {
-  40% {
-    opacity: 1;
-    -webkit-transform: scale(.475) translateY(60px);
-    -ms-transform: scale(.475) translateY(60px);
-    transform: scale(.475) translateY(60px);
-    -webkit-animation-timing-function: linear;
-    animation-timing-function: linear;
-  }
-
-  100% {
-    opacity: 0;
-    -webkit-transform: scale(.1) translateY(-2000px);
-    -ms-transform: scale(.1) translateY(-2000px);
-    transform: scale(.1) translateY(-2000px);
-    -webkit-transform-origin: center top;
-    -ms-transform-origin: center top;
-    transform-origin: center top;
-  }
-}
-
-.zoomOutUp {
-  -webkit-animation-name: zoomOutUp;
-  animation-name: zoomOutUp;
-}

+ 3 - 3
frontend/saas-portal-web/static/css/gongsi.css

@@ -99,7 +99,7 @@
 }
 .gsqiye {
     display: block !important;
-    margin-top: -30px;
+    margin-top: 70px;
 }
 .gs-xiangqing {
     height: 112px;
@@ -276,7 +276,7 @@
     border-radius: 4px;
     overflow: hidden;
     margin-bottom: 24px;
-    padding: 28px 93px 28px 103px;
+    padding: 28px 70px;
 }
 .aq-title span {
     font-family: PingFangSC-Medium;
@@ -296,7 +296,7 @@
 .aq-text {
     font-family: PingFangSC-Regular;
     font-size: 14px;
-    color: #243A52;
+    color: #808D98;
     text-align: left;
     margin-top: 20px;
 }

+ 0 - 274
frontend/saas-portal-web/static/css/jquery.fancybox.css

@@ -1,274 +0,0 @@
-/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
-.fancybox-wrap,
-.fancybox-skin,
-.fancybox-outer,
-.fancybox-inner,
-.fancybox-image,
-.fancybox-wrap iframe,
-.fancybox-wrap object,
-.fancybox-nav,
-.fancybox-nav span,
-.fancybox-tmp
-{
-	padding: 0;
-	margin: 0;
-	border: 0;
-	outline: none;
-	vertical-align: top;
-}
-
-.fancybox-wrap {
-	position: absolute;
-	top: 0;
-	left: 0;
-	z-index: 8020;
-}
-
-.fancybox-skin {
-	position: relative;
-	background: #f9f9f9;
-	color: #444;
-	text-shadow: none;
-	-webkit-border-radius: 4px;
-	   -moz-border-radius: 4px;
-	        border-radius: 4px;
-}
-
-.fancybox-opened {
-	z-index: 8030;
-}
-
-.fancybox-opened .fancybox-skin {
-	-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-	   -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-	        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-}
-
-.fancybox-outer, .fancybox-inner {
-	position: relative;
-}
-
-.fancybox-inner {
-	overflow: hidden;
-}
-
-.fancybox-type-iframe .fancybox-inner {
-	-webkit-overflow-scrolling: touch;
-}
-
-.fancybox-error {
-	color: #444;
-	font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
-	margin: 0;
-	padding: 15px;
-	white-space: nowrap;
-}
-
-.fancybox-image, .fancybox-iframe {
-	display: block;
-	width: 100%;
-	height: 100%;
-}
-
-.fancybox-image {
-	max-width: 100%;
-	max-height: 100%;
-}
-
-#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
-	background-image: url('fancybox_sprite.png');
-}
-
-#fancybox-loading {
-	position: fixed;
-	top: 50%;
-	left: 50%;
-	margin-top: -22px;
-	margin-left: -22px;
-	background-position: 0 -108px;
-	opacity: 0.8;
-	cursor: pointer;
-	z-index: 8060;
-}
-
-#fancybox-loading div {
-	width: 44px;
-	height: 44px;
-	background: url('fancybox_loading.gif') center center no-repeat;
-}
-
-.fancybox-close {
-	position: absolute;
-	top: -18px;
-	right: -18px;
-	width: 36px;
-	height: 36px;
-	cursor: pointer;
-	z-index: 8040;
-}
-
-.fancybox-nav {
-	position: absolute;
-	top: 0;
-	width: 40%;
-	height: 100%;
-	cursor: pointer;
-	text-decoration: none;
-	background: transparent url('blank.gif'); /* helps IE */
-	-webkit-tap-highlight-color: rgba(0,0,0,0);
-	z-index: 8040;
-}
-
-.fancybox-prev {
-	left: 0;
-}
-
-.fancybox-next {
-	right: 0;
-}
-
-.fancybox-nav span {
-	position: absolute;
-	top: 50%;
-	width: 36px;
-	height: 34px;
-	margin-top: -18px;
-	cursor: pointer;
-	z-index: 8040;
-	visibility: hidden;
-}
-
-.fancybox-prev span {
-	left: 10px;
-	background-position: 0 -36px;
-}
-
-.fancybox-next span {
-	right: 10px;
-	background-position: 0 -72px;
-}
-
-.fancybox-nav:hover span {
-	visibility: visible;
-}
-
-.fancybox-tmp {
-	position: absolute;
-	top: -99999px;
-	left: -99999px;
-	visibility: hidden;
-	max-width: 99999px;
-	max-height: 99999px;
-	overflow: visible !important;
-}
-
-/* Overlay helper */
-
-.fancybox-lock {
-    overflow: hidden !important;
-    width: auto;
-}
-
-.fancybox-lock body {
-    overflow: hidden !important;
-}
-
-.fancybox-lock-test {
-    overflow-y: hidden !important;
-}
-
-.fancybox-overlay {
-	position: absolute;
-	top: 0;
-	left: 0;
-	overflow: hidden;
-	display: none;
-	z-index: 8010;
-	background: url('fancybox_overlay.png');
-}
-
-.fancybox-overlay-fixed {
-	position: fixed;
-	bottom: 0;
-	right: 0;
-}
-
-.fancybox-lock .fancybox-overlay {
-	overflow: auto;
-	overflow-y: scroll;
-}
-
-/* Title helper */
-
-.fancybox-title {
-	visibility: hidden;
-	font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
-	position: relative;
-	text-shadow: none;
-	z-index: 8050;
-}
-
-.fancybox-opened .fancybox-title {
-	visibility: visible;
-}
-
-.fancybox-title-float-wrap {
-	position: absolute;
-	bottom: 0;
-	right: 50%;
-	margin-bottom: -35px;
-	z-index: 8050;
-	text-align: center;
-}
-
-.fancybox-title-float-wrap .child {
-	display: inline-block;
-	margin-right: -100%;
-	padding: 2px 20px;
-	background: transparent; /* Fallback for web browsers that doesn't support RGBa */
-	background: rgba(0, 0, 0, 0.8);
-	-webkit-border-radius: 15px;
-	   -moz-border-radius: 15px;
-	        border-radius: 15px;
-	text-shadow: 0 1px 2px #222;
-	color: #FFF;
-	font-weight: bold;
-	line-height: 24px;
-	white-space: nowrap;
-}
-
-.fancybox-title-outside-wrap {
-	position: relative;
-	margin-top: 10px;
-	color: #fff;
-}
-
-.fancybox-title-inside-wrap {
-	padding-top: 10px;
-}
-
-.fancybox-title-over-wrap {
-	position: absolute;
-	bottom: 0;
-	left: 0;
-	color: #fff;
-	padding: 10px;
-	background: #000;
-	background: rgba(0, 0, 0, .8);
-}
-
-/*Retina graphics!*/
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
-	   only screen and (min--moz-device-pixel-ratio: 1.5),
-	   only screen and (min-device-pixel-ratio: 1.5){
-
-	#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
-		background-image: url('fancybox_sprite@2x.png');
-		background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
-	}
-
-	#fancybox-loading div {
-		background-image: url('fancybox_loading@2x.gif');
-		background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
-	}
-}

File diff suppressed because it is too large
+ 40 - 920
frontend/saas-portal-web/static/css/main.css


+ 0 - 231
frontend/saas-portal-web/static/css/owl.carousel.css

@@ -1,231 +0,0 @@
-/* 
- * 	Core Owl Carousel CSS File
- *	v1.24
- */
-
-/* clearfix */
-.owl-carousel .owl-wrapper:after {
-	content: ".";
-	display: block;
-	clear: both;
-	visibility: hidden;
-	line-height: 0;
-	height: 0;
-}
-/* display none until init */
-.owl-carousel{
-	display: none;
-	position: relative;
-	width: 100%;
-	-ms-touch-action: pan-y;
-}
-.owl-carousel .owl-wrapper{
-	display: none;
-	position: relative;
-	-webkit-transform: translate3d(0px, 0px, 0px);
-}
-.owl-carousel .owl-wrapper-outer{
-	overflow: hidden;
-	position: relative;
-	width: 100%;
-}
-.owl-carousel .owl-wrapper-outer.autoHeight{
-	-webkit-transition: height 500ms ease-in-out;
-	-moz-transition: height 500ms ease-in-out;
-	-ms-transition: height 500ms ease-in-out;
-	-o-transition: height 500ms ease-in-out;
-	transition: height 500ms ease-in-out;
-}
-	
-.owl-carousel .owl-item{
-	float: left;
-}
-.owl-controls .owl-page,
-.owl-controls .owl-buttons div{
-	cursor: pointer;
-}
-.owl-controls {
-	-webkit-user-select: none;
-	-khtml-user-select: none;
-	-moz-user-select: none;
-	-ms-user-select: none;
-	user-select: none;
-	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-
-/* mouse grab icon */
-.grabbing { 
-    cursor:url(grabbing.png) 8 8, move;
-}
-
-/* fix */
-.owl-carousel  .owl-wrapper,
-.owl-carousel  .owl-item{
-	-webkit-backface-visibility: hidden;
-	-moz-backface-visibility:    hidden;
-	-ms-backface-visibility:     hidden;
-  -webkit-transform: translate3d(0,0,0);
-  -moz-transform: translate3d(0,0,0);
-  -ms-transform: translate3d(0,0,0);
-}
-
-/* CSS3 Transitions */
-
-.owl-origin {
-	-webkit-perspective: 1200px;
-	-webkit-perspective-origin-x : 50%;
-	-webkit-perspective-origin-y : 50%;
-	-moz-perspective : 1200px;
-	-moz-perspective-origin-x : 50%;
-	-moz-perspective-origin-y : 50%;
-	perspective : 1200px;
-}
-/* fade */
-.owl-fade-out {
-  z-index: 10;
-  -webkit-animation: fadeOut .7s both ease;
-  -moz-animation: fadeOut .7s both ease;
-  animation: fadeOut .7s both ease;
-}
-.owl-fade-in {
-  -webkit-animation: fadeIn .7s both ease;
-  -moz-animation: fadeIn .7s both ease;
-  animation: fadeIn .7s both ease;
-}
-/* backSlide */
-.owl-backSlide-out {
-  -webkit-animation: backSlideOut 1s both ease;
-  -moz-animation: backSlideOut 1s both ease;
-  animation: backSlideOut 1s both ease;
-}
-.owl-backSlide-in {
-  -webkit-animation: backSlideIn 1s both ease;
-  -moz-animation: backSlideIn 1s both ease;
-  animation: backSlideIn 1s both ease;
-}
-/* goDown */
-.owl-goDown-out {
-  -webkit-animation: scaleToFade .7s ease both;
-  -moz-animation: scaleToFade .7s ease both;
-  animation: scaleToFade .7s ease both;
-}
-.owl-goDown-in {
-  -webkit-animation: goDown .6s ease both;
-  -moz-animation: goDown .6s ease both;
-  animation: goDown .6s ease both;
-}
-/* scaleUp */
-.owl-fadeUp-in {
-  -webkit-animation: scaleUpFrom .5s ease both;
-  -moz-animation: scaleUpFrom .5s ease both;
-  animation: scaleUpFrom .5s ease both;
-}
-
-.owl-fadeUp-out {
-  -webkit-animation: scaleUpTo .5s ease both;
-  -moz-animation: scaleUpTo .5s ease both;
-  animation: scaleUpTo .5s ease both;
-}
-/* Keyframes */
-/*empty*/
-@-webkit-keyframes empty {
-  0% {opacity: 1}
-}
-@-moz-keyframes empty {
-  0% {opacity: 1}
-}
-@keyframes empty {
-  0% {opacity: 1}
-}
-@-webkit-keyframes fadeIn {
-  0% { opacity:0; }
-  100% { opacity:1; }
-}
-@-moz-keyframes fadeIn {
-  0% { opacity:0; }
-  100% { opacity:1; }
-}
-@keyframes fadeIn {
-  0% { opacity:0; }
-  100% { opacity:1; }
-}
-@-webkit-keyframes fadeOut {
-  0% { opacity:1; }
-  100% { opacity:0; }
-}
-@-moz-keyframes fadeOut {
-  0% { opacity:1; }
-  100% { opacity:0; }
-}
-@keyframes fadeOut {
-  0% { opacity:1; }
-  100% { opacity:0; }
-}
-@-webkit-keyframes backSlideOut {
-  25% { opacity: .5; -webkit-transform: translateZ(-500px); }
-  75% { opacity: .5; -webkit-transform: translateZ(-500px) translateX(-200%); }
-  100% { opacity: .5; -webkit-transform: translateZ(-500px) translateX(-200%); }
-}
-@-moz-keyframes backSlideOut {
-  25% { opacity: .5; -moz-transform: translateZ(-500px); }
-  75% { opacity: .5; -moz-transform: translateZ(-500px) translateX(-200%); }
-  100% { opacity: .5; -moz-transform: translateZ(-500px) translateX(-200%); }
-}
-@keyframes backSlideOut {
-  25% { opacity: .5; transform: translateZ(-500px); }
-  75% { opacity: .5; transform: translateZ(-500px) translateX(-200%); }
-  100% { opacity: .5; transform: translateZ(-500px) translateX(-200%); }
-}
-@-webkit-keyframes backSlideIn {
-  0%, 25% { opacity: .5; -webkit-transform: translateZ(-500px) translateX(200%); }
-  75% { opacity: .5; -webkit-transform: translateZ(-500px); }
-  100% { opacity: 1; -webkit-transform: translateZ(0) translateX(0); }
-}
-@-moz-keyframes backSlideIn {
-  0%, 25% { opacity: .5; -moz-transform: translateZ(-500px) translateX(200%); }
-  75% { opacity: .5; -moz-transform: translateZ(-500px); }
-  100% { opacity: 1; -moz-transform: translateZ(0) translateX(0); }
-}
-@keyframes backSlideIn {
-  0%, 25% { opacity: .5; transform: translateZ(-500px) translateX(200%); }
-  75% { opacity: .5; transform: translateZ(-500px); }
-  100% { opacity: 1; transform: translateZ(0) translateX(0); }
-}
-@-webkit-keyframes scaleToFade {
-  to { opacity: 0; -webkit-transform: scale(.8); }
-}
-@-moz-keyframes scaleToFade {
-  to { opacity: 0; -moz-transform: scale(.8); }
-}
-@keyframes scaleToFade {
-  to { opacity: 0; transform: scale(.8); }
-}
-@-webkit-keyframes goDown {
-  from { -webkit-transform: translateY(-100%); }
-}
-@-moz-keyframes goDown {
-  from { -moz-transform: translateY(-100%); }
-}
-@keyframes goDown {
-  from { transform: translateY(-100%); }
-}
-
-@-webkit-keyframes scaleUpFrom {
-  from { opacity: 0; -webkit-transform: scale(1.5); }
-}
-@-moz-keyframes scaleUpFrom {
-  from { opacity: 0; -moz-transform: scale(1.5); }
-}
-@keyframes scaleUpFrom {
-  from { opacity: 0; transform: scale(1.5); }
-}
-
-@-webkit-keyframes scaleUpTo {
-  to { opacity: 0; -webkit-transform: scale(1.5); }
-}
-@-moz-keyframes scaleUpTo {
-  to { opacity: 0; -moz-transform: scale(1.5); }
-}
-@keyframes scaleUpTo {
-  to { opacity: 0; transform: scale(1.5); }
-}

+ 0 - 221
frontend/saas-portal-web/static/css/slit-slider.css

@@ -1,221 +0,0 @@
-.sl-slide, .sl-slides-wrapper, .sl-slide-inner {
-	position: absolute;
-	width: 100%;
-	height: 100%;
-	top: 0;
-	left: 0;
-}
-
-.sl-slider-wrapper {
-	width: 100%;
-	height: 600px;
-	overflow: hidden;
-	position: relative;
-}
-
-
-
-.bg-img {
-	background-position: center center;
-	background-repeat: no-repeat;
-	background-size: cover;
-	height: 100%;
-	width: 100%;
-}
-
-/* Custom navigation arrows */
-
-.nav-arrows span {
-	position: absolute;
-	z-index: 2000;
-	top: 50%;
-	width: 40px;
-	height: 40px;
-	border: 8px solid #ddd;
-	border: 8px solid rgba(150,150,150,0.4);
-	text-indent: -90000px;
-	margin-top: -40px;
-	cursor: pointer;
-	
-	-webkit-transform: rotate(45deg);
-	-moz-transform: rotate(45deg);
-	-o-transform: rotate(45deg);
-	-ms-transform: rotate(45deg);
-	transform: rotate(45deg);
-}
-
-.nav-arrows span:hover {
-	border-color: rgba(150,150,150,0.9);
-}
-
-.nav-arrows span.nav-arrow-prev {
-	left: 5%;
-	border-right: none;
-	border-top: none;
-}
-
-.nav-arrows span.nav-arrow-next {
-	right: 5%;
-	border-left: none;
-	border-bottom: none;
-}
-
-
-/* Custom navigation dots */
-
-.nav-dots {
-	text-align: center;
-	position: absolute;
-	bottom: 2%;
-	height: 30px;
-	width: 100%;
-	left: 0;
-	z-index: 1000;
-}
-
-.nav-dots span {
-	display: inline-block;
-	position: relative;
-	width: 16px;
-	height: 16px;
-	border-radius: 50%;
-	margin: 3px;
-	background: #ddd;
-	background: rgba(150,150,150,0.4);
-	cursor: pointer;
-	box-shadow: 
-		0 1px 1px rgba(255,255,255,0.4), 
-		inset 0 1px 1px rgba(0,0,0,0.1);
-}
-
-.nav-dots span {
-	background: rgba(150,150,150,0.1);
-	margin: 6px;
-	-webkit-transition: all 0.2s;
-	-moz-transition: all 0.2s;
-	-ms-transition: all 0.2s;
-	-o-transition: all 0.2s;
-	transition: all 0.2s;
-	box-shadow: 
-		0 1px 1px rgba(255,255,255,0.4), 
-		inset 0 1px 1px rgba(0,0,0,0.1),
-		0 0 0 2px rgba(255,255,255,0.5);
-}
-
-.nav-dots span.nav-dot-current,
-.nav-dots span:hover {
-	box-shadow: 
-		0 1px 1px rgba(255,255,255,0.4), 
-		inset 0 1px 1px rgba(0,0,0,0.1),
-		0 0 0 5px rgba(255,255,255,0.5);
-}
-
-.nav-dots span.nav-dot-current:after {
-	content: "";
-	position: absolute;
-	width: 10px;
-	height: 10px;
-	top: 3px;
-	left: 3px;
-	border-radius: 50%;
-	background: rgba(255,255,255,0.8);
-}
-
-
-
-/* Animations for content elements */
-
-.sl-trans-elems .caption-content h2 {
-	-webkit-animation: moveUp 1s ease-in-out both;
-	-moz-animation: moveUp 1s ease-in-out both;
-	-o-animation: moveUp 1s ease-in-out both;
-	-ms-animation: moveUp 1s ease-in-out both;
-	animation: moveUp 1s ease-in-out both;
-}
-.sl-trans-elems .caption-content span,
-.sl-trans-elems .caption-content a {
-	-webkit-animation: fadeIn 0.5s linear 0.5s both;
-	-moz-animation: fadeIn 0.5s linear 0.5s both;
-	-o-animation: fadeIn 0.5s linear 0.5s both;
-	-ms-animation: fadeIn 0.5s linear 0.5s both;
-	animation: fadeIn 0.5s linear 0.5s both;
-}
-
-.sl-trans-back-elems .caption-content h2 {
-	-webkit-animation: fadeOut 1s ease-in-out both;
-	-moz-animation: fadeOut 1s ease-in-out both;
-	-o-animation: fadeOut 1s ease-in-out both;
-	-ms-animation: fadeOut 1s ease-in-out both;
-	animation: fadeOut 1s ease-in-out both;
-}
-.sl-trans-back-elems .caption-content span,
-.sl-trans-back-elems .caption-content a {
-	-webkit-animation: fadeOut 1s linear both;
-	-moz-animation: fadeOut 1s linear both;
-	-o-animation: fadeOut 1s linear both;
-	-ms-animation: fadeOut 1s linear both;
-	animation: fadeOut 1s linear both;
-}
-
-@-webkit-keyframes moveUp{
-	0% {-webkit-transform: translateY(40px);}
-	100% {-webkit-transform: translateY(0px);}
-}
-@-moz-keyframes moveUp{
-	0% {-moz-transform: translateY(40px);}
-	100% {-moz-transform: translateY(0px);}
-}
-@-o-keyframes moveUp{
-	0% {-o-transform: translateY(40px);}
-	100% {-o-transform: translateY(0px);}
-}
-@-ms-keyframes moveUp{
-	0% {-ms-transform: translateY(40px);}
-	100% {-ms-transform: translateY(0px);}
-}
-@keyframes moveUp{
-	0% {transform: translateY(40px);}
-	100% {transform: translateY(0px);}
-}
-
-@-webkit-keyframes fadeIn{
-	0% {opacity: 0;}
-	100% {opacity: 1;}
-}
-@-moz-keyframes fadeIn{
-	0% {opacity: 0;}
-	100% {opacity: 1;}
-}
-@-o-keyframes fadeIn{
-	0% {opacity: 0;}
-	100% {opacity: 1;}
-}
-@-ms-keyframes fadeIn{
-	0% {opacity: 0;}
-	100% {opacity: 1;}
-}
-@keyframes fadeIn{
-	0% {opacity: 0;}
-	100% {opacity: 1;}
-}
-
-@-webkit-keyframes fadeOut{
-	0% {opacity: 1;}
-	100% {opacity: 0;}
-}
-@-moz-keyframes fadeOut{
-	0% {opacity: 1;}
-	100% {opacity: 0;}
-}
-@-o-keyframes fadeOut{
-	0% {opacity: 1;}
-	100% {opacity: 0;}
-}
-@-ms-keyframes fadeOut{
-	0% {opacity: 1;}
-	100% {opacity: 0;}
-}
-@keyframes fadeOut{
-	0% {opacity: 1;}
-	100% {opacity: 0;}
-}

+ 0 - 12
frontend/saas-portal-web/static/js/jquery.ba-cond.min.js

@@ -1,12 +0,0 @@
-/*
- * cond - v0.1 - 6/10/2009
- * http://benalman.com/projects/jquery-cond-plugin/
- * 
- * Copyright (c) 2009 "Cowboy" Ben Alman
- * Licensed under the MIT license
- * http://benalman.com/about/license/
- * 
- * Based on suggestions and sample code by Stephen Band and DBJDBJ in the
- * jquery-dev Google group: http://bit.ly/jqba1
- */
-(function($){$.fn.cond=function(){var e,a=arguments,b=0,f,d,c;while(!f&&b<a.length){f=a[b++];d=a[b++];f=$.isFunction(f)?f.call(this):f;c=!d?f:f?d.call(this,f):e}return c!==e?c:this}})(jQuery);

+ 0 - 46
frontend/saas-portal-web/static/js/jquery.fancybox.pack.js

@@ -1,46 +0,0 @@
-/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
-(function(r,G,f,v){var J=f("html"),n=f(r),p=f(G),b=f.fancybox=function(){b.open.apply(this,arguments)},I=navigator.userAgent.match(/msie/i),B=null,s=G.createTouch!==v,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},q=function(a){return a&&"string"===f.type(a)},E=function(a){return q(a)&&0<a.indexOf("%")},l=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},w=function(a,b){return l(a,b)+"px"};f.extend(b,{version:"2.1.5",defaults:{padding:15,margin:20,
-width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!s,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},
-keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+
-(I?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
-openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
-isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,
-c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&
-k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||
-b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=
-setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,p.bind({"onCancel.player beforeClose.player":c,"onUpdate.player":e,"beforeLoad.player":d}),e(),b.trigger("onPlayStart")}else c()},next:function(a){var d=b.current;d&&(q(a)||(a=d.direction.next),b.jumpto(d.index+1,a,"next"))},prev:function(a){var d=b.current;
-d&&(q(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,"prev"))},jumpto:function(a,d,e){var c=b.current;c&&(a=l(a),b.direction=d||c.direction[a>=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d=
-a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")),
-b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id="fancybox-loading"><div></div></div>').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(),
-y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement;
-if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1<a.group.length&&k[c]!==v)return b[d](k[c]),e.preventDefault(),!1;if(-1<f.inArray(c,k))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind("mousewheel.fb",function(d,c,k,g){for(var h=f(d.target||null),j=!1;h.length&&!j&&!h.is(".fancybox-skin")&&!h.is(".fancybox-wrap");)j=h[0]&&!(h[0].style.overflow&&"hidden"===h[0].style.overflow)&&
-(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1<b.group.length&&!a.canShrink){if(0<g||0<k)b.prev(0<g?"down":"left");else if(0>g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,
-{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,
-mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=
-!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");
-"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=
-this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);
-f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,
-e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,
-outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("<div>").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('<div class="fancybox-placeholder"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}",
-g);break;case "swf":e='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+g+'"></param>',h="",f.each(a.swf,function(a,b){e+='<param name="'+a+'" value="'+b+'"></param>';h+=" "+a+'="'+b+'"'}),e+='<embed src="'+g+'" type="application/x-shockwave-flash" width="100%" height="100%"'+h+"></embed></object>"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll":
-"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside?
-h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth||
-h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),c<m&&(c=m,j=l(c/D)),j<u&&(j=u,c=l(j*D))):(c=Math.max(m,Math.min(c,n)),h.autoHeight&&
-"iframe"!==h.type&&(g.width(c),j=g.height()),j=Math.max(u,Math.min(j,p)));if(h.fitToView)if(g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>r)&&(c>m&&j>u)&&!(19<d++);)j=Math.max(u,Math.min(p,j-10)),c=l(j*D),c<m&&(c=m,j=l(c/D)),c>n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&j<A&&c+x+q<z)&&(c+=q);g.width(c).height(j);e.width(c+x);a=e.width();
-y=e.height();e=(a>z||y>r)&&c>m&&j>u;c=h.aspectRatio?c<F&&j<B&&c<C&&j<A:(c<F||j<B)&&(c<C||j<A);f.extend(h,{dim:{width:w(a),height:w(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:x,hPadding:v,wrapSpace:y-k.outerHeight(!0),skinSpace:k.height()-j});!H&&(h.autoHeight&&j>u&&j<p&&!c)&&g.height("auto")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:"absolute",top:c[0],left:c[3]};d.autoCenter&&d.fixed&&
-!a&&g<=e.h&&f<=e.w?c.position="fixed":d.locked||(c.top+=e.y,c.left+=e.x);c.top=w(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=w(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css("overflow","visible").addClass("fancybox-opened"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css("cursor","pointer").bind("click.fb",function(d){!f(d.target).is("a")&&!f(d.target).parent().is("a")&&(d.preventDefault(),
-b[a.closeClick?"close":"next"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind("click.fb",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind("click.fb",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind("click.fb",b.next)),b.trigger("afterShow"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=!1,b.play()))},_afterZoomOut:function(a){a=
-a||b.current;f(".fancybox-wrap").trigger("onReset").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger("afterClose",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,j=a.wPadding,m=b.getViewport();!e&&(a.isDom&&d.is(":visible"))&&(e=d.find("img:first"),e.length||(e=d));t(e)?(c=e.offset(),e.is("img")&&(f=e.outerWidth(),g=e.outerHeight())):
-(c.top=m.y+(m.h-g)*a.topRatio,c.left=m.x+(m.w-f)*a.leftRatio);if("fixed"===b.wrap.css("position")||a.locked)c.top-=m.y,c.left-=m.x;return c={top:w(c.top-h*a.topRatio),left:w(c.left-j*a.leftRatio),width:w(f+j),height:w(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if("width"===f||"height"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c="width"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](l("width"===f?c:c-g*e)),b.inner[f](l("width"===
-f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c="elastic"===e,k=f.extend({opacity:1},d);delete k.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):"fade"===e&&(d.opacity=0.1);b.wrap.css(d).animate(k,{duration:"none"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e="elastic"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&(c.opacity=0.1));b.wrap.animate(c,
-{duration:"none"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;"elastic"===d&&(g="down"===f||"up"===f?"top":"left","down"===f||"right"===f?(e[g]=w(l(e[g])-200),c[g]="+=200px"):(e[g]=w(l(e[g])+200),c[g]="-=200px"));"none"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:b._afterZoomIn})},changeOut:function(){var a=
-b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;"elastic"===d&&(e["down"===c||"up"===c?"top":"left"]=("up"===c||"left"===c?"-":"+")+"=200px");a.wrap.animate(e,{duration:"none"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger("onReset").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!s,fixed:!0},overlay:null,fixed:!1,el:f("html"),create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();this.overlay=
-f('<div class="fancybox-overlay"></div>').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?
-b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth),
-p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"===
-f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=
-b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('<div class="fancybox-title fancybox-title-'+c+'-wrap">'+e+"</div>");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner('<span class="child"></span>'),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,
-e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+
-":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('<div style="position:fixed;top:20px;"></div>').appendTo("body");var e=20===
-d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(r).width();J.addClass("fancybox-lock-test");d=f(r).width();J.removeClass("fancybox-lock-test");f("<style type='text/css'>.fancybox-margin{margin-right:"+(d-a)+"px;}</style>").appendTo("head")})})(window,document,jQuery);

File diff suppressed because it is too large
+ 0 - 10
frontend/saas-portal-web/static/js/jquery.form.min.js


+ 0 - 676
frontend/saas-portal-web/static/js/jquery.slitslider.js

@@ -1,676 +0,0 @@
-/**
- * jquery.slitslider.js v1.1.0
- * http://www.codrops.com
- *
- * Licensed under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
- * 
- * Copyright 2012, Codrops
- * http://www.codrops.com
- */
-
-;( function( $, window, undefined ) {
-	
-	'use strict';
-
-	/*
-	* debouncedresize: special jQuery event that happens once after a window resize
-	*
-	* latest version and complete README available on Github:
-	* https://github.com/louisremi/jquery-smartresize/blob/master/jquery.debouncedresize.js
-	*
-	* Copyright 2011 @louis_remi
-	* Licensed under the MIT license.
-	*/
-	var $event = $.event,
-	$special,
-	resizeTimeout;
-
-	$special = $event.special.debouncedresize = {
-		setup: function() {
-			$( this ).on( "resize", $special.handler );
-		},
-		teardown: function() {
-			$( this ).off( "resize", $special.handler );
-		},
-		handler: function( event, execAsap ) {
-			// Save the context
-			var context = this,
-				args = arguments,
-				dispatch = function() {
-					// set correct event type
-					event.type = "debouncedresize";
-					$event.dispatch.apply( context, args );
-				};
-
-			if ( resizeTimeout ) {
-				clearTimeout( resizeTimeout );
-			}
-
-			execAsap ?
-				dispatch() :
-				resizeTimeout = setTimeout( dispatch, $special.threshold );
-		},
-		threshold: 20
-	};
-
-	// global
-	var $window = $( window ),
-		$document = $( document ),
-		Modernizr = window.Modernizr;
-
-	$.Slitslider = function( options, element ) {
-		
-		this.$elWrapper = $( element );
-		this._init( options );
-		
-	};
-
-	$.Slitslider.defaults = {
-		// transitions speed
-		speed : 800,
-		// if true the item's slices will also animate the opacity value
-		optOpacity : false,
-		// amount (%) to translate both slices - adjust as necessary
-		translateFactor : 230,
-		// maximum possible angle
-		maxAngle : 25,
-		// maximum possible scale
-		maxScale : 2,
-		// slideshow on / off
-		autoplay : false,
-		// keyboard navigation
-		keyboard : true,
-		// time between transitions
-		interval : 4000,
-		// callbacks
-		onBeforeChange : function( slide, idx ) { return false; },
-		onAfterChange : function( slide, idx ) { return false; }
-	};
-
-	$.Slitslider.prototype = {
-
-		_init : function( options ) {
-			
-			// options
-			this.options = $.extend( true, {}, $.Slitslider.defaults, options );
-
-			// https://github.com/twitter/bootstrap/issues/2870
-			this.transEndEventNames = {
-				'WebkitTransition' : 'webkitTransitionEnd',
-				'MozTransition' : 'transitionend',
-				'OTransition' : 'oTransitionEnd',
-				'msTransition' : 'MSTransitionEnd',
-				'transition' : 'transitionend'
-			};
-			this.transEndEventName = this.transEndEventNames[ Modernizr.prefixed( 'transition' ) ];
-			// suport for css 3d transforms and css transitions
-			this.support = Modernizr.csstransitions && Modernizr.csstransforms3d;
-			// the slider
-			this.$el = this.$elWrapper.children( '.sl-slider' );
-			// the slides
-			this.$slides = this.$el.children( '.sl-slide' ).hide();
-			// total slides
-			this.slidesCount = this.$slides.length;
-			// current slide
-			this.current = 0;
-			// control if it's animating
-			this.isAnimating = false;
-			// get container size
-			this._getSize();
-			// layout
-			this._layout();
-			// load some events
-			this._loadEvents();
-			// slideshow
-			if( this.options.autoplay ) {
-			
-				this._startSlideshow();
-			
-			}
-
-		},
-		// gets the current container width & height
-		_getSize : function() {
-
-			this.size = {
-				width : this.$elWrapper.outerWidth( true ),
-				height : this.$elWrapper.outerHeight( true )
-			};
-
-		},
-		_layout : function() {
-			
-			this.$slideWrapper = $( '<div class="sl-slides-wrapper" />' );
-			
-			// wrap the slides
-			this.$slides.wrapAll( this.$slideWrapper ).each( function( i ) {
-				
-				var $slide = $( this ),
-					// vertical || horizontal
-					orientation = $slide.data( 'orientation' );
-					
-				$slide.addClass( 'sl-slide-' + orientation )
-					  .children()
-					  .wrapAll( '<div class="sl-content-wrapper" />' )
-					  .wrapAll( '<div class="sl-content" />' );
-			
-			} );
-			
-			// set the right size of the slider/slides for the current window size
-			this._setSize();
-			// show first slide
-			this.$slides.eq( this.current ).show();
-			
-		},
-		_navigate : function( dir, pos ) {
-			
-			if( this.isAnimating || this.slidesCount < 2 ) {
-			
-				return false;
-			
-			}
-
-			this.isAnimating = true;
-
-			var self = this,
-				$currentSlide = this.$slides.eq( this.current );
-
-			// if position is passed
-			if( pos !== undefined ) {
-
-				this.current = pos;
-
-			}
-			// if not check the boundaries
-			else if( dir === 'next' ) {
-
-				this.current = this.current < this.slidesCount - 1 ? ++this.current : 0;
-
-			}
-			else if( dir === 'prev' ) {
-
-				this.current = this.current > 0 ? --this.current : this.slidesCount - 1;
-
-			}
-
-			this.options.onBeforeChange( $currentSlide, this.current );
-			
-			// next slide to be shown
-			var $nextSlide = this.$slides.eq( this.current ),
-				// the slide we want to cut and animate
-				$movingSlide = ( dir === 'next' ) ? $currentSlide : $nextSlide,
-				
-				// the following are the data attrs set for each slide
-				configData = $movingSlide.data(),
-				config = {};
-			
-			config.orientation = configData.orientation || 'horizontal',
-			config.slice1angle = configData.slice1Rotation || 0,
-			config.slice1scale = configData.slice1Scale || 1,
-			config.slice2angle = configData.slice2Rotation || 0,
-			config.slice2scale = configData.slice2Scale || 1;
-				
-			this._validateValues( config );
-			
-			var cssStyle = config.orientation === 'horizontal' ? {
-					marginTop : -this.size.height / 2
-				} : {
-					marginLeft : -this.size.width / 2
-				},
-				// default slide's slices style
-				resetStyle = {
-					'transform' : 'translate(0%,0%) rotate(0deg) scale(1)',
-					opacity : 1 
-				},
-				// slice1 style
-				slice1Style	= config.orientation === 'horizontal' ? {
-					'transform' : 'translateY(-' + this.options.translateFactor + '%) rotate(' + config.slice1angle + 'deg) scale(' + config.slice1scale + ')'
-				} : {
-					'transform' : 'translateX(-' + this.options.translateFactor + '%) rotate(' + config.slice1angle + 'deg) scale(' + config.slice1scale + ')'
-				},
-				// slice2 style
-				slice2Style	= config.orientation === 'horizontal' ? {
-					'transform' : 'translateY(' + this.options.translateFactor + '%) rotate(' + config.slice2angle + 'deg) scale(' + config.slice2scale + ')'
-				} : {
-					'transform' : 'translateX(' + this.options.translateFactor + '%) rotate(' + config.slice2angle + 'deg) scale(' + config.slice2scale + ')'
-				};
-			
-			if( this.options.optOpacity ) {
-			
-				slice1Style.opacity = 0;
-				slice2Style.opacity = 0;
-			
-			}
-			
-			// we are adding the classes sl-trans-elems and sl-trans-back-elems to the slide that is either coming "next"
-			// or going "prev" according to the direction.
-			// the idea is to make it more interesting by giving some animations to the respective slide's elements
-			//( dir === 'next' ) ? $nextSlide.addClass( 'sl-trans-elems' ) : $currentSlide.addClass( 'sl-trans-back-elems' );
-			
-			$currentSlide.removeClass( 'sl-trans-elems' );
-
-			var transitionProp = {
-				'transition' : 'all ' + this.options.speed + 'ms ease-in-out'
-			};
-
-			// add the 2 slices and animate them
-			$movingSlide.css( 'z-index', this.slidesCount )
-						.find( 'div.sl-content-wrapper' )
-						.wrap( $( '<div class="sl-content-slice" />' ).css( transitionProp ) )
-						.parent()
-						.cond(
-							dir === 'prev', 
-							function() {
-							
-								var slice = this;
-								this.css( slice1Style );
-								setTimeout( function() {
-									
-									slice.css( resetStyle );
-
-								}, 50 );
-										 
-							}, 
-							function() {
-								
-								var slice = this;
-								setTimeout( function() {
-									
-									slice.css( slice1Style );
-
-								}, 50 );
-						
-							}
-						)
-						.clone()
-						.appendTo( $movingSlide )
-						.cond(
-							dir === 'prev', 
-							function() {
-								
-								var slice = this;
-								this.css( slice2Style );
-								setTimeout( function() {
-
-									$currentSlide.addClass( 'sl-trans-back-elems' );
-
-									if( self.support ) {
-
-										slice.css( resetStyle ).on( self.transEndEventName, function() {
-
-											self._onEndNavigate( slice, $currentSlide, dir );
-
-										} );
-
-									}
-									else {
-
-										self._onEndNavigate( slice, $currentSlide, dir );
-
-									}
-
-								}, 50 );
-						
-							},
-							function() {
-								
-								var slice = this;
-								setTimeout( function() {
-
-									$nextSlide.addClass( 'sl-trans-elems' );
-									
-									if( self.support ) {
-
-										slice.css( slice2Style ).on( self.transEndEventName, function() {
-
-											self._onEndNavigate( slice, $currentSlide, dir );
-
-										} );
-
-									}
-									else {
-
-										self._onEndNavigate( slice, $currentSlide, dir );
-
-									}
-
-								}, 50 );
-								
-							}
-						)
-						.find( 'div.sl-content-wrapper' )
-						.css( cssStyle );
-			
-			$nextSlide.show();
-			
-		},
-		_validateValues : function( config ) {
-			
-			// OK, so we are restricting the angles and scale values here.
-			// This is to avoid the slices wrong sides to be shown.
-			// you can adjust these values as you wish but make sure you also ajust the
-			// paddings of the slides and also the options.translateFactor value and scale data attrs
-			if( config.slice1angle > this.options.maxAngle || config.slice1angle < -this.options.maxAngle ) {
-				
-				config.slice1angle = this.options.maxAngle;
-			
-			}
-			if( config.slice2angle > this.options.maxAngle  || config.slice2angle < -this.options.maxAngle ) {
-				
-				config.slice2angle = this.options.maxAngle;
-			
-			}
-			if( config.slice1scale > this.options.maxScale || config.slice1scale <= 0 ) {
-			
-				config.slice1scale = this.options.maxScale;
-			
-			}
-			if( config.slice2scale > this.options.maxScale || config.slice2scale <= 0 ) {
-				
-				config.slice2scale = this.options.maxScale;
-			
-			}
-			if( config.orientation !== 'vertical' && config.orientation !== 'horizontal' ) {
-			
-				config.orientation = 'horizontal'
-			
-			}
-			
-		},
-		_onEndNavigate : function( $slice, $oldSlide, dir ) {
-			
-			// reset previous slide's style after next slide is shown
-			var $slide = $slice.parent(),
-				removeClasses = 'sl-trans-elems sl-trans-back-elems';
-			
-			// remove second slide's slice
-			$slice.remove();
-			// unwrap..
-			$slide.css( 'z-index', 1 )
-				  .find( 'div.sl-content-wrapper' )
-				  .unwrap();
-			
-			// hide previous current slide
-			$oldSlide.hide().removeClass( removeClasses );
-			$slide.removeClass( removeClasses );
-			// now we can navigate again..
-			this.isAnimating = false;
-			this.options.onAfterChange( $slide, this.current );
-			
-		},
-		_setSize : function() {
-		
-			// the slider and content wrappers will have the window's width and height
-			var cssStyle = {
-				width : this.size.width,
-				height : this.size.height
-			};
-			
-			this.$el.css( cssStyle ).find( 'div.sl-content-wrapper' ).css( cssStyle );
-		
-		},
-		_loadEvents : function() {
-			
-			var self = this;
-			
-			$window.on( 'debouncedresize.slitslider', function( event ) {
-				
-				// update size values
-				self._getSize();
-				// set the sizes again
-				self._setSize();
-				
-			} );
-
-			if ( this.options.keyboard ) {
-				
-				$document.on( 'keydown.slitslider', function(e) {
-
-					var keyCode = e.keyCode || e.which,
-						arrow = {
-							left: 37,
-							up: 38,
-							right: 39,
-							down: 40
-						};
-
-					switch (keyCode) {
-						
-						case arrow.left :
-
-							self._stopSlideshow();
-							self._navigate( 'prev' );
-							break;
-						
-						case arrow.right :
-							
-							self._stopSlideshow();
-							self._navigate( 'next' );
-							break;
-
-					}
-
-				} );
-
-			}
-		
-		},
-		_startSlideshow: function() {
-
-			var self = this;
-
-			this.slideshow = setTimeout( function() {
-
-				self._navigate( 'next' );
-
-				if ( self.options.autoplay ) {
-
-					self._startSlideshow();
-
-				}
-
-			}, this.options.interval );
-
-		},
-		_stopSlideshow: function() {
-
-			if ( this.options.autoplay ) {
-
-				clearTimeout( this.slideshow );
-				this.isPlaying = false;
-				this.options.autoplay = false;
-
-			}
-
-		},
-		_destroy : function( callback ) {
-			
-			this.$el.off( '.slitslider' ).removeData( 'slitslider' );
-			$window.off( '.slitslider' );
-			$document.off( '.slitslider' );
-			this.$slides.each( function( i ) {
-
-				var $slide = $( this ),
-					$content = $slide.find( 'div.sl-content' ).children();
-
-				$content.appendTo( $slide );
-				$slide.children( 'div.sl-content-wrapper' ).remove();
-
-			} );
-			this.$slides.unwrap( this.$slideWrapper ).hide();
-			this.$slides.eq( 0 ).show();
-			if( callback ) {
-
-				callback.call();
-
-			}
-
-		},
-		// public methos: adds more slides to the slider
-		add : function( $slides, callback ) {
-
-			this.$slides = this.$slides.add( $slides );
-
-			var self = this;
-			
-			
-			$slides.each( function( i ) {
-
-				var $slide = $( this ),
-					// vertical || horizontal
-					orientation = $slide.data( 'orientation' );
-
-				$slide.hide().addClass( 'sl-slide-' + orientation )
-					  .children()
-					  .wrapAll( '<div class="sl-content-wrapper" />' )
-					  .wrapAll( '<div class="sl-content" />' )
-					  .end()
-					  .appendTo( self.$el.find( 'div.sl-slides-wrapper' ) );
-
-			} );
-
-			this._setSize();
-
-			this.slidesCount = this.$slides.length;
-			
-			if ( callback ) {
-
-				callback.call( $items );
-
-			}
-
-		},
-		// public method: shows next slide
-		next : function() {
-
-			this._stopSlideshow();
-			this._navigate( 'next' );
-
-		},
-		// public method: shows previous slide
-		previous : function() {
-
-			this._stopSlideshow();
-			this._navigate( 'prev' );
-
-		},
-		// public method: goes to a specific slide
-		jump : function( pos ) {
-
-			pos -= 1;
-
-			if( pos === this.current || pos >= this.slidesCount || pos < 0 ) {
-
-				return false;
-
-			}
-
-			this._stopSlideshow();
-			this._navigate( pos > this.current ? 'next' : 'prev', pos );
-
-		},
-		// public method: starts the slideshow
-		// any call to next(), previous() or jump() will stop the slideshow
-		play : function() {
-
-			if( !this.isPlaying ) {
-
-				this.isPlaying = true;
-
-				this._navigate( 'next' );
-				this.options.autoplay = true;
-				this._startSlideshow();
-
-			}
-
-		},
-		// public method: pauses the slideshow
-		pause : function() {
-
-			if( this.isPlaying ) {
-
-				this._stopSlideshow();
-
-			}
-
-		},
-		// public method: check if isAnimating is true
-		isActive : function() {
-
-			return this.isAnimating;
-
-		},
-		// publicc methos: destroys the slicebox instance
-		destroy : function( callback ) {
-
-			this._destroy( callback );
-		
-		}
-
-	};
-	
-	var logError = function( message ) {
-
-		if ( window.console ) {
-
-			window.console.error( message );
-		
-		}
-
-	};
-	
-	$.fn.slitslider = function( options ) {
-
-		var self = $.data( this, 'slitslider' );
-		
-		if ( typeof options === 'string' ) {
-			
-			var args = Array.prototype.slice.call( arguments, 1 );
-			
-			this.each(function() {
-			
-				if ( !self ) {
-
-					logError( "cannot call methods on slitslider prior to initialization; " +
-					"attempted to call method '" + options + "'" );
-					return;
-				
-				}
-				
-				if ( !$.isFunction( self[options] ) || options.charAt(0) === "_" ) {
-
-					logError( "no such method '" + options + "' for slitslider self" );
-					return;
-				
-				}
-				
-				self[ options ].apply( self, args );
-			
-			});
-		
-		} 
-		else {
-		
-			this.each(function() {
-				
-				if ( self ) {
-
-					self._init();
-				
-				}
-				else {
-
-					self = $.data( this, 'slitslider', new $.Slitslider( options, this ) );
-				
-				}
-
-			});
-		
-		}
-		
-		return self;
-		
-	};
-	
-} )( jQuery, window );

File diff suppressed because it is too large
+ 0 - 1
frontend/saas-portal-web/static/js/jquery.validate.min.js


+ 6 - 107
frontend/saas-portal-web/static/js/mains.js

@@ -8,55 +8,9 @@ jQuery(window).load(function(){
 
 });
 
-/* ========================================================================= */
-/*  Welcome Section Slider
-/* ========================================================================= */
-
-$(function() {
-    var Page = (function() {
-        var $navArrows = $( '#nav-arrows' ),
-            $nav = $( '#nav-dots > span' ),
-            slitslider = $( '#slider' ).slitslider( {
-                onBeforeChange : function( slide, pos ) {
-                    $nav.removeClass( 'nav-dot-current' );
-                    $nav.eq( pos ).addClass( 'nav-dot-current' );
-                }
-            } ),
-            init = function() {
-                initEvents();
-            },
-            initEvents = function() {
-                // add navigation events
-                $navArrows.children( ':last' ).on( 'click', function() {
-                    slitslider.next();
-                    return false;
-                } );
-                $navArrows.children( ':first' ).on( 'click', function() {
-                    slitslider.previous();
-                    return false;
-                } );
-                $nav.each( function( i ) {
-                    $( this ).on( 'click', function( event ) {
-                        var $dot = $( this );
-                        if( !slitslider.isActive() ) {
-                            $nav.removeClass( 'nav-dot-current' );
-                            $dot.addClass( 'nav-dot-current' );
-                        }
-                        slitslider.jump( i + 1 );
-                        return false;
-                    } );
-                } );
-            };
-            return { init : init };
-    })();
-    Page.init();
-});
-
 
 $(document).ready(function(){
-    /* ========================================================================= */
-    /*  Portfolio
-    /* ========================================================================= */
+// 分类过滤排序插件
     var $projectWrapper = $('.project-wrapper');
     $projectWrapper.isotope({
         filter: '*',
@@ -83,10 +37,8 @@ $(document).ready(function(){
          return false;
     });
 
-	/* ========================================================================= */
-	/*	Menu item highlighting
-	/* ========================================================================= */
 
+// 单页首页翻页特效
 	// $('#nav').singlePageNav({
 	// 	offset: $('#nav').outerHeight(),
 	// 	filter: ':not(.external)',
@@ -101,7 +53,7 @@ $(document).ready(function(){
 	// 		console.log('滚动结束');
 	// 	}
 	// });
-
+// 顶部导航高度变化
     $(window).scroll(function () {
         if ($(window).scrollTop() > 10) {
             $(".navbar-brand a").css("color","#fff");
@@ -117,66 +69,13 @@ $(document).ready(function(){
 	/*	Fix Slider Height
 	/* ========================================================================= */
 
-    // Slider Height
+// 首页图片随屏幕高度变化
     var slideHeight = $(window).height();
     let W = $(window).width();
-    $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
+    // $('.sl-slider, .sl-content-wrapper').css('height',slideHeight);
     $(window).resize(function(){
-        $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
-        // $(".slider-1 img").css("height",slideHeight)
+        // $('.sl-slider, .sl-content-wrapper').css('height',slideHeight);
         $("bg-img").css('width',W)
     });
-	
-	$("#works, #testimonial").owlCarousel({	 
-		navigation : true,
-		pagination : false,
-		slideSpeed : 700,
-		paginationSpeed : 400,
-		singleItem:true,
-		navigationText: ["<i class='fa fa-angle-left fa-lg'></i>","<i class='fa fa-angle-right fa-lg'></i>"]
-	});
-
-
-	/* ========================================================================= */
-	/*	Featured Project Lightbox
-	/* ========================================================================= */
-
-	$(".fancybox").fancybox({
-		padding: 0,
-
-		openEffect : 'elastic',
-		openSpeed  : 650,
-
-		closeEffect : 'elastic',
-		closeSpeed  : 550,
-
-		closeClick : true,
-
-		beforeShow: function () {
-			this.title = $(this.element).attr('title');
-			this.title = '<h3>' + this.title + '</h3>' + '<p>' + $(this.element).parents('.portfolio-item').find('img').attr('alt') + '</p>';
-		},
-
-		helpers : {
-			title : {
-				type: 'inside'
-			},
-			overlay : {
-				css : {
-					'background' : 'rgba(0,0,0,0.8)'
-				}
-			}
-		}
-	});
 
 });
-
-
-// ========== END GOOGLE MAP ========== //
-
-var wow = new WOW ({
-	offset:       75,          // distance to the element when triggering the animation (default is 0)
-	mobile:       false,       // trigger animations on mobile devices (default is true)
-});
-wow.init();
-

File diff suppressed because it is too large
+ 0 - 3
frontend/saas-portal-web/static/js/modernizr-2.6.2.min.js


File diff suppressed because it is too large
+ 0 - 9
frontend/saas-portal-web/static/js/owl.carousel.min.js


File diff suppressed because it is too large
+ 0 - 1
frontend/saas-portal-web/static/js/wow.min.js


+ 5 - 3
frontend/saas-web/app/view/core/base/GridPanel.js

@@ -12,9 +12,11 @@ Ext.define('saas.view.core.base.GridPanel', {
     requires: [
         'Ext.grid.plugin.Exporter'
     ],
-    plugins: {
-        gridexporter: true
-    },
+    plugins: [{
+        ptype: 'gridexporter',
+    }, {
+        ptype: 'menuclipboard'
+    }],
 
     cls:'core-base-gridpanel',
     

+ 26 - 3
frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js

@@ -47,7 +47,7 @@ Ext.define('saas.view.core.dbfind.types.ProductDbfindTrigger', {
         width: 110
     }, {
         text: "单位",
-        dataIndex: "pr_spec",
+        dataIndex: "pr_unit",
         width: 80
     },{
         text: "品牌",
@@ -64,9 +64,32 @@ Ext.define('saas.view.core.dbfind.types.ProductDbfindTrigger', {
             var format = '0,000.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
-    },{
+    }, {
         text: "采购提前期",
         dataIndex: "pr_leadtime",
-        xtype:'hidden'
+        hidden: true
+    }, {
+        text: "仓库id",
+        dataIndex: "pr_whid",
+        hidden: true
+    }, {
+        text: "仓库编号",
+        dataIndex: "pr_whcode",
+        hidden: true
+    }, {
+        text: "仓库",
+        dataIndex: "pr_whname",
+        width: 200,
+        hidden: true
+    }, {
+        text: "最新采购单价",
+        dataIndex: "pr_purcprice",
+        xtype: 'numbercolumn',
+        hidden:true
+    }, {
+        text: "最新出货单价",
+        dataIndex: "pr_saleprice",
+        xtype: 'numbercolumn',
+        hidden:true
     }]
 });

+ 25 - 23
frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js

@@ -11,27 +11,6 @@ Ext.define('saas.view.core.dbfind.types.ProductMultiDbfindTrigger', {
     dataUrl: '/api/document/product/list',
     addXtype: 'document-product-formpanel',
     addTitle: '物料资料',
-    //放大镜赋值设置
-    dbfinds: [{
-        from: 'id',
-        to: 'pd_prodid',
-        ignore: true
-    }, {
-        from: 'pr_code',
-        to: 'pd_prodcode'
-    }, {
-        from: 'pr_detail',
-        to: 'pr_detail'
-    }, {
-        from: 'pr_spec',
-        to: 'pr_spec'
-    }, {
-        from: 'pr_purcprice',
-        to: 'pd_price'
-    }, {
-        from: 'pr_zxbzs',
-        to: 'pr_zxbzs'
-    }],
     //联想设置
     dbtpls: [{
         field: 'pr_code',
@@ -75,7 +54,7 @@ Ext.define('saas.view.core.dbfind.types.ProductMultiDbfindTrigger', {
         width: 110
     }, {
         text: "单位",
-        dataIndex: "pr_spec",
+        dataIndex: "pr_unit",
         width: 80
     },{
         text: "品牌",
@@ -95,7 +74,30 @@ Ext.define('saas.view.core.dbfind.types.ProductMultiDbfindTrigger', {
     }, {
         text: "采购提前期",
         dataIndex: "pr_leadtime",
-        xtype:'hidden'
+        hidden: true
+    }, {
+        text: "仓库id",
+        dataIndex: "pr_whid",
+        hidden: true
+    }, {
+        text: "仓库编号",
+        dataIndex: "pr_whcode",
+        hidden: true
+    }, {
+        text: "仓库",
+        dataIndex: "pr_whname",
+        width: 200,
+        hidden: true
+    }, {
+        text: "最新采购单价",
+        dataIndex: "pr_purcprice",
+        xtype: 'numbercolumn',
+        hidden:true
+    }, {
+        text: "最新出货单价",
+        dataIndex: "pr_saleprice",
+        xtype: 'numbercolumn',
+        hidden:true
     }]
 
 });

+ 5 - 1
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -379,6 +379,10 @@ Ext.define('saas.view.core.form.FormPanel', {
                 return;
             }
 
+            if(item.readOnly){
+                item.defaultReadOnly = item.readOnly;
+            }
+
             if (bind) {
                 if (!Ext.isString(bind)) {
                     Ext.apply(bind, {
@@ -433,7 +437,7 @@ Ext.define('saas.view.core.form.FormPanel', {
 
         Ext.Array.each(items, function(item) {
             if(typeof item.setReadOnly  == 'function') {
-               item.setReadOnly (!able);
+               item.setReadOnly (item.defaultReadOnly || !able);
             }
         });
     },

+ 6 - 44
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -139,9 +139,11 @@ Ext.define('saas.view.core.report.ReportPanel', {
                 sortableColumns: false,
                 enableColumnHide: false,
                 rowLines: false,
-                plugins: {
-                    gridexporter: true
-                },
+                plugins: [{
+                    ptype: 'gridexporter',
+                }, {
+                    ptype: 'menuclipboard'
+                }],
                 features: [{
                     ftype: 'groupingsummary',
                     hideGroupedHeader: false,
@@ -159,15 +161,6 @@ Ext.define('saas.view.core.report.ReportPanel', {
                     displayInfo: true,
                     store: store
                 }],
-                actions: {
-                    copy: {
-                        iconCls: 'x-fa fa-copy',
-                        text: '复制单元格',
-                        handler: function() {
-                            me.onCopy(me.selectedData);
-                        }
-                    }
-                },
                 viewConfig: {
                     deferEmptyText: false,
                     emptyText: '无数据',
@@ -217,7 +210,6 @@ Ext.define('saas.view.core.report.ReportPanel', {
             proxy: {
                 type: 'ajax',
                 url: me.listUrl,
-                // url: 'http://192.168.253.58:8560/api/sale/report/saleDetail',
                 timeout: 8000,
                 actionMethods: {
                     read: 'GET'
@@ -276,10 +268,6 @@ Ext.define('saas.view.core.report.ReportPanel', {
                 }
             },
             listeners: {
-                load: function() {
-                    var grid = me.items.items[1];
-                    grid.fireEvent('mysummarychange', grid);
-                },
                 beforeload: function (store, op) {
                     var condition = me.getConditions(),
                     defaultCondition = me.defaultCondition,
@@ -578,31 +566,5 @@ Ext.define('saas.view.core.report.ReportPanel', {
 
     applyParams: function(p) {
         return p;
-    },
-
-    getContextMenu: function() {
-        var me = this,
-        grid = me.items.items[1];
-
-        return grid.contextMenu || (grid.contextMenu = grid.add({
-            xtype: 'menu',
-            items: [
-                // Actions can be converted into MenuItems
-                '@copy',
-            ]
-        }));
-    },
-
-    onCopy: function(text) {
-		var target = Ext.DomHelper.append(document.body, {
-			tag: 'textarea',
-			style: 'opacity: 0;position: absolute;top: -10000px;right: 0;',
-			html: text
-		});
-		target.focus();
-		target.select();
-	    document.execCommand('Copy');
-	    target.blur();
-	    document.body.removeChild(target);
-	},
+    }
 });

+ 3 - 0
frontend/saas-web/app/view/document/kind/Kind.js

@@ -64,6 +64,9 @@ Ext.define('saas.view.document.kind.Kind', {
         margin: '10 0 0 0',
         flex: 1,
         frame:true,
+        plugins: [{
+            ptype: 'menuclipboard'
+        }],
         bind:{
             selection: '{selectedCompany}'
         },

+ 1 - 1
frontend/saas-web/app/view/home/infoCardList/Payment.js

@@ -36,7 +36,7 @@ Ext.define('saas.view.home.infoCardList.Payment', {
     }, {
         text: '供应商名称',
         dataIndex: 'pi_vendname',
-        width: 150
+        width: 250
     }, {
         text: '审核状态',
         align: 'center',

+ 17 - 23
frontend/saas-web/app/view/home/infoCardList/SaleOut.js

@@ -19,46 +19,51 @@ Ext.define('saas.view.home.infoCardList.SaleOut', {
     }, {
         text: '单据编号',
         dataIndex: 'sa_code',
-        width: 200
+        width: 150
     }, {
         text: '单据状态',
         align: 'center',
         dataIndex: 'sa_status',
-        width: 120
+        width: 90
+    }, {
+        text: '业务状态',
+        align: 'center',
+        dataIndex: 'sa_sendstatus',
+        width: 90
     }, {
         text: '单据日期',
         dataIndex: 'sa_date',
         xtype: 'datecolumn',
-        width: 200
+        width: 110
     }, {
         text: '客户名称',
         dataIndex: 'sa_custname',
-        width: 120
+        width: 250
     }, {
         text: '明细序号',
         dataIndex: 'sd_detno',
         xtype: 'numbercolumn',
-        width: 120,
+        width: 100,
         renderer: function (v) {
             return Ext.util.Format.number(v, '0');
         }
     }, {
         text: '物料编号',
         dataIndex: 'sd_prodcode',
-        width: 120
+        width: 150
     }, {
         text: '物料名称',
         dataIndex: 'pr_detail',
-        width: 120
+        width: 200
     }, {
         text: '物料规格',
         dataIndex: 'pr_spec',
-        width: 120
+        width: 150
     }, {
         text: '数量',
         dataIndex: 'sd_qty',
         xtype: 'numbercolumn',
-        width: 120,
+        width: 110,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
@@ -69,7 +74,7 @@ Ext.define('saas.view.home.infoCardList.SaleOut', {
         text: '单价',
         dataIndex: 'sd_price',
         xtype: 'numbercolumn',
-        width: 120,
+        width: 110,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
@@ -80,7 +85,7 @@ Ext.define('saas.view.home.infoCardList.SaleOut', {
         text: '已转数',
         dataIndex: 'sd_yqty',
         xtype: 'numbercolumn',
-        width: 120,
+        width: 110,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
@@ -91,18 +96,7 @@ Ext.define('saas.view.home.infoCardList.SaleOut', {
         text: '已出货数',
         dataIndex: 'sd_sendqty',
         xtype: 'numbercolumn',
-        width: 120,
-        renderer: function (v) {
-            var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
-            var format = '0.' + xr.join();
-            return Ext.util.Format.number(v, format);
-        },
-    }, {
-        text: '已审核采购单数',
-        dataIndex: 'sd_pdqty',
-        xtype: 'numbercolumn',
-        width: 180,
+        width: 110,
         renderer: function (v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');

+ 1 - 1
frontend/saas-web/app/view/home/infoCardList/UnauditCheckIn.js

@@ -36,7 +36,7 @@ Ext.define('saas.view.home.infoCardList.UnauditCheckIn', {
     }, {
         text: '供应商名称',
         dataIndex: 'pi_vendname',
-        width: 150
+        width: 250
     }, {
         text: '审核状态',
         align: 'center',

+ 8 - 6
frontend/saas-web/app/view/main/Navigation.scss

@@ -127,16 +127,17 @@ $nav-font-color-over: #fff;
         border-bottom-right-radius: 4px;
 
         .menu {
+            width: 200px;
+            letter-spacing: 1px;
+            display: flex;
+            flex-direction: column;
 
-            &:first-child {
+            &:nth-child(2) {
                 .menu-content {
-                    border-right: 1px dashed #dce2e4;
+                    border-left: 1px dashed #dce2e4;
                 }
             }
 
-            width: 200px;
-            letter-spacing: 1px;
-
             .menu-title {
                 padding-left: 30px;
                 background: #EEF9FE;
@@ -152,7 +153,8 @@ $nav-font-color-over: #fff;
             }
 
             .menu-content {
-
+                height: 100%;
+                
                 .menuitem {
                     padding-left: 25px;
                     margin: 6px;

+ 1 - 1
frontend/saas-web/app/view/money/payBalance/FormPanel.js

@@ -30,7 +30,7 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
         name: 'id',
         fieldLabel: 'id'
     }, {
-        xtype: 'textfield',
+        xtype: 'hidden',
         name: 'pb_kind',
         fieldLabel: '单据类型',
         defaultValue: '付款单',

+ 1 - 1
frontend/saas-web/app/view/money/recBalance/FormPanel.js

@@ -33,7 +33,7 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
         name: 'rb_custid',
         fieldLabel: '客户ID'
     }, {
-        xtype: 'textfield',
+        xtype: 'hidden',
         name: 'rb_kind',
         fieldLabel: '单据类型',
         defaultValue: '收款单',

+ 6 - 6
frontend/saas-web/app/view/money/report/CustomerCheck.js

@@ -11,7 +11,7 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
     listUrl: '/api/money/report/customercheck',
     defaultCondition: null,
     reportTitle: '客户对账单',
-    QueryWidth: 0.2,
+    QueryWidth: 0.4,
     autoLoad: false,
     //筛选:客户、日期(必填)
     searchItems: [{
@@ -26,11 +26,11 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
             }
         }
     }, {
-        xtype: 'monthdatefield',
-        name: 'ym',
-        fieldLabel: '期初日期',
-        columnWidth: 0.2
-    }, {
+    //     xtype: 'monthdatefield',
+    //     name: 'ym',
+    //     fieldLabel: '期初日期',
+    //     columnWidth: 0.2
+    // }, {
         xtype: 'condatefield',
         name: 'pi_date',
         fieldLabel: '单据日期',

+ 14 - 4
frontend/saas-web/app/view/money/report/PayDetail.js

@@ -39,10 +39,16 @@ Ext.define('saas.view.money.report.PayDetail', {
             dataIndex: 'pi_inoutno',
             width: 150
         }, {
-            text: '单据类型',
-            dataIndex: 'pi_class',
-            width: 110
-        }, {
+            text:'供应商编号',
+            dataIndex:'pi_vendcode',
+            width: 150,
+            hidden: true
+        },{
+            text:'供应商名称',
+            width: 200,
+            dataIndex:'pi_vendname',
+            hidden: true
+        },{
             text: '采购员',
             dataIndex: 'pu_buyercode',
             width: 110
@@ -131,5 +137,9 @@ Ext.define('saas.view.money.report.PayDetail', {
             text: '备注',
             dataIndex: 'pi_remark',
             width: 250
+        }, {
+            text: '供应商名称',
+            dataIndex: 'pi_vendname',
+            hidden:true
         }]
 });

+ 22 - 8
frontend/saas-web/app/view/money/report/RecDetail.js

@@ -35,6 +35,16 @@ Ext.define('saas.view.money.report.RecDetail', {
             dataIndex: 'pi_inoutno',
             width: 150
         }, {
+            text: '客户编号',
+            dataIndex: 'pi_custcode',
+            width: 150,
+            hidden: true
+        }, {
+            text: '客户名称',
+            dataIndex: 'pi_custname',
+            width: 200,
+            hidden: true
+        },{
             text: '单据类型',
             dataIndex: 'pi_class',
             width: 110
@@ -44,16 +54,16 @@ Ext.define('saas.view.money.report.RecDetail', {
             width: 110
         }, {
             text: '单据日期',
+            xtype: 'datecolumn',
             dataIndex: 'rb_date',
             width: 110
-        },
-        // }, {
-        //     text: '序号',
-        //     dataIndex: 'pd_pdno',
-        //     xtype: 'numbercolumn',
-        //     width: 80
-        // },{
-        {
+        }, {
+            text: '序号',
+            dataIndex: 'pd_pdno',
+            xtype: 'numbercolumn',
+            width: 80,
+            hidden: true
+        },{
             text:'期初应收',
             dataIndex:'cu_beginaramount',
             xtype: 'numbercolumn',
@@ -125,5 +135,9 @@ Ext.define('saas.view.money.report.RecDetail', {
             text: '备注',
             dataIndex: 'pd_unit',
             width: 250
+        }, {
+            text: '客户名称',
+            dataIndex: 'pi_custname',
+            hidden:true
         }]
 });

+ 6 - 6
frontend/saas-web/app/view/money/report/VendorCheck.js

@@ -11,7 +11,7 @@ Ext.define('saas.view.money.report.VendorCheck', {
     listUrl: '/api/money/report/vendorCheck',
     defaultCondition: null,
     reportTitle: '供应商对账单',
-    QueryWidth:0.2,
+    QueryWidth:0.4,
     autoLoad:false,
     //筛选:供应商、日期(必填)
     searchItems: [ {
@@ -26,11 +26,11 @@ Ext.define('saas.view.money.report.VendorCheck', {
             }
         }
     }, {
-        xtype: 'monthdatefield',
-        name: 'ym',
-        fieldLabel: '期初日期',
-        columnWidth: 0.2
-    }, {
+    //     xtype: 'monthdatefield',
+    //     name: 'ym',
+    //     fieldLabel: '期初日期',
+    //     columnWidth: 0.2
+    // }, {
         xtype: 'condatefield',
         name: 'pi_date',
         fieldLabel: '单据日期',

+ 50 - 0
frontend/saas-web/app/view/money/verification/FormPanelController.js

@@ -485,6 +485,56 @@ Ext.define('saas.view.money.verification.FormPanelController', {
         return defaultCondition;
     },
 
+    /**
+     * 清空所有从表数据
+     */
+    clearDetails: function() {
+        var me = this;
+        
+        me.clearDetail0();
+        me.clearDetail1();
+    },
+
+    /**
+     * 清空第一个从表数据
+     */
+    clearDetail0: function(f, n, o) {
+        var me = this,
+        form = me.getView(),
+        grid = form.query('detailGridField')[0];
+        me.clearDetail(grid);
+    },
+
+    /**
+     * 清空第二个从表数据
+     */
+    clearDetail1: function() {
+        var me = this,
+        form = me.getView(),
+        grid = form.query('detailGridField')[1];
+        me.clearDetail(grid);
+    },
+
+    /**
+     * 清空一个从表数据
+     */
+    clearDetail: function(grid) {
+        var datas = [],
+        emptyRows = grid.emptyRows,
+        detnoColumn = grid.detnoColumn,
+        detno = 0,
+        store = grid.getStore();
+        
+        Ext.Array.each(new Array(emptyRows), function() {
+            detno += 1;
+            var data = {};
+            data[detnoColumn] = detno;
+            datas.push(data);
+        })
+        store.removeAll();
+        store.add(datas);
+    },
+
     onSave: function() {
         var me = this,
             form = me.getView(),

+ 1 - 1
frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js

@@ -41,7 +41,7 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
         allowBlank: true,
         columnWidth: 0
     },{
-        xtype : "textfield", 
+        xtype : "hidden", 
         name : "pi_class", 
         fieldLabel : "单据类型", 
         readOnly:true,

+ 1 - 0
frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js

@@ -66,6 +66,7 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
         name: 'pd_whname',
         fieldLabel: '仓库',
         emptyText:'请输入仓库编号或名称',
+        showDetail: true
     }, {
         xtype: 'textfield',
         name: 'pi_pucode',

+ 1 - 1
frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js

@@ -35,7 +35,7 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
         name: 'pi_ioid',
         fieldLabel: 'pi_ioid'
     },{
-        xtype : "textfield", 
+        xtype : "hidden", 
         name : "pi_class", 
         fieldLabel : "单据类型", 
         readOnly:true,

+ 1 - 3
frontend/saas-web/app/view/sale/sale/FormPanel.js

@@ -64,9 +64,7 @@ Ext.define('saas.view.sale.sale.FormPanel', {
         allowBlank : false
     }, {
         name : "sa_toplace", 
-        editable:false,
-        xtype : "remotecombo", 
-        storeUrl:'/api/document/address/getCombo',
+        xtype : "textfield", 
         fieldLabel : "交货地址", 
         allowBlank : false, 
         columnWidth : 0.5,

+ 5 - 11
frontend/saas-web/app/view/sale/sale/FormPanelController.js

@@ -54,21 +54,15 @@ Ext.define('saas.view.sale.sale.FormPanelController', {
                 beforerender: function (f) {
                     Ext.apply(f, {
                         dbfinds: [{
-                            from: 'pr_code',
-                            to: 'sd_prodcode'
+                            from: 'pr_code', to: 'sd_prodcode'
                         }, {
-                            from: 'pr_saleprice',
-                            to: 'sd_price'
+                            from: 'pr_saleprice', to: 'sd_price'
                         }, {
-                            from: 'pr_detail',
-                            to: 'pr_detail'
+                            from: 'pr_detail', to: 'pr_detail'
                         }, {
-                            from: 'pr_spec',
-                            to: 'pr_spec'
+                            from: 'pr_spec', to: 'pr_spec'
                         }, {
-                            from: 'id',
-                            to: 'sd_prodid',
-                            ignore: true
+                            from: 'id', to: 'sd_prodid', ignore: true
                         }],
                     });
 

+ 1 - 1
frontend/saas-web/app/view/sale/saleIn/FormPanel.js

@@ -30,7 +30,7 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
         name: 'id',
         fieldLabel: 'id'
     }, {
-        xtype : "textfield", 
+        xtype : "hidden", 
         name : "pi_class", 
         fieldLabel : "单据类型", 
         readOnly:true,

+ 13 - 11
frontend/saas-web/app/view/sale/saleIn/FormPanelController.js

@@ -29,19 +29,21 @@ Ext.define('saas.view.sale.saleIn.FormPanelController', {
                 beforerender: function (f) {
                     Ext.apply(f, {
                         dbfinds: [{
-                                from: 'id',
-                                to: 'pd_prodid',
-                                ignore: true
-                            },
-                            {
-                                from: 'pr_code',
-                                to: 'pd_prodcode'
+                                from: 'id', to: 'pd_prodid', ignore: true 
+                            }, { 
+                                from: 'pr_code', to: 'pd_prodcode' 
                             }, {
-                                from: 'pr_detail',
-                                to: 'pr_detail'
+                                from: 'pr_detail', to: 'pr_detail'
                             }, {
-                                from: 'pr_spec',
-                                to: 'pr_spec'
+                                from: 'pr_spec', to: 'pr_spec'
+                            }, {
+                                from:'pr_whid',to:'pd_whid'
+                            }, {
+                                from:'pr_whcode',to:'pd_whcode'
+                            }, {
+                                from:'pr_whname',to:'pd_whname'
+                            }, {
+                                from:'pr_saleprice',to:'pd_sendprice'
                             }
                         ],
                     });

+ 1 - 1
frontend/saas-web/app/view/sale/saleOut/FormPanel.js

@@ -40,7 +40,7 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
         name: 'id',
         fieldLabel: 'id'
     }, {
-        xtype : "textfield", 
+        xtype : "hidden", 
         name : "pi_class", 
         fieldLabel : "单据类型", 
         readOnly:true,

+ 9 - 2
frontend/saas-web/app/view/sale/saleOut/FormPanelController.js

@@ -27,13 +27,20 @@ Ext.define('saas.view.sale.saleout.FormPanelController', {
                     Ext.apply(f,{
                         dbfinds:[{
                             from:'id',to:'pd_prodid',ignore:true 
-                        },
-                        {
+                        }, {
                             from:'pr_code',to:'pd_prodcode'
                         }, {
                             from:'pr_detail',to:'pr_detail'
                         }, {
                             from:'pr_spec',to:'pr_spec'
+                        }, {
+                            from:'pr_whid',to:'pd_whid'
+                        }, {
+                            from:'pr_whcode',to:'pd_whcode'
+                        }, {
+                            from:'pr_whname',to:'pd_whname'
+                        }, {
+                            from:'pr_saleprice',to:'pd_sendprice'
                         }],
                     }) ;   
 

+ 1 - 1
frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js

@@ -31,7 +31,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanel', {
         allowBlank: true,
         columnWidth: 0
     },{
-        xtype : "textfield", 
+        xtype : "hidden", 
         name : "pi_class", 
         fieldLabel : "单据类型", 
         readOnly:true,

+ 14 - 15
frontend/saas-web/app/view/stock/inventory/EditDataList.js

@@ -17,17 +17,17 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         'Ext.selection.CellModel',
         'Ext.grid.plugin.Exporter'
     ],
-    plugins: {
-        cellediting: {
-            clicksToEdit: 1,
-            listeners: {
-                // edit: function(editor, context, eOpts) {
-                //     context.column.fireEvent('edit', context.value);
-                // }
-            }
-        },
-        gridexporter: true
+    plugins: [ 
+    {
+        ptype: 'cellediting',
+        clicksToEdit: 1
     },
+    {
+        ptype: 'gridexporter',
+    },
+    {
+        ptype: 'menuclipboard'
+    }],
     tbar: [{
         xtype: 'warehouseDbfindTrigger',
         name: 'wh_description',
@@ -44,8 +44,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         name : "pr_kind",
         bind: '{form.pr_kind}',
         emptyText : "类型",
-        hiddenBtn:true, 
-        allowBlank : false,
+        hiddenBtn:true,
         width:150
     },{
         // xtype: 'productDbfindTrigger',
@@ -54,9 +53,9 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         emptyText:'输入物料编号或名称',
         width:200,
         bind: '{form.pr_detail}',
-        getCondition: function(value) {
-            if(value) {
-                return 'pr_detail like %' + value + '% or pr_code like%' + value + '%';
+        getCondition: function(v) {
+            if(v) {
+                return "(upper(pr_code) like '%"+v.toUpperCase()+"%' or upper(pr_detail) like '%"+v.toUpperCase()+"%')";
             }else {
                 return '1 = 1';
             }

+ 10 - 8
frontend/saas-web/app/view/stock/make/FormPanel.js

@@ -391,14 +391,16 @@ Ext.define('saas.view.stock.make.FormPanel', {
         controller = me.getController(),
         viewModel = me.getViewModel(),
         grid = me.down('detailGridField'),
-        data = grid.getTrueData()
-        str='';
-        Ext.Array.each(data,function(item){
-            if(item.mm_price==0){     
-                str=str+item.mm_detno+'行'+item.mm_prodcode+'物料成本单价为0!'+'<br>'
-            }
-        });
-    
+        data = grid.getTrueData(),
+        str='',
+        type = viewModel.get('ma_type');
+        if ('拆件' == type) {
+            Ext.Array.each(data,function(item){
+                if(item.mm_price==0){     
+                    str=str+item.mm_detno+'行'+item.mm_prodcode+'物料成本单价为0!'+'<br>'
+                }
+            });
+        }
         if(str!=''){
             saas.util.BaseUtil.showConfirm('提示',str)
             .then(function(y) {

+ 0 - 53
frontend/saas-web/app/view/stock/make/FormPanelController.js

@@ -101,59 +101,6 @@ Ext.define('saas.view.stock.make.FormPanelController', {
 
         });
     },
-    initCopyData: function (formData) {
-        var me = this;
-        var form = this.getView();
-        var detailCount = form.detailCount;
-        var main = formData.main;
-        var auditTexts = form.auditTexts;
-
-        // 单号、id清空
-        main[form._idField] = 0;
-        main[form._codeField] = '';
-        // 单据状态为录入状态(未审核)
-        main[form._statusCodeField] = auditTexts.unAuditCode;
-        main[form._statusField] = auditTexts.unAuditText;
-        //录入人,录入日期,审核人,审核日期清空
-        main['creatorId'] = null;
-        main['creatorName'] = null;
-        main['createTime'] = null;
-        main['updaterId'] = null;
-        main['updaterName'] = null;
-        main['updateTime'] = null;
-        main[form._auditmanField] = null;
-        main[form._auditdateField] = null;
-        //数量,单价,金额(主表)
-        main['ma_qty'] = 0;
-        main['ma_price'] = 0;
-        main['ma_total'] = 0;
-        for (var k in main) {
-            // 主表日期改为当前日期
-            if (saas.util.BaseUtil.isDateString(main[k])) {
-                main[k] = Ext.Date.format(new Date, 'Y-m-d H:i:s');
-            }
-        }
-
-        for (var j = 0; j < detailCount; j++) {
-            var detail = formData['detail' + j];
-            for (var x = 0; x < detail.length; x++) {
-                var d = detail[x];
-
-                for (var k in d) {
-                    // 从表id清空
-                    delete d['id'];
-                    delete d['mm_price'];
-                    delete d['mm_qty'];
-                    delete d['mm_amount'];
-                    // 从表日期清空
-                    if (saas.util.BaseUtil.isDateString(d[k])) {
-                        d[k] = '';
-                    }
-                }
-            }
-        }
-        return me.myInitCopyData(formData);;
-    },
     price_change: function (v) {
         var me = this,
             viewModel = me.getViewModel(),

+ 1 - 1
frontend/saas-web/app/view/stock/otherIn/FormPanel.js

@@ -34,7 +34,7 @@ Ext.define('saas.view.stock.otherIn.FormPanel', {
         allowBlank: true,
         columnWidth: 0
     },{
-        xtype : "textfield", 
+        xtype : "hidden", 
         name : "pi_class", 
         fieldLabel : "单据类型", 
         readOnly:true,

+ 1 - 1
frontend/saas-web/app/view/stock/otherOut/FormPanel.js

@@ -33,7 +33,7 @@ Ext.define('saas.view.stock.otherOut.FormPanel', {
         allowBlank: true,
         columnWidth: 0
     }, {
-        xtype: "textfield",
+        xtype: "hidden",
         name: "pi_class",
         fieldLabel: "单据类型",
         readOnly: true,

+ 4 - 0
frontend/saas-web/ext/packages/ux/src/feature/MySummary.js

@@ -30,6 +30,10 @@ Ext.define('Ext.ux.feature.MySummary', {
 
         me.callParent([grid]);
 
+        grid.store.on('load', function() {
+            this.fireEvent('mysummarychange', grid);
+        }, grid);
+
         grid.on({
             mysummarychange: me.refreshData,
             scope: me

+ 8 - 8
frontend/saas-web/resources/json/navigation.json

@@ -29,6 +29,10 @@
             "id": "report-purchasepay",
             "text": "采购付款一览表",
             "viewType": "purchase-report-purchasepay"
+        }, {
+            "text": "供应商对账单",
+            "id": "monry-report-vendorcheck",
+            "viewType":"monry-report-vendorcheck"
         }]
     }]
 }, {
@@ -66,6 +70,10 @@
             "id": "report-saleprofit",
             "text": "销售利润表",
             "viewType": "sale-report-saleprofit"
+        }, {
+            "text": "客户对账单",
+            "id": "monry-report-customercheck",
+            "viewType":"monry-report-customercheck"
         }]
     }]
 }, {
@@ -153,17 +161,9 @@
     }, {
         "text": "报表",
         "items": [{
-            "text": "供应商对账单",
-            "id": "monry-report-vendorcheck",
-            "viewType":"monry-report-vendorcheck"
-        }, {
             "text": "应付账款明细表",
             "id": "monry-report-paydetail",
             "viewType":"monry-report-paydetail"
-        }, {
-            "text": "客户对账单",
-            "id": "monry-report-customercheck",
-            "viewType":"monry-report-customercheck"
         }, {
             "text": "应收账款明细表",
             "id": "monry-report-recdetail",

Some files were not shown because too many files changed in this diff