ソースを参照

分析列表 合并 and bug

qinbai 3 年 前
コミット
0fd5d53b28
24 ファイル変更318 行追加85 行削除
  1. 1 1
      src/components/bill/billApplication.vue
  2. 9 2
      src/components/bill/billDetailList.vue
  3. 4 3
      src/components/procurement/config/market.json
  4. 16 2
      src/components/procurement/config/purchase.json
  5. 1 7
      src/components/procurement/market.vue
  6. 1 1
      src/components/procurement/purchase.vue
  7. 1 0
      src/util/contrastData.js
  8. 1 1
      src/views/financialManagement/billDetails/billDetails.vue
  9. 48 26
      src/views/financialManagement/paymentSettle/paymentSettleDetailsPage.vue
  10. 1 1
      src/views/financialManagement/receiptSettle/configuration/detailsPage.json
  11. 58 16
      src/views/financialManagement/receiptSettle/receiptSettleDetailsPage.vue
  12. 1 1
      src/views/importTrade/invoice/config/customerContact.json
  13. 8 5
      src/views/importTrade/invoice/detailsPageEdit.vue
  14. 2 2
      src/views/importTrade/receipt/config/customerContact.json
  15. 9 4
      src/views/importTrade/receipt/detailsPageEdit.vue
  16. 1 1
      src/views/purchase/contract/config/customerContact.json
  17. 1 1
      src/views/purchase/contract/config/mainList.json
  18. 1 8
      src/views/purchase/contract/detailsPage.vue
  19. 1 1
      src/views/salesManagement/salesContract/config/importInventory.json
  20. 1 1
      src/views/salesManagement/salesContract/config/mainList.json
  21. 1 1
      src/views/salesManagement/salesContract/detailsPage.vue
  22. 39 0
      src/views/statisticAnalysis/profit/index.vue
  23. 56 0
      src/views/workManagement/performanceAnalysis/config/clientList.json
  24. 56 0
      src/views/workManagement/performanceAnalysis/config/mainList.json

+ 1 - 1
src/components/bill/billApplication.vue

@@ -27,7 +27,7 @@
         ></breakdown-select>
       </template>
     </avue-crud>
-    <div style="margin-left: 92%;padding: 7px">
+    <div style="padding: 10px;display: flex;justify-content: flex-end;">
        <span slot="footer" class="dialog-footer" >
            <el-button @click="$emit('choceApplication')">关闭</el-button>
        </span>

+ 9 - 2
src/components/bill/billDetailList.vue

@@ -18,7 +18,7 @@
         ></breakdown-select>
       </template>
     </avue-crud>
-    <div style="margin-left: 80%;padding: 15px">
+    <div style="padding: 10px;display: flex;justify-content: flex-end;">
        <span slot="footer" class="dialog-footer" >
            <el-button @click="$emit('closeFun')">取 消</el-button>
            <el-button type="primary" @click="importProMent" :disabled="selectList.length == 0">导入</el-button>
@@ -71,6 +71,13 @@
         },
       }
     },
+    watch:{
+      'params.corpId' (newVal,oldVal){
+        if(newVal != oldVal){
+          this.onLoad(this.page, this.search)
+        }
+      }
+    },
     async created() {
       // this.option = await this.getColumnData(this.getColumnName(45), option);
     },
@@ -85,7 +92,7 @@
       selectionChange(row){
         this.selectList = row
       },
-      onLoad(page, params = {}){
+      onLoad(page, params){
         this.loading = true;
         params = {
           ...this.params

+ 4 - 3
src/components/procurement/config/market.json

@@ -13,7 +13,7 @@
   "searchIndex": 2,
   "searchSpan": 8,
   "align": "center",
-  "delBtn":true,
+  "delBtn":false,
   "dialogWidth": "60%",
   "tree": true,
   "border": true,
@@ -27,9 +27,9 @@
       "label": "合同号",
       "prop": "orgOrderNo",
       "search": true,
+      "overHidden": true,
       "index": 1,
-      "width":180,
-      "overHidden": true
+      "width":180
     },
     {
       "label": "提单号",
@@ -93,6 +93,7 @@
     {
       "label": "箱号",
       "prop": "cntrNo",
+      "overHidden": true,
       "index": 8,
       "width":120
     },

+ 16 - 2
src/components/procurement/config/purchase.json

@@ -9,15 +9,17 @@
   "cellBtn":false,
   "cancelBtn":false,
   "refreshBtn": false,
-  "searchMenuSpan": 6,
+  "searchSpan": 8,
   "align": "center",
-  "delBtn":true,
+  "delBtn":false,
   "dialogWidth": "60%",
   "tree": true,
   "border": true,
   "index": true,
   "selection": true,
+  "searchIcon": true,
   "menu": false,
+  "searchIndex": 2,
   "menuWidth": 0,
   "dialogClickModal": false,
   "column":[
@@ -25,67 +27,79 @@
       "label": "合同号",
       "prop": "orderNo",
       "search": true,
+      "overHidden": true,
       "index": 1,
       "width":180
     },
     {
       "label": "提单号",
       "prop": "billNo",
+      "overHidden": true,
       "index": 2,
       "width":180
     },
     {
       "label": "供应商",
       "prop": "corpName",
+      "overHidden": true,
       "search": true,
       "index": 3,
       "width":180
     },
     {
       "label": "货物品种",
+      "overHidden": true,
       "prop": "priceCategoryNames",
       "index": 4,
       "width":120
     },{
       "label": "规格名称",
+      "overHidden": true,
       "prop": "itemType",
       "index": 5,
       "width":120
     },
     {
       "label": "箱号",
+      "overHidden": true,
       "prop": "cntrNo",
       "index": 5,
       "width":120
     },
     {
       "label": "件数",
+      "overHidden": true,
       "prop": "orderQuantity",
       "index": 6,
       "width":120
     },{
       "label": "发票净重(吨)",
+      "overHidden": true,
       "prop": "invoiceWeight",
       "index": 7,
       "width":120
     },{
       "label": "码单重量(吨)",
+      "overHidden": true,
       "prop": "billWeight",
       "index": 8,
       "width":120
     },{
       "label": "单价",
       "prop": "price",
+      "overHidden": true,
       "index": 9,
       "width":120
     },{
       "label": "合同金额",
+      "overHidden": true,
       "prop": "amount",
       "index": 10,
       "width":120
     },{
       "label": "采购日期",
       "prop": "promentDate",
+      "overHidden": true,
       "hide": true,
       "type": "date",
       "format": "yyyy-MM-dd",

+ 1 - 7
src/components/procurement/market.vue

@@ -12,7 +12,7 @@
                @on-load="onLoad">
       <template slot-scope="scope"></template>
     </avue-crud>
-    <div class="botoom">
+    <div  style="padding: 10px;display: flex;justify-content: flex-end;">
        <span slot="footer" class="dialog-footer">
            <el-button @click="closeDialog">取 消</el-button>
            <el-button type="primary" @click="importMarket" :disabled="selectMarketList.length == 0">导入</el-button>
@@ -163,12 +163,6 @@
   }
 </script>
 <style scoped>
-.botoom:after {
-  content: '';
-  display: block;
-  height: 0;
-  clear: both;
-}
 .dialog-footer {
   display: flex;
   float: right;

+ 1 - 1
src/components/procurement/purchase.vue

@@ -11,7 +11,7 @@
                :page.sync="page"
                @on-load="onLoad">
     </avue-crud>
-    <div style="margin-left: 80%;padding: 15px">
+    <div style="padding: 10px;display: flex;justify-content: flex-end;">
        <span slot="footer" class="dialog-footer" >
            <el-button @click="close">取 消</el-button>
            <el-button type="primary" @click="importProMent" :disabled="selectPromentList.length == 0">导入</el-button>

+ 1 - 0
src/util/contrastData.js

@@ -3,6 +3,7 @@ export function contrastObj(newval, oldval) {
   let reg = /^[A-Za-z]+$/;
   for (let key in newval) {
     if (reg.test(key)&&!(newval[key] instanceof Array) && (newval[key] != oldval[key] && (newval[key] || oldval[key]))) {
+      console.log(newval[key])
       return true
     }
   }

+ 1 - 1
src/views/financialManagement/billDetails/billDetails.vue

@@ -32,7 +32,7 @@
           type="text"
           icon="el-icon-delete"
           size="small"
-          :disabled="scope.row.billType === '申请' && scope.row.settlementAmount != 0"
+          :disabled="scope.row.billType === '申请' ||  scope.row.settlementAmount != 0"
           @click.stop=""
         >删除
         </el-button>

+ 48 - 26
src/views/financialManagement/paymentSettle/paymentSettleDetailsPage.vue

@@ -53,6 +53,15 @@
               </el-option>
             </el-select>
           </template>
+          <template slot="remark">
+            <el-input type="textarea"
+                      v-model="form.remark"
+                      size="small"
+                      rows="2"
+                      autocomplete="off"
+                      placeholder="">
+            </el-input>
+          </template>
         </avue-form>
       </basic-container>
       <basic-container>
@@ -64,14 +73,13 @@
                    @search-reset="searchReset"
                    @row-update="rowUpdate"
                    @selection-change="selectionChange"
-                   @current-change="currentChange"
-                   @size-change="sizeChange"
-                   @refresh-change="refreshChange">
+                   >
           <template slot="menuLeft">
             <el-button type="primary"
                        size="small"
                        :loading="buttonLoading"
                        icon="el-icon-shopping-cart-2"
+                       :disabled="!financeButton"
                        @click="selectPurchase">选择采购合同
             </el-button>
           </template>
@@ -80,6 +88,7 @@
               type="text"
               size="small"
               icon="el-icon-edit"
+              :disabled="!financeButton"
               @click.stop="rowCell(scope.row,scope.index)"
             > {{ scope.row.$cellEdit ? '修改完成' : '修改' }}
             </el-button>
@@ -87,10 +96,10 @@
               type="text"
               size="small"
               icon="el-icon-delete"
+              :disabled="!financeButton"
               @click.stop="rowDel(scope.row,scope.index)"
             >删除
             </el-button>
-<!--            :disabled="!financeDisabled || financeButton"-->
           </template>
           <template slot-scope="{ row }" slot="currency">
             <el-select  v-if="row.$cellEdit" v-model="row.currency" size="small" placeholder="请选择 币别" clearable filterable>
@@ -99,9 +108,11 @@
             <span v-else>{{ row.currency }}</span>
           </template>
           <template slot="thisAmount" slot-scope="{ row }">
+            <span v-if="row.$cellEdit" class="required_fields">*</span>
             <el-input
               v-if="row.$cellEdit"
               v-model="row.thisAmount"
+              style="width: 90%"
               placeholder="请输入"
               size="small"
               oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
@@ -354,6 +365,7 @@
         })
       }else{
         this.form.financeStatus = "待结算"
+        this.oldForm.financeStatus = "待结算"
       }
 
       if(this.detailData.params){
@@ -411,16 +423,11 @@
           item.accId = item.id;
           item.srcOrderno  = item.accSysNo
           item.billNo  = item.srcBillNo
-          item.thisAmount = _.subtract(item.amount, item.settlementAmount)  //设置本次结算最大限度
-          item.maxThisAmount = item.thisAmount
           delete item.id;
 
           this.$refs.crud.rowCellAdd(item);
         })
-        //明细列表金额总和等于form总金额
-        // this.form.amount =  _.sum(this.dataList.map(item =>{ return parseFloat(item.amount)}));
-        // this.form.srcOrderno = this.dataList.map(item =>{return item.srcOrderno}).join(",")
-
+        this.$set(this.form,'srcOrderno',Array.from(new Set(this.dataList.map(item =>{ return item.srcOrderno}))).join(','))
         this.billDetailDialog = false;
       },
       rowUpdate(row, index, done) {
@@ -439,32 +446,21 @@
       selectionChange() {
         console.log('1')
       },
-      currentChange() {
-        console.log('1')
-      },
-      sizeChange() {
-        console.log('1')
-      },
-      refreshChange() {
-        console.log('1')
-      },
       confirmSettlement(status){
         this.$refs["form"].validate((valid,done) => {
           done();
-          if(valid){
+          if(valid && this.verificationData()){
             this.$confirm("是否确认付费?", "提示", {
               confirmButtonText: "确认",
               cancelButtonText: "取消",
               type: "warning",
             }).then(()=>{
               for (let i = 0; i < this.dataList.length; i++) {
-                if (this.dataList[i].thisAmount == null) {
+                if (this.dataList[i].thisAmount == null || this.dataList[i].thisAmount == 0) {
                   return this.$message.error(`第${i + 1}行的本次金额不能为空`);
                 }
-                if (this.dataList[i].thisAmount === 0) {
-                  return this.$message.error(`第${i + 1}行的本次金额不能为0`);
-                }
               }
+
               this.buttonLoading = true
               this.form.billNo = this.dataList.map(item =>{return item.billNo}).join(",")
 
@@ -499,6 +495,12 @@
       saveSettlement(){
         this.$refs["form"].validate((valid,done) => {
           if(valid){
+            for (let i = 0; i < this.dataList.length; i++) {
+              if (this.dataList[i].thisAmount == (null || "")) {
+                return this.$message.error(`第输入${i + 1}行的本次金额`);
+              }
+            }
+
             this.buttonLoading = true
             this.form.billNo = this.dataList.map(item =>{return item.billNo}).join(",")
 
@@ -552,6 +554,22 @@
           this.oldDataList = this.deepClone(data.itemsList)
         }
       },
+      verificationData(){
+        if(contrastObj(this.form,this.oldForm) || contrastList(this.dataList,this.oldDataList)
+        ){
+          this.$confirm("数据发生变化,请先提交保存!", "提示", {
+            confirmButtonText: "保存",
+            cancelButtonText: "取消",
+            type: "warning",
+          }).then(() => {
+            this.saveSettlement()
+          }).catch(()=>{
+            return false
+          })
+        }else{
+          return true
+        }
+      },
       backToList() {
         if(contrastObj(this.form,this.oldForm) || contrastList(this.dataList,this.oldDataList)
         ){
@@ -560,7 +578,7 @@
             cancelButtonText: "取消",
             type: "warning",
           }).then(() => {
-            this.editCustomer(true)
+            this.saveSettlement()
           }).catch(()=>{
             this.$emit("goBack");
           })
@@ -580,7 +598,11 @@
   .trading-form ::v-deep .el-form-item {
     margin-bottom: 8px !important;
   }
-
+  .required_fields{
+    color: #F56C6C;
+    display:inline-block;
+    width: 7%
+  }
   .upper_right_button{
     display: flex;
     position: fixed;

+ 1 - 1
src/views/financialManagement/receiptSettle/configuration/detailsPage.json

@@ -79,7 +79,7 @@
       "overHidden": true,
       "index": 13,
       "cell": true,
-      "width": 500
+      "width": 540
     }
   ]
 }

+ 58 - 16
src/views/financialManagement/receiptSettle/receiptSettleDetailsPage.vue

@@ -53,6 +53,15 @@
               </el-option>
             </el-select>
           </template>
+          <template slot="remark">
+            <el-input type="textarea"
+                      v-model="form.remark"
+                      size="small"
+                      rows="2"
+                      autocomplete="off"
+                      placeholder="">
+            </el-input>
+          </template>
         </avue-form>
       </basic-container>
       <basic-container>
@@ -84,9 +93,11 @@
             <span v-else>{{ row.currency }}</span>
           </template>
           <template slot="thisAmount" slot-scope="{ row }">
+            <span v-if="row.$cellEdit" class="required_fields">*</span>
             <el-input
               v-if="row.$cellEdit"
               v-model="row.thisAmount"
+              style="width: 90%"
               placeholder="请输入"
               size="small"
               oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
@@ -143,6 +154,7 @@
   import  billDetail from "@/components/bill/billDetailList";
   import _ from "lodash";
   import { getlistBankBy } from "@/api/financialManagement/paymentRequest";
+  import { contrastObj,contrastList } from "@/util/contrastData";
 
   export default {
     name: "receiptDetailsPage",
@@ -351,6 +363,7 @@
         })
       }else{
         this.form.financeStatus = "待结算"
+        this.oldForm.financeStatus = "待结算"
       }
     },
     mounted() {
@@ -391,15 +404,12 @@
           item.accId = item.id;
           item.srcOrderno  = item.accSysNo
           item.billNo  = item.srcBillNo
-          // item.thisAmount = _.subtract(item.amount, item.settlementAmount)
-          // item.maxThisAmount = item.thisAmount
           delete item.id;
           this.$refs.crud.rowCellAdd(item);
         })
+        //明细列表所有合同号 去重 加, 为主表合同号
+        this.$set(this.form,'srcOrderno',Array.from(new Set(this.dataList.map(item =>{ return item.srcOrderno}))).join(','))
 
-        //明细列表金额总和等于form总金额
-        // this.form.amount =  _.sum(this.dataList.map(item =>{ return parseFloat(item.amount)}));
-        // this.form.srcOrderno = this.dataList.map(item =>{return item.srcOrderno}).join(",")
         this.billDetailDialog = false;
       },
       rowUpdate(row, index, done) {
@@ -430,14 +440,14 @@
       confirmSettlement(status){
         this.$refs["form"].validate((valid,done) => {
           done();
-          if(valid){
+          if(valid && this.verificationData()){
             this.$confirm("是否确认收费?", "提示", {
               confirmButtonText: "确认",
               cancelButtonText: "取消",
               type: "warning",
             }).then(()=>{
               for (let i = 0; i < this.dataList.length; i++) {
-                if (this.dataList[i].thisAmount === (null || 0)) {
+                if (this.dataList[i].thisAmount == null || this.dataList[i].thisAmount == 0 ) {
                   return this.$message.error(`第${i + 1}行的本次金额不能为空`);
                 }
               }
@@ -476,6 +486,12 @@
         this.$refs["form"].validate((valid,done) => {
           done();
           if(valid){
+            for (let i = 0; i < this.dataList.length; i++) {
+              if (this.dataList[i].thisAmount === (null || "")) {
+                return this.$message.error(`第${i + 1}行的本次金额不能为空`);
+              }
+            }
+
             this.buttonLoading = true
             this.form.billNo = this.dataList.map(item =>{return item.billNo}).join(",")
 
@@ -484,6 +500,7 @@
               billType:"收费",
               itemsList:this.dataList
             }
+
             saveOrEdit(params).then(res=>{
               this.$message.success("操作成功!")
               this.afterEcho(res.data.data)
@@ -526,16 +543,37 @@
           this.oldDataList = this.deepClone(data.itemsList)
         }
       },
+      verificationData(){
+        if(contrastObj(this.form,this.oldForm) || contrastList(this.dataList,this.oldDataList)
+        ){
+          this.$confirm("数据发生变化,请先提交保存!", "提示", {
+            confirmButtonText: "保存",
+            cancelButtonText: "取消",
+            type: "warning",
+          }).then(() => {
+            this.saveSettlement()
+          }).catch(()=>{
+            return false
+          })
+        }else{
+          return true
+        }
+      },
       backToList(){
-        this.$confirm("是否保存当前页面?", "提示", {
-          confirmButtonText: "保存",
-          cancelButtonText: "取消",
-          type: "warning",
-        }).then(() => {
-          this.editFinance(true)
-        }).catch(() => {
+        if(contrastObj(this.form,this.oldForm) || contrastList(this.dataList,this.oldDataList)
+        ){
+          this.$confirm("是否保存当前页面?", "提示", {
+            confirmButtonText: "保存",
+            cancelButtonText: "取消",
+            type: "warning",
+          }).then(() => {
+            this.saveSettlement()
+          }).catch(()=>{
+            this.$emit("goBack");
+          })
+        }else{
           this.$emit("goBack");
-        })
+        }
       }
     }
   }
@@ -549,7 +587,11 @@
 .trading-form ::v-deep .el-form-item {
   margin-bottom: 8px !important;
 }
-
+.required_fields{
+  color: #F56C6C;
+  display:inline-block;
+  width: 7%
+}
 .upper_right_button{
   display: flex;
   position: fixed;

+ 1 - 1
src/views/importTrade/invoice/config/customerContact.json

@@ -119,7 +119,7 @@
       "index": 9,
       "width":100
     },{
-      "label": "发票金额",
+      "label": "销售金额",
       "prop": "contractAmount",
       "index": 10,
       "width":120

+ 8 - 5
src/views/importTrade/invoice/detailsPageEdit.vue

@@ -68,7 +68,7 @@
                 <crop-select
                   v-else-if="item.prop === 'corpId'"
                   v-model="form[item.prop]"
-                  corpType="GYS"
+                  corpType="KH"
                   :disabled="viewDisabled || goodsDisable"
                   style="width: 100%"
                 ></crop-select>
@@ -390,7 +390,7 @@ export default {
             prop: 'storageId',
             rules: [
               {
-                required: true,
+                required: false,
                 message: ' ',
                 trigger: 'blur'
               }
@@ -843,6 +843,10 @@ export default {
             cancelButtonText: "取消",
             type: "warning"
           }).then(() => {
+            if(!this.form.storageId){
+              return this.$message.error(`发货时仓库名称不能为空!`);
+            }
+
             this.buttonLoading = true;
             this.form.deliveryItemsList = this.contactsData;
             confirmGoods(this.form).then(res => {
@@ -910,9 +914,8 @@ export default {
           }
         }
         //提单号合体
-        this.form.billNo = this.contactsData.map(item => {
-          return item.billNo
-        }).join(",")
+
+        this.form.billNo =Array.from(new Set(this.contactsData.map(item =>{return item.billNo}))).join(",")
 
         if (valid) {
           let submitDto = {

+ 2 - 2
src/views/importTrade/receipt/config/customerContact.json

@@ -143,7 +143,7 @@
       ]
     },
     {
-      "label": "发票金额",
+      "label": "销售金额",
       "prop": "contractAmount",
       "index": 10,
       "width":120,
@@ -159,7 +159,7 @@
       "label": "备注",
       "prop": "remarks",
       "index": 14,
-      "width":150,
+      "width":280,
       "cell": true,
       "rules": [
         {

+ 9 - 4
src/views/importTrade/receipt/detailsPageEdit.vue

@@ -261,8 +261,7 @@
       :close-on-click-modal="false"
       :destroy-on-close="true"
       :close-on-press-escape="false"
-      top="10vh"
-      v-dialog-drag>
+    >
       <procurement-detail
         @closeFun="closeFun"
        @importProMent="importProMent"
@@ -378,7 +377,7 @@ export default {
             dicData: [],
             rules: [
               {
-                required: true,
+                required: false,
                 message: ' ',
                 trigger: 'blur'
               }
@@ -718,7 +717,9 @@ export default {
             return this.$message.error(`请输入第${i + 1}行的件数`);
           }
         }
-        this.form.billNo = this.contactsData.map(item =>{return item.billNo}).join(",")
+
+        this.form.billNo =Array.from(new Set(this.contactsData.map(item =>{return item.billNo}))).join(",")
+
         if (valid) {
           let submitDto = {
             ...this.form,
@@ -753,6 +754,10 @@ export default {
             cancelButtonText: "取消",
             type: "warning"
           }).then(()=>{
+            if(!this.form.storageId){
+              return this.$message.error(`收货时仓库名称不能为空!`);
+            }
+
             this.buttonLoading = true;
             this.form.deliveryItemsList = this.contactsData;
             confirmReceipt(this.form).then(res =>{

+ 1 - 1
src/views/purchase/contract/config/customerContact.json

@@ -117,7 +117,7 @@
       "width":120
     },
     {
-      "label": "发票金额",
+      "label": "销售金额",
       "prop": "amount",
       "index": 8,
       "width":120,

+ 1 - 1
src/views/purchase/contract/config/mainList.json

@@ -162,7 +162,7 @@
       "width":100
     },
     {
-      "label": "发票金额",
+      "label": "销售金额",
       "prop": "invoiceAmount",
       "overHidden": true,
       "index": 10,

+ 1 - 8
src/views/purchase/contract/detailsPage.vue

@@ -103,13 +103,6 @@
                   style="width: 100%"
                 ></crop-select>
                 <crop-select
-                  v-else-if="item.prop === 'purchaserId'"
-                  v-model="form[item.prop]"
-                  corpType="KH"
-                  :disabled="item.disabled? true:false || takeDisabled || viewDisabled"
-                  style="width: 100%"
-                ></crop-select>
-                <crop-select
                   v-else-if="item.prop === 'belongToCorpId'"
                   v-model="form[item.prop]"
                   :disabled="item.disabled? true:false || takeDisabled || viewDisabled"
@@ -922,7 +915,7 @@ export default {
             this.form.invoiceAmount = invoiceList.reduce((n,m) => n + m)
           }
 
-          this.form.billNo = this.contactsData.map(item =>{return item.billNo}).join(",")
+          this.form.billNo =Array.from(new Set(this.contactsData.map(item =>{return item.billNo}))).join(",")
           let submitDto = {
             ...this.form,
             tradeType:"JK",

+ 1 - 1
src/views/salesManagement/salesContract/config/importInventory.json

@@ -136,7 +136,7 @@
         }
       ]
     },{
-      "label": "发票金额",
+      "label": "销售金额",
       "prop": "amount",
       "index": 8,
       "width":120,

+ 1 - 1
src/views/salesManagement/salesContract/config/mainList.json

@@ -152,7 +152,7 @@
       "width":100
     },
     {
-      "label": "发票金额",
+      "label": "销售金额",
       "prop": "invoiceAmount",
       "overHidden": true,
       "search": true,

+ 1 - 1
src/views/salesManagement/salesContract/detailsPage.vue

@@ -1030,7 +1030,7 @@ export default {
 
           if(this.importInventoryData.length !== 0){
             //提单号
-            this.form.billNo = this.importInventoryData.map(item =>{return item.billNo}).join(",")
+            this.form.billNo =Array.from(new Set(this.importInventoryData.map(item =>{return item.billNo}))).join(",")
 
             //发票金额合计  存入主表
             let invoiceList =  this.importInventoryData.map(item => {

+ 39 - 0
src/views/statisticAnalysis/profit/index.vue

@@ -7,6 +7,7 @@
                :page.sync="page"
                :search.sync="search"
                :table-loading="loading"
+               :span-method="spanMethod"
                @search-change="searchChange"
                @search-reset="searchReset"
                @selection-change="selectionChange"
@@ -30,6 +31,7 @@
 <script>
   import option from "./config/mainList.json";
   import { getProfitList } from "@/api/statisticAnalysis/profit";
+  import { contrastList } from "@/util/contrastData";
 
   export default {
     data() {
@@ -41,6 +43,8 @@
         show:true,
         detailData:{},
         option: option,
+        spanArr:[],
+        position:0,
         parentId:0,
         dataList: [],
         page: {
@@ -94,6 +98,40 @@
       editOpen(){
         console.log('1')
       },
+      rowspan() {
+        //记录原始
+        let oldList = [this.dataList[0].corpName,this.dataList[0].orderNo,this.dataList[0].invoiceWeight,this.dataList[0].customDutyMoney,
+          this.dataList[0].gstMoney,this.dataList[0].quotaMoney,this.dataList[0].itemMoney,this.dataList[0].unitPrice]
+        this.dataList.forEach((item,index)=>{
+          let newList = [item.corpName,item.orderNo,item.invoiceWeight,item.customDutyMoney,item.gstMoney,item.quotaMoney,item.itemMoney,item.unitPrice]
+          if(index===0){
+            this.spanArr.push(1)
+            this.position=0;
+          }else{
+            //如果循环数据与原始数据相等  那么合并
+            if(!contrastList(oldList,newList)){
+              this.spanArr[this.position] +=1;
+              this.spanArr.push(0)
+            }else{
+              //如果不等 更新原始数据  循环在比较
+              oldList = newList
+              this.spanArr.push(1)
+              this.position = index
+            }
+          }
+        })
+      },
+      spanMethod({ row, column, rowIndex, columnIndex }) {
+        if (column.property === "corpName" || column.property === "orderNo" || column.property === "invoiceWeight" || column.property === "customDutyMoney" ||
+        column.property === "gstMoney" || column.property === "quotaMoney" || column.property === "itemMoney" || column.property === "unitPrice") {
+          const _row=this.spanArr[rowIndex];
+          const _col=_row>0?1:0;
+          return {
+            rowspan:_row,
+            colspan:_col
+          }
+        }
+      },
       //点击搜索按钮触发
       searchChange(params, done) {
         this.query = params;
@@ -131,6 +169,7 @@
         getProfitList(page.currentPage, page.pageSize,params).then(res=>{
           this.dataList = res.data.data.records
           this.page.total = res.data.data.total
+          this.rowspan()
         }).finally(()=>{
           this.loading = false;
         })

+ 56 - 0
src/views/workManagement/performanceAnalysis/config/clientList.json

@@ -22,6 +22,62 @@
   "addBtn":false,
   "menu": false,
   "headerAlign": "center",
+  "showSummary": true,
+  "summaryText": "合计",
+  "sumColumnList": [
+    {
+      "name": "jan",
+      "type": "sum"
+    },
+    {
+      "name": "feb",
+      "type": "sum"
+    },
+    {
+      "name": "mar",
+      "type": "sum"
+    },
+    {
+      "name": "apr",
+      "type": "sum"
+    },
+    {
+      "name": "may",
+      "type": "sum"
+    },
+    {
+      "name": "june",
+      "type": "sum"
+    },
+    {
+      "name": "july",
+      "type": "sum"
+    },
+    {
+      "name": "aug",
+      "type": "sum"
+    },
+    {
+      "name": "sept",
+      "type": "sum"
+    },
+    {
+      "name": "oct",
+      "type": "sum"
+    },
+    {
+      "name": "nov",
+      "type": "sum"
+    },
+    {
+      "name": "dece",
+      "type": "sum"
+    },
+    {
+      "name": "total",
+      "type": "sum"
+    }
+  ],
   "column": [
     {
       "label": "类型",

+ 56 - 0
src/views/workManagement/performanceAnalysis/config/mainList.json

@@ -22,6 +22,62 @@
   "addBtn":false,
   "menu": false,
   "headerAlign": "center",
+  "showSummary": true,
+  "summaryText": "合计",
+  "sumColumnList": [
+    {
+      "name": "jan",
+      "type": "sum"
+    },
+    {
+      "name": "feb",
+      "type": "sum"
+    },
+    {
+      "name": "mar",
+      "type": "sum"
+    },
+    {
+      "name": "apr",
+      "type": "sum"
+    },
+    {
+      "name": "may",
+      "type": "sum"
+    },
+    {
+      "name": "june",
+      "type": "sum"
+    },
+    {
+      "name": "july",
+      "type": "sum"
+    },
+    {
+      "name": "aug",
+      "type": "sum"
+    },
+    {
+      "name": "sept",
+      "type": "sum"
+    },
+    {
+      "name": "oct",
+      "type": "sum"
+    },
+    {
+      "name": "nov",
+      "type": "sum"
+    },
+    {
+      "name": "dece",
+      "type": "sum"
+    },
+    {
+      "name": "total",
+      "type": "sum"
+    }
+  ],
   "column": [
     {
       "label": "类型",