Browse Source

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

heqinwei 7 years ago
parent
commit
572ba57ec0
36 changed files with 407 additions and 150 deletions
  1. 2 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 10 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/JasperResult.java
  3. 7 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/JasperReportServiceImpl.java
  4. 1 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java
  5. 8 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BomServiceImpl.java
  6. 1 0
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml
  7. 9 0
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/MakeServiceImpl.java
  8. 9 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRegDTO.java
  9. 11 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountCenterController.java
  10. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountCenterService.java
  11. 5 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java
  12. 1 1
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  13. 6 5
      frontend/saas-portal-web/src/components/conenter/addenterprise.vue
  14. 47 21
      frontend/saas-portal-web/src/components/conenter/company.vue
  15. 2 4
      frontend/saas-portal-web/src/components/conenter/details.vue
  16. 120 13
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  17. 3 2
      frontend/saas-portal-web/src/components/conenter/home.vue
  18. 13 14
      frontend/saas-portal-web/src/components/footer/footer.vue
  19. 1 0
      frontend/saas-portal-web/src/pages/index/index.vue
  20. 1 1
      frontend/saas-portal-web/src/store/index.js
  21. 58 39
      frontend/saas-portal-web/static/css/gongsi.css
  22. 6 30
      frontend/saas-portal-web/static/css/main.css
  23. BIN
      frontend/saas-portal-web/static/img/Fill 1.png
  24. BIN
      frontend/saas-portal-web/static/img/footer2x.png
  25. BIN
      frontend/saas-portal-web/static/img/moren2x.png
  26. 1 0
      frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js
  27. 1 0
      frontend/saas-web/app/view/core/form/FormPanel.js
  28. 8 2
      frontend/saas-web/app/view/core/form/FormPanelController.js
  29. 10 1
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  30. 1 0
      frontend/saas-web/app/view/document/address/DataList.js
  31. 38 0
      frontend/saas-web/app/view/document/address/DatalistController.js
  32. 10 7
      frontend/saas-web/app/view/document/customer/FormPanel.js
  33. 5 5
      frontend/saas-web/app/view/document/vendor/FormPanel.js
  34. 1 1
      frontend/saas-web/app/view/main/Main.js
  35. 2 0
      frontend/saas-web/app/view/main/Main.scss
  36. 1 1
      frontend/saas-web/app/view/stock/report/ProdinoutCount.js

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

@@ -37,11 +37,13 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_BANNED(79313, "只能禁用已开启的单据"),
     BIZ_BANNED(79313, "只能禁用已开启的单据"),
     BIZ_ENABLE(79314, "只能开启已禁用的单据"),
     BIZ_ENABLE(79314, "只能开启已禁用的单据"),
     BIZ_NULLCALLER(79315, "该单据的定义不存在"),
     BIZ_NULLCALLER(79315, "该单据的定义不存在"),
+    BIZ_REPORT_NOCALLER(79316, "报表配置不存在"),
 
 
     NO_OPRATIONDATA(79400,"无可操作单据"),
     NO_OPRATIONDATA(79400,"无可操作单据"),
     NULL_DATA(23232,"无数据"),
     NULL_DATA(23232,"无数据"),
 
 
     BOM_SAVE(79401, "产品编号+版本号已存在"),
     BOM_SAVE(79401, "产品编号+版本号已存在"),
+    BOM_CODE_REPEAT(74002, "组合件和子件不允许相同"),
     REPEAT_NAME(79501, "名称重复"),
     REPEAT_NAME(79501, "名称重复"),
     REPEAT_CODE(79502, "编号重复"),
     REPEAT_CODE(79502, "编号重复"),
     REPEAT_CUSTOMERCODE(79503, "客户名称或编号重复"),
     REPEAT_CUSTOMERCODE(79503, "客户名称或编号重复"),

+ 10 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/JasperResult.java

@@ -9,10 +9,13 @@ import java.io.Serializable;
 public class JasperResult implements Serializable{
 public class JasperResult implements Serializable{
 
 
     private String printurl;
     private String printurl;
+
     private String reportName;
     private String reportName;
     private String title;
     private String title;
     private String whereCondition;
     private String whereCondition;
     private String printtype;
     private String printtype;
+    //数据库名称
+    private String userName;
 
 
     public String getPrinttype() {
     public String getPrinttype() {
         return printtype;
         return printtype;
@@ -53,4 +56,11 @@ public class JasperResult implements Serializable{
     public void setWhereCondition(String whereCondition) {
     public void setWhereCondition(String whereCondition) {
         this.whereCondition = whereCondition;
         this.whereCondition = whereCondition;
     }
     }
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
 }
 }

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

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.commons.service.impl;
 package com.usoftchina.saas.commons.service.impl;
 
 
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
+import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.mapper.SysprintsetMapper;
 import com.usoftchina.saas.commons.mapper.SysprintsetMapper;
 import com.usoftchina.saas.commons.po.Configs;
 import com.usoftchina.saas.commons.po.Configs;
 import com.usoftchina.saas.commons.po.JasperResult;
 import com.usoftchina.saas.commons.po.JasperResult;
@@ -27,6 +28,7 @@ import java.util.List;
 public class JasperReportServiceImpl implements JasperReportService{
 public class JasperReportServiceImpl implements JasperReportService{
 
 
     private static final String PRINTURLCODE = "printUrl";
     private static final String PRINTURLCODE = "printUrl";
+    private static final String USERNAME = "dataBase";
 
 
     @Autowired
     @Autowired
     private SysprintsetMapper sysprintsetMapper;
     private SysprintsetMapper sysprintsetMapper;
@@ -56,11 +58,14 @@ public class JasperReportServiceImpl implements JasperReportService{
             printSet = sysprintsetMapper.selectSetByReportName(caller, reportName, companyId);
             printSet = sysprintsetMapper.selectSetByReportName(caller, reportName, companyId);
         }
         }
         if (StringUtils.isEmpty(printSet)) {
         if (StringUtils.isEmpty(printSet)) {
-            return null;
+            throw new BizException(BizExceptionCode.BIZ_REPORT_NOCALLER);
         }
         }
         //取打印地址
         //取打印地址
         Configs config = configsService.getConfigByCode(PRINTURLCODE);
         Configs config = configsService.getConfigByCode(PRINTURLCODE);
         String printUrl = null != config ? config.getData() : "";
         String printUrl = null != config ? config.getData() : "";
+        //取数据库名称
+        Configs db_config = configsService.getConfigByCode(USERNAME);
+        String db_username = null != db_config ? db_config.getData() : "";
         //打印限制 TODO
         //打印限制 TODO
         //打印前执行方法
         //打印前执行方法
         if (!StringUtils.isEmpty(printSet.getHandlermethod())) {
         if (!StringUtils.isEmpty(printSet.getHandlermethod())) {
@@ -85,6 +90,7 @@ public class JasperReportServiceImpl implements JasperReportService{
         result.setPrinturl(printUrl);
         result.setPrinturl(printUrl);
         result.setWhereCondition(condition);
         result.setWhereCondition(condition);
         result.setPrinttype(StringUtils.isEmpty(printSet.getPrinttype()) ? "" : printSet.getPrinttype());
         result.setPrinttype(StringUtils.isEmpty(printSet.getPrinttype()) ? "" : printSet.getPrinttype());
+        result.setUserName(db_username);
         return result;
         return result;
 
 
     }
     }

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

@@ -128,7 +128,7 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
             if (count > 0) {
             if (count > 0) {
                 throw new BizException(BizExceptionCode.CODE_EXISTS);
                 throw new BizException(BizExceptionCode.CODE_EXISTS);
             }
             }
-            return  Result.success(rulecode);
+            return  Result.success(maxcode);
         }
         }
         //与规则匹配的编号
         //与规则匹配的编号
         if (count > 0) {
         if (count > 0) {

+ 8 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BomServiceImpl.java

@@ -50,11 +50,18 @@ public class BomServiceImpl extends CommonBaseServiceImpl<BomMapper, Bom> implem
         Bom bom = bomList.getMain();
         Bom bom = bomList.getMain();
         List<BomDetail> bomDetailList = bomList.getItems();
         List<BomDetail> bomDetailList = bomList.getItems();
         DocBaseDTO docBaseDTO = null;
         DocBaseDTO docBaseDTO = null;
+        //校验组合件和子件不允许相同
+        if (bomDetailList.size() > 0){
+            for (BomDetail bomDetail : bomDetailList){
+                if (bom.getBo_mothercode().equals(bomDetail.getProductDTO().getPr_code())){
+                    throw new BizException(BizExceptionCode.BOM_CODE_REPEAT);
+                }
+            }
+        }
         if(id == 0){
         if(id == 0){
             //校验编号和版本 是否已存在
             //校验编号和版本 是否已存在
             int count = getMapper().validCodeAndVersionWhenInsert(bom.getBo_mothercode(), bom.getBo_version(), companyId);
             int count = getMapper().validCodeAndVersionWhenInsert(bom.getBo_mothercode(), bom.getBo_version(), companyId);
             if(count == 0){
             if(count == 0){
-//                String code = pushMaxnubmer(bom.getBo_mothercode(), bom.getId());
                 String code = bom.getBo_mothercode();
                 String code = bom.getBo_mothercode();
                 bom.setBo_mothercode(code);
                 bom.setBo_mothercode(code);
                 bom.setBo_statuscode(Status.ENABLE.name());
                 bom.setBo_statuscode(Status.ENABLE.name());

+ 1 - 0
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseReportMapper.xml

@@ -121,6 +121,7 @@
       <if test="companyId != null">
       <if test="companyId != null">
         and   purchase.companyId = #{companyId}
         and   purchase.companyId = #{companyId}
       </if>
       </if>
+      and pu_statuscode='AUDITED'
     </where>  order by pu_date desc
     </where>  order by pu_date desc
   </select>
   </select>
 
 

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

@@ -98,6 +98,15 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
         List<MakeMaterial> makeMaterialList = makeListDTO.getItems();
         List<MakeMaterial> makeMaterialList = makeListDTO.getItems();
         String code = pushMaxnubmer(make.getMa_code(), make.getId());
         String code = pushMaxnubmer(make.getMa_code(), make.getId());
         DocBaseDTO docBaseDTO = null;
         DocBaseDTO docBaseDTO = null;
+        //校验组合件和子件不允许相同
+        if (makeMaterialList.size() > 0){
+            for (MakeMaterial makeMaterial : makeMaterialList){
+                if (make.getMa_prodcode().equals(makeMaterial.getMm_prodcode())){
+                    throw new BizException(BizExceptionCode.BOM_CODE_REPEAT);
+                }
+            }
+        }
+
         if(make.getId() == 0){
         if(make.getId() == 0){
             //保存主表
             //保存主表
             make.setCompanyId(BaseContextHolder.getCompanyId());
             make.setCompanyId(BaseContextHolder.getCompanyId());

+ 9 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRegDTO.java

@@ -25,6 +25,15 @@ public class CompanyRegDTO implements Serializable{
     private String fax;
     private String fax;
     private String signet;      //电子章
     private String signet;      //电子章
     private String type;        //所属行业
     private String type;        //所属行业
+    private String dcName;      //数据中心
+
+    public String getDcName() {
+        return dcName;
+    }
+
+    public void setDcName(String dcName) {
+        this.dcName = dcName;
+    }
 
 
     public String getType() {
     public String getType() {
         return type;
         return type;

+ 11 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountCenterController.java

@@ -59,6 +59,17 @@ public class AccountCenterController {
         return Result.success();
         return Result.success();
     }
     }
 
 
+    /**
+     * 解绑默认企业
+     * @param bindCompanyDTO
+     * @return
+     */
+    @PostMapping("/unBind/defaultCompany")
+    public Result unBindDefaultCompany(@RequestBody BindCompanyDTO bindCompanyDTO){
+        accountCenterService.unBindDefaultCompany(bindCompanyDTO.getCompanyId(), bindCompanyDTO.getAccountId());
+        return Result.success();
+    }
+
     /**
     /**
      * 校验企业名称时候已在账户中心注册过
      * 校验企业名称时候已在账户中心注册过
      * @param spaceName
      * @param spaceName

+ 8 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountCenterService.java

@@ -39,4 +39,12 @@ public interface AccountCenterService {
      * @return
      * @return
      */
      */
     boolean bindDefaultCompany(Long companyId, Long accountId);
     boolean bindDefaultCompany(Long companyId, Long accountId);
+
+    /**
+     * 解绑默认企业
+     * @param companyId
+     * @param accountId
+     * @return
+     */
+    boolean unBindDefaultCompany(Long companyId, Long accountId);
 }
 }

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

@@ -186,4 +186,9 @@ public class AccountCenterServiceImpl implements AccountCenterService {
         return true;
         return true;
     }
     }
 
 
+    @Override
+    public boolean unBindDefaultCompany(Long companyId, Long accountId) {
+        accountCompanyMapper.unBindDefault(accountId);
+        return true;
+    }
 }
 }

+ 1 - 1
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java

@@ -279,7 +279,7 @@ public class AuthController {
         copyDTO.setUsername(info.getMobile());
         copyDTO.setUsername(info.getMobile());
         copyDTO.setPassword(info.getPassword());
         copyDTO.setPassword(info.getPassword());
         copyDTO.setSalt(info.getSalt());
         copyDTO.setSalt(info.getSalt());
-        copyDTO.setEmail(info.getEmail());
+        copyDTO.setEmail(StringUtils.isEmpty(info.getEmail()) ? null : info.getEmail());
         copyDTO.setMobile(info.getMobile());
         copyDTO.setMobile(info.getMobile());
         copyDTO.setRealname(info.getVipName());
         copyDTO.setRealname(info.getVipName());
         copyDTO.setType(AccountType.ADMIN.getType());
         copyDTO.setType(AccountType.ADMIN.getType());

+ 6 - 5
frontend/saas-portal-web/src/components/conenter/addenterprise.vue

@@ -48,7 +48,7 @@
                             <span class="qy-biaoti left"><span class="xingxing">*</span>公司地址</span>
                             <span class="qy-biaoti left"><span class="xingxing">*</span>公司地址</span>
                             <div class="addbiaoqian">
                             <div class="addbiaoqian">
                                 <!-- <v-distpicker @province= 'qyprovince' @city= 'qycity' @area= 'qyarea'></v-distpicker> -->
                                 <!-- <v-distpicker @province= 'qyprovince' @city= 'qycity' @area= 'qyarea'></v-distpicker> -->
-                                <v-distpicker @selected= 'selected' province="广东省" city="广州市" area="荔湾区" placeholders= '{}'></v-distpicker>
+                                <v-distpicker @selected= 'selected' province="广东省" city="广州市" area="荔湾区" :placeholders= 'placeholder'></v-distpicker>
                                 <input ref="address" @change="address" :disabled="disabled" class="qy-xiangxi" type="text" placeholder="输入企业详细地址">
                                 <input ref="address" @change="address" :disabled="disabled" class="qy-xiangxi" type="text" placeholder="输入企业详细地址">
                                 
                                 
                             </div>
                             </div>
@@ -104,7 +104,7 @@ import { setTimeout } from 'timers';
                 isemail: true,//验证邮箱
                 isemail: true,//验证邮箱
                 disabled: true,
                 disabled: true,
                 isadd: false,//添加成功弹窗
                 isadd: false,//添加成功弹窗
-                placeholder:{province:"", city:"", area:""}
+                placeholder:{province:"", city:"", area:""}
             }
             }
         },
         },
         components:{
         components:{
@@ -247,15 +247,16 @@ import { setTimeout } from 'timers';
                             .then(res=>{
                             .then(res=>{
                                 let id = res.data.data;
                                 let id = res.data.data;
                                 let logoUrl = null;
                                 let logoUrl = null;
-                                let name = qyname;
-                                let addenterprise = {'id':id, 'logoUrl': logoUrl, 'name': name};
+                                let addenterprise = {'id':id, 'logoUrl': logoUrl, 'name': qyname};
                                 let session = JSON.parse(window.localStorage.getItem('app-state-session'));
                                 let session = JSON.parse(window.localStorage.getItem('app-state-session'));
                                 session.account.companies.push(addenterprise);
                                 session.account.companies.push(addenterprise);
+                                session.account.realname = name;
                                 Session.set(session);
                                 Session.set(session);
                                 this.isadd = true;
                                 this.isadd = true;
                                 setTimeout(()=>{
                                 setTimeout(()=>{
                                     document.documentElement.scrollTop = 0;
                                     document.documentElement.scrollTop = 0;
-                                    this.$router.push({name:'company'})
+                                    // this.$router.push({name:'company'})
+                                    this.$router.push({path: '/enterprise'})
                                 },1000)
                                 },1000)
                             })
                             })
                             this.$refs.tjtishi.innerHTML = '';
                             this.$refs.tjtishi.innerHTML = '';

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

@@ -56,32 +56,44 @@
       </div>
       </div>
     </div>
     </div>
 
 
-        <div class="gs-qiyebox" ref="qiyebox" :class="isheigh ? 'heigh' : ''">
+        <div class="gs-qiyebox over" ref="qiyebox" :class="isheigh ? 'heigh' : ''">
+            <div class="gs-xiangqing dotted">
+                <router-link to="/addenterprise">
+                    <div class="gs-tianja" @click= "addEnterprise">
+                        <!-- <div class="gs-tj"></div> -->
+                        <img src="/static/img/Fill 1.png" alt="">
+                        <p>添加企业</p>
+                    </div>
+                </router-link>
+            </div>
             <!-- 点击查看企业详情 -->
             <!-- 点击查看企业详情 -->
-            <div v-for="(d , i) in arr " :key="i" class="gs-xiangqing xs">
-                <div class="left gs-xqleft" @click= "getEnterpriseInfo(d)">
-                    <div class="gs-lefttext">
-                        <p class="gs-qynema"><span>企业名称:</span>{{d.name}}</p>
-                        <p v-if= "d.saas_" ><span>saas服务管理员:</span>{{d.admin}}</p>
+            <div v-for="(d , i) in arr " :key="i" class="gs-xiangqing">
+                <div class="gs-morentop" :class= "{gsqiye:nowindex == (i+1)}">
+                    <span v-if = "d.default_" class="gs-btn2 xs">取消默认</span>
+                    <span v-else @click="showDefaultWin(i)" class="gs-btn2 xs">设为默认</span>
+                </div>
+                <!-- 上 -->
+                <div class="gs-shang" @click.stop @mousemove="setismoren">
+                    <span @click="setmoren(i)" class="xs">设置</span>
+                    <img v-if = "d.default_" class="gs-morenimg" src="/static/img/moren2x.png" alt="">
+                </div>
+                <!-- 中 -->
+                <div class="gs-xqleft" >
+                    <p class="gs-qynema xs" @click= "getEnterpriseInfo(d)">{{d.name}}</p>
+                </div>
+                <!-- 下 -->
+                <div class="gs-xqright over">
+                    <div v-if= "d.saas_" class="gs-xqright-left left">
+                        <p><span>saas管理员:</span>{{d.admin}}</p>
+                        <p><span>联系方式:</span>{{d.adminMobile}}</p>
                         <p v-if= "d.time"><span>开通日期:</span>{{d.time}}</p>
                         <p v-if= "d.time"><span>开通日期:</span>{{d.time}}</p>
                     </div>
                     </div>
-                </div>
-                <div class="right gs-xqright">
-                    <div class="gs-border">
+                    <div class="gs-border gs-xqright-right right">
                         <span v-if= "d.saas_" class="gs-btn1 dianji" @click="selectServe(d.id)">进入服务</span>
                         <span v-if= "d.saas_" class="gs-btn1 dianji" @click="selectServe(d.id)">进入服务</span>
                         <span v-else @click="showOpenServeWin(d.id , i)" class="gs-btn1 kaitong xs">开通服务</span>
                         <span v-else @click="showOpenServeWin(d.id , i)" class="gs-btn1 kaitong xs">开通服务</span>
                     </div>
                     </div>
-                    <div>
-                        <span v-if = "d.default_" class="gs-btn2 gs-btn3">默认企业</span>
-                        <span v-else @click="showDefaultWin(i)" class="gs-btn2 xs">设为默认</span>
-                    </div>
                 </div>
                 </div>
             </div>
             </div>
-            <div class="gs-xiangqing dotted">
-                <p class="gs-tianja">
-                    <span @click= "addEnterprise"><router-link to="/addenterprise">+添加企业</router-link></span>
-                </p>
-            </div>
         </div>
         </div>
       </div>
       </div>
 </template>
 </template>
@@ -105,12 +117,16 @@
                 arr: [],//企业列表信息
                 arr: [],//企业列表信息
                 isheigh:false,//是否添加默认高度
                 isheigh:false,//是否添加默认高度
                 admin: '',
                 admin: '',
-                adminMobile: ''
+                adminMobile: '',
+                ismoren:true,
             }
             }
         },
         },
         computed :{
         computed :{
             setTokenPage() {
             setTokenPage() {
                 return this.$url.web + '/set-token.html'
                 return this.$url.web + '/set-token.html'
+            },
+            nowindex() {
+                return this.$store.state.ismoren
             }
             }
         },
         },
         watch:{
         watch:{
@@ -152,7 +168,6 @@
                         }
                         }
                     }
                     }
                     this.$store.commit('Loginfalse')
                     this.$store.commit('Loginfalse')
-                    this.$store.state.email = res.data.data.spaces[0].adminEmail
                 })
                 })
                 .catch(err=>{
                 .catch(err=>{
                     // console.log("请求失败",err)
                     // console.log("请求失败",err)
@@ -245,7 +260,6 @@
                 let uu = this.arr[i].uu;
                 let uu = this.arr[i].uu;
                 let company = {'name':qyname,'address':address};
                 let company = {'name':qyname,'address':address};
                 let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu}
                 let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu}
-                // let id = this.saasid;
                 this.$ajax({
                 this.$ajax({
                     url: this.$url.api+"/api/account/accountCenter/companyAccount/save",
                     url: this.$url.api+"/api/account/accountCenter/companyAccount/save",
                     method: 'post',
                     method: 'post',
@@ -306,6 +320,18 @@
                 this.isNoopen = false;
                 this.isNoopen = false;
                 this.isokopensaas = false
                 this.isokopensaas = false
             },
             },
+            // 弹出设置
+            setmoren(i){
+                if (this.ismoren) {
+                    this.$store.state.ismoren = i+1
+                } else {
+                    this.$store.state.ismoren = ''
+                }
+                this.ismoren = !this.ismoren
+            },
+            setismoren(){
+                this.ismoren = true
+            },
             //没有内容也要有一定的高度
             //没有内容也要有一定的高度
             boxheight(){
             boxheight(){
                 let H = this.$refs.qiyebox.offsetHeight;
                 let H = this.$refs.qiyebox.offsetHeight;

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

@@ -162,10 +162,9 @@
             // 保存修改
             // 保存修改
             baocunxiugai(){
             baocunxiugai(){
                 let qyindustry = this.$refs.qyindustry.value;//所属行业
                 let qyindustry = this.$refs.qyindustry.value;//所属行业
-                if (this.isemail && qyindustry!='') {
+                if (this.isemail) {
                     let email = this.$refs.email.value;
                     let email = this.$refs.email.value;
                     let qyname = this.content.name;//公司名字
                     let qyname = this.content.name;//公司名字
-                    // let qyindustry = this.$refs.qyindustry.value;//所属行业
                     let address = this.content.address;//公司详细地址
                     let address = this.content.address;//公司详细地址
                     let companyId = this.content.id;
                     let companyId = this.content.id;
                     let name = this.content.realname;//名字
                     let name = this.content.realname;//名字
@@ -197,7 +196,7 @@
                         // console.log("请求失败",err)
                         // console.log("请求失败",err)
                     })
                     })
                 } else {
                 } else {
-                    this.$refs.Tips.innerHTML= "请填写正确的邮箱或选择行业"
+                    this.$refs.Tips.innerHTML= "请填写正确的邮箱"
                     // this.isTipsmail = true;
                     // this.isTipsmail = true;
                     setTimeout(()=>{
                     setTimeout(()=>{
                         this.$refs.Tips.innerHTML= ""
                         this.$refs.Tips.innerHTML= ""
@@ -206,7 +205,6 @@
             },
             },
             //返回
             //返回
             gobick(){
             gobick(){
-                // this.$router.go(-1) 
                 this.$router.push({name:'company'});
                 this.$router.push({name:'company'});
             }
             }
         }
         }

+ 120 - 13
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-    <div class="div">
+    <div class="div" @click="onshezhi">
         <div id="navigation" class="navbar-inverse navbar-fixed-top animated-header">
         <div id="navigation" class="navbar-inverse navbar-fixed-top animated-header">
         <div class="container">
         <div class="container">
             <div class="navbar-header">
             <div class="navbar-header">
@@ -19,10 +19,10 @@
                 <ul id="nav" class="nav navbar-nav menu">
                 <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="#"><span style="color: white">首页</span></a></router-link></li>
                     <li><a href="https://uas.usoftchina.com/about" target="_blank"><span>关于我们</span></a></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;">
+                    <li style="margin-left:30px;margin-top: 13px;cursor: pointer;">
                         <span style="color:#fff;font-size: 16px;">
                         <span style="color:#fff;font-size: 16px;">
                             <img style="width: 20px;" src="/static/img/assets/denglu3x.png" alt="">
                             <img style="width: 20px;" src="/static/img/assets/denglu3x.png" alt="">
-                            {{mytoken.realname}}
+                            {{mytoken.realname || mytoken.username}}
                         </span>
                         </span>
                         <span style="color:#fff;" @click="loginout">【退出】</span>
                         <span style="color:#fff;" @click="loginout">【退出】</span>
                     </li>
                     </li>
@@ -48,7 +48,7 @@
                 </div>
                 </div>
     <!-- 个人信息------------------------------------------------------------------- -->
     <!-- 个人信息------------------------------------------------------------------- -->
                 <div :class= "{gsqiye:nowindex == 1}">
                 <div :class= "{gsqiye:nowindex == 1}">
-                    <div class="over gr-worp" style="margin-bottom: 30px;">
+                    <div v-if="ismodifyname" class="over gr-worp" style="margin-bottom: 30px;">
                         <div class="left gr-left">
                         <div class="left gr-left">
                             <img src="/static/img/qiye/yonghu@2x.png" alt="">
                             <img src="/static/img/qiye/yonghu@2x.png" alt="">
                         </div>
                         </div>
@@ -57,7 +57,7 @@
                                 <li>
                                 <li>
                                     <span>姓名</span>
                                     <span>姓名</span>
                                     <span>{{mytoken.realname}}</span>
                                     <span>{{mytoken.realname}}</span>
-                                    <!-- <input type="text" :value="mytoken.realname"> -->
+                                    <button class="modifyname dianji" @click="modify">修改</button>
                                 </li>
                                 </li>
                                 <li>
                                 <li>
                                     <span>UU号</span><span>{{mytoken.uu}}</span>
                                     <span>UU号</span><span>{{mytoken.uu}}</span>
@@ -71,6 +71,34 @@
                             </ul>
                             </ul>
                         </div>
                         </div>
                     </div>
                     </div>
+                    <!-- 修改页面 -->
+                    <div v-else class="over gr-worp" style="margin-bottom: 30px;">
+                        <div class="left gr-left">
+                            <img src="/static/img/qiye/yonghu@2x.png" alt="">
+                        </div>
+                        <div class="left gr-right" style="margin-bottom: 30px;">
+                            <ul>
+                                <li>
+                                    <span><span class="xinghao" style="width:5px">*</span>姓名</span>
+                                    <input @change="regname" class="realname" type="text" ref="realname" :value="mytoken.realname">
+                                    <p class="usname" ref="usname"></p>
+                                </li>
+                                <li>
+                                    <span>UU号</span><span>{{mytoken.uu}}</span>
+                                </li>
+                                <li>
+                                    <span>邮箱</span><span>{{mytoken.email}}</span>
+                                </li>
+                                <li>
+                                    <span>手机号</span><span>{{mytoken.mobile}}</span>
+                                </li>
+                                <li>
+                                    <button class="baocun dianji" @click="Preservation">保存</button>
+                                    <button class="qy-quxiao quxiao" @click="cancel">取消</button>
+                                </li>
+                            </ul>
+                        </div>
+                    </div>
                 </div>
                 </div>
     <!-- 安全信息----------------------------------------------------------------------------- -->
     <!-- 安全信息----------------------------------------------------------------------------- -->
 
 
@@ -106,6 +134,9 @@ import { setTimeout } from 'timers';
                 tianjiaqiye: true,//添加企业切换
                 tianjiaqiye: true,//添加企业切换
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')).account,//本地储存的用户信息
                 mytoken: JSON.parse(localStorage.getItem('app-state-session')).account,//本地储存的用户信息
                 mobile: null,
                 mobile: null,
+                ismodifyname:true,
+                isname:true,//姓名验证
+                reg: new RegExp(/[\@\#\$\%\&\*!\¥]/),//非法字符
                 tab: [
                 tab: [
                     {name: '企业信息'},
                     {name: '企业信息'},
                     {name: '个人信息'},
                     {name: '个人信息'},
@@ -142,17 +173,93 @@ import { setTimeout } from 'timers';
             //修改手机号
             //修改手机号
             changphone(){
             changphone(){
                 window.location.href = this.$url.sso+'/validation/phoneValidation?returnURL='+this.$url.web+'&appId=sp'
                 window.location.href = this.$url.sso+'/validation/phoneValidation?returnURL='+this.$url.web+'&appId=sp'
-            }
+            },
+            //修改姓名
+            modify(){
+                this.ismodifyname = false
+            },
+            //取消修改姓名
+            cancel(){
+                this.ismodifyname = true
+            },
+            regname(){
+                let name = this.$refs.realname.value.replace(/\s+/g, "");
+                if (name == '') {
+                    this.$refs.usname.innerHTML = '个人姓名不能为空'
+                    this.isname = false
+                } else {
+                    this.isname = true
+                    if (this.reg.test(name)) {
+                        this.$refs.usname.innerHTML = '不能包含非法字符'
+                        this.isname = false
+                    } else {
+                        this.$refs.usname.innerHTML = ''
+                        this.isname = true
+                    }
+                }
+            },
+            // 保存修改姓名
+            Preservation(){
+                if (this.isname) {
+                    let name = this.$refs.realname.value.replace(/\s+/g, "");
+                    console.log(name)
+                }
+            },
+            onshezhi(){
+                this.$store.state.ismoren = ''
+            },
         },
         },
     }
     }
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
-    .div {
-        padding-top: 100px;
-        background: #FDFDFD;
-    }
-    .gsqiye div:last-child {
-        margin-bottom: 100px;
-    }
+.div {
+    padding-top: 100px;
+    background: #FDFDFD;
+}
+.gsqiye div:last-child {
+    margin-bottom: 100px;
+}
+.modifyname {
+    margin-left: 80px;
+    font-family: PingFangSC-Regular;
+    font-size: 14px;
+    color: #FFFFFF;
+    letter-spacing: 0.25px;
+    text-align: center;
+    padding: 5px 20px;
+    background: #1E88F5;
+    border-radius: 2px;
+    border: 0
+}
+.baocun {
+    font-family: PingFangSC-Regular;
+    font-size: 14px;
+    color: #FFFFFF;
+    letter-spacing: 0.25px;
+    text-align: center;
+    padding: 5px 26px;
+    background: #1E88F5;
+    border-radius: 2px;
+    border: 0
+}
+.quxiao {
+    padding: 5px 26px;
+    margin-left: 30px
+}
+.realname {
+    margin-left: -5px;
+    padding-left: 5px;
+}
+.usname {
+    height: 0px;
+    margin-left: 85px;
+    color: red;
+    font-size: 12px;
+}
+.xinghao {
+    float: left;
+    margin-left: -10px;
+    color: red;
+}
 </style>
 </style>

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

@@ -34,7 +34,7 @@
 								<span id="user-info">{{account.realname || account.username}}</span>
 								<span id="user-info">{{account.realname || account.username}}</span>
 							</span>
 							</span>
               <span @click="loginout">【退出】</span>    |
               <span @click="loginout">【退出】</span>    |
-              <router-link to="/enterprise"><a href="#"><span style="color: white">账户中心</span></a></router-link>
+              <router-link to="/enterprise"><a><span @click="home" style="color: white">账户中心</span></a></router-link>
             </li>
             </li>
           </ul>
           </ul>
         </div>
         </div>
@@ -315,8 +315,9 @@
           Session.set(session)
           Session.set(session)
           const frame = window.frames[window.frames.length - 1]
           const frame = window.frames[window.frames.length - 1]
           window.addEventListener('message', () => {
           window.addEventListener('message', () => {
-           if(me.isLogin){
+           if(me.isLogin || me.isRegister){
             me.isLogin = false
             me.isLogin = false
+            me.isRegister = false
             if (!account.companyId) {
             if (!account.companyId) {
               // 添加企业
               // 添加企业
               me.$router.push({path: '/enterprise'})
               me.$router.push({path: '/enterprise'})

+ 13 - 14
frontend/saas-portal-web/src/components/footer/footer.vue

@@ -11,28 +11,27 @@
 					</div>
 					</div>
 					<div class="link">
 					<div class="link">
 						<ul>
 						<ul>
-							<li><span>常用链接</span></li>
-							<li><a href="https://uas.usoftchina.com/" target="_blank">UAS官网</a></li>
-							<li><a href="https://www.usoftchina.com/" target="_blank">U软云</a></li>
-							<li><a href="http://www.yitoa.com/" target="_blank">英唐官网</a></li>
+							<li><span>产品</span></li>
+							<li><a href="#">U企云服</a></li>
+							<li><a href="https://mall.usoftchina.com/" target="_blank">U软商城</a></li>
+							<li><a href="https://fin.yitoa-fintech.com/" target="_blank">U智融</a></li>
+							<li><a href="https://zb.usoftchina.com/" target="_blank">闯客网</a></li>
 						</ul>
 						</ul>
 						<ul>
 						<ul>
 							<li><span>帮助中心</span></li>
 							<li><span>帮助中心</span></li>
 							<li><a @click="problem">常见问题</a></li>
 							<li><a @click="problem">常见问题</a></li>
-							<li><a href="#">操作手册</a></li>
+							<li><a class="no-link">操作手册</a></li>
 						</ul>
 						</ul>
 						<ul>
 						<ul>
-							<li><span>公司</span></li>
-							<li><a href="https://uas.usoftchina.com/about" target="_blank">关于我们</a></li>
-							<li><a >企业文化</a></li>
-							<li><a >联系我们</a></li>
+							<li><span>常用链接</span></li>
+							<li><a href="https://uas.usoftchina.com/" target="_blank">UAS官网</a></li>
+							<li><a href="https://www.usoftchina.com/" target="_blank">优软云</a></li>
+							<li><a href="http://www.yitoa.com/" target="_blank">英唐官网</a></li>
 						</ul>
 						</ul>
 						<ul>
 						<ul>
-							<li><span>产品</span></li>
-							<li><a href="#">U企云服</a></li>
-							<li><a href="https://mall.usoftchina.com/" target="_blank">优软商城</a></li>
-							<li><a href="https://fin.yitoa-fintech.com/" target="_blank">优智融</a></li>
-							<li><a href="https://zb.usoftchina.com/" target="_blank">闯客网</a></li>
+							<li><span>公司</span></li>
+							<li><a href="https://uas.usoftchina.com/about" target="_blank">关于我们</a></li>
+							<li><a class="no-link">联系我们</a></li>
 						</ul>
 						</ul>
 					</div>
 					</div>
 					
 					

+ 1 - 0
frontend/saas-portal-web/src/pages/index/index.vue

@@ -36,6 +36,7 @@ export default {
   bottom: 0;
   bottom: 0;
   background: rgba(0, 0, 0, 0.7);
   background: rgba(0, 0, 0, 0.7);
   text-align: center;
   text-align: center;
+  z-index: 990;
 }
 }
 .loadingtxt {
 .loadingtxt {
   position: absolute;
   position: absolute;

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

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

+ 58 - 39
frontend/saas-portal-web/static/css/gongsi.css

@@ -101,88 +101,107 @@
     display: block !important;
     display: block !important;
     margin-top: 70px;
     margin-top: 70px;
 }
 }
+.gs-qiyebox {
+    width: 150%;
+    margin-left: -22%;
+}
 .gs-xiangqing {
 .gs-xiangqing {
-    height: 112px;
+    height: 200px;
     background: #FFFFFF;
     background: #FFFFFF;
     border: 1px solid rgba(30,136,245,0.32);
     border: 1px solid rgba(30,136,245,0.32);
     box-shadow: 0 20px 60px 8px #F4F8FC;
     box-shadow: 0 20px 60px 8px #F4F8FC;
     border-radius: 4px;
     border-radius: 4px;
     overflow: hidden;
     overflow: hidden;
-    margin-bottom: 24px;
+    width: 22%;
+    float: left;
+    margin: 0px 27px 27px 0px;
 }
 }
 .gs-qynema {
 .gs-qynema {
     font-weight: 600;
     font-weight: 600;
+    color: #243A52;
+    letter-spacing: 0;
 }
 }
 .dotted {
 .dotted {
     border: 1px dashed rgba(30,136,245,0.32);
     border: 1px dashed rgba(30,136,245,0.32);
-    line-height: 112px;
+    text-align: center;
+    position: relative;
 }
 }
 .gs-tianja {
 .gs-tianja {
-    padding: 0 80px;
     font-family: PingFangSC-Medium;
     font-family: PingFangSC-Medium;
     color: #BDBEBE;
     color: #BDBEBE;
     letter-spacing: 0.25px;
     letter-spacing: 0.25px;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
 }
 }
-.gs-tianja span:hover {
-    border: 1px dashed #ccc;
-    padding: 6px 20px;
-    cursor:pointer;
-}
-.gs-xqleft {
+.gs-tianja img {
     width: 70%;
     width: 70%;
-    height: 100%;
+}
+.gs-shang {
+    height: 30%;
+    padding: 10px;
     position: relative;
     position: relative;
 }
 }
-.gs-lefttext {
+.gs-morenimg {
+    width: 20%;
     position: absolute;
     position: absolute;
-    top: 50%;
-    left: 50%;
-    width: 70%;
-    margin-left: 30%;
-    height: 50%;
-    transform: translate(-100%,-50%);
+    top: 0;
+    right: 0;
+}
+.gs-xqleft {
+    height: 30%;
+    position: relative;
+    padding: 0px 10px;
 }
 }
 .gs-xqright {
 .gs-xqright {
-    width: 30%;
-    height: 100%;
-    overflow: hidden;
+    height: 40%;
+    background: #F4F9FE;
+    padding: 10px;
 }
 }
 .gs-xqright div {
 .gs-xqright div {
-    float: left;
-    width: 50%;
-    text-align: center;
-    line-height: 90px;
-    margin-top: 10px;
+    text-align: left;
+}
+.gs-xqright div p{
+    font-size: 12px;
+    color: #677897;
+    letter-spacing: 0;
 }
 }
 .gs-border {
 .gs-border {
-    border-right: 1px solid #B7D9FB;
+    margin-top: 8%;
+}
+.gs-morentop {
+    position: absolute;
+    margin-top: -27px;
+    display: none;
 }
 }
 .gs-btn1 {
 .gs-btn1 {
-    padding: 5px 20px;
-    background: #1E88F5;
-    border-radius: 2px;
+    padding: 5px;
+    background: #4EC66B;;
+    border-radius: 4px;
     color: white;
     color: white;
 }
 }
 .kaitong {
 .kaitong {
-    background: #F2F9FF;
-    border: 1px solid #1E88F5;
-    border-radius: 2px;
-    color: #1E88F5;
+    background: #1E88F5;
+    border-radius: 4px;
+    color: white;
 }
 }
 .gs-btn2 {
 .gs-btn2 {
     font-family: PingFangSC-Regular;
     font-family: PingFangSC-Regular;
     font-size: 14px;
     font-size: 14px;
-    padding: 5px 20px;
+    padding: 2px 8px;
     color: #1E88F5;
     color: #1E88F5;
+    background: #F8FBFF;
     border: 1px solid #1E88F5;
     border: 1px solid #1E88F5;
-    border-radius: 2px;
-    letter-spacing: 0.25px;
+    border-radius: 4px;
 }
 }
-.gs-btn3 {
-    border: 0
+.gs-btn2:hover {
+    color: #ffffff;
+    background: #1E88F5;
 }
 }
 
 
 
 
+
 /* 添加企业信息-------------------------------------------------------- */
 /* 添加企业信息-------------------------------------------------------- */
 .qy-quxiao {
 .qy-quxiao {
     background: #FFFFFF;
     background: #FFFFFF;

+ 6 - 30
frontend/saas-portal-web/static/css/main.css

@@ -41,7 +41,7 @@ p {
     font-size: 15px;
     font-size: 15px;
 }
 }
 main > section {
 main > section {
-    padding: 70px 0;
+    /* padding: 70px 0; */
 }
 }
 
 
 .btn {
 .btn {
@@ -330,7 +330,8 @@ main > section {
 
 
 .footer{
 .footer{
     width: 100%;
     width: 100%;
-    background: #383838;
+    background-image: url(../img/footer2x.png);
+    background-size: 100%;
 }
 }
 .db-text {
 .db-text {
     background: white;
     background: white;
@@ -373,7 +374,7 @@ main > section {
 }
 }
 .footer-section ul>li:hover a{
 .footer-section ul>li:hover a{
     text-decoration: underline ;
     text-decoration: underline ;
-    color: #e41f2b;
+    color: #1E88F5;
 }
 }
 .footer-section ul>li:hover a.no-link{
 .footer-section ul>li:hover a.no-link{
     text-decoration: none;
     text-decoration: none;
@@ -433,43 +434,18 @@ main > section {
 
 
 .friend-link{
 .friend-link{
     height: 100px;
     height: 100px;
-    background: #000;
+    background: #14152D;
     width: 100%;
     width: 100%;
     line-height: 100px;
     line-height: 100px;
     text-align: center;
     text-align: center;
 }
 }
 .friend-link span {
 .friend-link span {
-    opacity: 0.56;
     font-family: PingFangSC-Regular;
     font-family: PingFangSC-Regular;
     font-size: 16px;
     font-size: 16px;
-    color: #FFFFFF;
+    color: #7C93AD;
     letter-spacing: 0;
     letter-spacing: 0;
     text-align: center;
     text-align: center;
 }
 }
-.friend-link ul{
-    overflow: hidden;
-    list-style: none ;
-    width: 80%;
-    margin: 0 auto;
-    padding: 0 15px;
-}
-.friend-link ul li{
-    float: left;
-}
-.friend-link ul li span{
-    font-size: 14px;
-    color: #FFFFFF;
-}
-.friend-link ul li a{
-    display: inline-block;
-    margin-right: 20px;
-    font-size: 14px;
-    color: #FFFFFF;
-}
-.friend-link ul li a:hover{
-    text-decoration: underline ;
-    color: #e41f2b;
-}
 
 
 .section-title p {
 .section-title p {
     color: #444;
     color: #444;

BIN
frontend/saas-portal-web/static/img/Fill 1.png


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


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


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

@@ -83,6 +83,7 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
                     },'->',{
                     },'->',{
                         xtype:'button',
                         xtype:'button',
                         text:'新增',
                         text:'新增',
+                        cls:'x-formpanel-btn-blue',
                         handler: me.onAddClick.bind(me)
                         handler: me.onAddClick.bind(me)
                     }])
                     }])
                 },{
                 },{

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

@@ -34,6 +34,7 @@ Ext.define('saas.view.core.form.FormPanel', {
     closeConfirm: true, // 关闭确认
     closeConfirm: true, // 关闭确认
     invalidText: '表单校验有误,请检查', // 校验未通过提示内容
     invalidText: '表单校验有误,请检查', // 校验未通过提示内容
     dirtyAuditText: '表单数据有修改,是否先保存修改?', // 有修改时点击审核提示内容
     dirtyAuditText: '表单数据有修改,是否先保存修改?', // 有修改时点击审核提示内容
+    noDirtySaveText: '表单数据无修改', // 无修改点击保存提示内容
 
 
     auditTexts: {
     auditTexts: {
         auditCode: 'AUDITED',
         auditCode: 'AUDITED',

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

@@ -148,6 +148,11 @@ Ext.define('saas.view.core.form.FormPanelController', {
             saas.util.BaseUtil.showErrorToast(form.invalidText);
             saas.util.BaseUtil.showErrorToast(form.invalidText);
             return false;
             return false;
         }
         }
+        var dirty = form.isDirty();
+        if(!dirty) {
+            saas.util.BaseUtil.showErrorToast(form.noDirtySaveText);
+            return false;
+        }
 
 
         if(!form.beforeSave()) {
         if(!form.beforeSave()) {
             return false;
             return false;
@@ -446,10 +451,11 @@ Ext.define('saas.view.core.form.FormPanelController', {
                 printtype = data.printtype,
                 printtype = data.printtype,
                 reportName = data.reportName,
                 reportName = data.reportName,
                 title = data.title,
                 title = data.title,
+                userName = data.userName,
                 whereCondition = data.whereCondition,
                 whereCondition = data.whereCondition,
                 companyId = saas.util.BaseUtil.getCurrentUser().companyId;
                 companyId = saas.util.BaseUtil.getCurrentUser().companyId;
-    
-                var url = printurl + '?' + 'reportName=' + reportName + '&' + 'companyId=' + companyId + '&whereCondition=' + whereCondition
+                var url = printurl + '?' + 'reportName=' + reportName + '&' + 'companyId=' + companyId + '&whereCondition=' + whereCondition +
+                userName ? '&userName=' + userName : "";
     
     
                 window.open(url);
                 window.open(url);
             }).catch(function(res) {
             }).catch(function(res) {

+ 10 - 1
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -8,7 +8,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     enableColumnHide: false,
     enableColumnHide: false,
     border: 1,
     border: 1,
     margin: '0 0 10 0', // formpanel的fieldDefaults未生效
     margin: '0 0 10 0', // formpanel的fieldDefaults未生效
-    height: 245,
+    minHeight: 245,
     columnWidth : 1.0, 
     columnWidth : 1.0, 
 
 
     requires: [
     requires: [
@@ -67,6 +67,15 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                 emptyText: '<div style="width: 100%; text-align: center; cursor: pointer; color: green;" class="fa fa-plus" title="新增行" onclick="addRows(\'' + me.id + '\')"></div>',
                 emptyText: '<div style="width: 100%; text-align: center; cursor: pointer; color: green;" class="fa fa-plus" title="新增行" onclick="addRows(\'' + me.id + '\')"></div>',
             },
             },
             listeners: {
             listeners: {
+                boxready: function(g) {
+                    var f = g.ownerCt,
+                    c = f.detailCount || 1,
+                    fb = f.getBox(),
+                    fh = fb.height,
+                    h = (fh * 0.5) / c;
+
+                    g.setHeight(h);
+                },
                 edit: function() {
                 edit: function() {
                     this.fireEvent('validChange');
                     this.fireEvent('validChange');
                 },
                 },

+ 1 - 0
frontend/saas-web/app/view/document/address/DataList.js

@@ -5,6 +5,7 @@ Ext.define('saas.view.document.address.DataList', {
     extend: 'saas.view.document.kind.Kind',
     extend: 'saas.view.document.kind.Kind',
     xtype: 'document-address-datalist',
     xtype: 'document-address-datalist',
     viewModel: 'document-address-datalist',
     viewModel: 'document-address-datalist',
+    controller:'document-address-datalist',
     defaultType:'address',
     defaultType:'address',
     windowType:'document-address-window',
     windowType:'document-address-window',
     _openUrl:'/api/document/address/setDefault',
     _openUrl:'/api/document/address/setDefault',

+ 38 - 0
frontend/saas-web/app/view/document/address/DatalistController.js

@@ -0,0 +1,38 @@
+/**
+ * Created by zhouy on 2018/10/18.
+ */
+Ext.define('saas.view.document.address.DatalistController', {
+    extend: 'saas.view.document.kind.KindController',
+    alias: 'controller.document-address-datalist',
+    
+    onDelete:function(grid,row,col){
+        var dk = grid.ownerCt.ownerCt;
+        var dataKind=dk.getViewModel().getData()['dataKind'].value,
+        rec = grid.getStore().getAt(row);
+        var keyV=rec.get(dk.etc[dataKind].keyField);
+        if(rec.get('ad_default')==1){
+            saas.util.BaseUtil.showErrorToast('不能删除默认地址');
+            return;
+        }
+        var deleteMsg = '删除的'+dk.getViewModel().getData()['title']+'将不能恢复,请确认是否删除?';
+        saas.util.BaseUtil.deleteWarn(deleteMsg,function(btn){
+            if(btn == 'yes'){
+                //删除接口
+                saas.util.BaseUtil.request({
+                    url: dk.etc[dataKind].delUrl+'/'+keyV,
+                    method: 'POST'
+                })
+                .then(function(localJson) {
+                    if(localJson.success){
+                        saas.util.BaseUtil.showSuccessToast('删除成功');
+                        grid.store.load();
+                    }
+                })
+                .catch(function(res) {
+                    console.error(res);
+                    saas.util.BaseUtil.showErrorToast('删除失败: ' + res.message);
+                });
+            }
+        });
+    }
+});

+ 10 - 7
frontend/saas-web/app/view/document/customer/FormPanel.js

@@ -36,15 +36,14 @@ Ext.define('saas.view.document.customer.FormPanel', {
         columnWidth: 0.25
         columnWidth: 0.25
     },{
     },{
         xtype: 'textfield',
         xtype: 'textfield',
-        name: 'cu_shortname',
-        fieldLabel: '客户称',
+        name: 'cu_name',
+        fieldLabel: '客户称',
         allowBlank: false,
         allowBlank: false,
         columnWidth: 0.25
         columnWidth: 0.25
     },{
     },{
         xtype: 'textfield',
         xtype: 'textfield',
-        name: 'cu_name',
-        fieldLabel: '客户名称',
-        allowBlank: false,
+        name: 'cu_shortname',
+        fieldLabel: '客户简称',
         columnWidth: 0.25
         columnWidth: 0.25
     },{
     },{
         editable:false,
         editable:false,
@@ -155,7 +154,8 @@ Ext.define('saas.view.document.customer.FormPanel', {
     }, {
     }, {
         xtype : "hidden", 
         xtype : "hidden", 
         name : "cu_sellerid", 
         name : "cu_sellerid", 
-        fieldLabel : "业务员id"
+        fieldLabel : "业务员id",
+        defaultValue:saas.util.BaseUtil.getCurrentUser().id
     }, {
     }, {
         xtype : "hidden", 
         xtype : "hidden", 
         name : "cu_sellercode", 
         name : "cu_sellercode", 
@@ -164,7 +164,8 @@ Ext.define('saas.view.document.customer.FormPanel', {
         xtype : "employeeDbfindTrigger", 
         xtype : "employeeDbfindTrigger", 
         name : "cu_sellername", 
         name : "cu_sellername", 
         fieldLabel : "业务员",  
         fieldLabel : "业务员",  
-        columnWidth : 0.25
+        columnWidth : 0.25,
+        defaultValue:saas.util.BaseUtil.getCurrentUser().realname
     },{
     },{
         xtype : "hidden", 
         xtype : "hidden", 
         name : "cu_nsrzh", 
         name : "cu_nsrzh", 
@@ -230,6 +231,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
         detnoColumn: 'cc_detno',
         detnoColumn: 'cc_detno',
         showCount: false,
         showCount: false,
         deleteDetailUrl:'/api/document/customer/deletecontact',
         deleteDetailUrl:'/api/document/customer/deletecontact',
+        height:145,
         columns : [
         columns : [
             {
             {
                 text : "ID", 
                 text : "ID", 
@@ -331,6 +333,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
         detnoColumn: 'ca_detno',
         detnoColumn: 'ca_detno',
         showCount: false,
         showCount: false,
         deleteDetailUrl:'/api/document/customer/deleteaddress',
         deleteDetailUrl:'/api/document/customer/deleteaddress',
+        height:145,
         columns : [
         columns : [
             {
             {
                 text : "ID", 
                 text : "ID", 

+ 5 - 5
frontend/saas-web/app/view/document/vendor/FormPanel.js

@@ -36,15 +36,14 @@ Ext.define('saas.view.document.vendor.FormPanel', {
         columnWidth: 0.25
         columnWidth: 0.25
     },{
     },{
         xtype: 'textfield',
         xtype: 'textfield',
-        name: 've_shortname',
-        fieldLabel: '供应商称',
+        name: 've_name',
+        fieldLabel: '供应商称',
         allowBlank: false,
         allowBlank: false,
         columnWidth: 0.25
         columnWidth: 0.25
     },{
     },{
         xtype: 'textfield',
         xtype: 'textfield',
-        name: 've_name',
-        fieldLabel: '供应商名称',
-        allowBlank: false,
+        name: 've_shortname',
+        fieldLabel: '供应商简称',
         columnWidth: 0.25
         columnWidth: 0.25
     },{
     },{
         xtype: 'hidden',
         xtype: 'hidden',
@@ -227,6 +226,7 @@ Ext.define('saas.view.document.vendor.FormPanel', {
         detnoColumn: 'vc_detno',
         detnoColumn: 'vc_detno',
         showCount: false,
         showCount: false,
         deleteDetailUrl:'/api/document/vendor/deleteContact',
         deleteDetailUrl:'/api/document/vendor/deleteContact',
+        height:145,
         columns : [
         columns : [
             {
             {
                 text : "ID", 
                 text : "ID", 

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

@@ -124,7 +124,7 @@ Ext.define('saas.view.main.Main', {
                     }
                     }
                 },
                 },
                 {
                 {
-                    ui: 'header',
+                    // ui: 'header',
                     arrowVisible: false,
                     arrowVisible: false,
                     cls:' sa-nav-button',   
                     cls:' sa-nav-button',   
                     width: 50,
                     width: 50,

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

@@ -231,6 +231,8 @@ body > .x-mask {
     color: #34BAF6;
     color: #34BAF6;
     padding: 0;
     padding: 0;
     box-shadow: none !important;
     box-shadow: none !important;
+    border: none;
+    background-color: transparent !important;
 
 
     .x-btn-icon-el {
     .x-btn-icon-el {
         color: #34BAF6;
         color: #34BAF6;

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

@@ -26,7 +26,7 @@ Ext.define('saas.view.stock.report.ProdinoutCount', {
     }, {
     }, {
         xtype: 'monthdatefield',
         xtype: 'monthdatefield',
         name: 'pwm_yearmonth',
         name: 'pwm_yearmonth',
-        fieldLabel: '单据日期',
+        fieldLabel: '期',
         columnWidth: 0.2
         columnWidth: 0.2
     }],
     }],
     reportColumns: [{
     reportColumns: [{