Просмотр исходного кода

Merge branch 'master' of http://git.dongkesoft.com:9001/iBOSS-2.0-Mini/iboss-mini-web

# Conflicts:
#	src/api/pages/report/detail-report.js
hongxudong 1 год назад
Родитель
Сommit
20873269d5

+ 4 - 0
src/api/pages/report/detail-report.js

@@ -41,6 +41,10 @@ export default {
     getReportBatch: 'get_report_batch',
     getReportBatch: 'get_report_batch',
     //导出的uuid
     //导出的uuid
     exportPushParams: 'export_push_params',
     exportPushParams: 'export_push_params',
+    // 客户往来账表
+    getMacRecCurrentReport: "get_mac_rec_current_report",
+    // 客户往来账表-明细
+    getMacRecCurrentItemReport: "get_mac_rec_current_item_report",
   }
   }
 }
 }
 
 

+ 1 - 0
src/api/pages/sale/order.js

@@ -10,6 +10,7 @@ export default {
     getOrderForUpdate: 'get_order_for_update',
     getOrderForUpdate: 'get_order_for_update',
     getOrderForOut: 'get_order_for_out',
     getOrderForOut: 'get_order_for_out',
     getOrderForReturn: 'get_order_for_return',
     getOrderForReturn: 'get_order_for_return',
+    getOrderTrackReport:'get_order_track_report',
     //首页-查询订单-待办事项个数
     //首页-查询订单-待办事项个数
     countOrderByCond:'count_order_by_cond',
     countOrderByCond:'count_order_by_cond',
   }
   }

BIN
src/assets/images/left-bgimg.png


BIN
src/assets/images/login-logo.png


+ 0 - 4
src/index.less

@@ -547,10 +547,6 @@
   z-index: 10
   z-index: 10
 }
 }
 
 
-.form-class {
-  width: 100%;
-  padding-top: 12px !important;
-}
 
 
 .vxe-footer--column.col--ellipsis > .vxe-cell {
 .vxe-footer--column.col--ellipsis > .vxe-cell {
   display: block !important;
   display: block !important;

+ 11 - 0
src/locale/lang/zh-CN.js

@@ -648,6 +648,17 @@ export const columns = {
   ordOutReturn:'退货单',
   ordOutReturn:'退货单',
   ordRecPay:'收款单',
   ordRecPay:'收款单',
   priceOther:'其他价格',
   priceOther:'其他价格',
+  recOpening:'期初收款余额',
+  recHandleOpening:'期初应收余额',
+  recCurrent:'本期收款余额',
+  recHandleCurrent:'本期应收余额',
+  recEnding:'期末收款余额',
+  recHandleEnding:'期末应收余额',
+  recCusDetail:'客户往来账',
+  recDetail:'收款明细',
+  handleDetail:'应收明细',
+  isOrgFlag:'过滤业务部门',
+  isNoCurrentFilter:'过滤本期没有往来',
 }
 }
 
 
 /**
 /**

+ 311 - 0
src/view/fin/customer-current-account-report/index.vue

@@ -0,0 +1,311 @@
+<!-- @desc:客户往来账查询  @auth:宋扬  @time:2024-05-09 16:28 -->
+<template>
+  <div class="main-div" ref="mainDiv">
+    <!--加载中-->
+    <loading :loading="loading" v-if="!modalVisible"></loading>
+    <BaseIndexButtonGroup id="BaseIndexButtonGroup">
+      <template #left>
+        <!--    查询    -->
+        <BaseIndexButton right-button="user-select" ref="search" name="search"></BaseIndexButton>
+        <!--    清空条件    -->
+        <BaseIndexButton ref="clear" name="clear"></BaseIndexButton>
+      </template>
+
+    </BaseIndexButtonGroup>
+
+    <!--  查询条件区域  -->
+    <div id="search-cond-div" ref="search-cond-div" class="search-cond-class">
+      <SearchCond ref="searchCond" v-model="searchCond"
+                  @collapse-change="collapseChange" :setFlag="false"
+                  :searchContent="searchContent"
+      ></SearchCond>
+    </div>
+    <!--  表格部分  -->
+    <div slot="bottom">
+    <DkTabs v-model="detailModel" :options="detailOptions" @on-click="detailTabsClick"></DkTabs>
+      <div v-show="visCustomerFlag">
+      <DkTable :id="'table-'+$options.name"
+               ref="table-select"
+               :data="tableData"
+               showFooter
+               :height="this.tableHeight-35"
+               primaryKey="objectId"
+               @pageChange="pageSizeChange"
+               :page-total="pageInfo.total"
+               :current-page="pageInfo.currentPage"
+               :choose-flag="false"
+               :page-size-opts="pageSizeOpts"
+               :page-size="pageInfo.pageSize"
+               name="table">
+        <DkTableColumn field="cusName"/>
+        <DkTableColumn field="cusPhone"/>
+        <DkTableColumn field="cusContactName" :title="$t('contactName')"/>
+        <DkTableColumn field="cusAddressFull" :title="$t('addressFull')" />
+        <DkTableColumn field="cusFromName" />
+        <DkTableColumn field="channelName" />
+        <DkTableColumn field="orgName" />
+        <DkTableColumn field="recOpening"dataType="number" :sum="true" />
+        <DkTableColumn field="recHandleOpening"dataType="number" :sum="true" />
+        <DkTableColumn field="recCurrent" dataType="number" type="link" @on-link="currentRecRights()"></DkTableColumn>
+        <DkTableColumn field="recHandleCurrent" dataType="number" type="link" @on-link="currentHandleRights()"></DkTableColumn>
+        <DkTableColumn field="recEnding"dataType="number" :sum="true" />
+        <DkTableColumn field="recHandleEnding"dataType="number" :sum="true" />
+      </DkTable>
+    </div>
+      <div v-show="visCusRecFlag">
+        <DkTable :id="'table-'+$options.name" ref="detail-select" :data="recDetailData" showFooter
+                 :height="this.tableHeight-35"
+                 primaryKey="objectId"
+                 @pageChange="pageSizeChange"
+                 :page-total="pageInfo.total"
+                 :current-page="pageInfo.currentPage"
+                 :choose-flag="false"
+                 :page-size-opts="pageSizeOpts"
+                 :page-size="pageInfo.pageSize"
+                 name="table">
+          <DkTableColumn field="cusName"/>
+          <DkTableColumn field="cusPhone"/>
+          <DkTableColumn field="contactName" />
+          <DkTableColumn field="addressFull" />
+          <DkTableColumn field="orgName" />
+          <DkTableColumn field="accDate" width="auto" :dataType="$config.columnType.date"/>
+          <!-- 来源类型-->
+          <DkTableColumn field="biznisTypeName" />
+          <!-- 来源单号-->
+          <DkTableColumn field="biznisNo" />
+          <!-- 收款金额-->
+          <DkTableColumn field="amtRec" :sum="true" dataType="number" ></DkTableColumn>
+          <!-- 核销金额-->
+          <DkTableColumn field="amtHandle" :sum="true" dataType="number"></DkTableColumn>
+          <!--制单人-->
+          <DkTableColumn field="makeStaffName" :filter="false"></DkTableColumn>
+          <!-- 备注-->
+          <DkTableColumn field="remarks" :filter="false"></DkTableColumn>
+        </DkTable>
+      </div>
+      <div v-show="visCusRecHandleFlag">
+        <DkTable :id="'table-'+$options.name" ref="detail-select" :data="handleDetailData" showFooter
+                 :height="this.tableHeight -35"
+                 primaryKey="objectId"
+                 @pageChange="pageSizeChange"
+                 :page-total="pageInfo.total"
+                 :current-page="pageInfo.currentPage"
+                 :choose-flag="false"
+                 :page-size-opts="pageSizeOpts"
+                 :page-size="pageInfo.pageSize"
+                 name="table">
+          <DkTableColumn field="cusName"/>
+          <DkTableColumn field="cusPhone"/>
+          <DkTableColumn field="contactName" />
+          <DkTableColumn field="addressFull" />
+          <DkTableColumn field="orgName" />
+          <DkTableColumn field="accDate" width="auto" :dataType="$config.columnType.date"/>
+          <!-- 来源类型-->
+          <DkTableColumn field="biznisTypeName" />
+          <!-- 来源单号-->
+          <DkTableColumn field="biznisNo" />
+          <!-- 应收金额-->
+          <DkTableColumn field="amtShould" :sum="true" dataType="number" ></DkTableColumn>
+          <!-- 核销金额-->
+          <DkTableColumn field="amtHandle" :sum="true" dataType="number"></DkTableColumn>
+          <!-- 剩余金额-->
+          <DkTableColumn field="amtResidue" :sum="true" dataType="number"></DkTableColumn>
+          <!-- 优惠金额-->
+          <DkTableColumn field="amtWaive" :sum="true" dataType="number"></DkTableColumn>
+          <!--制单人-->
+          <DkTableColumn field="makeStaffName" :filter="false"></DkTableColumn>
+          <!-- 备注-->
+          <DkTableColumn field="remarks" :filter="false"></DkTableColumn>
+        </DkTable>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import {indexMixin} from '@/mixins'
+import Config from "@/config";
+export default {
+  name: "index",
+  mixins: [indexMixin],
+  data() {
+    let self = this
+    return {
+      detailModel: 'recCusDetail',
+      detailOptions: [
+        {label: self.$t('recCusDetail'), name: 'recCusDetail'}, //客户账款
+        {label: self.$t('recDetail'), name: 'recDetail'}, //收款明细
+        {label: self.$t('handleDetail'), name: 'handleDetail'}, //应收明细
+      ],
+      tableData:[],           // 客户账款
+      recDetailData:[],       // 收款明细
+      handleDetailData: [],   // 应收明细
+      visCustomerFlag: true,
+      visCusRecHandleFlag: false,
+      visCusRecFlag: false,
+      searchContent:
+        [
+          {
+            itemCode: 'cusName',
+          },
+          {
+            itemCode: 'accDate',
+            valueFormat: {
+              code: 'accDate',
+              default: [new Date().addMonths(-1).format('yyyy-MM-dd'), new Date().format('yyyy-MM-dd')]
+            },
+            valueKind: 'DATE_RANGE',
+          },
+          {
+            itemCode: 'isOrgFlag',
+            valueFormat: {code: 'isOrgFlag', default: false},
+            valueKind: 'SWITCH'
+          },
+          {
+            itemCode: 'isNoCurrentFilter',
+            valueFormat: {code: 'isNoCurrentFilter', default: false},
+            valueKind: 'SWITCH'
+          },
+        ],
+    }
+  },
+  methods: {
+    /**
+     * @desc   : 查询数据
+     * @author : 宋扬
+     * @date   : 2024/3/13 10:42
+     */
+    getData(params) {
+      // 清空数据
+      this.tableData = [];
+      this.recDetailData = [];
+      this.handleDetailData = [];
+      // 自动显示收发存数据
+      this.visCustomerFlag = true
+      this.visCusRecHandleFlag = false
+      this.visCusRecFlag = false
+      return this.excute(this.$service.detailReportService, this.$service.detailReportService.getMacRecCurrentReport, params)
+    },
+
+    /**
+     * @desc   : 点击Tab进行切换
+     * @author : 宋扬
+     * @date   : 2024/4/3 16:24
+     */
+    detailTabsClick(val) {
+      if (val === 'recCusDetail') {
+        this.detailModel = val
+        this.visCustomerFlag = true
+        this.visCusRecHandleFlag = false
+        this.visCusRecFlag = false
+      } else if (val === 'recDetail' && this.recDetailData.length > 0) {
+        this.detailModel = val
+        this.visCustomerFlag = false
+        this.visCusRecHandleFlag = true
+        this.visCusRecFlag = false
+      }else if (val === 'handleDetail' && this.handleDetailData > 0) {
+        this.detailModel = val
+        this.visCustomerFlag = false
+        this.visCusRecHandleFlag = false
+        this.visCusRecFlag = true
+      }
+    },
+    /**
+     * @desc   : 赋值查询条件
+     * @author : 宋扬
+     * @date   : 2024/4/23 10:44
+     */
+    setSearchParams(params){
+      // 赋值JSON查询条件
+      let skuquerys = {}
+      if(this.searchCond && this.searchCond._value){
+        Object.assign(skuquerys,this.searchCond._value)
+      }
+      let skuQuerystr = JSON.stringify(skuquerys);
+      if(skuQuerystr && skuQuerystr !='{}'){
+        params['querys']= skuQuerystr;
+      }
+      return params;
+    },
+
+    /**
+     * @desc   : 收款点击跳转事件
+     * @author : 宋扬
+     * @date   : 2024/4/23 13:22
+     */
+    currentRecRights(row){
+      this.recDetailData = [];
+      if (!row) {
+        row = [this.$refs['table-select'].getCurrentRow()]
+      }
+      let searchParams = {...this.searchParams};
+      let params={}
+      if (row != null) {
+        // 赋值入库查询条件
+        params = {
+          objectId:row[0].objectId,
+          macType:1,
+          accDateStart:searchParams.accDateStart,
+          accDateEnd:searchParams.accDateEnd,
+          currentPage:searchParams.currentPage,
+          pageSize:searchParams.pageSize
+        }
+      }
+      // 查询入库明细
+      this.excute(this.$service.detailReportService, this.$service.detailReportService.getMacRecCurrentItemReport, params).then(res => {
+        if (res.code === this.$config.SUCCESS_CODE) {
+          this.recDetailData = res.data.list;
+          // 显示收款明细信息页面
+          this.detailModel = 'recDetail'
+          this.visCustomerFlag = false
+          this.visCusRecHandleFlag = false
+          this.visCusRecFlag = true
+        }
+      })
+    },
+
+    /**
+     * @desc   : 应收点击跳转事件
+     * @author : 宋扬
+     * @date   : 2024/4/23 13:22
+     */
+    currentHandleRights(row){
+      this.handleDetailData = [];
+      if (!row) {
+        row = [this.$refs['table-select'].getCurrentRow()]
+      }
+      let searchParams = {...this.searchParams};
+      let params={}
+      if (row != null) {
+        // 赋值出库查询条件
+        params = {
+          objectId:row[0].objectId,
+          macType:0,
+          accDateStart:searchParams.accDateStart,
+          accDateEnd:searchParams.accDateEnd,
+          currentPage:searchParams.currentPage,
+          pageSize:searchParams.pageSize
+        }
+      }
+      // 查询出库明细
+      this.excute(this.$service.detailReportService, this.$service.detailReportService.getMacRecCurrentItemReport, params).then(res => {
+        if (res.code === this.$config.SUCCESS_CODE) {
+          this.handleDetailData = res.data.list;
+          // 显示出库明细信息页面
+          this.detailModel = 'handleDetail'
+          this.visCustomerFlag = false
+          this.visCusRecHandleFlag = true
+          this.visCusRecFlag = false
+        }
+      })
+    },
+
+  },
+  created() {
+    this.primaryKey = 'objectId'  // 设置主键Id
+    this.routeObjName = 'detailReport'  // 设置路由名称
+  }
+}
+</script>
+
+

+ 9 - 2
src/view/ivt/ivt-check/form.vue

@@ -393,12 +393,19 @@ export default {
      */
      */
     validData(val){
     validData(val){
       let itemTable = this.$refs['goodsTable'].getTableDataFilter();
       let itemTable = this.$refs['goodsTable'].getTableDataFilter();
-      for (let it of itemTable) {
+      //明细不能为空
+      if (!itemTable || itemTable.length == 0) {
+        this.$Message.warning(this.$t('W_012'))
+        return false;
+      }
+      for (let it of itemTable){
         if(val){
         if(val){
+          // 盘点量不能为空或零
           if (it.balanceQty > 0 && (!it.priceInto || it.priceInto === '' || it.priceInto===0)) {
           if (it.balanceQty > 0 && (!it.priceInto || it.priceInto === '' || it.priceInto===0)) {
             this.$Message.warning(this.$t('W_042', {'param': this.$t('priceInto')}))
             this.$Message.warning(this.$t('W_042', {'param': this.$t('priceInto')}))
             return false;
             return false;
-          }else if(it.balanceQty < 0){
+          }
+          else if(it.balanceQty < 0){
             if(!it.dutyStaff){
             if(!it.dutyStaff){
               this.$Message.warning(this.$t('W_042', {'param': this.$t('personUser')}))
               this.$Message.warning(this.$t('W_042', {'param': this.$t('personUser')}))
               return false;
               return false;

+ 11 - 3
src/view/ivt/ivt-freeze/form.vue

@@ -347,9 +347,17 @@ export default {
      */
      */
     validData(){
     validData(){
       let itemTable = this.$refs['goodsTable'].getTableDataFilter();
       let itemTable = this.$refs['goodsTable'].getTableDataFilter();
-      for (let it of itemTable)
-      {
-        if (this.type === this.$config.formMode.add && it.usableQty<it.freezeQty){
+      //明细不能为空
+      if (!itemTable || itemTable.length == 0) {
+        this.$Message.warning(this.$t('W_012'))
+        return false;
+      }
+      for (let it of itemTable){
+        //冻结量不能为空或零
+        if (it.freezeQty > 0 && (!it.freezeQty || it.freezeQty === '' || it.freezeQty===0)){
+          this.$Message.warning(this.$t('W_042', {'param': this.$t('freezeQty')}))
+          return false;
+        } else if (this.type === this.$config.formMode.add && it.usableQty<it.freezeQty){
           this.$Message.warning(this.$t('W_008', {'param1': this.$t('freezeQty')},{'param2':this.$t('usableQty')}))
           this.$Message.warning(this.$t('W_008', {'param1': this.$t('freezeQty')},{'param2':this.$t('usableQty')}))
           return false;
           return false;
         }else if(this.type === this.$config.formMode.unFreeze && it.unfreezeQty<it.surplusQty ){
         }else if(this.type === this.$config.formMode.unFreeze && it.unfreezeQty<it.surplusQty ){

+ 11 - 3
src/view/ivt/ivt-transfer/form.vue

@@ -422,9 +422,17 @@ export default {
      */
      */
     validData(){
     validData(){
       let itemTable = this.$refs['goodsTable'].getTableDataFilter();
       let itemTable = this.$refs['goodsTable'].getTableDataFilter();
-      for (let it of itemTable)
-      {
-        if ( it.usableQty<it.transferQty){
+      //明细不能为空
+      if (!itemTable || itemTable.length == 0) {
+        this.$Message.warning(this.$t('W_012'))
+        return false;
+      }
+      for (let it of itemTable){
+        //冻结量不能为空或零
+        if (it.transferQty > 0 && (!it.transferQty || it.transferQty === '' || it.transferQty===0)){
+          this.$Message.warning(this.$t('W_042', {'param': this.$t('transferQty')}))
+          return false;
+        }else if ( it.usableQty<it.transferQty){
           this.$Message.warning(this.$t('W_008', {'param1': this.$t('transferQty')},{'param2':this.$t('usableQty')}))
           this.$Message.warning(this.$t('W_008', {'param1': this.$t('transferQty')},{'param2':this.$t('usableQty')}))
           return false;
           return false;
         }
         }

+ 8 - 8
src/view/login/login-form.vue

@@ -143,9 +143,7 @@ export default {
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
 
 
-/deep/.ivu-form-item {
-  margin-bottom: 20px !important;
-}
+
 
 
 /deep/ input::-webkit-input-placeholder {
 /deep/ input::-webkit-input-placeholder {
   -webkit-text-fill-color: #95A8CB !important;
   -webkit-text-fill-color: #95A8CB !important;
@@ -168,15 +166,17 @@ export default {
 }
 }
 
 
 .login-class {
 .login-class {
-  background: #1B365D;
+  background: #3B6EE5;
   border-radius: 8px;
   border-radius: 8px;
-  height: 45px;
+  height: 40px;
+  border-radius: 44px;
 }
 }
 
 
 /deep/ .ivu-btn > span {
 /deep/ .ivu-btn > span {
-  font-weight: 500;
-  font-size: 18px;
-  line-height: 40px;
+  font-weight: 400;
+  font-size: 16px;
+  line-height: 24px;
+  font-family: "PingFang SC";
 }
 }
 
 
 /deep/.ivu-form-item-error-tip{
 /deep/.ivu-form-item-error-tip{

+ 31 - 114
src/view/login/login.less

@@ -10,133 +10,50 @@
   width: 100%;
   width: 100%;
   height: 100%;
   height: 100%;
   background: #f0f2f5;
   background: #f0f2f5;
-  position: fixed;
   min-height: 100%;
   min-height: 100%;
   background-image: url('../../assets/images/login.svg');
   background-image: url('../../assets/images/login.svg');
   background-repeat: no-repeat;
   background-repeat: no-repeat;
-  //background-size: cover;
   background-size: 100% 100%;
   background-size: 100% 100%;
   background-position: center;
   background-position: center;
   min-width: 1220px;
   min-width: 1220px;
+  display: flex;
+  align-content: center;
+  justify-content: center;
+}
 
 
-  &-con {
-
-    &-header {
-      font-size: 16px;
-      font-weight: 300;
-      text-align: center;
-      padding: 30px 0;
-    }
-
-
-    .form-con {
-      //position: absolute;
-      //top: 23vh;
-      //left: 57vw;
-      //width: 32vw;
-      //height: 62vh;
-      //top: 20%;
-      //left: 38%;
-      //width: 30%;
-      //height: 55%;
-      //top:50%;
-      //left: 50%;
-      width: 550px;
-      height: 380px;
-      margin-top: -50px;
-      //margin-top: -250px;
-      //margin-left: -230px;
-      //min-width: 460px;
-      //min-height: 480px;
-      //background: linear-gradient(181.51deg, rgba(255, 255, 255, 0.5) -0.89%, rgba(255, 255, 255, 0.5) 41.59%);
-      //background: #fff;
-      //opacity: 0.86;
-      mix-blend-mode: normal;
-      backdrop-filter: blur(50px);
-      /* Note: backdrop-filter has minimal browser support */
-      border-radius: 5px;
-
-      .hj-logo {
-        //padding-top: 20px;
-        display: flex;
-        justify-content: center;
-      }
-
-      .tab-class {
-        width: 60%;
-        margin-left: 20%;
-        padding-top: 15px;
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-
-        .btn-class {
-          cursor: pointer;
-          font-weight: 500;
-          font-size: 20px;
-          line-height: 40px;
-          display: flex;
-          align-items: center;
-          color: #1B365D;
-        }
-
-        .btn-active-class {
-          cursor: pointer;
-          font-weight: 500;
-          text-decoration: underline;
-          text-underline-offset: 10px;
-          font-size: 20px;
-          line-height: 40px;
-          display: flex;
-          align-items: center;
-          color: #1B365D;
-        }
-      }
-
-      .content {
-        padding-top: 25px;
-        width: 66%;
-        margin-left: 17%;
-        justify-content: center;
-        align-items: center;
-      }
+.tab-class {
+  display: flex;
+  align-items: center;
+  gap:32px;
 
 
-      .scan {
-        //padding-top: 6%;
-        width: 70%;
-        height: 296px;
-        margin-left: 15%;
-        justify-content: center;
-        align-items: center;
-        display: flex;
+  .btn-class {
+    cursor: pointer;
+    font-weight: 400;
+    font-size: 16px;
+    line-height: 24px;
+    display: flex;
+    align-items: center;
+    color: #6E7484;
+    font-family:"PingFang SC";
+    gap:10px
+  }
 
 
-        .scan-image {
-          width: 150px;
-          height: 150px;
-          border: 1px solid #1B365D;
-          border-radius: 8px;
-        }
-      }
-    }
+  .btn-active-class {
+    cursor: pointer;
+    font-weight: 500;
+    text-decoration: underline;
+    text-underline-offset: 10px;
+    font-size: 16px;
+    line-height: 24px;
+    display: flex;
+    align-items: center;
+    color: #1E55D5;
+    font-family:"PingFang SC";
+    gap:10px
 
 
-    .login-tip {
-      font-size: 16px;
-      text-align: center;
-      color: #c3c3c3;
-    }
   }
   }
 }
 }
 
 
-//.title{
-//  color: #f35626;
-//  background: coral;
-//  background-image: -webkit-linear-gradient(45deg,#f35626,#feab3a);
-//  -webkit-background-clip: text;
-//  -webkit-text-fill-color: transparent;
-//  -webkit-animation: hue 10s infinite linear;
-//  letter-spacing: 10px;
-//}
-
 @-webkit-keyframes hue {
 @-webkit-keyframes hue {
   from {
   from {
     -webkit-filter: hue-rotate(0deg);
     -webkit-filter: hue-rotate(0deg);

+ 95 - 65
src/view/login/login.vue

@@ -6,13 +6,6 @@
 <template>
 <template>
   <div class="login">
   <div class="login">
 
 
-    <div class="login-con">
-      <div class="login_body">
-        <!--        <div class="login_title">-->
-        <!--          {{ $route.name === 'login_hegii' ? $t('login_hegii'): $t('login_dealer')}}-->
-        <!--        </div>-->
-        <div style="clear: both;"></div>
-      </div>
       <div class="lang-class">
       <div class="lang-class">
         <!--语言-->
         <!--语言-->
         <SelectPop v-model="lang" ref="lang" :multiple="false"
         <SelectPop v-model="lang" ref="lang" :multiple="false"
@@ -23,52 +16,59 @@
                    :options="langList"
                    :options="langList"
                    labelKey="label"
                    labelKey="label"
                    valueKey="key"
                    valueKey="key"
-                   @on-select="changeLang">
+                   @on-select="changeLang" style="width: 90px">
         </SelectPop>
         </SelectPop>
       </div>
       </div>
+
+      <!--  中间部分  -->
       <div class="form-class">
       <div class="form-class">
-        <div class="form-con">
-          <div class="hj-logo">
-            <div style="display: flex;align-items: center">
-              <img :src="dk_logo" style="width: 60px;height: 60px;"/>
-              <img :src="dk_mini" style="width: 208px;height: 80px;margin-left: 10px"/>
-              <div style="font-size: 50px;font-weight: bold;color: #1B3769;">智云版</div>
-            </div>
+        <!--    左侧部分    -->
+        <div class="login-left">
+          <img :src="login_logo" style="margin:40px 0 0 40px"/>
+          <div style="font-family: PingFang SC;font-size: 44px;font-weight: 500;line-height: 61.6px;text-align: left;color: #FFFFFF;margin:180px 0 0 50px">泛家居建陶行业云服务</div>
+          <div style="margin:40px 0 0 50px;display: flex">
+            <Button shape="circle" class="left-button">免费体验</Button>
+            <Button shape="circle" class="left-button" style="margin-left: 20px" ghost>了解产品</Button>
           </div>
           </div>
-          <!--          <div style="width: 90%;display: flex;justify-content: end">-->
-          <!--            {{ this.$config.loginSubTitle }}-->
-          <!--          </div>-->
-          <div class="tab-class">
-            <div :class="active == 0? 'btn-active-class':'btn-class' " id="user" @click="changeMode">密码登录</div>
-            <div :class="active == 1? 'btn-active-class':'btn-class' " id="scan" @click="changeMode">扫码登录</div>
-          </div>
-          <div v-show="active == 0" class="content">
-            <!--登录界面-->
-            <login-form v-if="step == 0" @on-success-valid="handleSubmit" :loading="loading"></login-form>
-            <!--选择公司-->
-            <div v-if="step == 1" style="overflow-y: auto;overflow-x:hidden;height: 300px;margin-bottom: 40px">
-              <DkButton v-for="(item,index) in joinedCpList" icon="iconfont iconfont icon-branch" :key="index"
-                        ref="save" type="text"
-                        style="margin-right: 10px;" @click="chooseCp(item)">
-                <div style="display: flex;margin-left: 20px">
-                  <div>{{ item.cpName }}</div>
+        </div>
+        <!--    右侧部分    -->
+        <div class="login-right">
+          <div style="width: 500px;">
+            <!--    欢迎登录      -->
+            <div style="height:100px;padding: 10px 26px 10px 26px;display:flex;flex-direction:column;gap: 10px;">
+              <div style="font-family: 'PingFang SC';font-weight: 500;font-size: 47px;line-height: 47px;color: #333333">欢迎登录</div>
+              <div style="font-family: 'PingFang SC';font-weight: 400;font-size: 16px;line-height: 24px;color: #6E7484">东科智云</div>
+            </div>
+            <!--    登录表单      -->
+            <div style="padding: 32px;display:flex;flex-direction:column;gap: 24px">
+              <div class="tab-class">
+                <div :class="active == 0? 'btn-active-class':'btn-class' " id="user" @click="changeMode">账号登录</div>
+                <div :class="active == 1? 'btn-active-class':'btn-class' " id="scan" @click="changeMode">扫码登录</div>
+              </div>
+              <div v-show="active == 0" class="content">
+                <!--登录界面-->
+                <login-form v-if="step == 0" @on-success-valid="handleSubmit" :loading="loading"></login-form>
+                <!--选择公司-->
+                <div v-if="step == 1" style="overflow-y: auto;overflow-x:hidden;height: 300px;margin-bottom: 40px">
+                  <DkButton v-for="(item,index) in joinedCpList" icon="iconfont iconfont icon-branch" :key="index"
+                            ref="save" type="text"
+                            style="margin-right: 10px;" @click="chooseCp(item)">
+                    <div style="display: flex;margin-left: 20px">
+                      <div>{{ item.cpName }}</div>
+                    </div>
+                  </DkButton>
                 </div>
                 </div>
-              </DkButton>
-              <!--              <div>-->
-              <!--                <Icon type="ios-arrow-round-forward" />-->
-              <!--              </div>-->
+              </div>
+              <div v-show="active == 1" id="scan-login" style="text-align: center; padding: 21px">
+                <img :src="qrcodeUrl" style="width: 250px;height: 250px" v-if="qrcodeUrl"/>
+              </div>
             </div>
             </div>
           </div>
           </div>
-          <div v-show="active == 1" id="scan-login" style="text-align: center; padding: 21px">
-            <img :src="qrcodeUrl" style="width: 250px;height: 250px" v-if="qrcodeUrl"/>
-          </div>
-
-          <div style="display: flex;justify-content: end;width: 98%">
-            ©2024 东科软件 All rights reserved
-          </div>
         </div>
         </div>
       </div>
       </div>
-    </div>
+      <div style="position:fixed;bottom: 20px;">
+        版权所有Copyright 2024 by 东科智云 | 备案号:京ICP备15085789号-1
+      </div>
   </div>
   </div>
 </template>
 </template>
 
 
@@ -77,6 +77,7 @@ import LoginForm from './login-form'
 import {mapActions} from 'vuex'
 import {mapActions} from 'vuex'
 import dk_logo from '@/assets/images/dongke_logo.png'
 import dk_logo from '@/assets/images/dongke_logo.png'
 import dk_mini from '@/assets/images/iboss_mini.png'
 import dk_mini from '@/assets/images/iboss_mini.png'
+import login_logo from '@/assets/images/login-logo.png'
 import {localRead, localSave} from "@/libs/base/util";
 import {localRead, localSave} from "@/libs/base/util";
 import {getQrCode, checkLoginOpenId} from '@/api/system/user/login'
 import {getQrCode, checkLoginOpenId} from '@/api/system/user/login'
 import uuidv4 from 'uuid/v4'
 import uuidv4 from 'uuid/v4'
@@ -95,6 +96,7 @@ export default {
       type: '',
       type: '',
       dk_logo,
       dk_logo,
       dk_mini,
       dk_mini,
+      login_logo,
       active: 0,// 默认在账户登录
       active: 0,// 默认在账户登录
       lang: self.$config.currentLang,
       lang: self.$config.currentLang,
       langList: self.$config.languages,
       langList: self.$config.languages,
@@ -187,7 +189,7 @@ export default {
      *   @date   : 2022/5/13 16:52
      *   @date   : 2022/5/13 16:52
      *   @author : 洪旭东
      *   @author : 洪旭东
      */
      */
-    handleSubmit({userCode, userPwd, appCode}) {
+    async handleSubmit({userCode, userPwd, appCode}) {
       this.loading = true
       this.loading = true
       this.handleLogin({userCode, userPwd, appCode}).then(res => {
       this.handleLogin({userCode, userPwd, appCode}).then(res => {
         this.$Message.destroy()
         this.$Message.destroy()
@@ -207,25 +209,29 @@ export default {
               console.log('dd',this.$config.expCp,this.joinedCpList)
               console.log('dd',this.$config.expCp,this.joinedCpList)
               this.step = 1;
               this.step = 1;
             } else {
             } else {
-              // 登录后获取信息
-              this.getInfoAfterLogin(res.data).then(r => {
-                if (r.code == this.$config.SUCCESS_CODE) {
-                  this.handleAfterLoginInfo(r.data);
-                  this.$router.push({
-                    name: this.$config.homeName
-                  })
-                }
-              });
+              (async () => {
+                // 登录后更新相关信息
+                await this.afterLogin(res.data)
+                // 登录后获取信息
+                this.getInfoAfterLogin(res.data).then(r => {
+                  if (r.code == this.$config.SUCCESS_CODE) {
+                    this.handleAfterLoginInfo(r.data);
+                    this.$router.push({
+                      name: this.$config.homeName
+                    })
+                  }
+                });
+              })();
             }
             }
-            // 登录后更新相关信息
-            this.afterLogin(res.data)
           }
           }
         } else {
         } else {
           let message = res.message
           let message = res.message
           this.$Message.warning({content: message})
           this.$Message.warning({content: message})
         }
         }
+
         this.loading = false
         this.loading = false
       })
       })
+
     },
     },
   },
   },
   created() {
   created() {
@@ -265,15 +271,39 @@ export default {
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
-/*.form-con {*/
-/*  margin-top: 6vh;*/
-/*}*/
+.login-left{
+  width: 825px;
+  height:700px;
+  border-top-left-radius: 24px;
+  border-bottom-left-radius: 24px;
+  background: url('../../assets/images/left-bgimg.png') no-repeat,radial-gradient(45.91% 94.06% at 12.61% 5.94%, #597EFF 0%, #1750BD 82.72%);
 
 
-.lang-class {
+}
+
+.login-right{
+  background-color: #FFFFFF;
+  width: 555px;
+  height:700px;
   display: flex;
   display: flex;
-  margin: 20px 20px;
-  width: 120px;
-  float: right;
+  justify-content: center;
+  align-items: center;
+  border-top-right-radius: 24px;
+  border-bottom-right-radius: 24px;
+}
+
+.left-button{
+  height:60px;
+  width: 150px;
+  font-family: PingFang HK;
+  font-size: 20px!important;
+  font-weight: 500;
+  line-height: 40px;
+}
+.lang-class {
+  position: fixed;
+  top: 20px;
+  right: 20px;
+  width: 90px;
 }
 }
 
 
 /*登录表格标题左右分布*/
 /*登录表格标题左右分布*/
@@ -327,8 +357,8 @@ export default {
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
   justify-content: center;
   justify-content: center;
-  width: 100%;
-  height: calc(100vh - 150px)
+  width: 1380px;
+  border-radius: 24px;
 }
 }
 
 
 /deep/ .ivu-btn-text {
 /deep/ .ivu-btn-text {

+ 5 - 1
src/view/wx-print/index.vue

@@ -70,10 +70,14 @@ export default {
       this.$Message.warning('请先设置svc_code')
       this.$Message.warning('请先设置svc_code')
       return
       return
     }
     }
+    if (!this.$route.query.cp_id) {
+      this.$Message.warning('请先设置cp_id')
+      return
+    }
 
 
     this.setSvcCode(this.$route.query.svc_code)
     this.setSvcCode(this.$route.query.svc_code)
     let doc = this.$route.query.doc;
     let doc = this.$route.query.doc;
-    let layout = this.excute(this.$service.printLayoutService, this.$service.printLayoutService.selectByCond, { flgValid: true, docName: this.$config.docCode[doc], })
+    let layout = this.excute(this.$service.printLayoutService, this.$service.printLayoutService.selectByCond, { flgValid: true, docName: this.$config.docCode[doc], cpId:this.$route.query.cp_id})
     let data = this.excute(this.$service.printLayoutService,this.$service.printLayoutService.getPrintData,{dataId:this.$route.query.data_id,objectCode:this.$route.query.doc})
     let data = this.excute(this.$service.printLayoutService,this.$service.printLayoutService.getPrintData,{dataId:this.$route.query.data_id,objectCode:this.$route.query.doc})
     // let header=this.excuteNoParam(this.docs[this.$route.query.doc].service, this.docs[this.$route.query.doc].service.selectById,[this.$route.query.data_id])
     // let header=this.excuteNoParam(this.docs[this.$route.query.doc].service, this.docs[this.$route.query.doc].service.selectById,[this.$route.query.data_id])
     // let detail=this.excuteNoParam(this.docs[this.$route.query.doc].service, this.docs[this.$route.query.doc].service.selectOrderInfoById, [this.$route.query.data_id])
     // let detail=this.excuteNoParam(this.docs[this.$route.query.doc].service, this.docs[this.$route.query.doc].service.selectOrderInfoById, [this.$route.query.data_id])