Explorar el Código

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

rainco hace 7 años
padre
commit
a3506e7451
Se han modificado 100 ficheros con 1292 adiciones y 660 borrados
  1. 9 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/AddApplyDTO.java
  2. 1 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  3. 29 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/SystemRemindServiceImpl.java
  4. 2 2
      applications/commons/commons-server/src/main/resources/mapper/SystemRemindMapper.xml
  5. 1 1
      applications/document/document-server/src/main/resources/mapper/AddressMapper.xml
  6. 1 1
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  7. 1 0
      applications/document/document-server/src/main/resources/mapper/FundinouttypeMapper.xml
  8. 1 1
      applications/document/document-server/src/main/resources/mapper/ProductbrandMapper.xml
  9. 1 1
      applications/document/document-server/src/main/resources/mapper/ProducttypeMapper.xml
  10. 1 1
      applications/document/document-server/src/main/resources/mapper/ProductunitMapper.xml
  11. 1 1
      applications/document/document-server/src/main/resources/mapper/VendorkindMapper.xml
  12. 2 1
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/VerificationFormDTO.java
  13. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/MoneyApplicatiion.java
  14. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java
  15. 4 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Fundtran.java
  16. 4 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Othsp.java
  17. 4 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Othte.java
  18. 4 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Pay.java
  19. 4 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Rec.java
  20. 3 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  21. 3 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  22. 3 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java
  23. 3 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  24. 3 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  25. 3 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  26. 106 56
      frontend/saas-portal-web/src/components/conenter/addenterprise.vue
  27. 61 47
      frontend/saas-portal-web/src/components/conenter/company.vue
  28. 47 6
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  29. 27 12
      frontend/saas-portal-web/src/components/conenter/home.vue
  30. 1 0
      frontend/saas-portal-web/src/store/index.js
  31. 12 7
      frontend/saas-portal-web/static/css/gongsi.css
  32. BIN
      frontend/saas-portal-web/static/img/list.png
  33. 1 1
      frontend/saas-web/app/view/core/base/GridPanel.js
  34. 2 2
      frontend/saas-web/app/view/core/dbfind/AddMultiDbfindGridPanel.js
  35. 2 2
      frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js
  36. 2 2
      frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js
  37. 16 16
      frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js
  38. 18 14
      frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js
  39. 2 2
      frontend/saas-web/app/view/core/form/FormPanel.js
  40. 1 0
      frontend/saas-web/app/view/core/form/FormPanelModel.js
  41. 13 64
      frontend/saas-web/app/view/core/report/ReportPanel.js
  42. 2 2
      frontend/saas-web/app/view/core/tab/Controller.js
  43. 2 2
      frontend/saas-web/app/view/document/address/DataListModel.js
  44. 2 2
      frontend/saas-web/app/view/document/bankinformation/DataListModel.js
  45. 2 9
      frontend/saas-web/app/view/document/bom/FormPanel.js
  46. 2 2
      frontend/saas-web/app/view/document/employee/DataListModel.js
  47. 8 8
      frontend/saas-web/app/view/document/kind/KindModel.js
  48. 20 20
      frontend/saas-web/app/view/document/product/BasePanel.js
  49. 41 41
      frontend/saas-web/app/view/document/product/FormPanel.js
  50. 2 2
      frontend/saas-web/app/view/document/productbrand/DataListModel.js
  51. 2 2
      frontend/saas-web/app/view/document/productunit/DataListModel.js
  52. 2 2
      frontend/saas-web/app/view/document/warehouse/DataListModel.js
  53. 1 1
      frontend/saas-web/app/view/home/infoCardList/InfoList.js
  54. 2 2
      frontend/saas-web/app/view/home/infoCardList/Payment.js
  55. 2 2
      frontend/saas-web/app/view/home/infoCardList/PurchaseIn.js
  56. 1 1
      frontend/saas-web/app/view/home/infoCardList/Recment.js
  57. 1 1
      frontend/saas-web/app/view/home/infoCardList/SaleOut.js
  58. 2 2
      frontend/saas-web/app/view/home/infoCardList/UnauditCheckIn.js
  59. 1 1
      frontend/saas-web/app/view/home/infoCardList/UnauditSaleOut.js
  60. 44 7
      frontend/saas-web/app/view/main/Main.js
  61. 28 0
      frontend/saas-web/app/view/main/Main.scss
  62. 120 0
      frontend/saas-web/app/view/main/MainController.js
  63. 4 0
      frontend/saas-web/app/view/money/fundtransfer/FormPanelModel.js
  64. 1 1
      frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js
  65. 1 1
      frontend/saas-web/app/view/money/othreceipts/FormPanel.js
  66. 1 1
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  67. 1 0
      frontend/saas-web/app/view/money/payBalance/FormPanelModel.js
  68. 4 0
      frontend/saas-web/app/view/money/recBalance/FormPanelModel.js
  69. 1 8
      frontend/saas-web/app/view/money/report/AccountDetails.js
  70. 6 6
      frontend/saas-web/app/view/money/report/CustomerCheck.js
  71. 2 2
      frontend/saas-web/app/view/money/report/ProfitDetail.js
  72. 6 6
      frontend/saas-web/app/view/money/report/VendorCheck.js
  73. 4 0
      frontend/saas-web/app/view/money/verification/FormPanelModel.js
  74. 34 9
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  75. 6 0
      frontend/saas-web/app/view/purchase/purchase/FormPanelController.js
  76. 21 17
      frontend/saas-web/app/view/purchase/purchase/QueryPanel.js
  77. 54 30
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js
  78. 6 0
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js
  79. 19 15
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  80. 49 26
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js
  81. 6 0
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js
  82. 19 15
      frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js
  83. 6 6
      frontend/saas-web/app/view/purchase/report/Purchase.js
  84. 3 4
      frontend/saas-web/app/view/sale/report/Sale.js
  85. 4 4
      frontend/saas-web/app/view/sale/report/SaleProfit.js
  86. 57 15
      frontend/saas-web/app/view/sale/sale/FormPanel.js
  87. 6 0
      frontend/saas-web/app/view/sale/sale/FormPanelController.js
  88. 17 9
      frontend/saas-web/app/view/sale/sale/QueryPanel.js
  89. 54 28
      frontend/saas-web/app/view/sale/saleIn/FormPanel.js
  90. 6 0
      frontend/saas-web/app/view/sale/saleIn/FormPanelController.js
  91. 18 2
      frontend/saas-web/app/view/sale/saleIn/QueryPanel.js
  92. 58 32
      frontend/saas-web/app/view/sale/saleOut/FormPanel.js
  93. 6 0
      frontend/saas-web/app/view/sale/saleOut/FormPanelController.js
  94. 18 6
      frontend/saas-web/app/view/sale/saleOut/QueryPanel.js
  95. 32 9
      frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js
  96. 6 0
      frontend/saas-web/app/view/stock/appropriationInOut/FormPanelController.js
  97. 13 9
      frontend/saas-web/app/view/stock/appropriationInOut/QueryPanel.js
  98. 1 1
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  99. 48 36
      frontend/saas-web/app/view/stock/make/FormPanel.js
  100. 6 0
      frontend/saas-web/app/view/stock/make/FormPanelController.js

+ 9 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/AddApplyDTO.java

@@ -15,6 +15,7 @@ public class AddApplyDTO extends CommonBaseDTO implements Serializable {
     private String username;
     private String mobile;
     private String roles;
+    private String roleNames;
     /**
      * 审批状态:  2.待处理  0.不同意   1.同意
      */
@@ -22,6 +23,14 @@ public class AddApplyDTO extends CommonBaseDTO implements Serializable {
     private Long creatorId;
     private Long companyId;
 
+    public String getRoleNames() {
+        return roleNames;
+    }
+
+    public void setRoleNames(String roleNames) {
+        this.roleNames = roleNames;
+    }
+
     public Long getCompanyId() {
         return companyId;
     }

+ 1 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -69,6 +69,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     PRODUCT_ISCLOSE(79506, "物料已关闭"),
     CUSTOMER_ISCLOSE(79507, "客户资料已关闭"),
     REQUIREDFIELD_NULL(79508,"存在必填字段为空"),
+    USER_EXIST(79509, ""),
 
     //采购 70000-71999
     PURCCHECKIN_POST_ERROR(70000,""),

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

@@ -3,13 +3,19 @@ package com.usoftchina.saas.commons.service.impl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.account.api.AccountApi;
+import com.usoftchina.saas.account.api.CompanyApi;
 import com.usoftchina.saas.account.dto.AccountDTO;
+import com.usoftchina.saas.account.dto.CompanyDTO;
+import com.usoftchina.saas.account.dto.RoleBaseDTO;
 import com.usoftchina.saas.commons.dto.AddApplyDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.mapper.SystemRemindMapper;
 import com.usoftchina.saas.commons.po.AddApply;
 import com.usoftchina.saas.commons.service.SystemRemindService;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.exception.BizException;
+import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.ObjectUtils;
@@ -31,9 +37,17 @@ public class SystemRemindServiceImpl implements SystemRemindService {
     private SystemRemindMapper systemRemindMapper;
     @Autowired
     private AccountApi accountApi;
+    @Autowired
+    private CompanyApi companyApi;
 
     @Override
     public void save(AddApplyDTO addApplyDTO) {
+        //校验这个人是否已经在此企业
+        AccountDTO accountDTO = accountApi.getAccount(addApplyDTO.getMobile()).getData();
+        CompanyDTO companyDTO = companyApi.getCompanyByName(addApplyDTO.getCompanyName()).getData();
+        if (!ObjectUtils.isEmpty(accountDTO.getCompany(companyDTO.getId()))){
+            throw new BizException(ExceptionCode.USER_COMPANY_EXIST);
+        }
         addApplyDTO.setCreateTime(new Date());
         AddApply addApply = BeanMapper.map(addApplyDTO, AddApply.class);
         addApply.setCreatorId(BaseContextHolder.getUserId());
@@ -43,9 +57,24 @@ public class SystemRemindServiceImpl implements SystemRemindService {
 
     @Override
     public PageInfo<AddApplyDTO> getApplyList(PageRequest pageRequest, ListReqDTO listReqDTO) {
+        Long companyId = BaseContextHolder.getCompanyId();
+        StringBuilder roles = new StringBuilder();
+        StringBuilder roleNames = new StringBuilder();
         PageHelper.startPage(pageRequest.getNumber(), pageRequest.getSize());
         String condition = listReqDTO.getFinalCondition();
         List<AddApplyDTO> addApplyDTOList = systemRemindMapper.getApplyList(condition, BaseContextHolder.getCompanyId());
+        for (AddApplyDTO addapplyDTO : addApplyDTOList) {
+            AccountDTO accountDTO = accountApi.getAccount(addapplyDTO.getMobile()).getData();
+            List<RoleBaseDTO> roleBaseDTOList = accountDTO.getRolesMap().get(companyId);
+            for (RoleBaseDTO roleBaseDTO : roleBaseDTOList){
+                roles.append(roleBaseDTO.getId() + ",");
+                roleNames.append(roleBaseDTO.getName() + ",");
+            }
+            addapplyDTO.setRoles(roles.substring(0, roles.length() - 1));
+            addapplyDTO.setRoleNames(roleNames.substring(0, roleNames.length() - 1));
+            roles.setLength(0);
+            roleNames.setLength(0);
+        }
         PageInfo<AddApplyDTO> pageInfo = new PageInfo<AddApplyDTO>(addApplyDTOList);
         return pageInfo;
     }

+ 2 - 2
applications/commons/commons-server/src/main/resources/mapper/SystemRemindMapper.xml

@@ -20,10 +20,10 @@
               AND COMPANYID = #{companyId}
           </if>
       </where>
-      ORDER BY RE_STATUS, CREATETIME DESC
+      ORDER BY RE_STATUS DESC,RE_ID DESC
     </select>
     <update id="confirmApply">
-        UPDATE REMIND SET STATUS = #{status}, updateTime = now(), updaterId = #{updaterId}
+        UPDATE REMIND SET RE_STATUS = #{status}, updateTime = now(), updaterId = #{updaterId}
         where re_id = #{id}
     </update>
     <insert id="insertSelective" parameterType="com.usoftchina.saas.commons.po.AddApply">

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/AddressMapper.xml

@@ -206,7 +206,7 @@
     </where>
   </select>
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
-      SELECT AD_ADDRESS display,AD_ADDRESS value FROM ADDRESS WHERE COMPANYID=#{companyId}
+      SELECT AD_ADDRESS display,AD_ADDRESS value FROM ADDRESS WHERE COMPANYID=#{companyId} ORDER BY AD_ID DESC
   </select>
   <select id="getCountFromPurchase" resultType="int">
       SELECT COUNT(*) FROM PURCHASE WHERE PU_SHIPADDRESSCODE = (SELECT AD_ADDRESS FROM ADDRESS WHERE AD_ID = #{id}) AND companyId = #{companyId}

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

@@ -320,7 +320,7 @@
     </where>  order by bk_date desc, bk_id desc
   </select>
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
-        SELECT CONCAT(bk_bankcode,' ',bk_bankname) display,bk_bankname value FROM bankinformation WHERE COMPANYID=#{companyId}
+        SELECT CONCAT(bk_bankcode,' ',bk_bankname) display,bk_bankname value FROM bankinformation WHERE COMPANYID=#{companyId} order by bk_date desc, bk_id desc
     </select>
 
 

+ 1 - 0
applications/document/document-server/src/main/resources/mapper/FundinouttypeMapper.xml

@@ -151,6 +151,7 @@
             and ft_kind=#{condition,jdbcType=VARCHAR}
           </if>
         </where>
+        ORDER BY FT_ID DESC
     </select>
 
   <select id="check" parameterMap="checkParamMap" statementType="CALLABLE">

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/ProductbrandMapper.xml

@@ -111,7 +111,7 @@
     where pb_id = #{id}
   </update>
   <select id="selectAll" resultMap="BaseResultMap">
-    SELECT * FROM PRODUCTBRAND where companyId = #{companyId}
+    SELECT * FROM PRODUCTBRAND where companyId = #{companyId} ORDER BY PB_ID DESC
   </select>
 
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/ProducttypeMapper.xml

@@ -128,7 +128,7 @@
          </where>
     </select>
     <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
-        SELECT PT_NAME display,PT_NAME value FROM PRODUCTTYPE WHERE COMPANYID=#{companyId}
+        SELECT PT_NAME display,PT_NAME value FROM PRODUCTTYPE WHERE COMPANYID=#{companyId} ORDER BY PT_ID DESC
     </select>
     <select id="getCountFromProduct" resultType="int">
         SELECT COUNT(*) FROM PRODUCT WHERE PR_KIND = (SELECT PT_NAME FROM PRODUCTTYPE WHERE PT_ID = #{id}) AND companyId=#{companyId}

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/ProductunitMapper.xml

@@ -120,7 +120,7 @@
         </where>
     </select>
     <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
-        SELECT PU_NAME display,PU_NAME value FROM PRODUCTUNIT WHERE COMPANYID=#{companyId}
+        SELECT PU_NAME display,PU_NAME value FROM PRODUCTUNIT WHERE COMPANYID=#{companyId} ORDER BY PU_ID DESC
     </select>
     <select id="getCountFromProduct" resultType="int">
         SELECT COUNT(*) FROM PRODUCT WHERE PR_UNIT = (SELECT PU_NAME FROM PRODUCTUNIT WHERE PU_ID = #{id}) AND companyId = #{companyId}

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/VendorkindMapper.xml

@@ -114,7 +114,7 @@
     SELECT * FROM VENDORKIND where companyId = #{companyId} ORDER BY VK_ID DESC
   </select>
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
-    SELECT VK_NAME display, VK_NAME value FROM VENDORKIND WHERE COMPANYID=#{companyId}
+    SELECT VK_NAME display, VK_NAME value FROM VENDORKIND WHERE COMPANYID=#{companyId} ORDER BY VK_ID DESC
   </select>
   <select id="selectCountByName" resultType="int">
     SELECT COUNT(*) FROM VENDORKIND

+ 2 - 1
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/VerificationFormDTO.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.money.dto;
 
+import com.usoftchina.saas.commons.dto.BaseFormDTO;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -10,7 +11,7 @@ import java.util.List;
  * @createtime 2018-10-22-17:02
  */
 @Data
-public class VerificationFormDTO implements Serializable {
+public class VerificationFormDTO extends BaseFormDTO implements Serializable {
     private VerificationDTO main;
 
     public VerificationDTO getMain() {

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/MoneyApplicatiion.java

@@ -22,7 +22,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @EnableAuthClient
 @MapperScan("com.usoftchina.saas.money.mapper")
 @EnableDynamicDataSource
-@ComponentScan(basePackages = {"com.usoftchina.saas"})
+//@ComponentScan(basePackages = {"com.usoftchina.saas.money"})
 public class MoneyApplicatiion {
     public static void main(String[] args) {
         SpringApplication.run(MoneyApplicatiion.class, args);

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/PaybalanceController.java

@@ -45,7 +45,7 @@ public class PaybalanceController {
     }
 
     @Transactional
-    @PostMapping("/deleteDetai2/{id}")
+    @PostMapping("/deleteDetail2/{id}")
     public Result deleteItems(@PathVariable("id") int id){
         paybalanceService.deleteItems(id);
         return Result.success();

+ 4 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Fundtran.java

@@ -1,12 +1,15 @@
 package com.usoftchina.saas.money.po;
 
+import com.usoftchina.saas.commons.dto.BaseFormDTO;
+
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * @author heqw
  * @date 2018/10/25 19:28
  **/
-public class Fundtran {
+public class Fundtran extends BaseFormDTO implements Serializable {
     private Fundtransfer main;
     private List<Fundtransferdetail> items;
 

+ 4 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Othsp.java

@@ -1,12 +1,15 @@
 package com.usoftchina.saas.money.po;
 
+import com.usoftchina.saas.commons.dto.BaseFormDTO;
+
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * @author heqw
  * @date 2018/10/24 17:42
  **/
-public class Othsp {
+public class Othsp extends BaseFormDTO implements Serializable {
     private Othspendings main;
     private List<Othspendingsdetail> items;
 

+ 4 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Othte.java

@@ -1,12 +1,15 @@
 package com.usoftchina.saas.money.po;
 
+import com.usoftchina.saas.commons.dto.BaseFormDTO;
+
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * @author heqw
  * @date 2018/10/24 17:37
  **/
-public class Othte {
+public class Othte extends BaseFormDTO implements Serializable {
     private Othreceipts main;
     private List<Othreceiptsdetail> items;
 

+ 4 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Pay.java

@@ -1,12 +1,15 @@
 package com.usoftchina.saas.money.po;
 
+import com.usoftchina.saas.commons.dto.BaseFormDTO;
+
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * @author heqw
  * @date 2018/10/23 10:19
  **/
-public class Pay {
+public class Pay extends BaseFormDTO implements Serializable {
     private Paybalance main;
     private List<Paybalancedet> items1;
     private List<Paybalancedetail> items2;

+ 4 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Rec.java

@@ -1,12 +1,15 @@
 package com.usoftchina.saas.money.po;
 
+import com.usoftchina.saas.commons.dto.BaseFormDTO;
+
+import java.io.Serializable;
 import java.util.List;
 
 /**
  * @author heqw
  * @date 2018/10/23 15:59
  **/
-public class Rec {
+public class Rec extends BaseFormDTO implements Serializable {
     private Recbalance main;
     private List<Recbalancedet> items1;
     private List<Recbalancedetail> items2;

+ 3 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java

@@ -57,7 +57,9 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         String ft_code = fundtransfer.getFt_code();
 
         //编号校验
-        ft_code = pushMaxnubmer(ft_code, fundtransfer.getId());
+        if(fundtran.isCodeModified()) {
+            ft_code = pushMaxnubmer(ft_code, fundtransfer.getId());
+        }
 
         //单号赋值
         fundtransfer.setFt_code(ft_code);

+ 3 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java

@@ -65,7 +65,9 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
         String or_code = othreceipts.getOr_code();
 
         //编号校验
-        or_code = pushMaxnubmer(or_code, othreceipts.getId());
+        if(othte.isCodeModified()) {
+            or_code = pushMaxnubmer(or_code, othreceipts.getId());
+        }
 
         //单号赋值
         othreceipts.setOr_code(or_code);

+ 3 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java

@@ -60,7 +60,9 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         String os_code = othspendings.getOs_code();
 
         //编号校验
-        os_code = pushMaxnubmer(os_code, othspendings.getId());
+        if(othsp.isCodeModified()) {
+            os_code = pushMaxnubmer(os_code, othspendings.getId());
+        }
         //单号赋值
         othspendings.setOs_code(os_code);
 

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

@@ -61,7 +61,9 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
 
         String pb_code = paybalance.getPb_code();
         //编号校验
-        pb_code = pushMaxnubmer(pb_code, paybalance.getId());
+        if(pay.isCodeModified()) {
+            pb_code = pushMaxnubmer(pb_code, paybalance.getId());
+        }
         //单号赋值
         paybalance.setPb_code(pb_code);
 

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

@@ -64,7 +64,9 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         String pu_code = recbalance.getRb_code();
 
         //编号校验
-        pu_code = pushMaxnubmer(pu_code, recbalance.getId());
+        if(rec.isCodeModified()) {
+            pu_code = pushMaxnubmer(pu_code, recbalance.getId());
+        }
         //单号赋值
         recbalance.setRb_code(pu_code);
 

+ 3 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java

@@ -130,7 +130,9 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         Long id = main.getId();
         String code = main.getVc_code();
         //编号校验
-        code = pushMaxnubmer(code, id);
+        if(formdata.isCodeModified()) {
+            code = pushMaxnubmer(code, id);
+        }
         main.setVc_code(code);
 
         Verification verification = BeanMapper.map(main,Verification.class);

+ 106 - 56
frontend/saas-portal-web/src/components/conenter/addenterprise.vue

@@ -41,15 +41,15 @@
                                 <option value="其他">其他</option>   
                             </select>
                         </li>
-                        <li>
+                        <li style="margin:0">
                             <span class="qy-biaoti"><span class="xingxing">*</span>企业地址</span>
                             <input ref="address" @change="address" class="inpind" type="text" placeholder="输入企业详细地址">
                             <!-- <div class="addbiaoqian">
                                 <v-distpicker @selected= 'selected' @province= 'qyprovince' :placeholders= 'placeholder'></v-distpicker>
                                 <input ref="address" @change="address" class="qy-xiangxi" type="text" placeholder="输入企业详细地址">
                             </div> -->
-                            <div class="qy-Tips left">
-                                <span ref="ress" style="color:red;margin-left:40px;"></span>
+                            <div class="qy-Tips Tips-buttom">
+                                <span ref="ress" style="color:red"></span>
                             </div>
                         </li>
                         <li style="margin:0">
@@ -78,13 +78,14 @@
                             <input @blur.prevent="Testingqyname" ref="lookupqyname" class="inpind" type="text" value="" placeholder="输入企业名称或管理员">
                             <span class="warning" ref="warningqyname"></span>
                         </li>
+                        <!-- 匹配企业后显示的内容 -->
                         <li class="hied" :class= "{showlookup:islookup}">
                             <div class="lookup">
                                 <ul>
-                                    <li v-for="(d, i) in arr" :key="i">
-                                        <span>企业名称:</span><span>{{d.qyname}}</span>
-                                        <span class="saasguanli">SaaS管理员:</span><span>{{d.saas}}</span>
-                                        <span>联系方式:</span><span>{{d.phone}}</span>
+                                    <li v-for="(d, i) in arr" :key="i" @click="qylist(i)" :class="{'hui':newindex === i}">
+                                        <span>企业名称:</span><span>{{d.name}}</span>
+                                        <span class="saasguanli">SaaS管理员:</span><span>{{d.admin}}</span>
+                                        <span>联系方式:</span><span>{{d.adminMobile}}</span>
                                     </li>
                                 </ul>
                             </div>
@@ -109,7 +110,7 @@
 
 <script>
 import Session from '@/utils/session'
-import VDistpicker from 'v-distpicker'
+// import VDistpicker from 'v-distpicker'
 import { setTimeout } from 'timers';
     export default {
         data(){
@@ -136,22 +137,20 @@ import { setTimeout } from 'timers';
                     // {name:'加入企业'},
                 ],
                 nowindex:0,
+                newindex:'',
                 islookup:false,
                 isTestingname:false,
                 isregname:false,
-                arr:[
-                    {qyname:'XX房贷首付范德萨发达企业',saas:'反倒是地方反对法管理员',phone:'13456789023'},
-                    {qyname:'XX企业',saas:'管理员',phone:'13456789023'},
-                    {qyname:'XX企业',saas:'管理员',phone:'13456789023'},
-                ]
+                companyId:null,
+                arr:[]
             }
         },
         components:{
-            VDistpicker
+            // VDistpicker
         },
         mounted(){
-            this.$refs.name.value = this.mytoken.account.realname == this.mytoken.account.mobile ? '' : this.mytoken.account.realname
-            this.$refs.email.value = this.mytoken.account.email
+            this.$refs.name.value = this.mytoken.account.realname;
+            this.$refs.email.value = this.mytoken.account.email;
         },
         methods: {
             tabwith(i){
@@ -188,7 +187,7 @@ import { setTimeout } from 'timers';
                                 this.$refs.qyno.innerHTML = '<span style="color:green">该企业可创建</span>';
                             } else {
                                 this.$refs.qyno.innerHTML = '该企业已在优软云注册';
-                                this.qymingzi = false
+                                this.qymingzi = false;
                             }
                         })
                         .catch(err=>{
@@ -200,26 +199,47 @@ import { setTimeout } from 'timers';
             //检测企业名称2
             Testingqyname(){
                 let qyname = this.$refs.lookupqyname.value.replace(/\s+/g, "");//企业名字
+                let token = this.mytoken.token;
                 if (qyname == '') {
                     this.$refs.warningqyname.innerHTML = '<img style="width:14px" src="/static/img/warning.png" alt=""> 企业或管理员不能为空';
-                    this.islookup = false
+                    this.islookup = false;
                 } else {
-                    this.$refs.warningqyname.innerHTML = '<img style="width:14px" src="/static/img/ok.png" alt="">';
-                    this.islookup = true
+                    this.$ajax({
+                        url: "http://192.168.253.41:8560/api/account/accountCenter/company/isOpen",//http://192.168.253.41:8560
+                        method:'GET',
+                        params: {
+                            companyName: qyname
+                        },
+                        headers:{
+                            "Authorization":token,
+                        }
+                    })
+                    .then(res=>{
+                        if (res.data.success) {
+                            this.arr = res.data.data
+                            this.$refs.warningqyname.innerHTML = '<img style="width:14px" src="/static/img/ok.png" alt="">';
+                            this.islookup = true;   
+                        } else if (res.data.success = false && res.data.message != null){
+                            this.$refs.warningqyname.innerHTML = '<img style="width:14px" src="/static/img/warning.png" alt=""> 该企业不存在';
+                        } else {
+                            this.$message.error('请求失败,请重试');
+                        }
+                    })
+                    
                 }
             },
             //验证个人姓名1
             yzusername(){
                 let name = this.$refs.name.value.replace(/\s+/g, "");//姓名过滤空格
                 if (name == '') {
-                    this.$refs.usname.innerHTML = '个人姓名不能为空'
+                    this.$refs.usname.innerHTML = '个人姓名不能为空';
                 } else {
                     if (this.reg.test(name)) {
-                        this.$refs.usname.innerHTML = '不能包含符号等非法字符'
-                        this.isname = false
+                        this.$refs.usname.innerHTML = '不能包含符号等非法字符';
+                        this.isname = false;
                     } else {
-                        this.$refs.usname.innerHTML = ''
-                        this.isname = true
+                        this.$refs.usname.innerHTML = '';
+                        this.isname = true;
                     }
                 }
             },
@@ -240,35 +260,62 @@ import { setTimeout } from 'timers';
                     }
                 }
             },
+            // 选择要加入的企业
+            qylist(i){
+                this.companyId = this.arr[i].id,
+                this.newindex = i
+            },
             //加入企业提交按钮
             Submission(){
+                let token = this.mytoken.token;
+                let qyname = this.$refs.lookupqyname.value.replace(/\s+/g, "");//企业名字
+                let username = this.$refs.lookupname.value.replace(/\s+/g, "");//姓名过滤空格
                 if (!this.islookup) {
                     this.$message.error('企业或管理员不能为空');
                 } else if (!this.isTestingname) {
                     this.$message.error('姓名不能为空');
                 } else if (!this.isregname) {
                     this.$message.error('姓名不能包含符号、数字等非法字符');
+                } else if (this.companyId){
+                    this.$ajax({
+                        url:'http://192.168.253.41:8560/api/account/accountCenter/company/join',
+                        method:'POST',
+                        data:{
+                            username:username,
+                            accountId:this.mytoken.account.id,
+                            companyId:this.companyId,
+                        },
+                        headers:{
+                            "Authorization":token,
+                        }
+                    })
+                    .then(res=>{
+                        if (res.data.success) {
+                            this.$message.success('提交成功,待管理员批准加入');
+                            this.$store.state.ishongdian = true;//显示红点
+                            setTimeout(()=>{
+                                this.$router.push({name:'company'});
+                            },3000)
+                        }
+                    })
                 } else {
-                    this.$message({
-                        message: '提交成功,待管理员批准加入',
-                        type: 'success'
-                    });
+                    this.$message.error('请选择要加入的企业');
                 }
             },
             //验证公司详细地址
             address(){
                 let address = this.$refs.address.value.replace(/\s+/g, "");//过滤空格
                 if (address == '') {
-                    this.$refs.ress.innerHTML = '企业地址不能为空'
-                    this.isaddressname = false
+                    this.$refs.ress.innerHTML = '企业地址不能为空';
+                    this.isaddressname = false;
                 } else {
-                    this.isaddressname = true
+                    this.isaddressname = true;
                     if (this.reg.test(address)) {
-                        this.$refs.ress.innerHTML = '不能包含符号等非法字符'
-                        this.isaddress = false
+                        this.$refs.ress.innerHTML = '不能包含符号等非法字符';
+                        this.isaddress = false;
                     } else {
-                        this.$refs.ress.innerHTML = ''
-                        this.isaddress = true
+                        this.$refs.ress.innerHTML = '';
+                        this.isaddress = true;
                     }
                 }
             },
@@ -277,11 +324,11 @@ import { setTimeout } from 'timers';
                 let email = this.$refs.email.value;//邮箱
                 if (email == '') {
                     this.isemail = true;
-                    this.Email = ''
+                    this.Email = '';
                 } else {
                     if (!reg.test(email)) {
                         this.Email = '请填写正确的邮箱';
-                        this.isemail = false
+                        this.isemail = false;
                     } else {
                         this.Email = '';
                         this.isemail = true;
@@ -290,7 +337,7 @@ import { setTimeout } from 'timers';
             },
             //保存
             Preservation(){
-                this.listLoading = true
+                this.listLoading = true;
                 let qyname = this.$refs.qyname.value.replace(/\s+/g, "");//公司名字
                 let qyindustry = this.$refs.qyindustry.value;//所属行业
                 let address = this.$refs.address.value.replace(/\s+/g, "");//公司详细地址
@@ -301,7 +348,7 @@ import { setTimeout } from 'timers';
                 let uu = mytoken.account.uu;
                 let mobile = mytoken.account.mobile;//手机号
                 let company = {'name':qyname,'address':address,'type':qyindustry};
-                let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu}
+                let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu};
                 // console.log('姓名',name)//个人姓名
                 // console.log('企业',qyname)//企业姓名
                 // console.log('企业名字',this.qymingzi)//企业有没有注册
@@ -314,9 +361,9 @@ import { setTimeout } from 'timers';
                 } else if (qyname == '') {
                     this.$message.error('企业名称不能为空');
                 } else {
-                    switch (this.qymingzi && this.isaddress && this.isname && this.isspaceName && this.isemail && this.isaddressname) {
-                        case this.qymingzi:
-                        if (this.qymingzi) {
+                    switch (this.isspaceName && this.isaddress && this.isname && this.qymingzi && this.isemail && this.isaddressname) {
+                        case this.isspaceName:
+                        if (this.isspaceName) {
                             this.$ajax({
                                 url: this.$url.api+"/api/account/accountCenter/companyAccount/save",//http://192.168.253.31:8560
                                 method: 'post',
@@ -333,18 +380,21 @@ import { setTimeout } from 'timers';
                                 this.isadd = true;//添加成功弹窗
                                 setTimeout(()=>{
                                     document.documentElement.scrollTop = 0;
+                                    let session = JSON.parse(window.localStorage.getItem('app-state-session'));
+                                    session.account.realname = name;
+                                    Session.set(session);
                                     // this.$router.push({name:'company'})
-                                    this.$router.push({path: '/enterprise'})
+                                    this.$router.push({path: '/enterprise'});
                                 },3000)
                             })
-                            this.$message({
-                                message: '保存成功,待管理员批准',
-                                type: 'success'
-                            });
+                            this.$message.success('保存成功,待管理员批准');
                         } else {
-                            this.$message.error('该企业已在优软云注册');
+                            this.$message.error('企业名称不能包含符号等非法字符');
                         }
                         break;
+                        case this.qymingzi:
+                        this.$message.error('该企业已在优软云注册');
+                        break;
                         case this.isaddressname:
                         this.$message.error('企业地址不能为空');
                         break;
@@ -354,15 +404,12 @@ import { setTimeout } from 'timers';
                         case this.isname:
                         this.$message.error('个人姓名不能包含符号等非法字符');
                         break;
-                        case this.isspaceName:
-                        this.$message.error('企业名称不能包含符号等非法字符');
-                        break;
                         case this.isemail:
                         this.$message.error('请填写正确的邮箱');
                         break;
                     }
                 }
-                this.listLoading = false
+                this.listLoading = false;
             },
             //获取省市区
             // selected(data){
@@ -371,9 +418,9 @@ import { setTimeout } from 'timers';
             //     this.area = data.area.value;
             //     this.disabled= false
             // },
-            qyprovince(){
-                this.placeholder = this.placeholde
-            },
+            // qyprovince(){
+            //     this.placeholder = this.placeholde
+            // },
         }
     }
 </script>
@@ -448,4 +495,7 @@ import { setTimeout } from 'timers';
 .marght {
     margin-right: 5px;
 }
+.hui {
+    background: #c5c5c5;
+}
 </style>

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

@@ -65,7 +65,7 @@
                     </div>
                 </router-link>
             </div>
-            <div v-for="(d , i) in arr " :key="i" class="gs-xiangqing">
+            <div v-for="(d , i) in list " :key="i" class="gs-xiangqing gs-list">
                 <!-- 上 -->
                 <div class="gs-shang">
                     <el-dropdown v-if= "d.saas_" trigger="hover" size="mini" placement='bottom-start'>
@@ -94,8 +94,8 @@
                         <!-- <p><span>开通日期:</span></p> -->
                     </div>
                     <div class="gs-border gs-xqright-right right">
-                        <span v-if= "d.saas_" class="gs-btn1 xs" @click="selectServe(d.id)">进入服务</span>
-                        <span v-else @click="showOpenServeWin(d.id , i)" class="gs-btn1 kaitong xs">开通服务</span>
+                        <span v-if= "d.saas_" class="gs-btn1 xs green" @click="selectServe(d.id)">进入服务</span>
+                        <span v-else @click="showOpenServeWin(d.id , i)" class="gs-btn1 kaitong xs blue">开通服务</span>
                     </div>
                 </div>
             </div>
@@ -119,7 +119,7 @@
                 isDefault: true,//开通默认
                 isAutoLogin: this.$store.state.isAutoLogin,
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')),//本地储存的用户信息
-                arr: [],//企业列表信息
+                list: [],//企业列表信息
                 isheigh:false,//是否添加默认高度
                 admin: '',
                 adminMobile: '',
@@ -131,7 +131,7 @@
             },
         },
         watch:{
-            arr:function(){
+            list:function(){
                 this.$nextTick(function(){
                     this.boxheight();
                 })
@@ -153,39 +153,42 @@
                     }
                 })
                 .then(res=>{
-                    const frame = window.frames[window.frames.length - 1];
-                    this.arr = res.data.data.spaces;
-                    let enterprise = [];
-                    for (let i = 0; i < this.arr.length; i++) {
-                        if (this.arr[i].saas_) {
-                            let addenterprise = {'id':'', 'logoUrl': '', 'name': '','dcName':''};
-                            addenterprise.id = this.arr[i].id;
-                            addenterprise.logoUrl = this.arr[i].logoUrl || null;
-                            addenterprise.name = this.arr[i].name;
-                            addenterprise.dcName = this.arr[i].dcName || null;
-                            enterprise.push(addenterprise)
-                        }
-                    };
-                    let session = JSON.parse(window.localStorage.getItem('app-state-session'));
-                    if (enterprise.length != session.account.companies.length) {
-                        session.account.companies = enterprise;
-                        session.account.realname = this.arr[0].admin;
-                        Session.set(session);
-                    };
-                    let hasCompany = res.data.data.hasDefaultCompany;
-                    let companyId = res.data.data.defaultCompanyId;
-                    let token = res.data.data.token.token;
-                    if (this.isAutoLogin) {
-                        if (hasCompany) {
-                            let session=JSON.parse(localStorage.getItem('app-state-session'));
-                            session.account.companyId=companyId;
-                            session.span = session.timestamp - new Date().getTime();
-                            session.token=token;
-                            frame.postMessage(JSON.stringify(session), '*');
-                            window.location.href = this.$url.web
+                    if (res.data.success) {
+                        const frame = window.frames[window.frames.length - 1];
+                        this.list = res.data.data.spaces;
+                        let enterprise = [];
+                        for (let i = 0; i < this.list.length; i++) {
+                            if (this.list[i].saas_) {
+                                let addenterprise = {'id':'', 'logoUrl': '', 'name': '','dcName':''};
+                                addenterprise.id = this.list[i].id;
+                                addenterprise.logoUrl = this.list[i].logoUrl || null;
+                                addenterprise.name = this.list[i].name;
+                                addenterprise.dcName = this.list[i].dcName || null;
+                                enterprise.push(addenterprise)
+                            }
+                        };
+                        let session = JSON.parse(window.localStorage.getItem('app-state-session'));
+                        if (enterprise.length != session.account.companies.length) {
+                            session.account.companies = enterprise;
+                            Session.set(session);
+                        };
+                        let hasCompany = res.data.data.hasDefaultCompany;
+                        let companyId = res.data.data.defaultCompanyId;
+                        let token = res.data.data.token.token;
+                        if (this.isAutoLogin) {
+                            if (hasCompany) {
+                                let session=JSON.parse(localStorage.getItem('app-state-session'));
+                                session.account.companyId=companyId;
+                                session.span = session.timestamp - new Date().getTime();
+                                session.token=token;
+                                frame.postMessage(JSON.stringify(session), '*');
+                                window.location.href = this.$url.web
+                            }
                         }
+                        this.$store.commit('Loginfalse')
+                    } else {
+                        this.$message.error('获取企业列表信息失败,请重试');
                     }
-                    this.$store.commit('Loginfalse')
                 })
                 .catch(err=>{
                     // console.log("请求失败",err)
@@ -208,7 +211,7 @@
                     url: this.$url.api+'/api/account/accountCenter/bind/defaultCompany',
                     method: 'post',
                     data:{
-                        companyId: this.arr[i].id,
+                        companyId: this.list[i].id,
                         accountId: this.mytoken.account.id
                     },
                     headers: {
@@ -228,7 +231,7 @@
                     url: this.$url.api+'/api/account/accountCenter/unBind/defaultCompany',
                     method: 'post',
                     data:{
-                        companyId: this.arr[i].id,
+                        companyId: this.list[i].id,
                         accountId: this.mytoken.account.id
                     },
                     headers: {
@@ -272,10 +275,10 @@
             //开通saas服务开通数量达到10的时候禁止开通
             showOpenServeWin(id , i){
                 let saasNum = [];
-                let arr = this.arr;
-                for (let j = 0; j < arr.length; j++) {
-                    if (arr[j].saas_) {
-                        saasNum.push(arr[j].saas_)
+                let list = this.list;
+                for (let j = 0; j < list.length; j++) {
+                    if (list[j].saas_) {
+                        saasNum.push(list[j].saas_)
                     }
                 }
                 if (saasNum.length >= 10) {
@@ -289,12 +292,12 @@
             confirmSaas(){//确认saas开通
                 let i = this.saasindex;
                 let token = this.mytoken.token;
-                let qyname = this.arr[i].name;//公司名字
-                let address = this.arr[i].address;//公司详细地址
-                let name = this.arr[i].realname;//名字
-                let email = this.arr[i].email;//邮箱
+                let qyname = this.list[i].name;//公司名字
+                let address = this.list[i].address;//公司详细地址
+                let name = this.list[i].realname;//名字
+                let email = this.list[i].email;//邮箱
                 let mobile = this.mytoken.account.mobile;//手机号
-                let uu = this.arr[i].uu;
+                let uu = this.list[i].uu;
                 let company = {'name':qyname,'address':address};
                 let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu}
                 this.$ajax({
@@ -387,4 +390,15 @@
     left: 5px;
     display: none;
 }
+.gs-list {
+    background-image: url(/static/img/list.png);
+    background-position-x: 50%;
+    background-position-y: 84%;
+}
+.green:hover {
+    background: #2da74a;
+}
+.blue:hover {
+    background: #0f6fd2;
+}
 </style>

+ 47 - 6
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -17,7 +17,7 @@
             </div>
             <div class="collapse navbar-collapse navbar-right" role="navigation">
                 <ul id="nav" class="nav navbar-nav menu">
-                    <li><router-link to="/home"><a href="#"><span style="color: white">首页</span></a></router-link></li>
+                    <li><router-link to="/home"><a href="#" @click="setTurnHome"><span style="color: white">首页</span></a></router-link></li>
                     <li><a href="https://uas.usoftchina.com/about" target="_blank"><span>关于我们</span></a></li>
                     <li style="margin-left:30px;margin-top: 13px;cursor: pointer;">
                         <span style="color:#fff;font-size: 16px;">
@@ -37,7 +37,7 @@
             <div class="gs-tab">
                 <ul>
                     <li class="xs" v-for="(btn , index) in tab" :key='index' :class= "{gsactive:nowindex == index}" @click= "tabswitch(index)">{{btn.name}}</li>
-                    <!-- <span class="reddian"></span> -->
+                    <span v-if="ishongdian" class="reddian"></span>
                 </ul>
             </div>
             <div class="gs-none">
@@ -139,7 +139,7 @@
                                     <span>{{d.neirong.phone}}</span>
                                 </span>
                                 <span>{{d.zhuangtai}}</span>
-                                <span><button v-if="d.caozuo" @click="Rejoin" class="news-btn">重新加入</button></span>
+                                <span><button v-if="d.caozuo" @click="Rejoin(i)" class="news-btn">重新加入</button></span>
                             </li>
                         </ul>
                     </div>
@@ -191,11 +191,48 @@ import { setTimeout } from 'timers';
             setTokenPage() {
                 return this.$url.web + '/set-token.html'
             },
+            ishongdian(){
+                return this.$store.state.ishongdian;
+            }
         },
         methods: {
             // tab切换
             tabswitch(index){
-                this.nowindex = index;
+                if (index == 3) {
+                    this.nowindex = 3;
+                let mytoken = JSON.parse(localStorage.getItem('app-state-session'));
+                let id = mytoken.account.id;
+                // tab切换到消息的时候执行
+                let param = [{
+                    type:'condition',
+                    value:'creatorId='+id+''
+                }]
+                
+                    this.$ajax({
+                        url:'http://192.168.253.41:8560/api/commons/remind/apply/list',
+                        method:'GET',
+                        async:false,
+                        params: {
+                            condition:JSON.stringify(param)
+                        },
+                        headers:{
+                            'Access-Control-Allow-Origin':'*',
+                            "Authorization":mytoken.token,
+                            'Content-Type':'application/json;charset=UTF-8'
+                        }
+                    })
+                    .then(res=>{
+                        console.log(res)
+                        this.$store.state.ishongdian = false
+                    })
+                } else {
+                    this.nowindex = index;
+                }
+                
+            },
+            setTurnHome(){
+                debugger
+                this.$parent.turnHome = true
             },
             //退出
             loginout(){
@@ -268,12 +305,14 @@ import { setTimeout } from 'timers';
                 }
             },
             //重新加入
-            Rejoin(){
+            Rejoin(i){
                 //成功后提示
                 this.$message({
                     message: '提交成功,待管理员批准',
                     type: 'success'
                 });
+                this.arr[i].zhuangtai = '待批准';
+                this.arr[i].caozuo = false;
             },
             //没有内容也要有一定的高度
             boxheight(){
@@ -415,6 +454,8 @@ import { setTimeout } from 'timers';
     height: 4px;
     border-radius: 2px;
     background: red;
-    margin-left: -22px;
+    position: relative;
+    top: -5px;
+    left: -25px;
 }
 </style>

+ 27 - 12
frontend/saas-portal-web/src/components/conenter/home.vue

@@ -17,7 +17,7 @@
             </div>
         <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="#" @click="setTurnHome"><span>首页</span></a></li>
             <li><a href="https://www.usoftchina.com/" target="_blank"><span>优软云</span></a></li>
             <li>
               <a href="#feature"><span>特色</span></a>
@@ -262,11 +262,20 @@
       } else {
         this.isproblem = this.$route.params.isporblem
       };
+      let token;
+      if(localStorage.getItem('app-state-session')){
+        let mytoken = JSON.parse(localStorage.getItem('app-state-session'));
+        token = String(mytoken.token);
+      }
       this.$ajax({
         url: this.$url.api+'/api/auth/info',
         method: 'get',
         async:false,
-        withCredentials:true
+        withCredentials:true,
+        headers: {
+            "Authorization":token,
+            "Content-Type":"application/x-www-form-urlencoded"
+        }
       })
       .then(res=>{
         const data=res.data.data;
@@ -276,18 +285,15 @@
           session.account = account
           Session.set(session);
           this.account = Session.getAccount();
-          //有企业信息时 第一次访问页面 跳转企业列表
+          //有企业信息时 跳转企业列表
           if(account.companies.length>0){
-            //监听访问首页的次数
-            if(!localStorage.VisitCount){
-              localStorage.VisitCount = '1'
-            }else{
-              localStorage.VisitCount = (Number(localStorage.VisitCount) + 1 ) + ''
-            }
-            if(localStorage.VisitCount=='1'){
               const me = this || _this;
-              me.$router.push({path: '/enterprise'})
-            }
+              //点击首页按钮时不跳转企业列表
+              if(!me.$parent.turnHome){
+                me.$router.push({path: '/enterprise'})
+              }else{
+                me.$parent.turnHome = false
+              }
           }
         }
       })
@@ -344,6 +350,9 @@
           frame.postMessage(JSON.stringify(session), '*')
         })
       },
+      setTurnHome(){
+        this.turnHome = true
+      },
       login() {
         // 显示账户中心登录窗口
         this.isLogin = true
@@ -373,6 +382,12 @@
       //体验
       experience(){
         this.isexperience = true;
+        setTimeout(()=>{
+          if (this.account) {
+            this.$refs.typhone.value = this.account.mobile;
+            this.openexperience();
+          }
+        },10)
       },
       //关闭体验
       Closeexperience(){

+ 1 - 0
frontend/saas-portal-web/src/store/index.js

@@ -7,6 +7,7 @@ export default new Vuex.Store({
         isAutoLogin: false,
         isproblem: '',//常见问题
         isloading:false,
+        ishongdian:false,
     },
     mutations:{
          Logintrue(state) {

+ 12 - 7
frontend/saas-portal-web/static/css/gongsi.css

@@ -110,15 +110,17 @@
     box-shadow: 0 20px 60px 8px #F4F8FC;
     border-radius: 4px;
     overflow: hidden;
-    width: 22%;
+    width: 21.6%;
     float: left;
     margin: 0px 27px 27px 0px;
 }
 .gs-qynema {
-    font-weight: 600;
-    color: #243A52;
+    font-family: PingFangSC-Regular;
+    font-weight: 550;
+    color: #4a545f;
     letter-spacing: 0;
-    font-size: 18px;
+    font-size: 20px;
+    line-height: 30px;
 }
 .dotted {
     border: 1px dashed rgba(30,136,245,0.32);
@@ -160,10 +162,12 @@
     position: relative;
     padding: 0px 10px;
     text-align: center;
+    overflow: hidden;
 }
 .gs-xqright {
     height: 35%;
-    background: #F4F9FE;
+    background: #EFF7FF
+    ;
     padding: 10px;
 }
 .gs-xqright div {
@@ -411,10 +415,11 @@
     display: block !important;
 }
 .lookup > ul {
-    padding: 20px 20px 0px 20px;
+    padding: 0;
 }
 .lookup > ul > li {
-    margin-bottom: 10px;
+    padding: 20px 20px 10px 20px;
+    margin-bottom: 0 !important;
 } 
 .lookup > ul > li span{
     width: 16%;

BIN
frontend/saas-portal-web/static/img/list.png


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

@@ -54,7 +54,7 @@ Ext.define('saas.view.core.base.GridPanel', {
                                     saas.util.BaseUtil.showErrorToast('请求超时');
                                 }
                             }else {
-                                console.error('exception: ', response.responseJson);
+                                console.error('exception: ', response);
                                 saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                             }
                         }

+ 2 - 2
frontend/saas-web/app/view/core/dbfind/AddMultiDbfindGridPanel.js

@@ -94,8 +94,8 @@ Ext.define('saas.view.core.dbfind.AddMultiDbfindGridPanel', {
                                     saas.util.BaseUtil.showErrorToast('请求超时');
                                 }
                             }else {
-                                console.error('exception: ', response.responseJson);
-                                saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                                console.error('exception: ', response);
+                                saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                             }
                         }
                     }

+ 2 - 2
frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -35,8 +35,8 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
                                     saas.util.BaseUtil.showErrorToast('请求超时');
                                 }
                             }else {
-                                console.error('exception: ', response.responseJson);
-                                saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                                console.error('exception: ', response);
+                                saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                             }
                         }
                     }

+ 2 - 2
frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js

@@ -94,8 +94,8 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                                     saas.util.BaseUtil.showErrorToast('请求超时');
                                 }
                             }else {
-                                console.error('exception: ', response.responseJson);
-                                saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                                console.error('exception: ', response);
+                                saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                             }
                         }
                     }

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

@@ -34,24 +34,24 @@ Ext.define('saas.view.core.dbfind.types.ProductDbfindTrigger', {
         dataIndex: "pr_code",
         width: 150
     },{
-        text: "类型",
-        dataIndex: "pr_kind",
-        width: 110
+        text: '品牌',
+        dataIndex: 'pr_brand',
+        width: 150
     },{
-        text: "物料名称",
-        width: 200,
-        dataIndex: "pr_detail"
-    }, {
-        text : "型号", 
-        dataIndex : "pr_orispeccode", 
-        width : 150.0
-    }, {
-        text : "规格", 
-        dataIndex : "pr_spec", 
-        width : 150.0
+        text: '名称',
+        dataIndex: 'pr_detail',
+        width: 200
     },{
-        text: "品牌",
-        dataIndex: "pr_brand",
+        text: '型号',
+        dataIndex: 'pr_orispeccode',
+        width: 200
+    },{
+        text: "单位",
+        dataIndex: "pr_unit",
+        width: 80
+    },{
+        text: "类型",
+        dataIndex: "pr_kind",
         width: 110
     },{
         text: "库存",

+ 18 - 14
frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js

@@ -48,17 +48,25 @@ Ext.define('saas.view.core.dbfind.types.ProductMultiDbfindTrigger', {
         text: "物料名称",
         width: 200,
         dataIndex: "pr_detail"
-    }, {
-        text : "型号", 
-        dataIndex : "pr_orispeccode", 
-        width : 150.0
-    }, {
-        text : "规格", 
-        dataIndex : "pr_spec", 
-        width : 150.0
     },{
-        text: "品牌",
-        dataIndex: "pr_brand",
+        text: '品牌',
+        dataIndex: 'pr_brand',
+        width: 150
+    },{
+        text: '名称',
+        dataIndex: 'pr_detail',
+        width: 200
+    },{
+        text: '型号',
+        dataIndex: 'pr_orispeccode',
+        width: 200
+    },{
+        text: "单位",
+        dataIndex: "pr_unit",
+        width: 80
+    },{
+        text: "类型",
+        dataIndex: "pr_kind",
         width: 110
     },{
         text: "库存",
@@ -71,10 +79,6 @@ Ext.define('saas.view.core.dbfind.types.ProductMultiDbfindTrigger', {
             var format = '0,000.' + xr.join('');
             return Ext.util.Format.number(v, format);
         },
-    },{
-        text: "单位",
-        dataIndex: "pr_unit",
-        width: 80
     }, {
         text: "采购提前期",
         dataIndex: "pr_leadtime",

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

@@ -66,7 +66,7 @@ Ext.define('saas.view.core.form.FormPanel', {
             text: '复制',
             handler: 'onCopy',
             bind: {
-                hidden: '{!'+ me._idField + '}',
+                hidden: '{!showCopyBtn || !'+ me._idField + '}',
             }
         }, {
             hidden: true,
@@ -324,7 +324,7 @@ Ext.define('saas.view.core.form.FormPanel', {
 
         for (var i = 0; i < detailGrids.length; i++) {
             var detailData = formData['detail' + i] || [];
-            me.setDetailData(detailData);
+            me.setDetailData(detailData, i);
         }
     },
 

+ 1 - 0
frontend/saas-web/app/view/core/form/FormPanelModel.js

@@ -11,6 +11,7 @@ Ext.define('saas.view.core.form.FormPanelModel', {
             codeEditable: false, // 单据编号是否可编辑
         },
         auditBtnText: '审核', // 审核按钮默认text
+        showCopyBtn: true, // 显示复制按钮
         showPrintBtn: false, // 显示打印按钮
         showAuditBtn: true, // 显示审核、反审核按钮
         detailBindeFields: [], // 从表绑定列

+ 13 - 64
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -28,6 +28,10 @@ Ext.define('saas.view.core.report.ReportPanel', {
     showMySummary: true,
     queryMode: 'DETAIL',
 
+    calculateProperty: 'data.calculate',
+    rootProperty: 'data.list.list',
+    totalProperty: 'list.total',
+
     initComponent: function () {
         var me = this;
         var printAble = me.printAble;
@@ -131,6 +135,10 @@ Ext.define('saas.view.core.report.ReportPanel', {
                         displayInfo: true,
                         store: store
                     } : null],
+
+                    calculateProperty: me.calculateProperty,
+                    rootProperty: me.rootProperty,
+                    totalProperty: me.totalProperty,
                 }]
             });
 
@@ -200,51 +208,10 @@ Ext.define('saas.view.core.report.ReportPanel', {
                 },
                 reader: {
                     type: 'json',
-                    // rootProperty: 'data.list',
-                    rootProperty: function (data) {
-                        try {
-                            var grid = me.items.items[1],
-                                store = grid.store,
-                                columns = grid.columns,
-                                summaryData = data.data ? (data.data.calculate || []) : [],
-                                datas = data.data ? (data.data.list ? data.data.list.list : []) : [];
-
-                            Ext.Array.each(columns, function (c) {
-                                var type = c.summaryType,
-                                    name = c.dataIndex;
-
-                                var d = Ext.Array.findBy(summaryData, function (s) {
-                                    return s.hasOwnProperty(name);
-                                })
-                                if (type && d) {
-                                    if(typeof c.mySummaryRenderer == 'function') {
-                                        c.summaryValue = c.mySummaryRenderer(grid, c, datas);
-                                    }else if (type == 'count') {
-                                        c.summaryValue = Ext.util.Format.number(d[name], c.format || '0');
-                                    } else if (typeof c.summaryRenderer == 'function') {
-                                        c.summaryValue = c.summaryRenderer(d[name]);
-                                    } else if (typeof c.renderer == 'function') {
-                                        c.summaryValue = c.renderer(d[name]);
-                                    } else {
-                                        c.summaryValue = Ext.util.Format.number(d[name], c.format || '0.00');
-                                    }
-                                } else if(type && !d) {
-                                    if(typeof c.mySummaryRenderer == 'function') {
-                                        c.summaryValue = c.mySummaryRenderer(grid, c, datas);
-                                    }else {
-                                        c.summaryValue = me.getSummaryValue(datas, c);
-                                    }
-                                } else {
-                                    c.summaryValue = null;
-                                }
-                            });
-                            return datas;
-                        } catch (e) {
-                            console.log(e);
-                            saas.util.BaseUtil.showErrorToast(e.message);
-                        }
-                    },
-                    totalProperty: 'data.list.total',
+                    rootProperty: me.rootProperty,
+                    totalProperty: me.totalProperty,
+                    // rootProperty: 'data.list.list',
+                    // totalProperty: 'data.list.total',
                 },
                 listeners: {
                     exception: function (proxy, response, operation, eOpts) {
@@ -256,7 +223,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                             if (response.timedout) {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             } else {
-                                saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                                saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                             }
                         }
                     }
@@ -455,24 +422,6 @@ Ext.define('saas.view.core.report.ReportPanel', {
         return items;
     },
 
-    getSummaryValue: function(datas, c) {
-        var dataIndex = c.dataIndex,
-        type = c.summaryType,
-        values = datas.map(function(d) {
-            return d[c.dataIndex];
-        }),
-        sum = Ext.Array.sum(values);
-        if (type == 'count') {
-            return Ext.util.Format.number(values.length, '0');
-        } else if (typeof c.summaryRenderer == 'function') {
-            return c.summaryRenderer(sum);
-        } else if (typeof c.renderer == 'function') {
-            return c.renderer(sum);
-        } else {
-            return Ext.util.Format.number(sum, c.format || '0.00');
-        }
-    },
-
     getConditions: function () {
         var me = this,
             form = me.down('form'),

+ 2 - 2
frontend/saas-web/app/view/core/tab/Controller.js

@@ -25,7 +25,7 @@ Ext.define('saas.view.core.tab.Controller', {
     onTabActivate: function(component) {
         var tabView = component.down('container');
 
-        if(typeof tabView.refresh == 'function') {
+        if(tabView && typeof tabView.refresh == 'function') {
             tabView.refresh();
         }
 
@@ -72,7 +72,7 @@ Ext.define('saas.view.core.tab.Controller', {
             component.resetCloseClick = true;
         }
 
-        tabView.fireEvent('onTabActivate', tabView);
+        tabView && tabView.fireEvent('onTabActivate', tabView);
     },
 
     onTabDeactivate: function(component) {

+ 2 - 2
frontend/saas-web/app/view/document/address/DataListModel.js

@@ -28,8 +28,8 @@ Ext.define('saas.view.document.address.DataListModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }

+ 2 - 2
frontend/saas-web/app/view/document/bankinformation/DataListModel.js

@@ -33,8 +33,8 @@ Ext.define('saas.view.document.bankinformation.DataListModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }

+ 2 - 9
frontend/saas-web/app/view/document/bom/FormPanel.js

@@ -155,20 +155,13 @@ Ext.define('saas.view.document.bom.FormPanel', {
                 dataIndex : "bd_baseqty",
                 editor : {
                     xtype : "numberfield",
-                    decimalPrecision: 0,
+                    decimalPrecision: 3,
                     minValue:0,
                     maxLength: 10,
-                    listeners: {
-                        change: function(f, v) {
-                            if((v+'').length > 10) {
-                                f.setValue(Number((v+'').substr(0, 10)));
-                            }
-                        }
-                    }
                 },
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
+                    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);
                 }

+ 2 - 2
frontend/saas-web/app/view/document/employee/DataListModel.js

@@ -30,8 +30,8 @@ Ext.define('saas.view.document.employee.DataListModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }

+ 8 - 8
frontend/saas-web/app/view/document/kind/KindModel.js

@@ -30,8 +30,8 @@ Ext.define('saas.view.document.kind.KindModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }
@@ -69,8 +69,8 @@ Ext.define('saas.view.document.kind.KindModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }
@@ -108,8 +108,8 @@ Ext.define('saas.view.document.kind.KindModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }
@@ -148,8 +148,8 @@ Ext.define('saas.view.document.kind.KindModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }

+ 20 - 20
frontend/saas-web/app/view/document/product/BasePanel.js

@@ -74,12 +74,12 @@ Ext.define('saas.view.document.product.BasePanel', {
             text : "物料编号", 
             dataIndex : "pr_code", 
             width : 150.0
+        },{
+            text : "品牌", 
+            dataIndex : "pr_brand", 
+            width : 150.0
         }, {
-            text : "类型", 
-            dataIndex : "pr_kind", 
-            width : 110.0
-        }, {
-            text : "物料名称", 
+            text : "名称", 
             dataIndex : "pr_detail", 
             width : 200.0
         }, {
@@ -90,21 +90,10 @@ Ext.define('saas.view.document.product.BasePanel', {
             text : "规格", 
             dataIndex : "pr_spec", 
             width : 150.0
-        },{
-            text : "品牌", 
-            dataIndex : "pr_brand", 
-            width : 110.0 
-        },  {
-            text : "库存", 
-            dataIndex : "po_onhand",
-            xtype: 'numbercolumn',
-            width : 120.0,
-            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 : "pr_kind", 
+            width : 110.0
         },{
             text : "单位", 
             dataIndex : "pr_unit", 
@@ -120,6 +109,17 @@ Ext.define('saas.view.document.product.BasePanel', {
                 var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
+        },  {
+            text : "库存", 
+            dataIndex : "po_onhand",
+            xtype: 'numbercolumn',
+            width : 120.0,
+            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 : "pr_purcprice",

+ 41 - 41
frontend/saas-web/app/view/document/product/FormPanel.js

@@ -32,10 +32,31 @@ Ext.define('saas.view.document.product.FormPanel', {
         name: 'pr_code',
         fieldLabel: '物料编号',
         allowBlank: false
+    },{
+        editable:false,
+        xtype : "remotecombo", 
+        storeUrl:'/api/document/productbrand/getCombo',
+        name : "pr_brand", 
+        fieldLabel : "品牌", 
+        addHandler:function(b){
+            var form = this.ownerCmp.ownerCt;
+            this.dialog = form.add({
+                xtype: 'document-productbrand-window',
+                bind: {
+                    title: '新增物料品牌'
+                },
+                dataKind:'productbrand',
+                _parent:form,
+                _combo:this.ownerCmp,
+                record:null,
+                session: true
+            });
+            this.dialog.show();
+        }
     },{
         xtype: 'textfield',
         name: 'pr_detail',
-        fieldLabel: '物料名称',
+        fieldLabel: '名称',
         allowBlank: false
     },{
         xtype: 'hidden',
@@ -45,6 +66,10 @@ Ext.define('saas.view.document.product.FormPanel', {
         xtype: 'hidden',
         name: 'pr_statuscode',
         fieldLabel: '状态码'
+    },{
+        xtype: 'textfield',
+        name: 'pr_orispeccode',
+        fieldLabel: '型号'
     },{
         xtype: 'textfield',
         name: 'pr_spec',
@@ -74,31 +99,6 @@ Ext.define('saas.view.document.product.FormPanel', {
             });
             this.dialog.show();
         }
-    },{
-        xtype: 'textfield',
-        name: 'pr_orispeccode',
-        fieldLabel: '型号'
-    },{
-        editable:false,
-        xtype : "remotecombo", 
-        storeUrl:'/api/document/productbrand/getCombo',
-        name : "pr_brand", 
-        fieldLabel : "品牌", 
-        addHandler:function(b){
-            var form = this.ownerCmp.ownerCt;
-            this.dialog = form.add({
-                xtype: 'document-productbrand-window',
-                bind: {
-                    title: '新增物料品牌'
-                },
-                dataKind:'productbrand',
-                _parent:form,
-                _combo:this.ownerCmp,
-                record:null,
-                session: true
-            });
-            this.dialog.show();
-        }
     },{  
         editable:false,
         xtype : "remotecombo", 
@@ -122,6 +122,21 @@ Ext.define('saas.view.document.product.FormPanel', {
             });
             this.dialog.show();
         }
+    },{
+        xtype : "numberfield", 
+        name : "pr_standardprice", 
+        fieldLabel : "标准单价", 
+        allowBlank : true, 
+        columnWidth : 0.25,
+        decimalPrecision: 8,
+        minValue:0
+    },{
+        xtype : "numberfield", 
+        name : "pr_zxbzs", 
+        fieldLabel : "最小包装数", 
+        minValue:0,
+        decimalPrecision: 0,
+        allowBlank : true
     },{
         xtype : "hidden", 
         name : "pr_whid", 
@@ -149,14 +164,6 @@ Ext.define('saas.view.document.product.FormPanel', {
         xtype : "textfield", 
         name : "pr_vendname", 
         fieldLabel : "供应商名称"
-    },{
-        xtype : "numberfield", 
-        name : "pr_standardprice", 
-        fieldLabel : "标准单价", 
-        allowBlank : true, 
-        columnWidth : 0.25,
-        decimalPrecision: 8,
-        minValue:0
     },{
         ignore:true,
         readOnly:true,
@@ -175,13 +182,6 @@ Ext.define('saas.view.document.product.FormPanel', {
         fieldLabel : "最新出货单价", 
         decimalPrecision: 8,
         minValue:0
-    },{
-        xtype : "numberfield", 
-        name : "pr_zxbzs", 
-        fieldLabel : "最小包装数", 
-        minValue:0,
-        decimalPrecision: 0,
-        allowBlank : true
     },{  
         hidden:true,
         xtype : "datefield", 

+ 2 - 2
frontend/saas-web/app/view/document/productbrand/DataListModel.js

@@ -27,8 +27,8 @@ Ext.define('saas.view.document.productbrand.DataListModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }

+ 2 - 2
frontend/saas-web/app/view/document/productunit/DataListModel.js

@@ -27,8 +27,8 @@ Ext.define('saas.view.document.productunit.DataListModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }

+ 2 - 2
frontend/saas-web/app/view/document/warehouse/DataListModel.js

@@ -31,8 +31,8 @@ Ext.define('saas.view.document.warehouse.DataListModel', {
                                 saas.util.BaseUtil.showErrorToast('请求超时');
                             }
                         }else {
-                            console.error('exception: ', response.responseJson);
-                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                            console.error('exception: ', response);
+                            saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                         }
                     }
                 }

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

@@ -73,7 +73,7 @@ Ext.define('saas.view.home.infoCardList.InfoList', {
                                 if(response.timedout) {
                                     saas.util.BaseUtil.showErrorToast('请求超时');
                                 }else{
-                                    saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                                    saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                                 }
                             }
                         }

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

@@ -122,7 +122,7 @@ Ext.define('saas.view.home.infoCardList.Payment', {
         width: 150,
         hidden: true
     }, {
-        text: '单价',
+        text: '单价(元)',
         dataIndex: 'pd_orderprice',
         xtype: 'numbercolumn',
         hidden: true,
@@ -143,7 +143,7 @@ Ext.define('saas.view.home.infoCardList.Payment', {
             return Ext.util.Format.number(v, '0');
         },
     }, {
-        text: '金额',
+        text: '金额(元)',
         dataIndex: 'pd_total',
         xtype: 'numbercolumn',
         width: 110,

+ 2 - 2
frontend/saas-web/app/view/home/infoCardList/PurchaseIn.js

@@ -80,7 +80,7 @@ Ext.define('saas.view.home.infoCardList.PurchaseIn', {
         xtype: 'datecolumn',
         width: 110
     }, {
-        text: '单价',
+        text: '单价(元)',
         dataIndex: 'pd_price',
         xtype: 'numbercolumn',
         width: 110,
@@ -99,7 +99,7 @@ Ext.define('saas.view.home.infoCardList.PurchaseIn', {
             return Ext.util.Format.number(v, '0');
         },
     }, {
-        text: '金额',
+        text: '金额(元)',
         dataIndex: 'pd_total',
         xtype: 'numbercolumn',
         width: 110,

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

@@ -124,7 +124,7 @@ Ext.define('saas.view.home.infoCardList.Recment', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '金额',
+        text: '金额(元)',
         dataIndex: 'pd_ordertotal',
         xtype:'numbercolumn',
         width: 110,

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

@@ -71,7 +71,7 @@ Ext.define('saas.view.home.infoCardList.SaleOut', {
             return Ext.util.Format.number(v, format);
         },
     }, {
-        text: '单价',
+        text: '单价(元)',
         dataIndex: 'sd_price',
         xtype: 'numbercolumn',
         width: 110,

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

@@ -122,7 +122,7 @@ Ext.define('saas.view.home.infoCardList.UnauditCheckIn', {
         hidden: true,
         width: 150
     }, {
-        text: '单价',
+        text: '单价(元)',
         dataIndex: 'pd_orderprice',
         hidden: true,
         xtype: 'numbercolumn',
@@ -143,7 +143,7 @@ Ext.define('saas.view.home.infoCardList.UnauditCheckIn', {
             return Ext.util.Format.number(v, '0');
         },
     }, {
-        text: '金额',
+        text: '金额(元)',
         dataIndex: 'pd_total',
         xtype: 'numbercolumn',
         hidden: true,

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

@@ -121,7 +121,7 @@ Ext.define('saas.view.home.infoCardList.UnauditSaleOut', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '金额',
+        text: '金额(元)',
         dataIndex: 'pd_ordertotal',
         xtype:'numbercolumn',
         width: 110,

+ 44 - 7
frontend/saas-web/app/view/main/Main.js

@@ -114,6 +114,7 @@ Ext.define('saas.view.main.Main', {
                 {
                     //margin: '0 0 0 0',
                     xtype: 'tbtext',
+                    name:'realname',
                     cls:'sa-nav-button nav-realname',
                     bind: {
                         html: '{account.realname}'
@@ -121,14 +122,31 @@ Ext.define('saas.view.main.Main', {
                     style:{
                         cursor:'default',
                         textAlign:'center'
-                    }
+                    },
+                    listeners:{
+                        afterrender:function(b){
+                            var main = b.ownerCt.ownerCt;
+                            //调用
+                            var _localStorage = Ext.decode(localStorage.getItem('app-state-session'));
+                            var nowCompanyId = _localStorage.account.companyId;
+                            if(_localStorage.account.rolesMap){
+                                var rolesMap = _localStorage.account.rolesMap[nowCompanyId];
+                                if(rolesMap&&rolesMap.length>0){
+                                    for(var i = 0; i < rolesMap.length; i++) {
+                                        if(rolesMap[i].type==0){
+                                             main.getController().loadInvitationMsg(1)
+                                        }
+                                     }
+                                }
+                            }
+                        }
+                    },
                 },
                 {
                     // ui: 'header',
-                    arrowVisible: false,
-                    cls:' sa-nav-button',   
+                    cls:' sa-nav-button', 
                     width: 50,
-                    height:50,    
+                    height:50,   
                     bind: {
                         html:'<img class="x-img x-box-item x-toolbar-item x-img-header" style="height:35px;width:35px;margin-top: 6px;margin-left: 14px;" src="{avatarUrl}" alt="">'
                     }, 
@@ -139,7 +157,12 @@ Ext.define('saas.view.main.Main', {
                             text: '账户中心',
                             iconCls:'x-fa fa-user-o sa-navicon',
                             handler:function(){
-                                window.open(Ext.manifest.server.accountEnterprise,'_blank');
+                                var userId = saas.util.BaseUtil.getCurrentUser().id,
+                                url = Ext.manifest.server.accountEnterprise;
+                                if(userId == '-99999') {
+                                    url = Ext.manifest.server.accountCenter;
+                                }
+                                window.open(url, '_blank');
                             }
                         },{  
                             text: '意见反馈',
@@ -147,13 +170,27 @@ Ext.define('saas.view.main.Main', {
                             handler:'feedbackMsg'
                         }, {  
                             text: '加入邀请',
+                            name:'join',
                             iconCls:'x-fa fa-handshake-o sa-navicon',
-                            handler:'invitation'
+                            handler:function(b){
+                                saas.util.BaseUtil.openTab('sys-invitation-datalist','申请列表', 'sys-invitation-datalist');
+                            }
                         }, {
                             text: '退出',
                             iconCls:'x-fa fa-power-off sa-navicon',
                             handler: 'onLogout'
-                        }]
+                        }],
+                        listeners:{
+                            show:function(m){
+                                var name = m.ownerCmp.ownerCt.down('[name=realname]');
+                                var classList = name.getEl().dom.classList;
+                                if(classList.contains('x-header-redpoint')){
+                                    m.getEl().dom.classList.add('x-menu-redpoint')
+                                }else{
+                                    m.getEl().dom.classList.remove('x-menu-redpoint')
+                                }
+                            } 
+                        }
                     }
                 }
             ]

+ 28 - 0
frontend/saas-web/app/view/main/Main.scss

@@ -349,3 +349,31 @@ body > .x-mask {
         color: #34BAF6;
     }
 }
+
+.x-header-redpoint:after{
+    z-index: 100;
+    content: ' ';
+    display: block;
+    width: 8px;
+    height: 8px;
+    background-color: red;
+    border: 1px solid red;
+    border-radius: 12px;
+    position: absolute;
+    left: 76px;
+    top: -7px;
+}
+
+.x-menu-redpoint:after{
+    z-index: 100;
+    content: ' ';
+    display: block;
+    width: 5px;
+    height: 5px;
+    background-color: red;
+    border: 1px solid red;
+    border-radius: 12px;
+    position: absolute;
+    left: 88px;
+    top: 72px;
+}

+ 120 - 0
frontend/saas-web/app/view/main/MainController.js

@@ -115,5 +115,125 @@ Ext.define('saas.view.main.MainController', {
             }); 
         };
         win.show();
+    },
+
+    loadInvitationMsg: function(count) {
+        var me = this.view;//视图层
+        var hasInvitationMsg = false;
+        //查询后台
+        var param = [{
+            type:'condition',
+            value:"re_status=2"
+        }]
+        Ext.Ajax.request({  
+            url :'/api/commons/remind/apply/list',
+            timeout: 8000,  
+            async:false,
+            headers:{
+                'Access-Control-Allow-Origin': '*',
+                'Authorization':  saas.util.State.get('session').token,
+                "Content-Type": 'application/json;charset=UTF-8'
+            },
+            method: 'GET',
+            params:{
+                condition:JSON.stringify(param)
+            },
+            success: function(fp, o){
+                var res = Ext.decode(fp.responseText);
+                me.InvitationList = res.data.list;
+                if(res.data.list.length>0){
+                    hasInvitationMsg = true;
+                }else{
+                    hasInvitationMsg = false;
+                }
+            },
+            failure: function (response, opts) {}
+        });
+        var s = me.items.items[0].down('[name=realname]')
+        if(hasInvitationMsg){
+            s.getEl().dom.classList.add('x-header-redpoint')
+        }else{
+            s.getEl().dom.classList.remove('x-header-redpoint')
+        }
+        if(count==1){
+            //打开加入邀请窗口
+            setTimeout(function() {
+                me.getController().invitation();
+            }, 300);
+        }
+        setTimeout(function() {
+            me.getController().loadInvitationMsg(count+1);
+        }, 8000);
+    },
+
+    invitation:function(){
+        var me = this;
+        var data = me.view.InvitationList;
+        if(data.length>0){
+            var items = [{
+                margin:'0 0 0 60px',
+                xtype:'displayfield',
+                fieldStyle : 'font-weight: 800;font-size: 18px;color: #35baf6;',
+                value:'收到加入企业申请'
+            }];
+            Ext.each(data, function(item, index){
+                if(index<3){
+                    //最多3条
+                    var o = {
+                        margin:'10 0 0 0',
+                        xtype:'panel',
+                        layout: 'hbox',
+                        style:'border:1px solid #34BAF6;    padding-top: 3px;',
+                        items:[{
+                            labelWidth:60,
+                            fieldLabel:'申请人',
+                            xtype:'displayfield',
+                            fieldStyle : 'color: black;',
+                            value:item.username
+                        },{
+                            labelWidth:80,
+                            padding:'0 10 0 0',
+                            fieldLabel:'联系方式',
+                            xtype:'displayfield',
+                            fieldStyle : 'color: black;',
+                            value:item.mobile
+                        }]
+                    }
+                    items.push(o);
+                }
+            });
+            items.push({
+                width:128,
+                margin:'20 0 0 70',
+                xtype:'button',
+                text:'查 看',
+                handler:function(){
+                    saas.util.BaseUtil.openTab('sys-invitation-datalist','申请列表', 'sys-invitation-datalist');
+                    this.ownerCt.ownerCt.close()
+                }
+            });
+            var nowHeight = (items.length-2)*70+130;
+            //打开邀请窗口
+            var win = Ext.create('Ext.window.Window', {  
+                cls:'x-window-dbfind', 
+                height: nowHeight,
+                width: '50%',
+                modal:true,
+                title: '加入邀请',
+                bodyPadding: 10,
+                constrain: true,
+                closable: true,
+                layout: {
+                    type: 'vbox',
+                    align: 'center'
+                },
+                items:[{
+                    xtype:'panel',
+                    layout:'vbox',
+                    items:items
+                }]
+            });
+            win.show();
+        }
     }
 });

+ 4 - 0
frontend/saas-web/app/view/money/fundtransfer/FormPanelModel.js

@@ -2,4 +2,8 @@ Ext.define('saas.view.money.fundtransfer.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.money-fundtransfer-formpanel',
 
+    data: {
+        showCopyBtn: false
+    }
+
 });

+ 1 - 1
frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js

@@ -99,7 +99,7 @@ Ext.define('saas.view.money.fundtransfer.QueryPanel', {
             dataIndex: 'ftd_inbankname',
             width: 150
         }, {
-            text: '金额',
+            text: '金额(元)',
             xtype: 'numbercolumn',
             dataIndex: 'ftd_nowbalance',
             width: 110,

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

@@ -113,7 +113,7 @@ Ext.define('saas.view.money.othreceipts.FormPanel', {
                     }
                 }
             }, {
-                text : "金额", 
+                text : "金额(元)", 
                 xtype: 'numbercolumn',
                 dataIndex : "ord_nowbalance", 
                 width : 110.0,

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

@@ -113,7 +113,7 @@ Ext.define('saas.view.money.othspendings.FormPanel', {
                     }
                 }
             }, {
-                text : "金额", 
+                text : "金额(元)", 
                 xtype: 'numbercolumn',
                 dataIndex : "osd_nowbalance", 
                 width : 110.0,

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

@@ -3,6 +3,7 @@ Ext.define('saas.view.money.payBalance.FormPanelModel', {
     alias: 'viewmodel.money-paybalance-formpanel',
 
     data: {
+        showCopyBtn: false,
         showPrintBtn: true
     },
     

+ 4 - 0
frontend/saas-web/app/view/money/recBalance/FormPanelModel.js

@@ -2,6 +2,10 @@ Ext.define('saas.view.money.recBalance.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.money-recbalance-formpanel',
 
+    data: {
+        showCopyBtn: false
+    },
+
     formulas: {
         rb_custname_change: {
             bind: '{rb_custid}',

+ 1 - 8
frontend/saas-web/app/view/money/report/AccountDetails.js

@@ -27,14 +27,7 @@ Ext.define('saas.view.money.report.AccountDetails', {
             ["采购验收单", "采购验收单"],
             ["采购验退单", "采购验退单"],
             ["出货单", "销售出货单"],
-            ["销售退货单", "销售退货单"],
-            ["完工入库单", "完工入库单"],
-            ["生产领料单", "生产领料单"],
-            ["拆件领料单", "拆件领料单"],
-            ["其它入库单", "其它入库单"],
-            ["其它出库单", "其它出库单"],
-            ["调拨单", "调拨单"],
-            ["库存初始化", "库存初始化"]
+            ["销售退货单", "销售退货单"]
         ]
     }, {
         name: 'date',

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

@@ -85,7 +85,7 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '单价',
+        text: '单价(元)',
         dataIndex: 'pd_orderprice',
         exportFormat: 'Price',
         xtype: 'numbercolumn',
@@ -106,7 +106,7 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
             return Ext.util.Format.number(v, '0');
         }
     }, {
-        text: '金额',
+        text: '金额(元)',
         xtype: 'numbercolumn',
         exportFormat: 'Amount',
         width: 110,
@@ -125,8 +125,8 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
         //     return Ext.util.Format.number(v, format);
         // }
     }, {
-        text: '不含税单价',
-        width: 110,
+        text: '不含税单价(元)',
+        width: 150,
         dataIndex: 'pd_netprice',
         exportFormat: 'Price',
         xtype: 'numbercolumn',
@@ -137,8 +137,8 @@ Ext.define('saas.view.money.report.CustomerCheckCheck', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '不含税金额',
-        width: 110,
+        text: '不含税金额(元)',
+        width: 150,
         xtype: 'numbercolumn',
         exportFormat: 'Amount',
         dataIndex: 'pd_nettotal',

+ 2 - 2
frontend/saas-web/app/view/money/report/ProfitDetail.js

@@ -70,11 +70,11 @@ Ext.define('saas.view.money.report.ProfitDetail', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '不含税金额',
+        text: '不含税金额(元)',
         dataIndex: 'netamount',
         exportFormat: 'Amount',
         xtype: 'numbercolumn',
-        width: 110,
+        width: 150,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');

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

@@ -95,7 +95,7 @@ Ext.define('saas.view.money.report.VendorCheck', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '单价',
+        text: '单价(元)',
         dataIndex: 'pd_orderprice',
         exportFormat: 'Price',
         xtype: 'numbercolumn',
@@ -116,7 +116,7 @@ Ext.define('saas.view.money.report.VendorCheck', {
             return Ext.util.Format.number(v, '0');
         }
     }, {
-        text: '金额',
+        text: '金额(元)',
         xtype: 'numbercolumn',
         exportFormat: 'Amount',
         dataIndex: 'pd_total',
@@ -135,11 +135,11 @@ Ext.define('saas.view.money.report.VendorCheck', {
         //     return Ext.util.Format.number(v, format);
         // }
     }, {
-        text: '不含税单价',
+        text: '不含税单价(元)',
         dataIndex: 'pd_netprice',
         exportFormat: 'Price',
         xtype: 'numbercolumn',
-        width: 110,
+        width: 150,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
@@ -147,11 +147,11 @@ Ext.define('saas.view.money.report.VendorCheck', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '不含税金额',
+        text: '不含税金额(元)',
         dataIndex: 'pd_nettotal',
         exportFormat: 'Amount',
         xtype: 'numbercolumn',
-        width: 110,
+        width: 150,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');

+ 4 - 0
frontend/saas-web/app/view/money/verification/FormPanelModel.js

@@ -2,6 +2,10 @@ Ext.define('saas.view.money.verification.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.money-verification-formpanel',
 
+    data: {
+        showCopyBtn: false
+    },
+    
     formulas: {
         vc_kind_change: {
             bind: '{vc_kind}',

+ 34 - 9
frontend/saas-web/app/view/purchase/purchase/FormPanel.js

@@ -103,6 +103,18 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                             xtype : "productMultiDbfindTrigger"
                         }
                     },
+                    {
+                        text : "品牌", 
+                        width : 150.0, 
+                        dataIndex : "pr_brand",
+                        ignore:true,
+                        renderer: function (v, m, r) {
+                            if(!v){
+                                return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                            }                     
+                            return v;
+                        }
+                    },
                     {
                         text : "名称", 
                         width : 200.0, 
@@ -114,22 +126,23 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                             }                     
                             return v;
                         }
-                    },{
-                        text: 'model映射需要',
-                        dataIndex: 'productDTO',
-                        hidden: true,
                     },
                     {
-                        text : "规格", 
-                        dataIndex : "pr_spec", 
-                        width : 150.0,
+                        text : "型号", 
+                        width : 200.0, 
+                        dataIndex : "pr_orispeccode",
                         ignore:true,
                         renderer: function (v, m, r) {
                             if(!v){
                                 return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
                             }                     
-                            return v;    
+                            return v;
                         }
+                    },
+                    {
+                        text: 'model映射需要',
+                        dataIndex: 'productDTO',
+                        hidden: true,
                     },            
                     {
                         text : "数量", 
@@ -157,7 +170,19 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                         }
                     },
                     {
-                        text : "单价", 
+                        text : "单位", 
+                        width : 80.0, 
+                        dataIndex : "pr_unit",
+                        ignore:true,
+                        renderer: function (v, m, r) {
+                            if(!v){
+                                return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                            }                     
+                            return v;
+                        }
+                    },
+                    {
+                        text : "单价(元)", 
                         xtype: 'numbercolumn',
                         dataIndex : "pd_price", 
                         width : 110.0,

+ 6 - 0
frontend/saas-web/app/view/purchase/purchase/FormPanelController.js

@@ -54,6 +54,12 @@ Ext.define('saas.view.purchase.purchase.FormPanelController', {
                         },{
                             from:'pr_spec',to:'pr_spec'
                         },{
+                            from: 'pr_brand', to: 'pr_brand'
+                        },{
+                            from: 'pr_orispeccode', to: 'pr_orispeccode'
+                        },{
+                            from: 'pr_unit', to: 'pr_unit'
+                        }, {
                             from:'pr_purcprice',to:'pd_price'
                         },{
                             from:'pr_zxbzs',to:'pr_zxbzs'

+ 21 - 17
frontend/saas-web/app/view/purchase/purchase/QueryPanel.js

@@ -188,17 +188,17 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             dataIndex: 'pd_prodcode',
             width: 150
         },{
-            text: '物料名称',
+            text: '品牌',
+            dataIndex: 'pr_brand',
+            width: 150
+        },{
+            text: '名称',
             dataIndex: 'pr_detail',
             width: 200
-        }, {
-            text: '物料规格',
-            dataIndex: 'pr_spec',
-            width: 150
-        }, {
-            text: '单位',
-            dataIndex: 'pr_unit',
-            width: 80
+        },{
+            text: '型号',
+            dataIndex: 'pr_orispeccode',
+            width: 200
         },{
             text: '采购数量',
             dataIndex: 'pd_qty',
@@ -209,14 +209,13 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
                 var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
-            },
+            }
         }, {
-            text: '需求日期',
-            dataIndex: 'pd_delivery',
-            xtype: 'datecolumn',
-            width: 110
-        },{
-            text: '单价',
+            text: '单位',
+            dataIndex: 'pr_unit',
+            width: 80
+        }, {
+            text: '单价(元)',
             dataIndex: 'pd_price',
             xtype: 'numbercolumn',
             width: 110,
@@ -226,6 +225,11 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
                 var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
+        }, {
+            text: '需求日期',
+            dataIndex: 'pd_delivery',
+            xtype: 'datecolumn',
+            width: 110
         }, {
             text: '税率',
             dataIndex: 'pd_taxrate',
@@ -235,7 +239,7 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
                 return Ext.util.Format.number(v, '0');
             },
         },{
-            text: '金额',
+            text: '金额(元)',
             dataIndex: 'pd_total',
             xtype: 'numbercolumn',
             width: 110,

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

@@ -126,10 +126,18 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                     valueField : "value", 
                     xtype : "productMultiDbfindTrigger"
                 }
-            },{
-                text: 'model映射需要',
-                dataIndex: 'productDTO',
-                hidden: true,
+            },
+            {
+                text : "品牌", 
+                width : 150.0, 
+                dataIndex : "pr_brand",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
             },
             {
                 text : "名称", 
@@ -138,23 +146,28 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 ignore:true,
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
             },
             {
-                text : "规格", 
-                dataIndex : "pr_spec", 
-                width : 150.0,
+                text : "型号", 
+                width : 200.0, 
+                dataIndex : "pr_orispeccode",
                 ignore:true,
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
             },
+            {
+                text: 'model映射需要',
+                dataIndex: 'productDTO',
+                hidden: true,
+            },
             {
                 text : "数量", 
                 dataIndex : "pd_inqty", 
@@ -179,6 +192,34 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                     var format = '0.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
+            },{
+                text : "单位", 
+                width : 80.0, 
+                dataIndex : "pr_unit",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
+            },{
+                text : "单价(元)",
+                xtype: 'numbercolumn', 
+                width : 110.0,
+                editor : {
+                    xtype : "numberfield",
+                    decimalPrecision: 8,
+                    minValue:0
+                },
+                dataIndex : "pd_orderprice", 
+                width : 120.0,
+                renderer : function(v) {
+                    var arr = (v + '.').split('.');
+                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+                    var format = '0,000.' + xr.join('');
+                    return Ext.util.Format.number(v, format);
+                },
             }, {
                 text : "已转数", 
                 dataIndex : "pd_yqty",
@@ -233,23 +274,6 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 }
             },
             {
-                text : "单价",
-                xtype: 'numbercolumn', 
-                width : 110.0,
-                editor : {
-                    xtype : "numberfield",
-                    decimalPrecision: 8,
-                    minValue:0
-                },
-                dataIndex : "pd_orderprice", 
-                width : 120.0,
-                renderer : function(v) {
-                    var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join('');
-                    return Ext.util.Format.number(v, format);
-                },
-            }, {
                 xtype: 'numbercolumn',
                 text : "税率", 
                 dataIndex : "pd_taxrate", 
@@ -264,7 +288,7 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                     return Ext.util.Format.number(v, '0');
                 },
             },{
-                text : "含税金额", 
+                text : "含税金额(元)", 
                 xtype: 'numbercolumn',
                 dataIndex : "pd_ordertotal", 
                 width : 110.0, 
@@ -288,7 +312,7 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 }
             },
             {
-                text : "未税金额", 
+                text : "未税金额(元)", 
                 xtype: 'numbercolumn',
                 dataIndex : "pd_nettotal", 
                 width : 110.0, 

+ 6 - 0
frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js

@@ -39,6 +39,12 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanelController', {
                         },{
                             from:'pr_spec',to:'pr_spec'
                         },{
+                            from: 'pr_brand', to: 'pr_brand'
+                        },{
+                            from: 'pr_orispeccode', to: 'pr_orispeccode'
+                        },{
+                            from: 'pr_unit', to: 'pr_unit'
+                        }, {
                             from:'pr_whid',to:'pd_whid'
                         },{
                             from:'pr_whcode',to:'pd_whcode'

+ 19 - 15
frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js

@@ -197,17 +197,17 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
             dataIndex: 'pd_prodcode',
             width: 150
         },{
-            text: '物料名称',
+            text: '品牌',
+            dataIndex: 'pr_brand',
+            width: 150
+        },{
+            text: '名称',
             dataIndex: 'pr_detail',
             width: 200
         },{
-            text: '物料规格',
-            dataIndex: 'pr_spec',
-            width: 150
-        },{
-            text: '单位',
-            dataIndex: 'pr_unit',
-            width: 80
+            text: '型号',
+            dataIndex: 'pr_orispeccode',
+            width: 200
         },{
             text: '数量',
             dataIndex: 'pd_inqty',
@@ -219,12 +219,12 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
                 var format = '0,000.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             },
-        },{
-            text: '仓库',
-            dataIndex: 'pd_whname',
-            width: 150
-        },{
-            text: '单价',
+        }, {
+            text: '单位',
+            dataIndex: 'pr_unit',
+            width: 80
+        }, {
+            text: '单价(元)',
             dataIndex: 'pd_orderprice',
             xtype:'numbercolumn',
             renderer : function(v) {
@@ -234,6 +234,10 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
                 return Ext.util.Format.number(v, format);
             },            
             width: 110
+        },{
+            text: '仓库',
+            dataIndex: 'pd_whname',
+            width: 150
         },{
             text: '税率',
             dataIndex: 'pd_taxrate',
@@ -243,7 +247,7 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
                 return Ext.util.Format.number(v, '0');
             },
         },{
-            text: '金额',
+            text: '金额(元)',
             dataIndex: 'pd_ordertotal',
             xtype:'numbercolumn',
             width: 110,

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

@@ -126,27 +126,39 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                 dataIndex: 'productDTO',
                 hidden: true,
             },
+            {
+                text : "品牌", 
+                width : 150.0, 
+                dataIndex : "pr_brand",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
+            },
             {
                 text : "名称", 
-                dataIndex : "pr_detail", 
-                width : 200.0,
+                width : 200.0, 
+                dataIndex : "pr_detail",
                 ignore:true,
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
             },
             {
-                text : "规格", 
-                dataIndex : "pr_spec", 
-                width : 150.0,
+                text : "型号", 
+                width : 200.0, 
+                dataIndex : "pr_orispeccode",
                 ignore:true,
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
             },
@@ -174,6 +186,34 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                     var format = '0.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
+            },{
+                text : "单位", 
+                width : 80.0, 
+                dataIndex : "pr_unit",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
+            },{
+                text : "单价(元)",
+                xtype: 'numbercolumn', 
+                width : 110.0,
+                editor : {
+                    xtype : "numberfield",
+                    decimalPrecision: 8,
+                    minValue:0
+                },
+                dataIndex : "pd_orderprice", 
+                width : 120.0,
+                renderer : function(v) {
+                    var arr = (v + '.').split('.');
+                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+                    var format = '0,000.' + xr.join('');
+                    return Ext.util.Format.number(v, format);
+                },
             }, {
                 text : "仓库id", 
                 dataIndex : "pd_whid", 
@@ -201,23 +241,6 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                     valueField : "value", 
                     xtype : "warehouseDbfindTrigger"
                 }
-            }, {
-                text : "单价",
-                xtype: 'numbercolumn', 
-                width : 110.0,
-                editor : {
-                    xtype : "numberfield",
-                    decimalPrecision: 8,
-                    minValue:0
-                },
-                dataIndex : "pd_orderprice", 
-                width : 120.0,
-                renderer : function(v) {
-                    var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join('');
-                    return Ext.util.Format.number(v, format);
-                },
             }, {
                 text : "税率", 
                 xtype: 'numbercolumn',

+ 6 - 0
frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js

@@ -41,6 +41,12 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanelController', {
                         },{
                             from:'pr_spec',to:'pr_spec'
                         },{
+                            from: 'pr_brand', to: 'pr_brand'
+                        },{
+                            from: 'pr_orispeccode', to: 'pr_orispeccode'
+                        },{
+                            from: 'pr_unit', to: 'pr_unit'
+                        }, {
                             from:'pr_whid',to:'pd_whid'
                         },{
                             from:'pr_whcode',to:'pd_whcode'

+ 19 - 15
frontend/saas-web/app/view/purchase/purchaseOut/QueryPanel.js

@@ -220,17 +220,17 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
                     return Ext.util.Format.number(v, '0');
                 }
             },{
-                text: '物料名称',
+                text: '品牌',
+                dataIndex: 'pr_brand',
+                width: 150
+            },{
+                text: '名称',
                 dataIndex: 'pr_detail',
                 width: 200
             },{
-                text: '物料规格',
-                dataIndex: 'pr_spec',
-                width: 150
-            },{
-                text: '单位',
-                dataIndex: 'pr_unit',
-                width: 80
+                text: '型号',
+                dataIndex: 'pr_orispeccode',
+                width: 200
             },{
                 text: '数量',
                 dataIndex: 'pd_outqty',
@@ -242,12 +242,12 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 },
-            },{
-                text: '仓库',
-                dataIndex: 'pd_whname',
-                width: 150
-            },{
-                text: '单价',
+            }, {
+                text: '单位',
+                dataIndex: 'pr_unit',
+                width: 80
+            }, {
+                text: '单价(元)',
                 dataIndex: 'pd_orderprice',
                 xtype:'numbercolumn',
                 renderer : function(v) {
@@ -257,6 +257,10 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
                     return Ext.util.Format.number(v, format);
                 },            
                 width: 110
+            },{
+                text: '仓库',
+                dataIndex: 'pd_whname',
+                width: 150
             },{
                 text: '税率',
                 dataIndex: 'pd_taxrate',
@@ -266,7 +270,7 @@ Ext.define('saas.view.purchase.purchaseOut.QueryPanel', {
                     return Ext.util.Format.number(v, '0');
                 },
             },{
-                text: '金额',
+                text: '金额(元)',
                 dataIndex: 'pd_ordertotal',
                 xtype:'numbercolumn',
                 width: 110,

+ 6 - 6
frontend/saas-web/app/view/purchase/report/Purchase.js

@@ -115,7 +115,7 @@ Ext.define('saas.view.purchase.report.Purchase', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '单价',
+        text: '单价(元)',
         dataIndex: 'pd_price',
         exportFormat: 'Price',
         width: 110,
@@ -136,7 +136,7 @@ Ext.define('saas.view.purchase.report.Purchase', {
             return Ext.util.Format.number(v, '0');
         }
     }, {
-        text: '金额',
+        text: '金额(元)',
         dataIndex: 'pd_total',
         exportFormat: 'Amount',
         width: 110,
@@ -155,10 +155,10 @@ Ext.define('saas.view.purchase.report.Purchase', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '不含税单价',
+        text: '不含税单价(元)',
         dataIndex: 'pd_taxprice',
         exportFormat: 'Price',
-        width: 110,
+        width: 150,
         xtype: 'numbercolumn',
         renderer: function(v) {
             var arr = (v + '.').split('.');
@@ -167,9 +167,9 @@ Ext.define('saas.view.purchase.report.Purchase', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '不含税金额',
+        text: '不含税金额(元)',
         exportFormat: 'Amount',
-        width: 110,
+        width: 150,
         dataIndex: 'pd_taxtotal',
         xtype: 'numbercolumn',
         renderer: function(v) {

+ 3 - 4
frontend/saas-web/app/view/sale/report/Sale.js

@@ -124,7 +124,7 @@ Ext.define('saas.view.sale.report.Sale', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '单价',
+        text: '单价(元)',
         dataIndex: 'sd_price',
         exportFormat: 'Price',
         xtype: 'numbercolumn',
@@ -135,7 +135,7 @@ Ext.define('saas.view.sale.report.Sale', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '不含税单价',
+        text: '不含税单价(元)',
         dataIndex: 'sd_netprice',
         exportFormat: 'Price',
         xtype: 'numbercolumn',
@@ -173,7 +173,7 @@ Ext.define('saas.view.sale.report.Sale', {
             return Ext.util.Format.number(v, format);
         }
     }, {//∑不含税金额
-        text: '不含税金额',
+        text: '不含税金额(元)',
         xtype: 'numbercolumn',
         exportFormat: 'Amount',
         dataIndex: 'sd_nettotal',
@@ -188,7 +188,6 @@ Ext.define('saas.view.sale.report.Sale', {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
             var format = '0,000.' + xr.join('');
-            console.log(v, format, Ext.util.Format.number(v, format));
             return Ext.util.Format.number(v, format);
         }
     }, {

+ 4 - 4
frontend/saas-web/app/view/sale/report/SaleProfit.js

@@ -93,11 +93,11 @@ Ext.define('saas.view.sale.report.SaleProfit', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '含税单价',
+        text: '含税单价(元)',
         dataIndex: 'pd_sendprice',
         exportFormat: 'Price',
         xtype: 'numbercolumn',
-        width: 110,
+        width: 150,
         renderer: function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
@@ -114,7 +114,7 @@ Ext.define('saas.view.sale.report.SaleProfit', {
             return Ext.util.Format.number(v, '0');
         }
     }, {
-        text: '含税金额',
+        text: '含税金额(元)',
         dataIndex: 'pd_ordertotal',
         xtype: 'numbercolumn',
         renderer: function(v) {
@@ -124,7 +124,7 @@ Ext.define('saas.view.sale.report.SaleProfit', {
             return Ext.util.Format.number(v, format);
         }
     }, {
-        text: '不含税单价',
+        text: '不含税单价(元)',
         exportFormat: 'Price',
         dataIndex: 'pd_netprice',
         xtype: 'numbercolumn'

+ 57 - 15
frontend/saas-web/app/view/sale/sale/FormPanel.js

@@ -129,29 +129,44 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                         text: 'model映射需要',
                         dataIndex: 'productDTO',
                         hidden: true,
-                    }, {
+                    },
+                    {
+                        text : "品牌", 
+                        width : 150.0, 
+                        dataIndex : "pr_brand",
+                        ignore:true,
+                        renderer: function (v, m, r) {
+                            if(!v){
+                                return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                            }                     
+                            return v;
+                        }
+                    },
+                    {
                         text : "名称", 
-                        dataIndex : "pr_detail", 
-                        width : 200.0,
+                        width : 200.0, 
+                        dataIndex : "pr_detail",
                         ignore:true,
                         renderer: function (v, m, r) {
                             if(!v){
-                                return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                            }
+                                return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                            }                     
                             return v;
                         }
-                    }, {
-                        text : "规格", 
-                        dataIndex : "pr_spec",
+                    },
+                    {
+                        text : "型号", 
+                        width : 200.0, 
+                        dataIndex : "pr_orispeccode",
                         ignore:true,
-                        width : 150.0, 
                         renderer: function (v, m, r) {
                             if(!v){
-                                return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                            }
+                                return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                            }                     
                             return v;
                         }
-                    }, {
+                    },
+                    {
                         text : "数量", 
                         dataIndex : "sd_qty", 
                         width : 110.0,
@@ -175,7 +190,34 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                             var format = '0.' + xr.join('');
                             return Ext.util.Format.number(v, format);
                         }
-                    },  {
+                    },{
+                        text : "单位", 
+                        width : 80.0, 
+                        dataIndex : "pr_unit",
+                        ignore:true,
+                        renderer: function (v, m, r) {
+                            if(!v){
+                                return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                            }                     
+                            return v;
+                        }
+                    },{
+                        text : "单价(元)", 
+                        xtype: 'numbercolumn',
+                        dataIndex : "sd_price", 
+                        width : 110.0,
+                        editor : {
+                            xtype : "numberfield",
+                            decimalPrecision: 8,
+                            minValue:0
+                        },
+                        renderer : function(v) {
+                            var arr = (v + '.').split('.');
+                            var xr = (new Array(arr[1].length > 8 ? 8 :(arr[1].length < 2? 2 : arr[1].length))).fill('0');
+                            var format = '0,000.' + xr.join('');
+                            return Ext.util.Format.number(v, format);
+                       }
+                    },   {
                         text : "已转数", 
                         xtype: 'numbercolumn',
                         dataIndex : "sd_yqty", 
@@ -200,7 +242,7 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                         }
                     },
                     {
-                        text : "单价", 
+                        text : "单价(元)", 
                         xtype: 'numbercolumn',
                         dataIndex : "sd_price", 
                         width : 110.0,
@@ -242,7 +284,7 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                         }
                     },
                     {
-                        text : "含税金额", 
+                        text : "含税金额(元)", 
                         xtype: 'numbercolumn',
                         dataIndex : "sd_total", 
                         width : 110.0,

+ 6 - 0
frontend/saas-web/app/view/sale/sale/FormPanelController.js

@@ -63,6 +63,12 @@ Ext.define('saas.view.sale.sale.FormPanelController', {
                             from: 'pr_detail', to: 'pr_detail'
                         }, {
                             from: 'pr_spec', to: 'pr_spec'
+                        },{
+                            from: 'pr_brand', to: 'pr_brand'
+                        },{
+                            from: 'pr_orispeccode', to: 'pr_orispeccode'
+                        },{
+                            from: 'pr_unit', to: 'pr_unit'
                         }, {
                             from: 'id', to: 'sd_prodid', ignore: true
                         }],

+ 17 - 9
frontend/saas-web/app/view/sale/sale/QueryPanel.js

@@ -199,15 +199,19 @@ Ext.define('saas.view.sale.sale.QueryPanel', {
             text: '物料编号',
             dataIndex: 'sd_prodcode',
             width: 120
-        }, {
-            text: '物料名称',
+        },{
+            text: '品牌',
+            dataIndex: 'pr_brand',
+            width: 150
+        },{
+            text: '名称',
             dataIndex: 'pr_detail',
-            width: 120
-        }, {
-            text: '物料规格',
-            dataIndex: 'pr_spec',
-            width: 120
-        }, {
+            width: 200
+        },{
+            text: '型号',
+            dataIndex: 'pr_orispeccode',
+            width: 200
+        },{
             text: '数量',
             dataIndex: 'sd_qty',
             xtype: 'numbercolumn',
@@ -219,7 +223,11 @@ Ext.define('saas.view.sale.sale.QueryPanel', {
                 return Ext.util.Format.number(v, format);
             },
         }, {
-            text: '单价',
+            text: '单位',
+            dataIndex: 'pr_unit',
+            width: 80
+        }, {
+            text: '单价(元)',
             dataIndex: 'sd_price',
             xtype: 'numbercolumn',
             width: 120,

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

@@ -139,29 +139,44 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                 text: 'model映射需要',
                 dataIndex: 'productDTO',
                 hidden: true,
-            }, {
+            },
+            {
+                text : "品牌", 
+                width : 150.0, 
+                dataIndex : "pr_brand",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
+            },
+            {
                 text : "名称", 
+                width : 200.0, 
                 dataIndex : "pr_detail",
                 ignore:true,
-                width : 200.0, 
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
-            }, {
-                text : "规格", 
-                dataIndex : "pr_spec",
+            },
+            {
+                text : "型号", 
+                width : 200.0, 
+                dataIndex : "pr_orispeccode",
                 ignore:true,
-                width : 150.0, 
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
-            }, {
+            },
+            {
                 text : "数量", 
                 xtype: 'numbercolumn',
                 dataIndex : "pd_inqty", 
@@ -185,7 +200,34 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                     var format = '0.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
-            }, {
+            },{
+                text : "单位", 
+                width : 80.0, 
+                dataIndex : "pr_unit",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
+            },{
+                text : "单价(元)", 
+                xtype: 'numbercolumn',
+                dataIndex : "pd_sendprice", 
+                width : 110.0, 
+                editor : {
+                    xtype : "numberfield",
+                    decimalPrecision: 8,
+                    minValue:0
+                },
+                renderer : function(v) {
+                    var arr = (v + '.').split('.');
+                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+                    var format = '0,000.' + xr.join('');
+                    return Ext.util.Format.number(v, format);
+                },
+            },  {
                 text : "仓库ID", 
                 dataIndex : "pd_whid", 
                 width : 0
@@ -213,22 +255,6 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                 }
             },
             {
-                text : "单价", 
-                xtype: 'numbercolumn',
-                dataIndex : "pd_sendprice", 
-                width : 110.0, 
-                editor : {
-                    xtype : "numberfield",
-                    decimalPrecision: 8,
-                    minValue:0
-                },
-                renderer : function(v) {
-                    var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join('');
-                    return Ext.util.Format.number(v, format);
-                },
-            }, {
                 text : "税率", 
                 xtype: 'numbercolumn',
                 dataIndex : "pd_taxrate", 

+ 6 - 0
frontend/saas-web/app/view/sale/saleIn/FormPanelController.js

@@ -36,6 +36,12 @@ Ext.define('saas.view.sale.saleIn.FormPanelController', {
                                 from: 'pr_detail', to: 'pr_detail'
                             }, {
                                 from: 'pr_spec', to: 'pr_spec'
+                            },{
+                                from: 'pr_brand', to: 'pr_brand'
+                            },{
+                                from: 'pr_orispeccode', to: 'pr_orispeccode'
+                            },{
+                                from: 'pr_unit', to: 'pr_unit'
                             }, {
                                 from:'pr_whid',to:'pd_whid'
                             }, {

+ 18 - 2
frontend/saas-web/app/view/sale/saleIn/QueryPanel.js

@@ -219,7 +219,19 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
             text: '物料编号',
             dataIndex: 'pd_prodcode',
             width: 150
-        }, {
+        },{
+            text: '品牌',
+            dataIndex: 'pr_brand',
+            width: 150
+        },{
+            text: '名称',
+            dataIndex: 'pr_detail',
+            width: 200
+        },{
+            text: '型号',
+            dataIndex: 'pr_orispeccode',
+            width: 200
+        },{
             text: '退货数量',
             dataIndex: 'pd_inqty',
             xtype:'numbercolumn',
@@ -230,6 +242,10 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
                 var format = '0.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
+        }, {
+            text: '单位',
+            dataIndex: 'pr_unit',
+            width: 80
         }, {
             text: '销售单价',
             dataIndex: 'pd_sendprice',
@@ -242,7 +258,7 @@ Ext.define('saas.view.sale.saleIn.QueryPanel', {
                 return Ext.util.Format.number(v, format);
             }
         }, {
-            text: '金额',
+            text: '金额(元)',
             dataIndex: 'pd_total',
             xtype:'numbercolumn',
             width: 110,

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

@@ -150,29 +150,44 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                 text: 'model映射需要',
                 dataIndex: 'productDTO',
                 hidden: true,
-            }, {
+            },
+            {
+                text : "品牌", 
+                width : 150.0, 
+                dataIndex : "pr_brand",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
+            },
+            {
                 text : "名称", 
+                width : 200.0, 
                 dataIndex : "pr_detail",
                 ignore:true,
-                width : 200.0, 
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
-            }, {
-                text : "规格", 
-                dataIndex : "pr_spec",
+            },
+            {
+                text : "型号", 
+                width : 200.0, 
+                dataIndex : "pr_orispeccode",
                 ignore:true,
-                width : 150.0, 
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
-            },  {
+            },
+            {
                 text : "出货数量", 
                 xtype: 'numbercolumn',
                 dataIndex : "pd_outqty", 
@@ -196,7 +211,34 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                     var format = '0.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
-            }, {
+            },{
+                text : "单位", 
+                width : 80.0, 
+                dataIndex : "pr_unit",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
+            },{
+                text : "单价(元)", 
+                xtype: 'numbercolumn',
+                dataIndex : "pd_sendprice", 
+                width : 110.0,
+                editor : {
+                    xtype : "numberfield",
+                    decimalPrecision: 8,
+                    minValue:0
+                },
+                renderer : function(v) {
+                    var arr = (v + '.').split('.');
+                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
+                    var format = '0,000.' + xr.join('');
+                    return Ext.util.Format.number(v, format);
+                },
+            },{
                 text : "仓库ID", 
                 dataIndex : "pd_whid", 
                 hidden :true
@@ -225,22 +267,6 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                 }
             },
             {
-                text : "单价", 
-                xtype: 'numbercolumn',
-                dataIndex : "pd_sendprice", 
-                width : 110.0,
-                editor : {
-                    xtype : "numberfield",
-                    decimalPrecision: 8,
-                    minValue:0
-                },
-                renderer : function(v) {
-                    var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length > 8 ? 8 : arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join('');
-                    return Ext.util.Format.number(v, format);
-                },
-            }, {
                 text : "税率", 
                 xtype: 'numbercolumn',
                 dataIndex : "pd_taxrate", 
@@ -256,10 +282,10 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                 }
             }, 
            {
-                text : "含税金额", 
+                text : "含税金额(元)", 
                 xtype: 'numbercolumn',
                 dataIndex : "pd_ordertotal", 
-                width : 110.0, 
+                width : 150.0, 
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
@@ -275,10 +301,10 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                 }
             },
             {
-                text : "未税金额", 
+                text : "未税金额(元)", 
                 xtype: 'numbercolumn',
                 dataIndex : "pd_nettotal", 
-                width : 110.0, 
+                width : 150.0, 
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length)).fill('0');

+ 6 - 0
frontend/saas-web/app/view/sale/saleOut/FormPanelController.js

@@ -33,6 +33,12 @@ Ext.define('saas.view.sale.saleout.FormPanelController', {
                             from:'pr_detail',to:'pr_detail'
                         }, {
                             from:'pr_spec',to:'pr_spec'
+                        },{
+                            from: 'pr_brand', to: 'pr_brand'
+                        },{
+                            from: 'pr_orispeccode', to: 'pr_orispeccode'
+                        },{
+                            from: 'pr_unit', to: 'pr_unit'
                         }, {
                             from:'pr_whid',to:'pd_whid'
                         }, {

+ 18 - 6
frontend/saas-web/app/view/sale/saleOut/QueryPanel.js

@@ -153,7 +153,7 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
             dataIndex: 'pi_remark',
             width: 250
         },{
-            text: '未含税金额',
+            text: '未含税金额(元)',
             dataIndex: 'pi_nettotal',
             xtype:'numbercolumn',
             hidden :true
@@ -211,11 +211,19 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
             text: '物料编号',
             dataIndex: 'pd_prodcode',
             width: 150
-        }, {
-            text: '物料名称',
-            dataIndex: 'pr_detail',
+        },{
+            text: '品牌',
+            dataIndex: 'pr_brand',
             width: 150
-        }, {
+        },{
+            text: '名称',
+            dataIndex: 'pr_detail',
+            width: 200
+        },{
+            text: '型号',
+            dataIndex: 'pr_orispeccode',
+            width: 200
+        },{
             text: '出货数量',
             dataIndex: 'pd_outqty',
             xtype:'numbercolumn',
@@ -226,6 +234,10 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
                 var format = '0.' + xr.join('');
                 return Ext.util.Format.number(v, format);
             }
+        }, {
+            text: '单位',
+            dataIndex: 'pr_unit',
+            width: 80
         }, {
             text: '销售单价',
             dataIndex: 'pd_sendprice',
@@ -238,7 +250,7 @@ Ext.define('saas.view.sale.saleout.QueryPanel', {
                 return Ext.util.Format.number(v, format);
             }
         }, {
-            text: '金额',
+            text: '金额(元)',
             dataIndex: 'pd_ordertotal',
             xtype:'numbercolumn',
             width: 110,

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

@@ -115,27 +115,39 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanel', {
                 dataIndex: 'productDTO',
                 hidden: true,
             },
+            {
+                text : "品牌", 
+                width : 150.0, 
+                dataIndex : "pr_brand",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
+            },
             {
                 text : "名称", 
-                dataIndex : "pr_detail", 
-                width : 200.0,
+                width : 200.0, 
+                dataIndex : "pr_detail",
                 ignore:true,
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
             },
             {
-                text : "规格", 
-                dataIndex : "pr_spec", 
-                width : 150.0,
+                text : "型号", 
+                width : 200.0, 
+                dataIndex : "pr_orispeccode",
                 ignore:true,
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
             },
@@ -163,6 +175,17 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanel', {
                     var format = '0.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
+            },{
+                text : "单位", 
+                width : 80.0, 
+                dataIndex : "pr_unit",
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
+                    return v;
+                }
             },{
                 text : "拨出仓库id", 
                 dataIndex : "pd_whid", 

+ 6 - 0
frontend/saas-web/app/view/stock/appropriationInOut/FormPanelController.js

@@ -59,6 +59,12 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                             from: 'pr_spec',
                             to: 'pr_spec'
                         },{
+                            from: 'pr_brand', to: 'pr_brand'
+                        },{
+                            from: 'pr_orispeccode', to: 'pr_orispeccode'
+                        },{
+                            from: 'pr_unit', to: 'pr_unit'
+                        }, {
                             from:'pr_whid',to:'pd_whid'
                         },{
                             from:'pr_whcode',to:'pd_whcode'

+ 13 - 9
frontend/saas-web/app/view/stock/appropriationInOut/QueryPanel.js

@@ -180,17 +180,17 @@ Ext.define('saas.view.stock.appropriationInOut.QueryPanel', {
                 dataIndex: 'pd_prodcode',
                 width: 150
             },{
-                text: '物料名称',
+                text: '品牌',
+                dataIndex: 'pr_brand',
+                width: 150
+            },{
+                text: '名称',
                 dataIndex: 'pr_detail',
                 width: 200
             },{
-                text: '规格',
-                dataIndex: 'pr_spec',
-                width: 150
-            },{
-                text: '单位',
-                dataIndex: 'pr_unit',
-                width: 80
+                text: '型号',
+                dataIndex: 'pr_orispeccode',
+                width: 200
             },{
                 text: '数量',
                 dataIndex: 'pd_outqty',
@@ -202,7 +202,11 @@ Ext.define('saas.view.stock.appropriationInOut.QueryPanel', {
                     var format = '0,000.' + xr.join('');
                     return Ext.util.Format.number(v, format);
                 }
-            },{
+            }, {
+                text: '单位',
+                dataIndex: 'pr_unit',
+                width: 80
+            }, {
                 text: '拨出仓',
                 dataIndex: 'pd_whname',
                 width: 150

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

@@ -245,7 +245,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
                                 if(response.timedout) {
                                     saas.util.BaseUtil.showErrorToast('请求超时');
                                 }else{
-                                    saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson.message);
+                                    saas.util.BaseUtil.showErrorToast('查询失败:' + response.responseJson?response.responseJson.message:'请求超时');
                                 }
                             }
                         }

+ 48 - 36
frontend/saas-web/app/view/stock/make/FormPanel.js

@@ -110,7 +110,7 @@ Ext.define('saas.view.stock.make.FormPanel', {
     },{
         xtype : "numberfield", 
         name : "ma_price", 
-        fieldLabel : "单价",
+        fieldLabel : "单价(元)",
         readOnly:true,
         editable:false,
         decimalPrecision:8,
@@ -120,7 +120,7 @@ Ext.define('saas.view.stock.make.FormPanel', {
         name : "ma_total",
         readOnly:true,
         editable:false, 
-        fieldLabel : "金额",
+        fieldLabel : "金额(元)",
         decimalPrecision:2,
         columnWidth: 0.25
     },
@@ -169,38 +169,38 @@ Ext.define('saas.view.stock.make.FormPanel', {
                 hidden: true,
             },
             {
-                text : "名称", 
-                dataIndex : "pr_detail",
-                width : 200.0,
+                text : "品牌", 
+                width : 150.0, 
+                dataIndex : "pr_brand",
                 ignore:true,
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
             },
             {
-                text : "规格", 
-                dataIndex : "pr_spec",
-                width : 150.0,
+                text : "名称", 
+                width : 200.0, 
+                dataIndex : "pr_detail",
                 ignore:true,
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
             },
             {
-                text : "单位", 
-                dataIndex : "pr_unit",
-                width : 80.0,
+                text : "型号", 
+                width : 200.0, 
+                dataIndex : "pr_orispeccode",
                 ignore:true,
                 renderer: function (v, m, r) {
                     if(!v){
-                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
-                    }
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null; 
+                    }                     
                     return v;
                 }
             },            
@@ -228,6 +228,37 @@ Ext.define('saas.view.stock.make.FormPanel', {
                     return Ext.util.Format.number(v, format);
                 }
             },
+            {
+                text : "单位", 
+                dataIndex : "pr_unit",
+                width : 80.0,
+                ignore:true,
+                renderer: function (v, m, r) {
+                    if(!v){
+                        return r.data["productDTO"]?r.data["productDTO"][m.column.dataIndex]:null;
+                    }
+                    return v;
+                }
+            },{
+                text : "成本单价", 
+                dataIndex : "mm_price", 
+                xtype: 'numbercolumn',
+                width : 110.0,
+                editor : {
+                    xtype : "numberfield",
+                    decimalPrecision: 8,
+                    minValue:0
+                },
+                listeners:{
+                    edit:'price_change'
+                },
+                renderer : function(v) {
+                    var arr = (v + '.').split('.');
+                    var xr = (new Array(arr[1].length)).fill('0');
+                    var format = '0,000.' + xr.join('');
+                    return Ext.util.Format.number(v, format);
+                }
+            },
             {
                 text : "单位用量", 
                 xtype: 'numbercolumn',
@@ -285,25 +316,6 @@ Ext.define('saas.view.stock.make.FormPanel', {
                     xtype : "warehouseDbfindTrigger"
                 }
             },{
-                text : "成本单价", 
-                dataIndex : "mm_price", 
-                xtype: 'numbercolumn',
-                width : 110.0,
-                editor : {
-                    xtype : "numberfield",
-                    decimalPrecision: 8,
-                    minValue:0
-                },
-                listeners:{
-                    edit:'price_change'
-                },
-                renderer : function(v) {
-                    var arr = (v + '.').split('.');
-                    var xr = (new Array(arr[1].length)).fill('0');
-                    var format = '0,000.' + xr.join('');
-                    return Ext.util.Format.number(v, format);
-                }
-            },            {
                 text : "成本金额", 
                 xtype: 'numbercolumn',
                 dataIndex : "mm_amount", 

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

@@ -57,6 +57,12 @@ Ext.define('saas.view.stock.make.FormPanelController', {
                         }, {
                             from: 'pr_spec',
                             to: 'pr_spec'
+                        },{
+                            from: 'pr_brand', to: 'pr_brand'
+                        },{
+                            from: 'pr_orispeccode', to: 'pr_orispeccode'
+                        },{
+                            from: 'pr_unit', to: 'pr_unit'
                         }, {
                             from: 'pr_unit',
                             to: 'pr_unit'

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio