Ver Fonte

货代统计和bug修改 2024-3-12

caojunjie há 1 ano atrás
pai
commit
ad9312a18e

+ 60 - 0
src/api/iosBasicData/bcorps.js

@@ -94,3 +94,63 @@ export const corpsinvoiceheaderList = (current,size,params) => {
     }
   })
 }
+// 客户联系人小删除
+export const bcorpsattnRemove = (ids) => {
+  return request({
+    url: '/api/blade-los/bcorpsattn/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+// 银行小删除
+export const bcorpsbankRemove = (ids) => {
+  return request({
+    url: '/api/blade-los/bcorpsbank/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+// 附件小删除
+export const bcorpsfilesRemove = (ids) => {
+  return request({
+    url: '/api/blade-los/bcorpsfiles/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+// 更名小删除
+export const bcorpsrenameRemove = (ids) => {
+  return request({
+    url: '/api/blade-los/bcorpsrename/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+// 发票抬头小删除
+export const corpsinvoiceheaderRemove = (ids) => {
+  return request({
+    url: '/api/blade-los/corpsinvoiceheader/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+// 不良记录小删除
+export const bcorpsbadrecordRemove = (ids) => {
+  return request({
+    url: '/api/blade-los/bcorpsbadrecord/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}

+ 12 - 0
src/api/iosBasicData/paymentSummary.js

@@ -47,3 +47,15 @@ export const financeStatisticsAgingAnalysis = (current, size, params) => {
     }
   })
 }
+// 财务利润
+export const financeStatisticsFinanceProfit = (current, size, params) => {
+  return request({
+    url: '/api/blade-los/financeStatistics/financeProfit',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}

+ 9 - 0
src/api/saleDetail/index.js

@@ -0,0 +1,9 @@
+import request from '@/router/axios';
+
+export const statisticsSaleDetail = (params) => {
+  return request({
+    url: '/api/blade-sales-part/statistics/saleDetail',
+    method: 'get',
+    params: params
+  })
+}

+ 4 - 0
src/enums/column-name.js

@@ -1571,6 +1571,10 @@ const columnName = [{
     code: 335,
     name: '货运代理-决策分析-账龄分析'
   },
+  {
+    code: 336,
+    name: '货运代理-决策分析-财务利润'
+  },
 ]
 export const getColumnName = (key) => {
   for (let index = 0; index < columnName.length; index++) {

+ 15 - 0
src/router/views/index.js

@@ -3168,6 +3168,21 @@ export default [{
       component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/agingAnalysis/index')
     }]
   },
+  // 财务利润(F)
+  {
+    path: '/iosBasicData/financeProfit/index',
+    component: Layout,
+    hidden: true,
+    children: [{
+      path: '/iosBasicData/financeProfit/index',
+      name: '财务利润(F)',
+      meta: {
+        i18n: '/iosBasicData/financeProfit/index',
+        keepAlive: true,
+      },
+      component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/financeProfit/index')
+    }]
+  },
   // 海运出口报关
   {
     path: '/iosBasicData/reportClose/SEreportClose/index',

+ 4 - 2
src/views/approveDataH/index.vue

@@ -56,11 +56,13 @@
                      :disabled="scope.row.auditStatus != 'S'"
                      @click.stop="printWindowfun(scope.row,'HYJK-DJ')">审批
           </el-button>
-          <el-button type="text" size="small" v-else-if="scope.row.checkType == 'KYCK-DJ'"
+          <el-button type="text" size="small"
+                     v-else-if="scope.row.checkType == 'KYCK-DJ'"
                      :disabled="scope.row.auditStatus != 'S'"
                      @click.stop="printWindowfun(scope.row,'KYCK-DJ')">审批
           </el-button>
-          <el-button type="text" size="small" v-else-if="scope.row.checkType == 'KYJK-DJ'"
+          <el-button type="text" size="small"
+                     v-else-if="scope.row.checkType == 'KYJK-DJ'"
                      :disabled="scope.row.auditStatus != 'S'"
                      @click.stop="printWindowfun(scope.row,'KYJK-DJ')">审批
           </el-button>

+ 1 - 1
src/views/iosBasicData/AirtransportExport/bills/assembly/mbinformation.vue

@@ -752,7 +752,7 @@
             // 获取航空公司数据
             carrierBcorpsListfun(cnName){
                 let corpTypeName = '航空公司'
-                getBcorpsList(1,10,{cnName,corpTypeName}).then(res=>{
+                getBcorpslistByType(1,10,{cnName,corpTypeName}).then(res=>{
                     this.carrierData = res.data.data.records
                 })
             },

+ 1 - 1
src/views/iosBasicData/AirtransportImport/bills/assembly/mbinformation.vue

@@ -752,7 +752,7 @@
             // 获取航空公司数据
             carrierBcorpsListfun(cnName){
                 let corpTypeName = '航空公司'
-                getBcorpsList(1,10,{cnName,corpTypeName}).then(res=>{
+                getBcorpslistByType(1,10,{cnName,corpTypeName}).then(res=>{
                     this.carrierData = res.data.data.records
                 })
             },

+ 0 - 2
src/views/iosBasicData/OceanFreightImport/bills/assembly/formbottom.vue

@@ -309,9 +309,7 @@
                                           clearable :placeholder="`请输入${assemblyForm.serviceTerms} 客户联系人电话`" ></el-input>
                             </el-form-item>
                         </el-col>
-
                     </el-row>
-
                 </el-form>
             </div>
             <span slot="footer" class="dialog-footer">

+ 1 - 1
src/views/iosBasicData/OceanFreightImport/bills/assembly/mbinformation.vue

@@ -440,7 +440,7 @@
             // 获取船公司数据
             carrierBcorpsListfun(cnName){
                 let corpTypeName = '船公司'
-                getBcorpsList(1,10,{cnName,corpTypeName}).then(res=>{
+                getBcorpslistByType(1,10,{cnName,corpTypeName}).then(res=>{
                     this.carrierData = res.data.data.records
                 })
             },

+ 13 - 2
src/views/iosBasicData/SeafreightExportF/bills/assembly/formbottom.vue

@@ -656,18 +656,29 @@
                     });
                     return
                 }
+                console.log(this.assemblyForm.serviceTerms,659)
                 if (this.assemblyForm.serviceTerms == 'DOOR to DOOR' || this.assemblyForm.serviceTerms == 'DOOR to CY') {
                     this.inttraTitle = 'ToDoor'
                     this.inttraText = 'DOOR TO'
                     this.inttraBcorpslistByType()
                     this.inttraVisible = true
-                }
-                if (this.assemblyForm.serviceTerms == 'CY to DOOR') {
+                }else if (this.assemblyForm.serviceTerms == 'CY to DOOR') {
                     this.inttraTitle = 'DoorTo'
                     this.inttraText = 'TO DOOR'
                     this.inttraBcorpslistByType()
                     this.inttraVisible = true
+                }else {
+                    this.$confirm('请选择其他的服务方式',{
+                        confirmButtonText: "确定",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                    }).then(()=>{
+                        console.log('123123')
+                    }).catch(()=>{
+                        console.log('11111111')
+                    })
                 }
+
             },
             // INTTRA EDI弹窗清除
             inttraCancellation(name){

+ 1 - 1
src/views/iosBasicData/SeafreightExportF/bills/assembly/mbinformation.vue

@@ -448,7 +448,7 @@
             // 获取船公司数据
             carrierBcorpsListfun(cnName){
                 let corpTypeName = '船公司'
-                getBcorpsList(1,10,{cnName,status: 0,corpTypeName}).then(res=>{
+                getBcorpslistByType(1,10,{cnName,status: 0,corpTypeName}).then(res=>{
                     this.carrierData = res.data.data.records
                 })
             },

+ 32 - 4
src/views/iosBasicData/bcorps/detailsPage.vue

@@ -1009,7 +1009,14 @@
 </template>
 <script>
 import { getToken } from "@/util/auth";
-import { addBcorps, updateBcorps, getBcorpsDetail } from "@/api/iosBasicData/bcorps";
+import {
+    addBcorps,
+    updateBcorps,
+    getBcorpsDetail,
+    bcorpsattnRemove,
+    bcorpsbankRemove,
+    bcorpsfilesRemove, bcorpsrenameRemove, corpsinvoiceheaderRemove, bcorpsbadrecordRemove
+} from "@/api/iosBasicData/bcorps";
 import { bcountrysList } from "@/api/iosBasicData/bcountrys";
 import { userList } from "@/api/system/user";
 import { getRateList } from "@/api/iosBasicData/rateManagement";
@@ -1549,19 +1556,21 @@ export default {
         // TODO 提交表单
         // 联系电话赋值
         if (this.formData.id != null) {
-          updateBcorps(this.formData).then(_ => {
+          updateBcorps(this.formData).then(res=> {
             this.$message({
               type: "success",
               message: "修改成功!"
             });
+            this.getBcorpsDetailfun(res.data.data.id)
           })
         } else {
           this.formData.attnTel = this.formData.tel
-          addBcorps(this.formData).then(() => {
+          addBcorps(this.formData).then((res) => {
             this.$message({
               type: "success",
               message: "添加成功!"
             });
+            this.getBcorpsDetailfun(res.data.data.id)
           });
         }
 
@@ -1678,6 +1687,7 @@ export default {
     },
     // 删除
     corpsAttnDelete(scope) {
+        console.log(scope.row.id,1697)
       this.$confirm('确认要删除吗?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
@@ -1695,16 +1705,34 @@ export default {
         //   }
         // } else {
         if (this.activeName == 'khlxk') {
-          this.formData.corpsAttnList.splice(scope.$index, 1)
+            if (scope.row.id) {
+                bcorpsattnRemove(scope.row.id)
+            }
+            this.formData.corpsAttnList.splice(scope.$index, 1)
         } else if (this.activeName == 'yhxx') {
+            if (scope.row.id) {
+                bcorpsbankRemove(scope.row.id)
+            }
           this.formData.corpsBankList.splice(scope.$index, 1)
         } else if (this.activeName == 'fj') {
+            if (scope.row.id) {
+                bcorpsfilesRemove(scope.row.id)
+            }
           this.formData.corpsFilesList.splice(scope.$index, 1)
         } else if (this.activeName == 'fptt') {
+            if (scope.row.id) {
+                corpsinvoiceheaderRemove(scope.row.id)
+            }
           this.formData.corpsInvoiceHeaderList.splice(scope.$index, 1)
         } else if (this.activeName == 'gmjl') {
+            if (scope.row.id) {
+                bcorpsrenameRemove(scope.row.id)
+            }
           this.formData.corpsRenameList.splice(scope.$index, 1)
         } else if (this.activeName == 'bljl') {
+            if (scope.row.id) {
+                bcorpsbadrecordRemove(scope.row.id)
+            }
           this.formData.corpsBadrecordList.splice(scope.$index, 1)
         }
         // }

+ 7 - 0
src/views/iosBasicData/bunits/index.vue

@@ -262,6 +262,13 @@ export default {
       data: []
     };
   },
+  props:{
+      // 是否的弹窗状态打开
+      eldialog:{
+          type:Boolean,
+          default:false
+      }
+  },
   computed: {
     ...mapGetters(["permission"]),
     permissionList() {

+ 644 - 0
src/views/iosBasicData/financeProfit/index.vue

@@ -0,0 +1,644 @@
+<template>
+    <basic-container>
+        <avue-crud :option="option"
+                   :table-loading="loading"
+                   :data="data"
+                   :page.sync="page"
+                   :search.sync="query"
+                   v-model="form"
+                   ref="crud"
+                   id="out-table"
+                   :header-cell-class-name="headerClassName"
+                   @search-change="searchChange"
+                   @search-reset="searchReset"
+                   @current-change="currentChange"
+                   @size-change="sizeChange"
+                   @refresh-change="refreshChange"
+                   @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 336)"
+                   @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 336)"
+                   @on-load="onLoad" >
+            <template slot-scope="{disabled,size}" slot="billTypeSearch">
+                <avue-input-tree :check-strictly="true" multiple v-model="query.billType" placeholder="请选择业务类型" :dic="billTypeData" :style="{ width: '100%' }"></avue-input-tree>
+            </template>
+            <template slot="carrierCnNameSearch">
+                <search-query :datalist="carrierData"
+                              :selectValue="query.carrierId"
+                              :filterable="true"
+                              :remote="true"
+                              :clearable="true"
+                              :buttonIf="false"
+                              :forParameter="{key:'id',label:'cnName',value:'id'}"
+                              @remoteMethod="carrierBcorpsListfun"
+                              @corpFocus="carrierBcorpsListfun"
+                              @corpChange="corpChange($event,'carrierId')">
+                </search-query>
+            </template>
+            <template slot-scope="{disabled,size}" slot="clientSearch">
+                <search-query :datalist="clientData"
+                              :selectValue="query.client"
+                              :filterable="true"
+                              :remote="true"
+                              :clearable="true"
+                              :buttonIf="false"
+                              :forParameter="{key:'id',label:'cnName',value:'cnName'}"
+                              @remoteMethod="clientListfun"
+                              @corpFocus="clientListfun"
+                              @corpChange="corpChange($event,'client')">
+                </search-query>
+            </template>
+            <template slot-scope="{disabled,size}" slot="corpNameSearch">
+                <search-query :datalist="corpIdData"
+                              :selectValue="query.corpId"
+                              :filterable="true"
+                              :remote="true"
+                              :clearable="true"
+                              :buttonIf="false"
+                              :forParameter="{key:'id',label:'cnName',value:'id'}"
+                              @remoteMethod="getBcorpsListfun"
+                              @corpFocus="getBcorpsListfun"
+                              @corpChange="corpChange($event,'corpId')">
+                </search-query>
+            </template>
+            <template slot="vesselCnNameSearch">
+                <search-query :datalist="vesselData"
+                              :selectValue="query.vesselId"
+                              :filterable="true"
+                              :clearable="true"
+                              :remote="true"
+                              :buttonIf="false"
+                              placeholder="请选择船名"
+                              :forParameter="{key:'id',label:'cnName',value:'id'}"
+                              @remoteMethod="vesselBvesselsListfun"
+                              @corpFocus="vesselBvesselsListfun"
+                              @corpChange="corpChange($event,'vesselId')">
+                </search-query>
+            </template>
+            <template slot-scope="{disabled,size}" slot="srcTypeSearch">
+                <search-query :datalist="srcTypeData"
+                              :selectValue="query.srcType"
+                              :clearable="true"
+                              :buttonIf="false"
+                              :forParameter="{ key:'dictKey', label:'dictValue', value:'dictKey'}"
+                              @corpFocus="srcTypeWorkDictsfun"
+                              @corpChange="corpChange($event,'srcType')">
+                </search-query>
+            </template>
+            <template slot-scope="{disabled,size}" slot="salesmanSearch">
+                <search-query :datalist="srcIdData"
+                              :selectValue="query.srcId"
+                              :filterable="true"
+                              :remote="true"
+                              :clearable="true"
+                              :buttonIf="false"
+                              :forParameter="srcforParameter"
+                              @remoteMethod="srcCorpFocus"
+                              @corpFocus="srcCorpFocus"
+                              @corpChange="corpChange($event,'srcId')">
+                </search-query>
+            </template>
+            <template slot-scope="{disabled,size}" slot="accDeptNameSearch">
+                <tree-select v-model="query.accDeptName"
+                             filterable
+                             :data="accDeptData"
+                             :props="{label: 'title', children:'children'}"
+                             nodeKey="title"
+                             size="small"
+                             :multiple="false"
+                             @input="corpChange($event,'accDeptName')">
+                </tree-select>
+            </template>
+            <template slot="lineCnNameSearch">
+                <search-query :datalist="lineData"
+                              :selectValue="query.lineId"
+                              :filterable="true"
+                              :clearable="true"
+                              :remote="true"
+                              :buttonIf="false"
+                              :forParameter="{key:'id',label:'cnName',value:'id'}"
+                              placeholder="请选择航线"
+                              @remoteMethod="lineBlinesListfun"
+                              @corpFocus="lineBlinesListfun"
+                              @corpChange="corpChange($event,'lineId')">
+                </search-query>
+            </template>
+            <template slot="costMergeSearch">
+                <el-radio v-model="query.costMerge" :label="1" @input="radioSearchfun('costMerge')" >单票费用合并</el-radio>
+                <el-radio v-model="query.consistentCorpMerge" :label="1" @input="radioSearchfun('consistentCorpMerge')" >相同业务客户合并</el-radio>
+                <el-radio v-model="query.inconsistentCorpMerge" :label="1" @input="radioSearchfun('inconsistentCorpMerge')" >不同业务客户合并</el-radio>
+                <el-checkbox v-model="query.examine" :true-label="1" :false-label="0" >只显示整票审核业务</el-checkbox>
+                <el-checkbox v-model="query.mergeAmendFee" :true-label="1" :false-label="0" >合并amend费用</el-checkbox>
+                <el-checkbox v-model="query.examineDate" :true-label="1" :false-label="0" >按审核日期</el-checkbox>
+            </template>
+        </avue-crud>
+    </basic-container>
+</template>
+
+<script>
+    import {defaultDate3} from "@/util/date";
+    import {financeStatisticsFinanceProfit} from "@/api/iosBasicData/paymentSummary";
+    import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
+    import {getBcorpsList, getBcorpslistByType} from "@/api/iosBasicData/bcorps";
+    import {getBvesselsList} from "@/api/iosBasicData/bvessels";
+    import {getWorkDicts} from "@/api/system/dictbiz";
+    import {getDeptLazyTree, getDeptTree} from "@/api/system/dept";
+    import {getList as userGetList} from '@/api/system/user'
+    import TreeSelect from "@/components/iosbasic-data/TreeSelect.vue";
+    import {blinesList} from "@/api/iosBasicData/blines";
+
+    export default {
+        components: {TreeSelect, SearchQuery},
+        data(){
+            return {
+                form: {},
+                loading: true,
+                page: {
+                    pageSize: 10,
+                    currentPage: 1,
+                    total: 0
+                },
+                query: {
+                    billType:'SE',
+                    costMerge:1,
+                    statisticsDateStart:defaultDate3()[0],
+                    statisticsDateEnd:defaultDate3()[1],
+                },
+                option:{},
+                optionBack:{
+                    height:'auto',
+                    calcHeight: 30,
+                    tip: false,
+                    searchShow: true,
+                    searchMenuSpan: 4,
+                    border: true,
+                    index: false,
+                    selection: true,
+                    dialogClickModal: false,
+                    menu:false,
+                    addBtn:false,
+                    viewBtn:false,
+                    delBtn:false,
+                    editBtn:false,
+                    column:[
+                        {
+                            label: "业务类型",
+                            prop: "billType",
+                            overHidden:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:1
+                        },
+                        {
+                            label: "业务编号",
+                            prop: "billNo",
+                            overHidden:true,
+                            search:true,
+                            searchOrder:11
+                        },
+                        {
+                            label: "H B/l",
+                            prop: "hBlNo",
+                            overHidden:true,
+                        },
+                        {
+                            label: "M B/l",
+                            prop: "mBlNo",
+                            overHidden:true,
+                        },
+                        {
+                            label: "往来单位",
+                            prop: "corpName",
+                            overHidden:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:4
+                        },
+                        {
+                            label: "统计开始",
+                            prop: "statisticsDateStart",
+                            overHidden:true,
+                            search:true,
+                            searchOrder:7,
+                            type: "date",
+                            format: "yyyy-MM-dd",
+                            valueFormat: "yyyy-MM-dd",
+                        },
+                        {
+                            label: "统计结束",
+                            prop: "statisticsDateEnd",
+                            overHidden:true,
+                            search:true,
+                            searchOrder:8,
+                            type: "date",
+                            format: "yyyy-MM-dd",
+                            valueFormat: "yyyy-MM-dd",
+                        },
+                        {
+                            label: "业务员",
+                            prop: "salesman",
+                            overHidden:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:10
+                        },
+                        {
+                            label: "起运港",
+                            prop: "pod",
+                            overHidden:true,
+                        },
+                        {
+                            label: "目的港",
+                            prop: "pol",
+                            overHidden:true,
+                        },
+                        {
+                            label: "船名",
+                            prop: "vesselCnName",
+                            overHidden:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:5
+                        },
+                        {
+                            label: "航次",
+                            prop: "voyageNo",
+                            overHidden:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:6
+                        },
+                        {
+                            label: "核算部门",
+                            prop: "accDeptName",
+                            overHidden:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:12
+                        },
+                        {
+                            label: "航线",
+                            prop: "lineCnName",
+                            overHidden:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:13
+                        },
+                        {
+                            label: "船公司",
+                            prop: "carrierCnName",
+                            overHidden:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:2
+                        },
+                        {
+                            label: "操作员",
+                            prop: "operatorName",
+                            overHidden:true,
+                        },
+                        {
+                            label: "应收美元",
+                            prop: "amountDrUsd",
+                            overHidden:true,
+                        },
+                        {
+                            label: "实收美元",
+                            prop: "realAmountDrUsd",
+                            overHidden:true,
+                        },
+                        {
+                            label: "应收人民币",
+                            prop: "amountDr",
+                            overHidden:true,
+                        },
+                        {
+                            label: "实收美元",
+                            prop: "realAmountDr",
+                            overHidden:true,
+                        },
+                        {
+                            label: "合计应收",
+                            prop: "amountDrLoc",
+                            overHidden:true,
+                        },
+                        {
+                            label: "实际合计应收",
+                            prop: "realAmountDrLoc",
+                            overHidden:true,
+                        },
+                        {
+                            label: "应付美元",
+                            prop: "amountCrUsd",
+                            overHidden:true,
+                        },
+                        {
+                            label: "实付美元",
+                            prop: "realAmountCrUsd",
+                            overHidden:true,
+                        },
+                        {
+                            label: "应付人民币",
+                            prop: "amountCr",
+                            overHidden:true,
+                        },
+                        {
+                            label: "实付人民币",
+                            prop: "realAmountCr",
+                            overHidden:true,
+                        },
+                        {
+                            label: "合计应付",
+                            prop: "amountCrLoc",
+                            overHidden:true,
+                        },
+                        {
+                            label: "实际合计应付",
+                            prop: "realAmountCrLoc",
+                            overHidden:true,
+                        },
+                        {
+                            label: "单票利润",
+                            prop: "amountProfitLoc",
+                            overHidden:true,
+                        },
+                        {
+                            label: "实际单票利润",
+                            prop: "realAmountProfitLoc",
+                            overHidden:true,
+                        },
+                        {
+                            label: "委托人",
+                            prop: "client",
+                            overHidden:true,
+                            hide:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:3
+                        },
+                        {
+                            label: "业务来源",
+                            prop: "srcType",
+                            overHidden:true,
+                            search:true,
+                            searchslot:true,
+                            searchOrder:9
+                        },
+                        {
+                            label: "",
+                            prop: "costMerge",
+                            hide:true,
+                            search:true,
+                            searchslot:true,
+                            searchLabelWidth:'0',
+                            searchOrder:14,
+                            searchSpan:14,
+                        },
+                    ]
+                },
+                data:[],
+                // 业务类型数据
+                billTypeData:[
+                    {
+                        label:'海运出口',
+                        value:'SE',
+                    },
+                    {
+                        label:'海运进口',
+                        value:'SI',
+                    },
+                    {
+                        label:'空运出口',
+                        value:'AE',
+                    },
+                    {
+                        label:'空运进口',
+                        value:'AI',
+                    },
+                    {
+                        label:'报关业务',
+                        value:'BGSE,BGSI,BGAE,BGAI',
+                    },
+                ],
+                // 船公司数据
+                carrierData:[],
+                // 委托人数据
+                clientData:[],
+                // 结算等单位
+                corpIdData:[],
+                // 船名
+                vesselData:[],
+                srcTypeData:[], // 业务来源
+                srcIdData:[], // 业务员
+                srcforParameter:{key:'id', label:'cnName', value:'id'},
+                accDeptData:[], // 部门数据
+                lineData:[], // 航线数据
+            }
+        },
+        async created() {
+            this.option = await this.getColumnData(this.getColumnName(336), this.optionBack);
+            this.getLazylistfun() // 获取部门数据
+        },
+        methods:{
+            // 单选
+            radioSearchfun(name){
+                if (name == 'costMerge') {
+                    this.$set(this.query,'consistentCorpMerge',0)
+                    this.$set(this.query,'inconsistentCorpMerge',0)
+                }else if (name == 'consistentCorpMerge') {
+                    this.$set(this.query,'inconsistentCorpMerge',0)
+                    this.$set(this.query,'costMerge',0)
+                }else if (name == 'inconsistentCorpMerge') {
+                    this.$set(this.query,'costMerge',0)
+                    this.$set(this.query,'consistentCorpMerge',0)
+                }
+            },
+            // 业务员下拉
+            srcCorpFocus(value,name){
+                if (this.query.srcType == 'SALES') {
+                    // 业务员
+                    this.srcforParameter = { key:'id', label:'name', value:'id'}
+                    this.salesUserGetListfun(value)
+                }else if (this.form.srcType == 'AGENT') {
+                    // 代理
+                    this.srcforParameter = { key:'id', label:'cnName', value:'id'}
+                    this.agentBcorpsListfun(value)
+                }else if (this.form.srcType == 'OWN') {
+                    // 公司
+                    this.srcforParameter = { key:'id', label:'title', value:'id'}
+                    this.ownDeptLazyTreefun()
+                }else {}
+            },
+            // 下拉
+            corpChange(value,name){
+                if (name == 'srcType') {
+                    if (value == 'OWN') {
+                        // 公司
+                        this.srcforParameter = { key:'id', label:'title', value:'id'}
+                        this.ownDeptLazyTreefun()
+                    }else if (value == 'AGENT') {
+                        // 代理
+                        this.srcforParameter = { key:'id', label:'cnName', value:'id'}
+                        this.agentBcorpsListfun()
+                    }else if (value == 'SALES') {
+                        // 业务员
+                        this.srcforParameter = { key:'id', label:'name', value:'id'}
+                        this.salesUserGetListfun()
+                    }else {}
+                    this.$set(this.query,name,value)
+                }else if (name == 'accDeptName') {
+                    for(let item of this.accDeptData) {
+                        if (item.title == value){
+                            this.$set(this.query,'accDeptName',item.title)
+                            this.$set(this.query,'accDeptId',item.id)
+                        }
+                    }
+                }else {
+                    this.$set(this.query,name,value)
+                }
+            },
+            // 接口
+            // 船公司
+            carrierBcorpsListfun(cnName){
+                let corpTypeName = '船公司'
+                getBcorpslistByType(1,10,{cnName,corpTypeName,status: 0}).then(res=>{
+                    this.carrierData = res.data.data.records
+                })
+            },
+            // 委托人
+            clientListfun(cnName){
+                getBcorpsList(1,10,{cnName,status: 0}).then(res=>{
+                    this.clientData = res.data.data.records
+                })
+            },
+            // 结算单位
+            getBcorpsListfun(cnName){
+                getBcorpsList(1,10,{cnName,status: 0}).then(res=>{
+                    this.corpIdData = res.data.data.records
+                })
+            },
+            // 船名
+            vesselBvesselsListfun(cnName){
+                getBvesselsList(1,10,{cnName,status: 0}).then(res=>{
+                    this.vesselData = res.data.data.records
+                })
+            },
+            // 获取业务来源数据
+            srcTypeWorkDictsfun(){
+                getWorkDicts('src_type_los').then(res=>{
+                    this.srcTypeData = res.data.data
+                })
+            },
+            // 获取公司名称 用户管理左侧
+            ownDeptLazyTreefun(){
+                getDeptLazyTree(0).then(res=>{
+                    this.srcIdData = res.data.data
+                })
+            },
+            // 获取业务来源代理数据
+            agentBcorpsListfun(cnName){
+                let corpTypeName = '国内直接客户,国内同行及代理,国外直接客户,国外同行及代理'
+                getBcorpslistByType(1,10,{cnName,status: 0,corpTypeName}).then(res=>{
+                    this.srcIdData = res.data.data.records
+                })
+            },
+            // 获取业务来源业务员数据
+            salesUserGetListfun(account){
+                userGetList(1,10,{account}).then(res=>{
+                    this.srcIdData = res.data.data.records
+                })
+            },
+            // 获取核算部门数据
+            getLazylistfun(){
+                getDeptTree().then(res=>{
+                    this.accDeptData = res.data.data
+                })
+            },
+            // 航线数据
+            lineBlinesListfun(cnName){
+                blinesList(1,10,{cnName,status: 0}).then(res=>{
+                    this.lineData = res.data.data.records
+                })
+            },
+            // 清空搜索回调方法
+            searchReset() {
+                this.query = {};
+                this.onLoad(this.page);
+            },
+            // 搜索
+            searchChange(params, done) {
+                this.query = params;
+                this.page.currentPage = 1;
+                this.onLoad(this.page, params);
+                done();
+            },
+            currentChange(currentPage){
+                this.page.currentPage = currentPage;
+            },
+            sizeChange(pageSize){
+                this.page.pageSize = pageSize;
+            },
+            refreshChange() {
+                this.onLoad(this.page, this.query);
+            },
+            onLoad(page, params = {}) {
+                this.loading = true;
+                financeStatisticsFinanceProfit(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                    const data = res.data.data;
+                    this.page.total = data.total;
+                    this.data = data.records;
+                    this.loading = false;
+                    this.selectionClear();
+                });
+            },
+            selectionClear() {
+                this.$refs.crud.toggleSelection();
+            },
+            //自定义列保存
+            async saveColumnTwo(ref, option, optionBack, code) {
+                /**
+                 * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
+                 * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
+                 * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
+                 */
+                const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
+                if (inSave) {
+                    this.$message.success("保存成功");
+                    //关闭窗口
+                    this.$refs[ref].$refs.dialogColumn.columnBox = false;
+                }
+            },
+            //自定义列重置
+            async resetColumnTwo(ref, option, optionBack, code) {
+                this[option] = this[optionBack];
+                const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
+                if (inSave) {
+                    this.$message.success("重置成功");
+                    this.$refs[ref].$refs.dialogColumn.columnBox = false;
+                }
+            },
+            // 更改表格颜色
+            headerClassName(tab){
+                //颜色间隔
+                let back = ""
+                if (tab.columnIndex >= 0 && tab.column.level === 1) {
+                    if (tab.columnIndex % 2 === 0) {
+                        back = "back-one"
+                    } else if (tab.columnIndex % 2 === 1) {
+                        back = "back-two"
+                    }
+                }
+                return back;
+            },
+        }
+    }
+</script>
+
+<style scoped>
+::v-deep#out-table .back-one {
+    background: #ecf5ff !important;
+    text-align: center;
+}
+::v-deep#out-table .back-two {
+    background: #ecf5ff !important;
+    text-align: center;
+}
+</style>

+ 25 - 3
src/views/iosBasicData/losbfeestemplate/feesTemplateItems.vue

@@ -204,6 +204,7 @@
                                                   :datalist="curCodeData"
                                                   :selectValue="feestemplateForm[item.prop]"
                                                   title="币别"
+                                                  :buttonIf="false"
                                                   :filterable="true"
                                                   :clearable="true"
                                                   :remote="true"
@@ -213,7 +214,7 @@
                                     </search-query>
                                 </div>
                                 <div v-else-if="item.prop == 'unitNo'">
-                                    <search-query ref="SearchQuery"
+                                    <search-query ref="SearchUnitNo"
                                                   :datalist="unitNoData"
                                                   :selectValue="feestemplateForm[item.prop]"
                                                   title="计量单位"
@@ -221,8 +222,11 @@
                                                   :clearable="true"
                                                   :remote="true"
                                                   :forParameter="{key:'id',label:'code',value:'code',disabled:'status'}"
-                                                  @remoteMethod="getBunitsListfun" @corpChange="unitNoCorpChange" >
-                                        <bunits></bunits>
+                                                  @remoteMethod="getBunitsListfun" @corpChange="unitNoCorpChange"
+                                                  @eldialogConfirm="eldialogConfirm(item.prop)" >
+                                        <bunits ref="bunits"
+                                                :eldialog="true"
+                                                @selectionChange="eldialogMultipleChoice($event,item.prop)"></bunits>
                                     </search-query>
                                 </div>
 
@@ -594,6 +598,24 @@ export default {
                 }
             }
         },
+        // 查找弹窗里选择导出
+        eldialogConfirm(){
+            this.$set(this.feestemplateForm,'unitId',this.$refs.bunits[0].selectionList[0].id)
+            this.$set(this.feestemplateForm,'unitNo',this.$refs.bunits[0].selectionList[0].code)
+            this.$refs.SearchUnitNo[0].corpVisible = false
+        },
+        // 下拉多选弹窗数据多选回调
+        eldialogMultipleChoice(list,name){
+            let arr = []
+            if (list.length > 1) {
+                this.$refs.bunits[0].$refs.crud.toggleSelection() // 先清空所以选择的数据
+                arr = [list[list.length -1]] // 获取最新点击的数组
+                this.$refs.bunits[0].$refs.crud.toggleSelection(arr,true) // 把刚点击的数组变成选择状态
+            }else {
+                arr = list
+            }
+            this.$refs.bunits[0].selectionList = arr
+        },
         // 获取详情数据
         losbfeestemplateDetailfun(id){
             this.pageLoading = true

+ 5 - 5
src/views/iosBasicData/rateManagement/detailsPage.vue

@@ -95,10 +95,10 @@
                            size="small"
                            @click="editFun(row)">编辑
                 </el-button>
-                <!--<el-button type="text"-->
-                <!--           size="small"-->
-                <!--           @click="rowDel(row)">删除-->
-                <!--</el-button>-->
+                <el-button type="text"
+                           size="small"
+                           @click="rowDel(row)">删除
+                </el-button>
             </template>
         </avue-crud>
       </basic-container>
@@ -395,7 +395,7 @@ export default {
         }).then(()=>{
             bcurexrateDetails(row.id).then(res=>{
                 this.$message.success('操作成功')
-                this.getDetail(this.form.id)
+                this.dataList.splice(row.$index, 1)
             })
         })
     },

+ 1 - 1
src/views/iosBasicData/rateManagement/js/optionList.js

@@ -39,7 +39,7 @@ export const optionList = {
   dialogFullscreen: true,
   addRowBtn:false,
   cellBtn:true,
-  rowKey:'index',
+  rowKey: "id",
   selection:true,
   column: [{
     label: "币种代码",

+ 5 - 0
src/views/system/dept.vue

@@ -217,6 +217,11 @@
                   overHidden:true,
               },
               {
+                  label: "公司地址",
+                  prop: "address",
+                  overHidden:true,
+              },
+              {
                   label: "fax",
                   prop: "fax",
                   overHidden:true,

+ 62 - 0
src/views/tirePartsMall/financialManagement/saleDetail/index.vue

@@ -0,0 +1,62 @@
+<template>
+    <basic-container>
+        <avue-crud
+            :key="key"
+            ref="crud"
+            :option="option"
+            :data="data"
+            :search.sync="search"
+            @on-load="onLoad"
+            @search-reset="query={}"
+            :page.sync="page" >
+
+        </avue-crud>
+    </basic-container>
+</template>
+
+<script>
+
+import {statisticsSaleDetail} from "@/api/saleDetail";
+
+export default {
+        data(){
+            return {
+                key: 0,
+                search: {},
+                data: [],
+                total: [],
+                query: {},
+                page: {
+                    pageSize: 10,
+                    currentPage: 1,
+                    total: 0,
+                    pageSizes: [10, 50, 100, 200, 300]
+                },
+                option: {},
+
+            }
+        },
+        methods:{
+            // 获取列表数据
+            onLoad(page, params = {}) {
+                let queryParams = {
+                    size: page.pageSize,
+                    current: page.currentPage,
+                    ...Object.assign(params, this.search)
+                }
+                statisticsSaleDetail(queryParams).then(res => {
+                    this.data = res.data.data.records
+                    this.page.total = res.data.data.total
+                    this.option.height = window.innerHeight - 230;
+                    // generalLedgerTotal(queryParams).then(res=>{
+                    //     this.total = res.data.data
+                    // })
+                })
+            },
+        }
+    }
+</script>
+
+<style scoped>
+
+</style>