Browse Source

Merge remote-tracking branch 'origin/dev' into dev

heqinwei 7 years ago
parent
commit
caaee3ff5f
37 changed files with 240 additions and 85 deletions
  1. 42 14
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/ExcelServiceImpl.java
  2. 2 0
      applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/VendorDTO.java
  3. 2 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Vendor.java
  4. 2 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/VendorList.java
  5. 1 1
      applications/document/document-server/src/main/resources/mapper/AddressMapper.xml
  6. 16 4
      applications/document/document-server/src/main/resources/mapper/VendorMapper.xml
  7. 4 1
      applications/money/money-server/src/main/resources/application.yml
  8. 1 1
      applications/purchase/purchase-server/src/main/resources/application.yml
  9. 4 1
      applications/sale/sale-server/src/main/resources/application.yml
  10. 1 1
      applications/storage/storage-server/src/main/resources/application.yml
  11. 17 2
      framework/core/src/main/java/com/usoftchina/saas/utils/RegexpUtils.java
  12. 2 1
      frontend/saas-portal-web/src/components/conenter/addenterprise.vue
  13. 1 1
      frontend/saas-portal-web/src/components/conenter/company.vue
  14. 2 4
      frontend/saas-portal-web/src/components/conenter/details.vue
  15. 5 3
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  16. 8 0
      frontend/saas-portal-web/src/pages/index/index.js
  17. 28 2
      frontend/saas-portal-web/src/pages/index/index.vue
  18. 1 1
      frontend/saas-portal-web/src/store/index.js
  19. 48 15
      frontend/saas-web/app/view/core/base/ImportWindow.js
  20. 5 0
      frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js
  21. 5 0
      frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js
  22. 7 7
      frontend/saas-web/app/view/core/form/FormPanelController.js
  23. 9 0
      frontend/saas-web/app/view/document/product/FormController.js
  24. 1 1
      frontend/saas-web/app/view/home/charts/MonthIO.js
  25. 1 1
      frontend/saas-web/app/view/home/charts/MonthPurchase.js
  26. 1 1
      frontend/saas-web/app/view/home/charts/MonthSale.js
  27. 1 1
      frontend/saas-web/app/view/home/charts/ProfitDetail.js
  28. 1 1
      frontend/saas-web/app/view/home/charts/PurchaseTrend.js
  29. 1 1
      frontend/saas-web/app/view/home/charts/SaleTrend.js
  30. 1 1
      frontend/saas-web/app/view/home/charts/StockAmount.js
  31. 2 1
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  32. 2 1
      frontend/saas-web/app/view/money/recBalance/FormPanel.js
  33. 7 7
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js
  34. 7 7
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanelController.js
  35. 1 1
      frontend/saas-web/app/view/stock/make/FormPanelController.js
  36. 0 1
      frontend/saas-web/app/view/stock/report/DataList.js
  37. 1 1
      frontend/saas-web/app/view/stock/report/DataListController.js

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

@@ -14,6 +14,7 @@ import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.DateUtils;
+import com.usoftchina.saas.utils.RegexpUtils;
 import com.usoftchina.saas.utils.StringUtils;
 import org.apache.poi.hssf.util.HSSFColor;
 import org.apache.poi.ss.usermodel.*;
@@ -163,27 +164,28 @@ public class ExcelServiceImpl implements ExcelService{
                        List<TempletSet> main = columns.get(position);
                        for (TempletSet set : main) {
                            //取excel值
-                           if ("true".equals(set.getNecessary())) {
+                           value = data.get(set.getDescription());
+                          /* if ("true".equals(set.getNecessary())) {
                                value = data.get("*" + set.getDescription());
                            } else {
                                value = data.get(set.getDescription());
-                           }
+                           }*/
                            //取编号字段
-                           if (set.isCodefield() && !data.get("*" + set.getDescription()).equals("")) {
+                           if (set.isCodefield() && !"".equals(value)) {
                                mainData = new JSONObject();
                                codeValue = value;
                                difference = true;
                                validateCode.add(codeValue);
                            }
                            //检查是否是同一单
-                           if (set.isCodefield() && data.get("*" + set.getDescription()).equals("")) {
+                           if (set.isCodefield() && "".equals(value)) {
                                difference = false;
                                break;
                            }
                            //检查主表必填字段是否完整
                            if (difference) {
                                dd.setDd_codevalue(codeValue);
-                               if ("true".equals(set.getNecessary()) && data.get("*" + set.getDescription()).equals("")) {
+                               if ("true".equals(set.getNecessary()) && "".equals(value)) {
                                    err.append("第" + (i + 3) + "行 " + set.getDescription() + " 必填字段未填写!<br/> ");
                                    break;
                                }
@@ -196,9 +198,18 @@ public class ExcelServiceImpl implements ExcelService{
                                    break;
                                }
                            }
-                           //如果为数字类型且为空默认赋值0
-                           if ("number".equals(set.getType()) && StringUtils.isEmpty(value)) {
-                                value = "0";
+                           //如果为数字类型且为空默认赋值0,检测是否为数字类型
+                           if ("number".equals(set.getType())) {
+                               if (StringUtils.isEmpty(value)) {
+                                   value = "0";
+                               } else {
+                                   Boolean numner = isNumner(value);
+                                   if (!numner) {
+                                       err.append("第" + (i + 3) + "行 " + set.getDescription() + " 数字格式不正确!<br/> ");
+                                       break;
+                                   }
+                               }
+
                            }
                            //插入主表数据
                            if (null != mainData) {
@@ -216,11 +227,12 @@ public class ExcelServiceImpl implements ExcelService{
                        detailData = new JSONObject();
                        for (TempletSet set : detail) {
                            //取excel值
-                           if ("true".equals(set.getNecessary())) {
+                           value = data.get(set.getDescription());
+                          /* if ("true".equals(set.getNecessary())) {
                                value = data.get("*" + set.getDescription());
                            } else {
                                value = data.get(set.getDescription());
-                           }
+                           }*/
                            if ("true".equals(set.getNecessary()) && value.equals("")) {
                                detailData = null;
                                //err.append("第" + (i + 3) + "行 " + set.getDescription() + " 必填字段未填写!<br/> ");
@@ -284,6 +296,19 @@ public class ExcelServiceImpl implements ExcelService{
     }
 
 
+    private Boolean isNumner(String str) {
+        for(int i=str.length() - 1; i>=0; i--){
+            int chr=str.charAt(i);
+            if(chr < 48 || chr >  57) {
+                if (chr == 46) {
+                    continue;
+                }
+                return false;
+            }
+
+        }
+        return true;
+    }
 
 
     private boolean validateDateFormat(String date) {
@@ -333,6 +358,7 @@ public class ExcelServiceImpl implements ExcelService{
             switch(cell.getCellType()){
                 case Cell.CELL_TYPE_NUMERIC:{
                     cellValue = String.valueOf(cell.getNumericCellValue());
+                    cellValue = RegexpUtils.replaceSpecialCharacter(cellValue);
                     //判断是否为INT类型
                     if (Double.valueOf(cellValue.toString()).intValue() - Double.valueOf(cellValue.toString()) == 0) {
                         return cellValue.toString().substring(0, cellValue.toString().indexOf("."));
@@ -344,14 +370,17 @@ public class ExcelServiceImpl implements ExcelService{
                     if(DateUtil.isCellDateFormatted(cell)){
                         //转换为日期格式YYYY-mm-dd
                         cellValue = cell.getDateCellValue();
+                        cellValue = RegexpUtils.replaceSpecialCharacter(cellValue);
                     }else{
                         //数字
                         cellValue = String.valueOf(cell.getNumericCellValue());
+                        cellValue = RegexpUtils.replaceSpecialCharacter(cellValue);
                     }
                     break;
                 }
                 case Cell.CELL_TYPE_STRING:{
                     cellValue = cell.getRichStringCellValue().getString();
+                    cellValue = RegexpUtils.replaceSpecialCharacter(cellValue);
                     break;
                 }
                 default:
@@ -464,16 +493,15 @@ public class ExcelServiceImpl implements ExcelService{
 
     private CellStyle getCellStyle(SXSSFWorkbook workbook, boolean main) {
         CellStyle style = workbook.createCellStyle();
-        style.setFillBackgroundColor((short) 18);
-        style.setFillPattern(FillPatternType.LEAST_DOTS);
         Font font = workbook.createFont();
         font.setFontName("仿宋_GB2312");// 字体
         font.setFontHeightInPoints((short) 12);// 字号
+        font.setBold(true);
         font.setColor((short)64);// 颜色
         style.setFont(font);
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
         style.setAlignment(HorizontalAlignment.CENTER);
-        style.setFillForegroundColor(HSSFColor.GREEN.index);
-        style.setFillBackgroundColor(main ? HSSFColor.LIGHT_YELLOW.index : HSSFColor.PALE_BLUE.index);
+        style.setFillForegroundColor(main ? HSSFColor.LIGHT_YELLOW.index : HSSFColor.PALE_BLUE.index);
         style.setBorderBottom(BorderStyle.MEDIUM);
         style.setBorderLeft(BorderStyle.MEDIUM);
         style.setBorderRight(BorderStyle.MEDIUM);

+ 2 - 0
applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/VendorDTO.java

@@ -27,4 +27,6 @@ public class VendorDTO extends CommonBaseDTO implements Serializable{
 
     private String ve_buyername;
 
+    private String ve_address;
+
 }

+ 2 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Vendor.java

@@ -113,4 +113,6 @@ public class Vendor extends CommonBaseEntity implements Serializable{
 
     private String ve_buyername;
 
+    private String ve_address;
+
 }

+ 2 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/VendorList.java

@@ -104,6 +104,8 @@ public class VendorList implements Serializable {
 
     private String ve_buyername;
 
+    private String ve_address;
+
     /* 从表字段 */
 
     private Integer vc_veid;

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

@@ -11,7 +11,7 @@
     <result column="ad_text3" jdbcType="VARCHAR" property="ad_text3" />
     <result column="ad_text4" jdbcType="VARCHAR" property="ad_text4" />
     <result column="ad_text5" jdbcType="VARCHAR" property="ad_text5" />
-    <result column="ad_default" jdbcType="INTEGER" property="ad_address" />
+    <result column="ad_default" jdbcType="INTEGER" property="ad_default" />
   </resultMap>
   <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.usoftchina.saas.document.entities.Address">
     <result column="ad_address" jdbcType="LONGVARCHAR" property="ad_address" />

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

@@ -31,6 +31,7 @@
         <result column="ve_beginym" property="ve_beginym" jdbcType="INTEGER" />
         <result column="ve_preamount" property="ve_preamount" jdbcType="DOUBLE" />
         <result column="ve_remark" property="ve_remark" jdbcType="VARCHAR" />
+        <result column="ve_address" property="ve_address" jdbcType="VARCHAR" />
     </resultMap>
     <resultMap id="VendorDTOResultMapper" type="com.usoftchina.saas.document.dto.VendorDTO">
         <id column="ve_id" property="id" jdbcType="INTEGER" />
@@ -40,6 +41,7 @@
         <result column="ve_type" property="ve_type" jdbcType="VARCHAR" />
         <result column="ve_status" property="ve_status" jdbcType="VARCHAR" />
         <result column="ve_remark" property="ve_remark" jdbcType="VARCHAR" />
+        <result column="ve_address" property="ve_address" jdbcType="VARCHAR" />
     </resultMap>
 
     <select id="getVendorsByCondition" resultMap="VendorDTOResultMapper">
@@ -73,6 +75,7 @@
         <result column="ve_status" property="ve_status" jdbcType="VARCHAR" />
         <result column="ve_statuscode" property="ve_statuscode" jdbcType="VARCHAR" />
         <result column="ve_leftamount" property="ve_leftamount" jdbcType="INTEGER" />
+        <result column="ve_address" property="ve_address" jdbcType="VARCHAR" />
         <result column="ve_text1" property="ve_text1" jdbcType="VARCHAR" />
         <result column="ve_text2" property="ve_text2" jdbcType="VARCHAR" />
         <result column="ve_text3" property="ve_text3" jdbcType="VARCHAR" />
@@ -112,7 +115,7 @@
         ve_promisedays, ve_taxrate, ve_nsrzh, ve_bankaccount, ve_bankcode, ve_status, ve_statuscode,
         companyId, updaterId, updateTime, ve_text1,
         ve_text2, ve_text3, ve_text4, ve_text5, ve_payamount, ve_leftamount, ve_beginym, ve_preamount,ve_remark,
-        ve_buyerid,ve_buyercode,ve_buyername
+        ve_buyerid,ve_buyercode,ve_buyername,ve_address
     </sql>
     <select id="selectByPrimaryKey" resultMap="VendorResultMapper" parameterType="java.lang.Long" >
         select
@@ -230,7 +233,10 @@
                 ve_buyercode,
             </if>
             <if test="ve_buyername!=null">
-                ve_buyername
+                ve_buyername,
+            </if>
+            <if test="ve_address!=null">
+                ve_address
             </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides="," >
@@ -334,7 +340,10 @@
                 #{ve_buyercode,jdbcType=VARCHAR},
             </if>
             <if test="ve_buyername != null">
-                #{ve_buyername,jdbcType=VARCHAR}
+                #{ve_buyername,jdbcType=VARCHAR},
+            </if>
+            <if test="ve_address != null">
+                #{ve_address,jdbcType=VARCHAR}
             </if>
         </trim>
     </insert>
@@ -432,7 +441,10 @@
                 ve_buyercode = #{ve_buyercode,jdbcType=VARCHAR},
             </if>
             <if test="ve_buyername != null" >
-                ve_buyername = #{ve_buyername,jdbcType=VARCHAR}
+                ve_buyername = #{ve_buyername,jdbcType=VARCHAR},
+            </if>
+            <if test="ve_address != null">
+                ve_address = #{ve_address,jdbcType=VARCHAR}
             </if>
         </set>
         where ve_id = #{id}

+ 4 - 1
applications/money/money-server/src/main/resources/application.yml

@@ -73,4 +73,7 @@ logging:
   level:
      com.usoftchina.saas.money.mapper : debug
 auth:
-  public-key: auth/pub.key
+  public-key: auth/pub.key
+ribbon:
+  ReadTimeout: 6000
+  ConnectTimeout: 6000

+ 1 - 1
applications/purchase/purchase-server/src/main/resources/application.yml

@@ -73,4 +73,4 @@ auth:
   public-key: auth/pub.key
 ribbon:
   ReadTimeout: 6000
-  ConnectTimeout: 2000
+  ConnectTimeout: 6000

+ 4 - 1
applications/sale/sale-server/src/main/resources/application.yml

@@ -68,4 +68,7 @@ mybatis:
   type-aliases-package: com.usoftchina.saas.commons.po
   mapper-locations: classpath:mapper/*.xml
 auth:
-  public-key: auth/pub.key
+  public-key: auth/pub.key
+ribbon:
+  ReadTimeout: 6000
+  ConnectTimeout: 6000

+ 1 - 1
applications/storage/storage-server/src/main/resources/application.yml

@@ -73,4 +73,4 @@ auth:
   public-key: auth/pub.key
 ribbon:
   ReadTimeout: 6000
-  ConnectTimeout: 2000
+  ConnectTimeout: 6000

+ 17 - 2
framework/core/src/main/java/com/usoftchina/saas/utils/RegexpUtils.java

@@ -12,7 +12,7 @@ public class RegexpUtils {
     private static final String HK_MOBILE_EXP = "^(5|6|8|9)\\d{7}$";
     private static final String EMAIL_EXP = "^\\w+([-.]\\w+)*@\\w+([-]\\w+)*\\.(\\w+([-]\\w+)*\\.)*[a-z]{2,4}$";
     private static final String SPECCHARACTER_EXP = "[\\\\s~·`!!@#¥$%^……&*(())\\\\-——\\\\-_=+【\\\\[\\\\]】{{}}\\\\|、\\\\\\\\;;::‘'“”\\\",,《<。.》>、/??]";
-
+    private static final String SPECIALCHARACTER_EXP = "[`~!@#$%^&*()+=|{}':;',\\[\\]<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
     /**
      * 匹配手机号码
      *
@@ -57,7 +57,7 @@ public class RegexpUtils {
     }
 
     /**
-     * 特殊字符替换
+     * 特殊字符替换含小写字母
      * @param str
      * @return
      */
@@ -66,4 +66,19 @@ public class RegexpUtils {
         Matcher m = p.matcher(str);
         return m.replaceAll("");
     }
+
+
+    /**
+     * 特殊字符替换
+     * @param obj
+     * @return
+     */
+    public static String replaceSpecialCharacter(Object obj){
+        if (StringUtils.isEmpty(obj)) {
+            return "";
+        }
+        Pattern p = Pattern.compile(SPECIALCHARACTER_EXP);
+        Matcher m = p.matcher(obj.toString());
+        return m.replaceAll("");
+    }
 }

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

@@ -48,7 +48,7 @@
                             <span class="qy-biaoti left"><span class="xingxing">*</span>公司地址</span>
                             <div class="addbiaoqian">
                                 <!-- <v-distpicker @province= 'qyprovince' @city= 'qycity' @area= 'qyarea'></v-distpicker> -->
-                                <v-distpicker @selected= 'selected'></v-distpicker>
+                                <v-distpicker @selected= 'selected' province="广东省" city="广州市" area="荔湾区" placeholders= '{}'></v-distpicker>
                                 <input ref="address" @change="address" :disabled="disabled" class="qy-xiangxi" type="text" placeholder="输入企业详细地址">
                                 
                             </div>
@@ -104,6 +104,7 @@ import { setTimeout } from 'timers';
                 isemail: true,//验证邮箱
                 disabled: true,
                 isadd: false,//添加成功弹窗
+                placeholder:{province:"省", city:"市", area:"区"}
             }
         },
         components:{

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

@@ -73,7 +73,7 @@
                     </div>
                     <div>
                         <span v-if = "d.default_" class="gs-btn2 gs-btn3">默认企业</span>
-                        <span v-if="d.saas_" @click="showDefaultWin(i)" class="gs-btn2 xs">设为默认</span>
+                        <span v-else @click="showDefaultWin(i)" class="gs-btn2 xs">设为默认</span>
                     </div>
                 </div>
             </div>

+ 2 - 4
frontend/saas-portal-web/src/components/conenter/details.vue

@@ -87,7 +87,7 @@
                         <li>
                             <span class="qy-biaoti">邮箱</span>
                             <input @change="email" ref="email" type="text" value="">
-                            <dir class="qy-Tips"><span style="color:red">{{Email}}</span></dir>
+                            <div class="qy-Tips"><span style="color:red">{{Email}}</span></div>
                         </li>
                     </ul>
                 </div>
@@ -233,9 +233,7 @@
     height: 20px;
 }
 .qy-Tips {
-    margin: 0;
-    text-align: left;
     height: 26px;
-    margin-left: 16%;
+    margin-left: 21%;
 }
 </style>

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

@@ -55,7 +55,9 @@
                         <div class="left gr-right">
                             <ul>
                                 <li>
-                                    <span>姓名</span><span>{{mytoken.realname}}</span>
+                                    <span>姓名</span>
+                                    <span>{{mytoken.realname}}</span>
+                                    <!-- <input type="text" :value="mytoken.realname"> -->
                                 </li>
                                 <li>
                                     <span>UU号</span><span>{{mytoken.uu}}</span>
@@ -135,11 +137,11 @@ import { setTimeout } from 'timers';
             },
             //修改密码
             changpasd(){
-                window.location.href = 'https://sso.ubtob.com/reset/forgetPasswordValidationAccount?returnURL='+this.$url.web+'&appId=sp'
+                window.location.href = this.$url.sso+'/reset/forgetPasswordValidationAccount?returnURL='+this.$url.web+'&appId=sp'
             },
             //修改手机号
             changphone(){
-                window.location.href = 'https://sso.ubtob.com/validation/phoneValidation?returnURL='+this.$url.web+'&appId=sp'
+                window.location.href = this.$url.sso+'/validation/phoneValidation?returnURL='+this.$url.web+'&appId=sp'
             }
         },
     }

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

@@ -6,6 +6,14 @@ import Axios from 'axios'
 import store from '../../store'
 
 Axios.defaults.withCredentials=true;
+Axios.interceptors.request.use(function (config) {
+  store.state.isloading = true
+  return config;
+})
+Axios.interceptors.response.use(function (config) {
+  store.state.isloading = false
+  return config;
+})
 Vue.prototype.$ajax = Axios;
 Vue.config.productionTip = false
 

+ 28 - 2
frontend/saas-portal-web/src/pages/index/index.vue

@@ -1,20 +1,46 @@
 <template>
   <div id="app">
+    <div v-if="isloading" class="loading">
+      <div class="loadingtxt">加载中...</div>
+    </div>
     <router-view/>
     <footers></footers>
   </div>
 </template>
 <script>
-// import footers from './components/footer/footer.vue';
 import footers from '../../components/footer/footer.vue';
 export default {
   name: 'App',
+  data(){
+    return {
+
+    }
+  },
   components: {
       footers
   },
+  computed:{
+    isloading:function(){
+      return this.$store.state.isloading
+    }
+  }
 }
 </script>
 
 <style>
-
+.loading {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.7);
+  text-align: center;
+}
+.loadingtxt {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+}
 </style>

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

@@ -4,10 +4,10 @@ Vue.use(Vuex)
 
 export default new Vuex.Store({
     state:{
-        data: [],
         email:'',
         isAutoLogin: false,
         isproblem: '',//常见问题
+        isloading:false,
     },
     mutations:{
          Logintrue(state) {

+ 48 - 15
frontend/saas-web/app/view/core/base/ImportWindow.js

@@ -75,6 +75,7 @@ Ext.define('saas.view.core.base.ImportWindow', {
         hidden:true,
         name:'over',
         text:'完成',
+        disabled:true,
         handler:function(b){
             var form = b.ownerCt.ownerCt;
             var id = form.importId;
@@ -96,7 +97,10 @@ Ext.define('saas.view.core.base.ImportWindow', {
                         form.setLoading(false);
                         var res = Ext.decode(response.responseText);
                         if(!res.success){
-                            saas.util.BaseUtil.showErrorToast('导入数据失败:' + res.message);
+                            var upload = form.down('[name=upload]');
+                            upload.reset();
+                            form.dockedItems.items[1].down('[name=over]').setDisabled(true);
+                            form.down('[name=messagedetail]').setHtml(res.message + '</br></br><span style="color:#ff0000">请修改后重新上传</span>');
                         }else{
                             //刷新界面
                             var g = form.ownerCt.down('grid');
@@ -106,8 +110,12 @@ Ext.define('saas.view.core.base.ImportWindow', {
                     },
                     failure: function (response, opts) {
                         form.setLoading(false);
+                        var upload = form.down('[name=upload]');
+                        upload.reset();
+                        form.dockedItems.items[1].down('[name=over]').setDisabled(true);
                         var res = Ext.decode(response.responseText);
                         saas.util.BaseUtil.showErrorToast('导入数据失败: ' + res.message);
+                        
                     }
                 });
             }else{
@@ -160,7 +168,7 @@ Ext.define('saas.view.core.base.ImportWindow', {
                     width: 240,
                     labelWidth:160,
                     buttonOnly:true,
-                    fieldLabel:'客户导入模板下载',
+                    fieldLabel:'导入模板下载',
                     name:'download',
                     xtype: 'filefield',
                     buttonText: '下载模板',
@@ -181,7 +189,8 @@ Ext.define('saas.view.core.base.ImportWindow', {
                     collapsible: false,
                     items: [{
                         xtype : 'fieldcontainer',
-                        html: me.showDetail?me.showDetail:'请配置showDetail属性',
+                        html: '1.下载模板后打开</br>2.查看模板内说明、并修改模板内容,保存后点击下一步按钮</br>3.上传Excel文件,此时会校验文件的字段格式,有问题则需要修改错误数据后再次上传文件</br>4.校验成功后'+
+                        '点击完成按钮将数据进行数据库校验'
                     }]
                 },{
                     hidden:true,
@@ -205,14 +214,38 @@ Ext.define('saas.view.core.base.ImportWindow', {
                         }).on('change', me.onFileChange, me);
                     },
                     listeners: {
-                        afterrender:function(field,ops){
-                            // var fileEl = field.fileInputEl.dom;
-                            // fileEl.setAttribute("accept","image/*");
-                        },
                         change: function(field){
                             var form = field.ownerCt.ownerCt;
                             var myForm = field.ownerCt;
                             var fileEl = field.fileInputEl.dom;
+                            var file = fileEl.files[0];
+                            var type = file.name.substring(file.name.lastIndexOf('.'),file.name.length);
+                            if(type.indexOf('xlsx')<0||type.indexOf('xls')<0){
+                                saas.util.BaseUtil.showErrorToast('文件格式不正确,只能选择xlsx或xls格式的文件进行上传');
+                                field.reset();
+                                return;
+                            }
+
+                            //导入权限校验
+                            var hasPower = false;
+                            Ext.Ajax.request({
+                                url: 'http://192.168.253.41:8560/api/commons/'+form.ownerCt.caller+'/import',
+                                async:false,
+                                method: 'GET',
+                                success: function(response, opts) {
+                                    var data = Ext.decode(response.responseText);
+                                    if(data.success){
+                                        hasPower = true
+                                    }
+                                },
+                                failure: function(response, opts) {}
+                            }); 
+                            if(!hasPower){
+                                field.reset();
+                                saas.util.BaseUtil.showErrorToast('上传失败:没有 导入 权限');
+                                return false;
+                            }
+                            
                             var fd = new FormData();
                             fd.append('file', fileEl.files[0]);
                             fd.append('caller', myForm.ownerCt.ownerCt.caller);
@@ -235,22 +268,21 @@ Ext.define('saas.view.core.base.ImportWindow', {
                                     if(res.success){
                                         var id = res.data;
                                         if(id){
-                                            saas.util.BaseUtil.showSuccessToast('上传成功');
+                                            field.ownerCt.down('[name=messagedetail]').setHtml('文件名: ' + file.name + ' 导入格式校验成功!</br></br>请点击 <span style="color:#35baf6">完成</span> 执行数据库校验');
                                             form.importId = id;
+                                            field.ownerCt.ownerCt.dockedItems.items[1].down('[name=over]').setDisabled(false)
                                         }else{
-                                            field.setValue('');
+                                            field.reset();
                                             saas.util.BaseUtil.showErrorToast('上传失败:后台未返回信息');
                                         }
                                     }else{
-                                        field.setValue('');
-                                        field.setRawValue('');
-                                        field.value = '';
-                                        saas.util.BaseUtil.showErrorToast('上传失败: ' + res.message);
+                                        field.reset();
+                                        field.ownerCt.down('[name=messagedetail]').setHtml(res.message + '</br><span style="color:#ff0000">请修改后重新上传</span>');
                                     }
                                 },
                                 failure: function (response, opts) {
                                     form.setLoading(false);
-                                    field.setValue('');
+                                    field.reset();
                                     var res = Ext.decode(response.responseText);
                                     saas.util.BaseUtil.showErrorToast('上传失败: ' + res.message);
                                 }
@@ -265,8 +297,9 @@ Ext.define('saas.view.core.base.ImportWindow', {
                     name:'message',
                     collapsible: false,
                     items: [{
+                        name:'messagedetail',
                         xtype : 'fieldcontainer',
-                        html: '暂无',
+                        html:'暂无导入信息'
                     }]
                 }]
             }]

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

@@ -95,5 +95,10 @@ Ext.define('saas.view.core.dbfind.types.ProductDbfindTrigger', {
         dataIndex: "pr_saleprice",
         xtype: 'numbercolumn',
         hidden:true
+    }, {
+        text: "成本单价",
+        dataIndex: "po_avprice",
+        xtype: 'numbercolumn',
+        hidden:true
     }]
 });

+ 5 - 0
frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js

@@ -102,6 +102,11 @@ Ext.define('saas.view.core.dbfind.types.ProductMultiDbfindTrigger', {
         dataIndex: "pr_saleprice",
         xtype: 'numbercolumn',
         hidden:true
+    }, {
+        text: "成本单价",
+        dataIndex: "po_avprice",
+        xtype: 'numbercolumn',
+        hidden:true
     }]
 
 });

+ 7 - 7
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -62,13 +62,13 @@ Ext.define('saas.view.core.form.FormPanelController', {
         // 单据状态为录入状态(未审核)
         main[form._statusCodeField] = auditTexts.unAuditCode;
         main[form._statusField] = auditTexts.unAuditText;
-        //录入人,录入日期,审核人,审核日期清空
-        main['creatorId'] = undefined;
-        main['creatorName'] = undefined;
-        main['createTime'] = undefined;
-        main['updaterId'] = undefined;
-        main['updaterName'] = undefined;
-        main['updateTime'] = undefined;
+        //重设录入人,录入日期,审核人,审核日期
+        main['creatorId'] = saas.util.BaseUtil.getCurrentUser().id;
+        main['creatorName'] = saas.util.BaseUtil.getCurrentUser().realname;
+        main['createTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
+        main['updaterId'] = saas.util.BaseUtil.getCurrentUser().id;
+        main['updaterName'] = saas.util.BaseUtil.getCurrentUser().realname;
+        main['updateTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
         main[form._auditmanField] = undefined;
         main[form._auditdateField] = undefined;
 

+ 9 - 0
frontend/saas-web/app/view/document/product/FormController.js

@@ -65,6 +65,15 @@ Ext.define('saas.view.document.product.FormController', {
         // 单据状态为录入状态(未审核)
         main[form._statusCodeField] = auditTexts.unAuditCode;
         main[form._statusField] = auditTexts.unAuditText;
+        //重设录入人,录入日期,审核人,审核日期
+        main['creatorId'] = saas.util.BaseUtil.getCurrentUser().id;
+        main['creatorName'] = saas.util.BaseUtil.getCurrentUser().realname;
+        main['createTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
+        main['updaterId'] = saas.util.BaseUtil.getCurrentUser().id;
+        main['updaterName'] = saas.util.BaseUtil.getCurrentUser().realname;
+        main['updateTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
+        main[form._auditmanField] = undefined;
+        main[form._auditdateField] = undefined;
 
         for(var k in main) {
             // 主表日期改为当前日期

+ 1 - 1
frontend/saas-web/app/view/home/charts/MonthIO.js

@@ -102,6 +102,6 @@ Ext.define('saas.view.home.charts.MonthIO', {
         var fieldIndex = Ext.Array.indexOf(item.series.getYField(), item.field),
         type = item.series.getTitle()[fieldIndex];
 
-        tooltip.setHtml(type + record.get('x') + record.get(item.field));
+        tooltip.setHtml(type + record.get('x') + ': ' + Ext.util.Format.number(record.get(item.field), '0,000.00') + '万元');
     },
 });

+ 1 - 1
frontend/saas-web/app/view/home/charts/MonthPurchase.js

@@ -85,7 +85,7 @@ Ext.define('saas.view.home.charts.MonthPurchase', {
     },
 
     onBarTipRender: function (tooltip, record, item) {
-        tooltip.setHtml(record.get('x') + ': ' + record.get('y') + '万元');
+        tooltip.setHtml(record.get('x') + ': ' + Ext.util.Format.number(record.get('y'), '0,000.00') + '万元');
     },
 
 });

+ 1 - 1
frontend/saas-web/app/view/home/charts/MonthSale.js

@@ -102,6 +102,6 @@ Ext.define('saas.view.home.charts.MonthSale', {
     },
 
     onSeriesTooltipRender: function (tooltip, record, item) {
-        tooltip.setHtml(record.get('x') + ': ' + record.get('y'));
+        tooltip.setHtml(record.get('x') + ': ' + Ext.util.Format.number(record.get('y'), '0,000.00'));
     }
 });

+ 1 - 1
frontend/saas-web/app/view/home/charts/ProfitDetail.js

@@ -85,7 +85,7 @@ Ext.define('saas.view.home.charts.ProfitDetail', {
     },
 
     onBarTipRender: function (tooltip, record, item) {
-        tooltip.setHtml(record.get('x') + ': ' + record.get('y') + '万元');
+        tooltip.setHtml(record.get('x') + ': ' + Ext.util.Format.number(record.get('y'), '0,000.00') + '万元');
     },
 
 });

+ 1 - 1
frontend/saas-web/app/view/home/charts/PurchaseTrend.js

@@ -88,7 +88,7 @@ Ext.define('saas.view.home.charts.PurchaseTrend', {
     },
 
     onBarTipRender: function (tooltip, record, item) {
-        tooltip.setHtml(record.get('x') + '月: ' + record.get('y') + '万元');
+        tooltip.setHtml(record.get('x') + '月: ' + Ext.util.Format.number(record.get('y'), '0,000.00') + '万元');
     },
 
     categoryRender: function(axis, label, layoutContext, lastLabel) {

+ 1 - 1
frontend/saas-web/app/view/home/charts/SaleTrend.js

@@ -173,7 +173,7 @@ Ext.define('saas.view.home.charts.SaleTrend', {
     },
 
     onSeriesTooltipRender: function (tooltip, record, item) {
-        tooltip.setHtml(record.get('x') + '月: ' + record.get(item.series.getYField()) + '万元');
+        tooltip.setHtml(record.get('x') + '月: ' + Ext.util.Format.number(record.get(item.series.getYField()), '0,000.00') + '万元');
     },
 
     categoryRender: function(axis, label, layoutContext, lastLabel) {

+ 1 - 1
frontend/saas-web/app/view/home/charts/StockAmount.js

@@ -82,7 +82,7 @@ Ext.define('saas.view.home.charts.StockAmount', {
     },
 
     onBarTipRender: function (tooltip, record, item) {
-        tooltip.setHtml(record.get('x') + '月: ' + record.get('y') + '万元');
+        tooltip.setHtml(record.get('x') + '月: ' + Ext.util.Format.number(record.get('y'), '0,000.00') + '万元');
     },
 
     categoryRender: function(axis, label, layoutContext, lastLabel) {

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

@@ -63,7 +63,8 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
     },{
         xtype: 'textfield',
         name: 'pb_manname',
-        fieldLabel: '付款人'
+        fieldLabel: '付款人',
+        defaultValue: saas.util.BaseUtil.getCurrentUser().realname
     }, {
         xtype: 'hidden',
         name: 'pb_pdamount',

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

@@ -70,7 +70,8 @@ Ext.define('saas.view.money.recBalance.FormPanel', {
     }, {
         xtype: "textfield",
         name: "rb_manname",
-        fieldLabel: "收款人"
+        fieldLabel: "收款人",
+        defaultValue: saas.util.BaseUtil.getCurrentUser().realname
     }, {
         xtype: "numberfield",
         name: "rb_discounts",

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

@@ -110,13 +110,13 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanelController', {
         // 单据状态为录入状态(未审核)
         main[form._statusCodeField] = auditTexts.unAuditCode;
         main[form._statusField] = auditTexts.unAuditText;
-        //录入人,录入日期,审核人,审核日期清空
-        main['creatorId'] = undefined;
-        main['creatorName'] = undefined;
-        main['createTime'] = undefined;
-        main['updaterId'] = undefined;
-        main['updaterName'] = undefined;
-        main['updateTime'] = undefined;
+        //重设录入人,录入日期,审核人,审核日期
+        main['creatorId'] = saas.util.BaseUtil.getCurrentUser().id;
+        main['creatorName'] = saas.util.BaseUtil.getCurrentUser().realname;
+        main['createTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
+        main['updaterId'] = saas.util.BaseUtil.getCurrentUser().id;
+        main['updaterName'] = saas.util.BaseUtil.getCurrentUser().realname;
+        main['updateTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
         main[form._auditmanField] = undefined;
         main[form._auditdateField] = undefined;
 

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

@@ -114,13 +114,13 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanelController', {
         // 单据状态为录入状态(未审核)
         main[form._statusCodeField] = auditTexts.unAuditCode;
         main[form._statusField] = auditTexts.unAuditText;
-        //录入人,录入日期,审核人,审核日期清空
-        main['creatorId'] = undefined;
-        main['creatorName'] = undefined;
-        main['createTime'] = undefined;
-        main['updaterId'] = undefined;
-        main['updaterName'] = undefined;
-        main['updateTime'] = undefined;
+        //重设录入人,录入日期,审核人,审核日期
+        main['creatorId'] = saas.util.BaseUtil.getCurrentUser().id;
+        main['creatorName'] = saas.util.BaseUtil.getCurrentUser().realname;
+        main['createTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
+        main['updaterId'] = saas.util.BaseUtil.getCurrentUser().id;
+        main['updaterName'] = saas.util.BaseUtil.getCurrentUser().realname;
+        main['updateTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
         main[form._auditmanField] = undefined;
         main[form._auditdateField] = undefined;
 

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

@@ -61,7 +61,7 @@ Ext.define('saas.view.stock.make.FormPanelController', {
                             from: 'pr_unit',
                             to: 'pr_unit'
                         }, {
-                            from: 'pr_purcprice',
+                            from: 'po_avprice',
                             to: 'mm_price'
                         }],
                     });

+ 0 - 1
frontend/saas-web/app/view/stock/report/DataList.js

@@ -9,7 +9,6 @@ Ext.define('saas.view.stock.report.DataList', {
 
     groupField: null,
     listUrl: '/api/document/product/ReserveCost',
-    // listUrl: 'http://192.168.253.41:8560/api/document/product/ReserveCost',
     defaultCondition: null,
     reportTitle: '物料库存数量金额表',
     QueryWidth: 0.65,

+ 1 - 1
frontend/saas-web/app/view/stock/report/DataListController.js

@@ -34,7 +34,7 @@ Ext.define('saas.view.stock.report.DataListController', {
         
         form.updateLayout();
         toggleColumns.map(function(c) {
-            c.setHidden(c.isVisible);
+            c.setHidden(c.isVisible());
         });
         store.load();
     }