Ver Fonte

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

guq há 7 anos atrás
pai
commit
5157b893b4
26 ficheiros alterados com 424 adições e 250 exclusões
  1. 1 1
      applications/commons/commons-server/src/main/resources/mapper/SystemRemindMapper.xml
  2. 5 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/EmployeeServiceImpl.java
  3. 3 3
      applications/document/document-server/src/main/resources/mapper/ProductMapper.xml
  4. 1 1
      applications/money/money-server/src/main/resources/mapper/PayablesdetailMapper.xml
  5. 1 1
      applications/money/money-server/src/main/resources/mapper/ReceivablesdetailMapper.xml
  6. 1 1
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutReportMapper.xml
  7. 6 6
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java
  8. 1 1
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  9. 31 33
      frontend/saas-portal-web/src/components/conenter/addenterprise.vue
  10. 20 7
      frontend/saas-portal-web/src/components/conenter/details.vue
  11. 31 23
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  12. 4 3
      frontend/saas-portal-web/src/components/conenter/failure.vue
  13. 16 4
      frontend/saas-portal-web/src/components/conenter/home.vue
  14. 129 27
      frontend/saas-portal-web/src/components/conenter/invitation.vue
  15. 6 2
      frontend/saas-portal-web/static/css/gongsi.css
  16. 5 5
      frontend/saas-portal-web/static/css/main.css
  17. BIN
      frontend/saas-portal-web/static/img/caidian2x.png
  18. BIN
      frontend/saas-portal-web/static/img/tijiao2x.png
  19. 33 33
      frontend/saas-web/app/view/document/bom/FormPanel.js
  20. 32 31
      frontend/saas-web/app/view/document/customer/FormPanel.js
  21. 32 31
      frontend/saas-web/app/view/document/product/FormPanel.js
  22. 32 32
      frontend/saas-web/app/view/document/vendor/FormPanel.js
  23. 1 1
      frontend/saas-web/app/view/money/report/PayDetail.js
  24. 1 1
      frontend/saas-web/app/view/money/report/RecDetail.js
  25. 1 1
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  26. 31 1
      frontend/saas-web/overrides/data/Connection.js

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

@@ -27,7 +27,7 @@
         where re_id = #{id}
     </update>
     <select id="getApplyCountById" resultType="int">
-        SELECT COUNT(*) FROM REMIND WHERE COMPANYID = #{companyId} AND CREATORID = #{accountId}
+        SELECT COUNT(*) FROM REMIND WHERE COMPANYID = #{companyId} AND CREATORID = #{accountId} AND RE_STATUS = 2
     </select>
     <insert id="insertSelective" parameterType="com.usoftchina.saas.commons.po.AddApply">
         <selectKey resultType="java.lang.Long" keyProperty="id">

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

@@ -112,7 +112,11 @@ public class EmployeeServiceImpl extends CommonBaseServiceImpl<EmployeeMapper, E
 
     @Override
     public void delete(Long id) {
+        String code = getMapper().selectByPrimaryKey(id).getEm_code();
+        DocBaseDTO docBaseDTO = generateMsgObj(id, code);
         getMapper().deleteByPrimaryKey(id);
+        //记录LOG
+        messageLogService.delete(docBaseDTO);
     }
 
     @Override
@@ -153,7 +157,7 @@ public class EmployeeServiceImpl extends CommonBaseServiceImpl<EmployeeMapper, E
                 employee.setUpdateTime(new Date());
                 getMapper().updateByPrimaryKeySelective(employee);
                 DocBaseDTO docBaseDTO = generateMsgObj(id,code);
-                messageLogService.open(docBaseDTO);
+                messageLogService.close(docBaseDTO);
                 return docBaseDTO;
             }else {
                 throw new BizException(BizExceptionCode.BIZ_CLOSE);

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

@@ -941,13 +941,13 @@
         SELECT COUNT(*) FROM PRODUCTONHAND WHERE PO_PRODID = #{id}
     </select>
     <select id="selectProdIOCount" resultType="int">
-        SELECT COUNT(*) FROM PRODIODETAIL WHERE PD_STATUS != 99 AND PD_PRODID = #{id}
+        SELECT COUNT(*) FROM PRODIODETAIL WHERE IFNULL(PD_STATUS,-1) != 99 AND PD_PRODID = #{id}
     </select>
     <select id="selectSale" resultType="int">
-        SELECT COUNT(*) FROM SALE LEFT JOIN SALEDETAIL ON SA_ID = SD_SAID WHERE SA_SENDSTATUS != '已出库' AND SA_SENDSTATUS != '已关闭' AND IFNULL(SD_PRODID,0) = #{id}
+        SELECT COUNT(*) FROM SALE LEFT JOIN SALEDETAIL ON SA_ID = SD_SAID WHERE IFNULL(SA_SENDSTATUS,' ') != '已出库' AND IFNULL(SA_SENDSTATUS,' ') != '已关闭' AND IFNULL(SD_PRODID,0) = #{id}
     </select>
     <select id="selectPurchase" resultType="int">
-        SELECT COUNT(*) FROM PURCHASE LEFT JOIN PURCHASEDETAIL ON PU_ID = PD_PUID WHERE PU_ACCEPTSTATUS != '已出库' AND PU_ACCEPTSTATUSCODE != '已关闭' AND IFNULL(PD_PRODID,0) = #{id}
+        SELECT COUNT(*) FROM PURCHASE LEFT JOIN PURCHASEDETAIL ON PU_ID = PD_PUID WHERE IFNULL(PU_ACCEPTSTATUS,' ') != '已出库' AND IFNULL(PU_ACCEPTSTATUSCODE,' ') != '已关闭' AND IFNULL(PD_PRODID,0) = #{id}
     </select>
 </mapper>
 

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

@@ -36,7 +36,7 @@
         and  companyId = #{companyId} and pd_query =1 and (pd_addpay + pd_addpre + pd_remain) != 0
       </if>
     </where>
-    order by pd_vendid desc, pd_detno asc, pd_date desc
+    order by pd_vendid DESC, pd_detno asc, pd_date desc
   </select>
 
   <select id="selectCalculateFields" resultType="string">

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

@@ -36,7 +36,7 @@
         and  companyId = #{companyId} and rd_query = 1 and (rd_addrec + rd_addpre + rd_remain) != 0
       </if>
     </where>
-    order by rd_custid desc, rd_detno asc, rd_date desc
+    order by rd_custid DESC, rd_detno asc, rd_date desc
   </select>
 
   <select id="selectCalculateFields" resultType="string">

+ 1 - 1
applications/storage/storage-server/src/main/resources/mapper/ProdInOutReportMapper.xml

@@ -60,7 +60,7 @@
         and  companyid = #{companyId}
       </if>
     </where>
-    order by pd_prodcode,pi_date desc
+    order by pd_prodcode desc,pi_date desc
   </select>
 
 

+ 6 - 6
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java

@@ -247,7 +247,7 @@ public class AccountServiceImpl implements AccountService {
         // 根据手机号、邮箱、用户名片段判断是否已注册
         boolean checked = findByUsernameOrMobileOrEmail(accountAddDTO.getUsername(), accountAddDTO.getMobile(), accountAddDTO.getEmail());
         //不存在 ——> 保存 , 存在 ——> 更新
-        addOrUpdate(checked, accountAddDTO);
+        addOrUpdate(checked, accountAddDTO, BaseContextHolder.getCompanyId());
 
         account = findByMobile(accountAddDTO.getMobile());
         //绑定企业
@@ -263,7 +263,7 @@ public class AccountServiceImpl implements AccountService {
      * @param checked
      * @param accountAddDTO
      */
-    private void addOrUpdate(boolean checked, AccountAddDTO accountAddDTO){
+    private void addOrUpdate(boolean checked, AccountAddDTO accountAddDTO, Long companyId){
         Account account = new Account();
         if (!checked) {
             account = BeanMapper.map(accountAddDTO, Account.class);
@@ -271,7 +271,7 @@ public class AccountServiceImpl implements AccountService {
             save(account);
             if (!accountAddDTO.isHasRegister()) {
                 //用户未注册优软云
-                registerAccount(accountAddDTO.getMobile(), accountAddDTO.getRealname());
+                registerAccount(accountAddDTO.getMobile(), accountAddDTO.getRealname(), companyId);
             }
         }else{
             Account accountTemp = findByMobile(accountAddDTO.getMobile());
@@ -290,10 +290,10 @@ public class AccountServiceImpl implements AccountService {
      * @param mobile
      * @param realname
      */
-    private void registerAccount(String mobile, String realname){
+    private void registerAccount(String mobile, String realname, Long companyId){
         //1.添加至优软云
         String password = StringUtils.createInitPassword(mobile.substring(mobile.length() - 3, mobile.length()));
-        Company company = companyService.findByPrimaryKey(BaseContextHolder.getCompanyId());
+        Company company = companyService.findByPrimaryKey(companyId);
         String companyName = company.getName();
 
         //可能存在开通企业时UU号同步到优软云出错的情况,再重新同步一次
@@ -364,7 +364,7 @@ public class AccountServiceImpl implements AccountService {
         }
 
         //不存在 ——> 保存 , 存在 ——> 更新
-        addOrUpdate(checked, accountAddDTO);
+        addOrUpdate(checked, accountAddDTO, companyId);
 
         Account account = findByMobile(accountAddDTO.getMobile());
         //绑定企业

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

@@ -282,7 +282,7 @@ public class AuthController {
         copyDTO.setEmail(StringUtils.isEmpty(info.getEmail()) ? null : info.getEmail());
         copyDTO.setMobile(info.getMobile());
         copyDTO.setRealname(info.getVipName());
-        copyDTO.setType(AccountType.ADMIN.getType());
+        copyDTO.setType(AccountType.NORMAL.getType());
         copyDTO.setUu(info.getUserUU());
         Result result = accountApi.copyRegistration(copyDTO);
         if (!result.isSuccess()) {

+ 31 - 33
frontend/saas-portal-web/src/components/conenter/addenterprise.vue

@@ -263,7 +263,7 @@ import { setTimeout, clearTimeout } from 'timers';
                                 this.companyId = null;
                                 this.isgsname = true;//公司是否存在
                             } else if (res.data.success == false && res.data.message == '公司不存在') {
-                                this.$refs.warningqyname.innerHTML = '<img style="width:14px" src="/static/img/warning.png" alt=""> 企业不存在';
+                                this.$refs.warningqyname.innerHTML = '<img style="width:14px" src="/static/img/warning.png" alt=""> 企业或管理员不存在';
                                 this.islookup = false;
                                 this.isgsname = false;//公司是否存在 
                             } else {
@@ -318,7 +318,7 @@ import { setTimeout, clearTimeout } from 'timers';
                     }
                 }
             },
-            //个人姓名2提示语显示
+            //个人姓名2提示语隐藏
             showTestname(){
                 this.isTestname = false;
             },
@@ -348,42 +348,40 @@ import { setTimeout, clearTimeout } from 'timers';
                 if (qyname == '') {
                     this.$message.error('企业或管理员不能为空');
                 } else if(!this.isgsname) {
-                    this.$message.error('该企业不存在');
+                    this.$message.error('企业或管理员不存在');
+                } else if (!this.companyId) {
+                    this.$message.error('请选择要加入的企业');
+                } else if (this.admin == this.mytoken.account.realname) {
+                    this.$message.error('账号已在企业服务中,不能重复加入');
                 } else if (!this.isTestingname) {
                     this.$message.error('姓名不能为空');
                 } else if (!this.isregname) {
                     this.$message.error('姓名不能包含符号、数字等非法字符');
-                } else if (this.companyId){
-                    if (this.admin == this.mytoken.account.realname) {
-                        this.$message.error('账号已在企业服务中,不能重复加入');
-                    } else {
-                        this.$ajax({
-                            url: this.$url.api+'/api/account/accountCenter/company/join',
-                            method:'POST',
-                            data:{
-                                username:username,
-                                accountId:this.mytoken.account.id,
-                                companyId:this.companyId,
-                            },
-                            headers:{
-                                "Authorization":token,
-                            }
-                        })
-                        .then(res=>{
-                            if (res.data.success) {
-                                this.$message.success('提交成功,待管理员批准加入');
-                                // this.$store.state.ishongdian = true;//显示红点
-                                setTimeout(()=>{
-                                    this.$router.push({name:'company'});
-                                    document.documentElement.scrollTop = 0;
-                                },3000)
-                            } else {
-                                this.$message.error(res.data.message);
-                            }
-                        })
-                    }
                 } else {
-                    this.$message.error('请选择要加入的企业');
+                    this.$ajax({
+                        url: this.$url.api+'/api/account/accountCenter/company/join',
+                        method:'POST',
+                        data:{
+                            username:username,
+                            accountId:this.mytoken.account.id,
+                            companyId:this.companyId,
+                        },
+                        headers:{
+                            "Authorization":token,
+                        }
+                    })
+                    .then(res=>{
+                        if (res.data.success) {
+                            this.$message.success('提交成功,待管理员批准加入');
+                            // this.$store.state.ishongdian = true;//显示红点
+                            setTimeout(()=>{
+                                this.$router.push({name:'company'});
+                                document.documentElement.scrollTop = 0;
+                            },3000)
+                        } else {
+                            this.$message.error(res.data.message);
+                        }
+                    })
                 }
             },
             //验证公司详细地址

+ 20 - 7
frontend/saas-portal-web/src/components/conenter/details.vue

@@ -48,8 +48,8 @@
                         </li>
                         <li>
                             <span class="qy-biaoti">所属行业</span>
-                            <select ref="qyindustry" class="industry border" name="selectAge" id="selectAge">   
-                                <option value="">请选择所属行业</option>
+                            <select @change="industry" ref="qyindustry" class="industry border" name="selectAge" id="selectAge">   
+                                <option value="" disabled selected hidden>请选择所属行业</option>
                                 <option value="贸易零售">贸易零售</option>
                                 <option value="制造加工">制造加工</option>
                                 <option value="服务业">服务业</option>
@@ -86,8 +86,8 @@
                         <li><span class="qy-biaoti">手机号</span><span>{{content.adminMobile}}</span></li>
                         <li>
                             <span class="qy-biaoti">邮<span style="width:2em;display: inline-block;"></span>箱</span>
-                            <input @change="email" ref="email" type="text" value="">
-                            <div class="qy-Tips"><span style="color:red" v-html="Email"></span></div>
+                            <input @blur="email" @focus="heidemail" ref="email" type="text" value="" :class= "{showborder:isemail}">
+                            <div v-show="isheidemail" class="qy-Tips"><span style="color:red" v-html="Email"></span></div>
                         </li>
                     </ul>
                 </div>
@@ -107,7 +107,8 @@ import Session from '@/utils/session'
                 mytoken: Session.get(),//本地储存的用户信息
                 isId: false,
                 isemail: true,//正则邮箱
-                ismodifyId: false
+                ismodifyId: false,
+                isheidemail:false,
             }
         },
         mounted(){
@@ -124,11 +125,18 @@ import Session from '@/utils/session'
                 let options = selects.options;
                 for (let i = 0; i < options.length; i++) {
                     if (options[i].innerHTML == this.content.type) {
-                        options[i].selected = true
+                        options[i].selected = true;
+                        this.$refs.qyindustry.style.border = '1px solid #1E88F5'
                     }
                 };
                 let email = this.$refs.email;
-                email.value = this.content.adminEmail;
+                if (this.content.adminEmail) {
+                    email.value = this.content.adminEmail;
+                }
+            },
+            // 行业
+            industry(){
+                this.$refs.qyindustry.style.border = '1px solid #1E88F5'
             },
             //修改企业信息
             xiugaiqiye(){
@@ -139,6 +147,7 @@ import Session from '@/utils/session'
                 },10)
             },
             email(){ //验证邮箱
+                this.isheidemail = true;
                 let reg = new RegExp("^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$"); 
                 let email = this.$refs.email.value;//邮箱
                 if (email == '') {
@@ -154,6 +163,10 @@ import Session from '@/utils/session'
                     }
                 }
             },
+            //邮箱提示显示
+            heidemail(){
+                this.isheidemail = false;
+            },
             // 取消修改
             quxiaoxiugai(){
                 document.documentElement.scrollTop = 0;

+ 31 - 23
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -82,10 +82,10 @@
                             <img src="/static/img/qiye/yonghu@2x.png" alt="">
                         </div>
                         <div class="left gr-right" style="margin-bottom: 50px;">
-                            <ul>
+                            <ul style="padding:0">
                                 <li>
                                     <span>姓名</span>
-                                    <span>{{mytoken.realname}}</span>
+                                    <span style="display: inline-block;width:200px">{{mytoken.realname}}</span>
                                     <button class="modifyname dianji" @click="modify">修改</button>
                                 </li>
                                 <li>
@@ -109,8 +109,8 @@
                             <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>
+                                    <input @blur="regname" @focus="hideregname" class="realname" type="text" ref="realname" value="">
+                                    <span v-show="isusname" class="usname" ref="usname"></span>
                                 </li>
                                 <li>
                                     <span>UU号</span><span>{{mytoken.uu}}</span>
@@ -220,6 +220,7 @@ import { setTimeout } from 'timers';
                 mobile: null,
                 ismodifyname:true,
                 isname:true,//姓名验证
+                isusname:false,
                 reg: new RegExp(/[\@\#\$\%\&\*!!\¥]/),//非法字符
                 isheigh:false,//默认高度
                 isnews: false,
@@ -372,33 +373,42 @@ import { setTimeout } from 'timers';
             },
             //修改姓名
             modify(){
-                this.ismodifyname = false
+                this.ismodifyname = false;
+                setTimeout(()=>{
+                    this.$refs.realname.value = this.mytoken.realname;
+                },10)
             },
             //取消修改姓名
             cancel(){
                 this.ismodifyname = true
             },
             regname(){
+                this.isusname = true;
                 let name = this.$refs.realname.value.replace(/\s+/g, "");
                 if (name == '') {
-                    this.$refs.usname.innerHTML = '个人姓名不能为空'
-                    this.isname = false
+                    this.$refs.usname.innerHTML = '<img style="width:14px" src="/static/img/warning.png" alt=""> 个人姓名不能为空'
+                    // this.isname = false
                 } else {
-                    this.isname = true
+                    // this.isname = true
                     if (this.reg.test(name)) {
-                        this.$refs.usname.innerHTML = '不能包含非法字符'
+                        this.$refs.usname.innerHTML = '<img style="width:14px" src="/static/img/warning.png" alt=""> 不能包含非法字符'
                         this.isname = false
                     } else {
-                        this.$refs.usname.innerHTML = ''
+                        this.$refs.usname.innerHTML = '<img style="width:14px" src="/static/img/ok.png" alt="">'
                         this.isname = true
                     }
                 }
             },
+            hideregname(){
+                this.isusname = false;
+            },
             // 保存修改姓名
             Preservation(){
-                if (this.isname) {
-                    let name = this.$refs.realname.value.replace(/\s+/g, "");
-                    let id = this.mytoken.id;
+                let name = this.$refs.realname.value.replace(/\s+/g, "");
+                let id = this.mytoken.id;
+                if (name == '') {
+                    this.$message.error('个人姓名不能为空');
+                } else if (this.isname) {
                     this.$ajax({
                         url: this.$url.api+"/api/account/account/update",
                         method :'post',
@@ -418,10 +428,9 @@ import { setTimeout } from 'timers';
                             this.$router.go(0);
                         }
                     })
-                    .catch(err=>{
-                        // console.log("请求错误",err);
-                    })
-                }
+                } else {
+                    this.$message.error('姓名不能包含非法字符');
+                } 
             },
             //ele常见问题
             handleSelect(){
@@ -503,13 +512,13 @@ import { setTimeout } from 'timers';
     background: #1E88F5 !important;
 }
 .modifyname {
-    margin-left: 80px;
+    margin-left: 20px;
     font-family: PingFangSC-Regular;
     font-size: 14px;
     color: #FFFFFF;
     letter-spacing: 0.25px;
     text-align: center;
-    padding: 5px 20px;
+    padding: 5px 30px;
     background: #1E88F5;
     border-radius: 2px;
     border: 0
@@ -534,8 +543,7 @@ import { setTimeout } from 'timers';
     padding-left: 5px;
 }
 .usname {
-    height: 0px;
-    margin-left: 85px;
+    margin-left: 10px;
     color: red;
     font-size: 12px;
 }
@@ -574,10 +582,10 @@ import { setTimeout } from 'timers';
     white-space: nowrap;
 }
 .gs-news > ul > li > span:nth-child(1) {
-    width: 58%;
+    width: 63%;
 }
 .gs-news > ul > li > span:nth-child(2) {
-    width: 20%;
+    width: 15%;
 }
 .gs-news > ul > li > span:nth-child(3) {
     width: 20%;

+ 4 - 3
frontend/saas-portal-web/src/components/conenter/failure.vue

@@ -30,6 +30,7 @@
 <style scoped>
 .failure {
     overflow: hidden;
+    margin-top: -80px;
 }
 p {
     text-align: center;
@@ -38,14 +39,14 @@ p {
 }
 .text1 {
     font-family: PingFangSC-Regular;
-    font-size: 3rem;
+    font-size: 2.5rem;
     color: #344A69;
     letter-spacing: 0;
-    top: 70%;
+    top: 60%;
 }
 .text2 {
     font-family: PingFangSC-Regular;
-    font-size: 1.5rem;
+    font-size: 1.4rem;
     color: #7C93AD;
     letter-spacing: 0;
     bottom: 5%;

+ 16 - 4
frontend/saas-portal-web/src/components/conenter/home.vue

@@ -45,10 +45,8 @@
         <div class="collapse navbar-collapse navbar-right" role="navigation" style="position: absolute;left: 35%;">
           <ul @click="gohome" id="nav" class="nav navbar-nav menu">
             <li><a href="#" @click="setTurnHome"><span>首页</span></a></li>
-            <li>
-              <a href="#feature"><span>特色</span></a>
-            </li>
-            <li><a href="#service"><span>功能</span></a></li>
+            <li class="xs"><a @click="feature2"><span>特色</span></a></li>
+            <li class="xs"><a @click="service2"><span>功能</span></a></li>
             <li>
               <el-menu  
               class="el-menu-demo" 
@@ -469,6 +467,20 @@
         this.$store.commit('problemfalse');
         document.documentElement.scrollTop = 0;
       },
+      //特色
+      feature2(){
+        setTimeout(()=>{
+          document.documentElement.scrollTop = 700;
+        },5);
+        this.setTurnHome();
+      },
+      //功能
+      service2(){
+        setTimeout(()=>{
+          document.documentElement.scrollTop = 3550;
+        },5);
+        this.setTurnHome();
+      },
       gohome(e){
         this.$store.commit('problemtrue')
         // this.isproblem = true

+ 129 - 27
frontend/saas-portal-web/src/components/conenter/invitation.vue

@@ -1,5 +1,22 @@
 <template>
     <div class="invitation">
+        <div class="zhezhao" v-if="istanchaung"></div>
+        <div class="Popup" v-if="istanchaung">
+        <!-- <div class="Popup"> -->
+            <div class="shang">
+                <img src="/static/img/caidian2x.png" alt="">
+                <img src="/static/img/tijiao2x.png" alt="">
+                <img class="xs" @click="hidden" src="/static/img/assets/chahao.png" alt="">
+            </div>
+            <div class="zhong">
+                <p>欢迎你加入U企云服,立即畅享轻松工作!</p>
+                <p>新用户登录密码随后将发送短信通知请注意查收</p>
+            </div>
+            <div class="xia">
+                <button @click="gohome">立即访问</button>
+            </div>
+        </div>
+
         <img src="/static/img/beijing.png" alt="">
         <div class="centent">
             <img src="/static/img/assets/logo@2x.png" alt="">
@@ -8,26 +25,26 @@
                 <p>{{enterprise.username}}</p>
                 <p>
                     <span class="inv-text">邀请您加入</span>
-                    <span>{{enterprise.companyName}}</span>
-                    <span class="inv-text">SAAS服务</span>
+                    <span class="inv-text">{{enterprise.companyName}}</span>
+                    <!-- <span class="inv-text">SAAS服务</span> -->
                 </p>
             </div>
-            <input type="text" ref="phone" @blur="phone" placeholder="请输入手机号">
+            <input class="padding-left" type="text" ref="phone" @blur="phone" placeholder="请输入手机号">
             <div class="Verification">
-                <input type="text" ref="Verification" @change="validCode" placeholder="请输入验证码">
+                <input class="padding-left" type="text" ref="Verification" @change="validCode" placeholder="请输入验证码">
                 <span v-if="isobtaincode" class="xs" @click="Obtaincode">获取验证码</span>
                 <span v-if="!isobtaincode" ref="obtaincode">{{time}}</span>
             </div>
-            <input type="text" ref="name" @blur="name" placeholder="请输入姓名">
-            <select class="role" ref="role" @blur="roles">
-                <option value="">岗位角色</option>
+            <input class="padding-left" type="text" ref="name" @blur="name" placeholder="请输入姓名">
+            <select class="role padding-left" ref="role" @blur="roles">
+                <option value="" disabled selected hidden>岗位角色</option>
                 <option v-for="(d,i) in arr" :key="i" :value=d.id>{{d.name}}</option>
             </select>
             <button class="login" @click="login">提交</button>
         </div>
         <div class="bottom">
             <p>U企云服|电子行业企业管理云端解决方案</p>
-            <p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+            <p>深圳市优软科技有限公司</p>
         </div>
     </div>
 </template>
@@ -44,13 +61,14 @@ import { setTimeout } from 'timers';
                 isregphone:false,
                 isname:false,
                 isregname:false,
-                regname:new RegExp(/[\@\#\$\%\&\*!!\¥0-9a-zA-Z]/),//非法字符加数字加英文
+                regname:new RegExp(/[\@\#\$\%\&\*!!\¥0-9]/),//非法字符加数字
                 isvalidCode:false,
                 isrole:false,
                 enterprise:[],
                 arr:[],
                 roleId:'',
                 times:'',
+                istanchaung:false,
             }
         },
         created(){
@@ -58,7 +76,7 @@ import { setTimeout } from 'timers';
             this.param();//获取页面参数
         },
         mounted(){
-            
+            this.$store.state.isinvitation = false;
         },
         destroyed(){
             this.$store.state.isinvitation = true
@@ -90,7 +108,7 @@ import { setTimeout } from 'timers';
                 } else {
                     this.isname = true;
                     if (this.regname.test(name)) {
-                        this.$message.error('姓名不能包含符号、数字、英文等非法字符');
+                        this.$message.error('姓名不能包含符号、数字等非法字符');
                         this.isregname = false
                     } else {
                         this.isregname = true
@@ -156,7 +174,7 @@ import { setTimeout } from 'timers';
                 } else if (!this.isname) {
                     this.$message.error('姓名不能为空');
                 } else if (!this.isregname) {
-                    this.$message.error("姓名不能包含符号、数字、英文等非法字符");
+                    this.$message.error("姓名不能包含符号、数字等非法字符");
                 } else if(!this.isvalidCode){
                     this.$message.error("请输入验证码");
                 } else if(!this.isrole){
@@ -178,16 +196,17 @@ import { setTimeout } from 'timers';
                     })
                     .then(res=>{
                         if (res.data.success) {
-                            this.$message.success('提交成功,3秒后自动跳转...');
-                            setTimeout(()=>{
-                                this.$router.push({path: '/home'});
-                            },3000)
+                            this.istanchaung = true;
                         } else {
                             this.$message.error(res.data.message);
                         }
                     })
                 }
             },
+            // 跳转首页
+            gohome(){
+                this.$router.push({path: '/home'});
+            },
             //倒计时
             settime(){
                 this.times = setTimeout(()=>{
@@ -241,6 +260,10 @@ import { setTimeout } from 'timers';
                     }
                 })
             },
+            //关闭弹窗
+            hidden(){
+                this.istanchaung = false;
+            },
         }
     }
 </script>
@@ -263,16 +286,19 @@ import { setTimeout } from 'timers';
     color: #FFFFFF;
     letter-spacing: 3.25px;
 }
-
+.padding-left {
+    padding-left: 15px; 
+}
 .centent > input {
     width: 100%;
-    margin-bottom: 16px;
-    opacity: 0.95;
+    margin-bottom: 11px;
+    opacity: 0.87;
     background: #FFFFFF;
     box-shadow: 0 2px 4px 0 #3C8EFF;
     font-size: 15px;
-    padding: 3px 0px 3px 5px;
     border: 0;
+    height: 40px;
+    border-radius: 4px;
 }
 .inv-title {
     text-align: left;
@@ -285,6 +311,7 @@ import { setTimeout } from 'timers';
     color: #FFFFFF;
     letter-spacing: 2.25px;
     text-shadow: 0 2px 4px #1B5099;
+    line-height: 30px;
 }
 .inv-title >p:nth-child(1) {
     margin-bottom: 16px;
@@ -296,30 +323,41 @@ import { setTimeout } from 'timers';
     background: #004CE0;
     width: 100%;
     border: 0;
-    height: 36px;
+    height: 40px;
+    border-radius: 4px;
+    color: #FFFFFF;
+    letter-spacing: 1.75px;
 }
 .role {
     width: 100%;
-    margin-bottom: 32px;
-    padding: 3px 0px;
+    margin-bottom: 39px;
+    opacity: 0.87;
+    background: #FFFFFF;
+    box-shadow: 0 2px 4px 0 #3C8EFF;
+    font-size: 15px;
+    border: 0;
+    height: 40px;
+    border-radius: 4px;
 }
 .Verification {
     border: 0;
-    opacity: 0.95;
+    opacity: 0.87;
     background: #FFFFFF;
     box-shadow: 0 2px 4px 0 #3C8EFF;
-    margin-bottom: 16px;
+    margin-bottom: 11px;
+    height: 40px;
+    line-height: 38px;
+    border-radius: 4px;
 }
 .Verification > input {
     width: 68%;
     border: 0;
     font-size: 15px;
-    padding: 3px 0px 3px 5px;
+    outline:none;
 }
 .Verification > span {
     width: 30%;
     display: inline-block;
-    border-left: 1px solid #2F86FE;
     font-family: PingFangSC-Regular;
     font-size: 12px;
     color: #2F86FE;
@@ -337,4 +375,68 @@ import { setTimeout } from 'timers';
     color: #666666;
     letter-spacing: 2px;
 }
+/* 弹窗 */
+.Popup {
+    width: 428px;
+    height: 235px;
+    background: #FFFFFF;
+    border-radius: 2px;
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    z-index: 10001;
+    text-align: center;
+    padding: 24px;
+}
+.shang {
+    height: 30%;
+    position: relative;
+}
+.shang > img {
+    position: absolute;
+}
+.shang > img:nth-child(1){
+    top: 15px;
+    left: 34%;
+    width: 124px;
+}
+.shang > img:nth-child(2){
+    top: 18px;
+    left: 38%;
+    width: 101px;
+}
+.shang > img:nth-child(3){
+    top: 0px;
+    right: 0px;
+}
+.zhong {
+    height: 50%;
+    line-height: 36px;
+}
+.zhong > p:nth-child(1) {
+    font-family: PingFangSC-Regular;
+    font-size: 14px;
+    color: #333333;
+    letter-spacing: 1.75px;
+}
+.zhong > p:nth-child(2) {
+    font-family: PingFangSC-Regular;
+    font-size: 12px;
+    color: #666666;
+    letter-spacing: 1.5px;
+}
+.xia {
+    height: 20%;
+}
+.xia > button {
+    background: #207CFF;
+    border-radius: 2px;
+    font-family: PingFangSC-Regular;
+    font-size: 14px;
+    color: #FFFFFF;
+    letter-spacing: 1.75px;
+    padding: 6px 16px;
+    border: 0;
+}
 </style>

+ 6 - 2
frontend/saas-portal-web/static/css/gongsi.css

@@ -300,8 +300,11 @@ input::-webkit-input-placeholder {
     box-shadow: 0 20px 60px 8px #F4F8FC;
     border-radius: 2px;
 }
-.gr-worp div {
-    width: 50%;
+.gr-worp > div:nth-child(1) {
+    width: 40%;
+}
+.gr-worp > div:nth-child(2) {
+    width: 60%;
 }
 .gr-left {
     text-align: center;
@@ -461,6 +464,7 @@ input::-webkit-input-placeholder {
 }
 .lookup > ul > li span:nth-child(2) {
     width: 74%;
+    padding-right: 10px;
 } 
 /* .lookup > ul > li span:nth-child(3) {
     width: 40%;

+ 5 - 5
frontend/saas-portal-web/static/css/main.css

@@ -101,7 +101,7 @@ main > section {
     height: 100%;
     width: 100%;
     background: #000;
-    opacity: 0.3;
+    opacity: 0.5;
     z-index: 10000;
 }
 /* 登录弹窗 */
@@ -353,8 +353,8 @@ main > section {
     background-size: 100%;
 }
 .db-text {
-    background: white;
-    color: #000;
+    background:  #1E88F5;
+    color:  #FFFFFF;
 }
 .footer .container{
     margin: 0 auto;
@@ -453,10 +453,10 @@ main > section {
 
 
 .friend-link{
-    height: 48px;
+    height: 56px;
     background: #14152D;
     width: 100%;
-    line-height: 48px;
+    line-height: 56px;
     text-align: center;
 }
 .friend-link span {

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


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


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

@@ -22,32 +22,41 @@ Ext.define('saas.view.document.bom.FormPanel', {
     _deleteMsg: '删除的BOM资料将不能恢复,请确认是否删除?',
     codeInHeader: false,
 
+    defaultButtons:[{
+        cls: 'x-formpanel-btn-blue',
+        xtype: 'button',
+        text: '新增',
+        bind: {
+            hidden: '{!id}'
+        },
+        handler: 'add'
+    }, {
+        xtype: 'button',
+        text: '保存',
+        handler: 'onSave'
+    }, {
+        xtype: 'button',
+        text: '删除',
+        handler: 'delete'
+    }, {
+        xtype: 'button',
+        bind: {
+            text: '{auditBtnText}'
+        },
+        handler: "auditBtnClick",
+    }],
+
+    auditTexts: {
+        auditCode: 'BANNED',
+        auditText: '已禁用',
+        unAuditCode: 'ENABLE',
+        unAuditText: '已启用',
+        auditBtnText: '禁用',
+        unAuditBtnText: '启用',
+    },
+
     initComponent: function () {
         Ext.applyIf(this, {
-            defaultButtons:[{
-                cls: 'x-formpanel-btn-blue',
-                xtype: 'button',
-                text: '新增',
-                bind: {
-                    hidden: '{!id}'
-                },
-                handler: 'add'
-            }, {
-                xtype: 'button',
-                text: '保存',
-                handler: 'onSave'
-            }, {
-                xtype: 'button',
-                text: '删除',
-                handler: 'delete'
-            }, {
-                xtype: 'button',
-                bind: {
-                    text: '{auditBtnText}'
-                },
-                handler: "auditBtnClick",
-            }],
-        
             defaultItems: [{
                 xtype: 'hidden',
                 name: 'id',
@@ -245,15 +254,6 @@ Ext.define('saas.view.document.bom.FormPanel', {
                 name : "createTime", 
                 fieldLabel : "录入时间"
             }],
-        
-            auditTexts: {
-                auditCode: 'BANNED',
-                auditText: '已禁用',
-                unAuditCode: 'ENABLE',
-                unAuditText: '已启用',
-                auditBtnText: '禁用',
-                unAuditBtnText: '启用',
-            }
         });
         this.callParent(arguments);
     },

+ 32 - 31
frontend/saas-web/app/view/document/customer/FormPanel.js

@@ -22,6 +22,38 @@ Ext.define('saas.view.document.customer.FormPanel', {
 
     codeInHeader: false,
 
+    defaultButtons:[{
+        cls: 'x-formpanel-btn-blue',
+        xtype: 'button',
+        text: '新增',
+        bind: {
+            hidden: '{!id}'
+        },
+        handler: 'add'
+    }, {
+        xtype: 'button',
+        text: '保存',
+        handler: 'onSave',
+    }, {
+        xtype: 'button',
+        text: '删除',
+        handler: 'delete'
+    }, {
+        xtype: 'button',
+        bind: {
+            text: '{auditBtnText}'
+        },
+        handler: "auditBtnClick",
+    }],
+    auditTexts: {
+        auditCode: 'BANNED',
+        auditText: '已禁用',
+        unAuditCode: 'ENABLE',
+        unAuditText: '已启用',
+        auditBtnText: '禁用',
+        unAuditBtnText: '启用',
+    },
+
     initComponent: function () {
         Ext.applyIf(this, {
             defaultItems: [{
@@ -359,37 +391,6 @@ Ext.define('saas.view.document.customer.FormPanel', {
                         xtype:'yncolumn'
                     }]
             }],
-            defaultButtons:[{
-                cls: 'x-formpanel-btn-blue',
-                xtype: 'button',
-                text: '新增',
-                bind: {
-                    hidden: '{!id}'
-                },
-                handler: 'add'
-            }, {
-                xtype: 'button',
-                text: '保存',
-                handler: 'onSave',
-            }, {
-                xtype: 'button',
-                text: '删除',
-                handler: 'delete'
-            }, {
-                xtype: 'button',
-                bind: {
-                    text: '{auditBtnText}'
-                },
-                handler: "auditBtnClick",
-            }],
-            auditTexts: {
-                auditCode: 'BANNED',
-                auditText: '已禁用',
-                unAuditCode: 'ENABLE',
-                unAuditText: '已启用',
-                auditBtnText: '禁用',
-                unAuditBtnText: '启用',
-            }
         });
         this.callParent(arguments);
     },

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

@@ -22,6 +22,38 @@ Ext.define('saas.view.document.product.FormPanel', {
 
     codeInHeader: false,
 
+    defaultButtons:[{
+        cls: 'x-formpanel-btn-blue',
+        xtype: 'button',
+        text: '新增',
+        bind: {
+            hidden: '{!id}'
+        },
+        handler: 'add'
+    }, {
+        xtype: 'button',
+        text: '保存',
+        handler: 'onSave',
+    }, {
+        xtype: 'button',
+        text: '删除',
+        handler: 'delete'
+    }, {
+        xtype: 'button',
+        bind: {
+            text: '{auditBtnText}'
+        },
+        handler: "auditBtnClick",
+    }],
+    auditTexts: {
+        auditCode: 'BANNED',
+        auditText: '已禁用',
+        unAuditCode: 'ENABLE',
+        unAuditText: '已启用',
+        auditBtnText: '禁用',
+        unAuditBtnText: '启用',
+    },
+
     initComponent: function () {
         Ext.applyIf(this, {
             defaultItems: [{
@@ -348,37 +380,6 @@ Ext.define('saas.view.document.product.FormPanel', {
                 }]
             }],
         
-            defaultButtons:[{
-                cls: 'x-formpanel-btn-blue',
-                xtype: 'button',
-                text: '新增',
-                bind: {
-                    hidden: '{!id}'
-                },
-                handler: 'add'
-            }, {
-                xtype: 'button',
-                text: '保存',
-                handler: 'onSave',
-            }, {
-                xtype: 'button',
-                text: '删除',
-                handler: 'delete'
-            }, {
-                xtype: 'button',
-                bind: {
-                    text: '{auditBtnText}'
-                },
-                handler: "auditBtnClick",
-            }],
-            auditTexts: {
-                auditCode: 'BANNED',
-                auditText: '已禁用',
-                unAuditCode: 'ENABLE',
-                unAuditText: '已启用',
-                auditBtnText: '禁用',
-                unAuditBtnText: '启用',
-            },
             listeners: {
                 load: function(form, data) {
                     var viewModel = form.getViewModel();

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

@@ -22,6 +22,38 @@ Ext.define('saas.view.document.vendor.FormPanel', {
 
     codeInHeader: false,
 
+    defaultButtons:[{
+        cls: 'x-formpanel-btn-blue',
+        xtype: 'button',
+        text: '新增',
+        bind: {
+            hidden: '{!id}'
+        },
+        handler: 'add'
+    }, {
+        xtype: 'button',
+        text: '保存',
+        handler: 'onSave',
+    }, {
+        xtype: 'button',
+        text: '删除',
+        handler: 'delete'
+    }, {
+        xtype: 'button',
+        bind: {
+            text: '{auditBtnText}'
+        },
+        handler: "auditBtnClick",
+    }],
+    auditTexts: {
+        auditCode: 'BANNED',
+        auditText: '已禁用',
+        unAuditCode: 'ENABLE',
+        unAuditText: '已启用',
+        auditBtnText: '禁用',
+        unAuditBtnText: '启用',
+    },
+
     initComponent: function() {
         Ext.apply(this, {
             defaultItems: [{
@@ -292,38 +324,6 @@ Ext.define('saas.view.document.vendor.FormPanel', {
                     }]
                 }
             ],
-        
-            defaultButtons:[{
-                cls: 'x-formpanel-btn-blue',
-                xtype: 'button',
-                text: '新增',
-                bind: {
-                    hidden: '{!id}'
-                },
-                handler: 'add'
-            }, {
-                xtype: 'button',
-                text: '保存',
-                handler: 'onSave',
-            }, {
-                xtype: 'button',
-                text: '删除',
-                handler: 'delete'
-            }, {
-                xtype: 'button',
-                bind: {
-                    text: '{auditBtnText}'
-                },
-                handler: "auditBtnClick",
-            }],
-            auditTexts: {
-                auditCode: 'BANNED',
-                auditText: '已禁用',
-                unAuditCode: 'ENABLE',
-                unAuditText: '已启用',
-                auditBtnText: '禁用',
-                unAuditBtnText: '启用',
-            }
         });
         this.callParent(arguments);
     },

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

@@ -6,7 +6,7 @@ Ext.define('saas.view.money.report.PayDetail', {
     viewModel: 'money-report-paydetail',
     viewName: 'money-report-paydetail',
 
-    groupField:'pd_vendname',
+    groupField:'pd_vendid',
     groupHeaderTpl: '供应商名称: {[values.rows[0].data.pd_vendname]}',
     listUrl: '/api/money/report/payDetail',
     defaultCondition: null,

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

@@ -7,7 +7,7 @@ Ext.define('saas.view.money.report.RecDetail', {
 
     viewName: 'money-report-recdetail',
 
-    groupField: 'rd_custname',
+    groupField: 'rd_custid',
     groupHeaderTpl: '客户名称: {[values.rows[0].data.rd_custname]}',
     listUrl: '/api/money/report/recDetail',
     defaultCondition: null,

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

@@ -296,7 +296,7 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                     },
                 }]
             }, {
-                xtype: "numberfield",
+                xtype: "textfield",
                 name: "pu_remark",
                 fieldLabel: "备注",
                 columnWidth: 1

+ 31 - 1
frontend/saas-web/overrides/data/Connection.js

@@ -44,6 +44,36 @@ Ext.define('saas.override.data.Connection', {
             this.setupServerOptions(options);
         }
         return this.callParent([options]);
-    }
+    },
+    onRequestComplete: function(request) {
+        let headers = request.result.getAllResponseHeaders(),
+        Authorization = headers['authorization'];
+
+        if(Authorization) {
+            // 如果返回了token则刷新token
+            let headers = Ext.Ajax.getDefaultHeaders() || {};
+            let session = saas.util.State.get('session');
+            
+            headers['Authorization'] = Authorization;
+            Ext.Ajax.setDefaultHeaders(headers);
+
+            session.token = Authorization;
+
+            saas.util.State.set('session', session);
+
+            let sessionStr = session ? JSON.stringify(session) : '';
+
+            if (typeof require === 'function') {
+                let ipc = require('electron').ipcRenderer;
+                ipc.send('session.change', sessionStr);
+            }else {
+                //解析session 把data作为sessionStr
+                sessionStr = session ? JSON.stringify(session.data) : '';
+                const frame = window.frames[window.frames.length - 1];
+                frame.postMessage(sessionStr, '*');
+            }
+        }
+    },
+
  });