lichao 3 år sedan
förälder
incheckning
8d1887bd64

+ 73 - 0
src/api/dealer/purchaseContract.js

@@ -0,0 +1,73 @@
+import request from '@/router/axios';
+
+//采购资料列表查询
+export function getPurchaseList(params) {
+  return request({
+    url: '/api/trade-purchase/purchaseContract/list',
+    method: 'get',
+    params
+  })
+}
+//采购资料列表删除
+export function deleteDetails(data) {
+  return request({
+    url: '/api/trade-purchase/purchaseContract/remove',
+    method: 'post',
+    params: {
+      ids:data
+    }
+  })
+}
+//采购资料列表查看明细
+export function dataDetail(data) {
+  return request({
+    url: '/api/trade-purchase/purchaseContract/'+data,
+    method: 'get'
+  })
+}
+//采购资料列表修改和新增
+export function typeSave(data) {
+  return request({
+    url: '/api/trade-purchase/purchaseContract/submit',
+    method: 'post',
+    data
+  })
+}
+//商品从表列表删除
+export function removeGoods(data) {
+  return request({
+    url: '/api/trade-purchase/purchaseContract/removeByItem',
+    method: 'post',
+    data: {
+      id:data
+    }
+  })
+}
+//采购确认或取消订单
+export function dealerSubmit(params) {
+  return request({
+    url: '/api/trade-purchase/purchaseContract/dealerSubmit',
+    method: 'get',
+    params
+  })
+}
+// 获取历史日期和历史价格
+export function historyPrice(params) {
+  return request({
+    url: '/api/blade-purchase-sales/dealerOrder/historyPrice',
+    method: 'get',
+    params
+  })
+}
+// 商品明细分页查询
+export function itemDetail(current, size, params) {
+  return request({
+    url: '/api/trade-purchase/purchase-order/orderItems/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size
+    }
+  })
+}

+ 27 - 0
src/api/statisticAnalysis/collectLedger.js

@@ -0,0 +1,27 @@
+import request from '@/router/axios';
+
+// 列表查询
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/trade-finance/receivable/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size
+    }
+  })
+}
+
+// 详情
+export function detail(id, dc, tradeType) {
+  return request({
+    url: '/api/trade-finance/receivable/detail',
+    method: 'get',
+    params: {
+      corpId: id,
+      dc,
+      tradeType
+    }
+  })
+}

+ 27 - 0
src/api/statisticAnalysis/paymentLedger.js

@@ -0,0 +1,27 @@
+import request from '@/router/axios';
+
+// 列表查询
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/trade-finance/receivable/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size
+    }
+  })
+}
+
+// 详情
+export function detail(id, dc, tradeType) {
+  return request({
+    url: '/api/trade-finance/receivable/detail',
+    method: 'get',
+    params: {
+      corpId: id,
+      dc,
+      tradeType
+    }
+  })
+}

+ 26 - 0
src/api/statisticAnalysis/profitLedger.js

@@ -0,0 +1,26 @@
+import request from '@/router/axios';
+
+// 列表查询
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/trade-finance/profit/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size
+    }
+  })
+}
+
+// 详情
+export function detail(id, tradeType) {
+  return request({
+    url: '/api/trade-finance/profit/detail',
+    method: 'get',
+    params: {
+      corpId: id,
+      tradeType
+    }
+  })
+}

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

@@ -501,6 +501,18 @@ const columnName = [{
     code: 130,
     name: '统计分析销售人员提成'
   },
+  {
+    code: 131,
+    name: '统计分析应收总账'
+  },
+  {
+    code: 132,
+    name: '统计分析应付总账'
+  },
+  {
+    code: 133,
+    name: '统计分析利润总账'
+  },
 ]
 export const getColumnName = (key) => {
   for (let index = 0; index < columnName.length; index++) {

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

@@ -1379,4 +1379,64 @@ export default [{
       component: () => import( /* webpackChunkName: "views" */ '@/views/statisticAnalysis/salesReconciliation/index')
     }]
   },
+  //应收总账
+  {
+    path: '/statisticAnalysis/collectLedger/index',
+    component: Layout,
+    hidden: true,
+    children: [{
+      path: '/statisticAnalysis/collectLedger/index',
+      name: '应收总账',
+      meta: {
+        i18n: '/statisticAnalysis/collectLedger/index',
+        keepAlive: true,
+      },
+      component: () => import( /* webpackChunkName: "views" */ '@/views/statisticAnalysis/collectLedger/index')
+    }]
+  },
+  //应付总账
+  {
+    path: '/statisticAnalysis/paymentLedger/index',
+    component: Layout,
+    hidden: true,
+    children: [{
+      path: '/statisticAnalysis/paymentLedger/index',
+      name: '应付总账',
+      meta: {
+        i18n: '/statisticAnalysis/paymentLedger/index',
+        keepAlive: true,
+      },
+      component: () => import( /* webpackChunkName: "views" */ '@/views/statisticAnalysis/paymentLedger/index')
+    }]
+  },
+  //利润总账
+  {
+    path: '/statisticAnalysis/profitLedger/index',
+    component: Layout,
+    hidden: true,
+    children: [{
+      path: '/statisticAnalysis/profitLedger/index',
+      name: '利润总账',
+      meta: {
+        i18n: '/statisticAnalysis/profitLedger/index',
+        keepAlive: true,
+      },
+      component: () => import( /* webpackChunkName: "views" */ '@/views/statisticAnalysis/profitLedger/index')
+    }]
+  },
+  //采购合同(D)
+  {
+    path: '/dealer/purchaseContract/index',
+    component: Layout,
+    hidden: true,
+    children: [{
+      path: '/dealer/purchaseContract/index',
+      name: '采购合同(D)',
+      meta: {
+        i18n: '/dealer/purchaseContract/index',
+        keepAlive: true,
+      },
+      component: () => import( /* webpackChunkName: "views" */ '@/views/dealer/purchaseContract/index')
+    }]
+  },
 ]

+ 8 - 2
src/views/basicData/customerInformation/configuration/mainList.json

@@ -96,12 +96,18 @@
       "index": 8,
       "width": 130,
     "overHidden": true
+  },{
+    "label": "类别",
+    "prop": "corpsTypeName",
+    "index": 9,
+    "width": 130,
+    "overHidden": true
   }, {
       "label": "客户等级 ",
       "prop": "creditLevel",
       "search": true,
       "hide": true,
-      "index": 9,
+      "index": 10,
       "width": 100,
     "overHidden": true,
       "rules": [{
@@ -114,7 +120,7 @@
       "label": "分管员",
       "prop": "adminProfiles",
       "search": true,
-      "index": 10,
+      "index": 11,
       "width": 130,
       "type": "select",
       "dicData": [],

+ 5 - 0
src/views/basicData/customerInformation/detailsPageEdit.vue

@@ -810,6 +810,11 @@ export default {
             prop: "creditRating",
             span: 8,
           },
+          {
+            label: "代理商编码",
+            prop: "agentCode",
+            span: 8,
+          },
           // {
           //   label: "总返利",
           //   prop: "profitReturn",

+ 5 - 0
src/views/basicData/productInformation/detailsPageEdit.vue

@@ -381,6 +381,11 @@ export default {
             span: 8
           },
           {
+            label: "平台商品编码",
+            prop: "terraceCode",
+            span: 8
+          },
+          {
             label: "备注",
             prop: "remarks",
             type: "textarea",

+ 5 - 0
src/views/businessManagement/deliveryNotice/configuration/customerContact.json

@@ -51,6 +51,11 @@
       "name": "actualQuantity",
       "type": "sum",
       "decimals": 0
+    },
+    {
+      "name": "arrivalQuantity",
+      "type": "sum",
+      "decimals": 0
     }
   ],
   "column":[

+ 9 - 2
src/views/businessManagement/salesOrder/configuration/customerContact.json

@@ -293,7 +293,7 @@
     {
       "label": "重量",
       "prop": "cartonWeight",
-      "index": 15,
+      "index": 16,
       "width":100,
       "cell": false,
       "overHidden": true,
@@ -308,7 +308,7 @@
     {
       "label": "体积",
       "prop": "cntrVolumn",
-      "index": 15,
+      "index": 17,
       "width":100,
       "cell": false,
       "overHidden": true,
@@ -319,6 +319,13 @@
           "trigger": "blur"
         }
       ]
+    },
+    {
+      "label": "备注",
+      "prop": "remarks",
+      "index": 18,
+      "width": 100,
+      "overHidden": true
     }
   ]
 }

+ 12 - 2
src/views/dealer/purchase/index.vue

@@ -208,6 +208,16 @@ export default {
       this.option.searchMenuPosition = "right";
     }
   },
+  activated() {
+    if (this.$route.query.params) {
+      this.show = true;
+      this.detailData = {
+        id: this.$route.query.params,
+        query: true,
+      };
+      this.show = false;
+    }
+  },
   filters: {
     decimalFormat(num) {
       return num ? Number(num).toFixed(2) : "0.00";
@@ -327,10 +337,10 @@ export default {
       }
     },
     goBack() {
-      if (this.$route.query.id) {
+      if (this.$route.query.params) {
         this.$router.$avueRouter.closeTag(this.$route.fullPath);
         this.$router.push({
-          path: "/dealer/sales/index"
+          path: "/dealer/purchase/index"
         });
       }
       this.detailData = this.$options.data().detailData;

+ 14 - 2
src/views/dealer/purchaseContract/detail.vue

@@ -488,7 +488,7 @@ import {getDeptLazyTree,
   getGoods,} from "@/api/basicData/customerInquiry";
 import {selectGoodsNum} from "@/api/basicData/inventoryAccount"; // 库存查询
 import {getUserInfo} from "@/api/system/user"; //登录用户信息
-import {dataDetail, removeGoods, typeSave, dealerSubmit, historyPrice, itemDetail} from "@/api/dealer/purchase";
+import {dataDetail, removeGoods, typeSave, dealerSubmit, historyPrice, itemDetail} from "@/api/dealer/purchaseContract";
 import {
   isDiscount,
   isPercentage,
@@ -587,6 +587,18 @@ export default {
             ],
           },
           {
+            label: "平台代码",
+            prop: "purchaseRemark",
+            span: 8,
+            rules: [
+              {
+                required: true,
+                message: " ",
+                trigger: "blur"
+              }
+            ],
+          },
+          {
             label: "电话",
             prop: "corpTel",
             span: 8
@@ -882,7 +894,7 @@ export default {
           })
           this.$set(this.form, 'debitAmount', amount.toFixed(2));
           this.$set(this.form, 'amount', amount.toFixed(2));
-          this.form.billType = 'CG';
+          this.form.billType = 'CGHT';
           this.$set(this.form, 'itemsVOList', this.dataList);
           this.$set(this.form, 'orderFilesList', this.uploadData);
           this.btnLoading = true;

+ 1 - 1
src/views/dealer/purchaseContract/index.vue

@@ -94,7 +94,7 @@
 import option from './config/mainList.json';
 import detailPage from "./detail";
 import { gainUser } from "@/api/basicData/customerInquiry";
-import {getPurchaseList, deleteDetails, dataDetail} from "@/api/dealer/purchase";
+import {getPurchaseList, deleteDetails, dataDetail} from "@/api/dealer/purchaseContract";
 
 export default {
   name: "index",

+ 1 - 1
src/views/dealer/sales/index.vue

@@ -377,7 +377,7 @@ export default {
       }
     },
     goBack() {
-      if (this.$route.query.id) {
+      if (this.$route.query.id || this.$route.query.params) {
         this.$router.$avueRouter.closeTag(this.$route.fullPath);
         this.$router.push({
           path: "/dealer/sales/index"

+ 180 - 0
src/views/statisticAnalysis/collectLedger/detail.vue

@@ -0,0 +1,180 @@
+<template>
+  <div>
+    <div class="customer-head">
+      <div class="customer-back">
+        <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
+                   @click="backToList">返回列表
+        </el-button>
+      </div>
+    </div>
+    <basic-container class="page-crad" style="margin-top: 30px">
+      <avue-crud
+        ref="crud"
+        :option="option"
+        :data="dataList"
+        :table-loading="loading"
+        :cell-style="cellStyle"
+        :key="crudIndex"
+      >
+        <template slot="menuLeft">
+          <el-button type="info" size="small" @click="outExport" icon="el-icon-download">导出</el-button>
+        </template>
+        <template slot="accSysNo" slot-scope="scope">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="jumpPage(scope.row,scope.index)">{{ scope.row.accSysNo }}</span>
+        </template>
+      </avue-crud>
+    </basic-container>
+  </div>
+</template>
+
+<script>
+import {detail} from "@/api/statisticAnalysis/collectLedger";
+import { getToken } from "@/util/auth";
+
+export default {
+  name: "detail",
+  props: {
+    detailData: {
+      type: Object
+    },
+    tradeType: {
+      type: [Number, String]
+    }
+  },
+  data() {
+    return {
+      crudIndex: 0,
+      dataList: [],
+      loading: false,
+      option: {
+        searchShow: true,
+        align: "center",
+        searchSpan: 8,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        cellBtn: false,
+        cancelBtn: false,
+        refreshBtn: false,
+        showSummary: true,
+        summaryText: '合计',
+        sumColumnList: [
+          {
+            name: 'amount',
+            type: 'sum'
+          },
+          {
+            name: 'settlementAmount',
+            type: 'sum'
+          },
+          {
+            name: 'outstandingAmount',
+            type: 'sum'
+          },
+        ],
+        searchIcon: true,
+        searchIndex: 2,
+        menu: false,
+        column: [
+          {
+            label: "结算单位",
+            prop: "corpName",
+            overHidden: true,
+          },
+          {
+            label: "订单号",
+            prop: "accSysNo",
+            overHidden: true,
+          },
+          {
+            label: "业务类型",
+            prop: "billType",
+            overHidden: true,
+          },
+          {
+            label: "业务时间",
+            prop: "createTime",
+            overHidden: true,
+          },
+          {
+            label: "应收金额",
+            prop: "amount",
+            overHidden: true,
+          },
+          {
+            label: "实收金额",
+            prop: "settlementAmount",
+            overHidden: true,
+          },
+          {
+            label: "未收金额",
+            prop: "outstandingAmount",
+            overHidden: true,
+          },
+        ],
+      },
+    }
+  },
+  created() {
+    if (this.detailData.id) {
+      this.queryData(this.detailData.id);
+    }
+  },
+  methods: {
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    queryData(id) {
+      this.loading = true;
+      detail(id, 'd', this.tradeType).then(res => {
+        this.dataList = res.data.data.records;
+      }).finally(() => {
+        this.loading = false;
+        this.option.height = window.innerHeight - 180;
+        this.crudIndex++;
+      })
+    },
+    backToList() {
+      this.$emit("goBack");
+    },
+    //导出
+    outExport() {
+      this.$confirm('是否导出应收总账详情信息?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        window.open(
+          `/api/trade-finance/receivable/exportItem?${
+            this.website.tokenHeader
+          }=${getToken()}&dc=d&$tradeType=${this.tradeType}corpId=${this.detailData.id}`
+        );
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消' //
+        });
+      })
+    },
+    // 跳转页面
+    jumpPage(row, index) {
+      if (this.tradeType == '' || this.tradeType == 'JXS') {
+        this.$router.$avueRouter.closeTag("/dealer/sales/index");
+        this.$router.push({
+          path: "/dealer/sales/index",
+          query: {
+            params: row.srcParentId
+          },
+        });
+      }
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 425 - 0
src/views/statisticAnalysis/collectLedger/index.vue

@@ -0,0 +1,425 @@
+<template>
+  <div>
+    <basic-container class="page-crad" v-show="show">
+      <avue-crud
+        ref="crud"
+        :option="option"
+        :data="dataList"
+        :page.sync="page"
+        :search.sync="search"
+        :cell-style="cellStyle"
+        @search-change="searchChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :table-loading="loading"
+        @saveColumn="saveColumn"
+        @resetColumn="resetColumn"
+        @search-criteria-switch="searchCriteriaSwitch"
+        @search-reset="searchReset"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="info"
+            icon="el-icon-printer"
+            size="small"
+            :loading="exportLoading"
+            @click.stop="statement"
+            v-if="false"
+          >报表打印</el-button>
+          <el-button type="info" size="small" @click="outExport" icon="el-icon-download">导出</el-button>
+        </template>
+        <template slot="corpNameSearch">
+          <crop-select
+            v-model="search.corpId"
+            corpType="KG"
+          ></crop-select>
+        </template>
+        <template slot="sizeSearch">
+          <el-select
+            v-model="search.size"
+            placeholder="请选择"
+          >
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
+          </el-select>
+        </template>
+        <template slot="corpName" slot-scope="scope">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="beforeOpenPage(scope.row,scope.index)">{{ scope.row.corpName }}</span>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <report-dialog
+      :switchDialog="switchDialog"
+      :searchValue="statementData"
+      :reportName="'经销商-可用库存表'"
+      @onClose="onClose()"
+    />
+    <detail
+      v-if="!show"
+      :detail-data="detailData"
+      :trade-type="tradeType"
+      @goBack="goBack"
+    ></detail>
+  </div>
+</template>
+
+<script>
+import { getToken } from "@/util/auth";
+import { getList } from "@/api/statisticAnalysis/collectLedger";
+import { micrometerFormat } from "@/util/validate";
+import _ from "lodash";
+import reportDialog from "@/components/report-dialog/main";
+import { gainUser } from "@/api/basicData/customerInquiry";
+import detail from "./detail";
+
+export default {
+  name: "index",
+  components: {
+    reportDialog,
+    detail
+  },
+  data() {
+    return {
+      exportLoading:false,
+      switchDialog:false,
+      statementData: {},
+      form: {},
+      search: {},
+      dataList: [],
+      loading: false,
+      detailData: {},
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      option: {},
+      defaultOption: {
+        searchShow: true,
+        align: "center",
+        searchSpan: 8,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        showSummary: true,
+        summaryText: '合计',
+        sumColumnList: [
+          {
+            name: 'amount',
+            type: 'sum'
+          },
+          {
+            name: 'settlementAmount',
+            type: 'sum'
+          },
+          {
+            name: 'outstandingAmount',
+            type: 'sum'
+          },
+        ],
+        searchIcon: true,
+        searchIndex: 2,
+        menu: false,
+        column: [
+          {
+            label: "结算单位",
+            prop: "corpName",
+            search: true,
+            overHidden: true,
+          },
+          {
+            label: "业务区间",
+            prop: "accDate",
+            search: true,
+            type: 'date',
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            unlinkPanels: true,
+            searchRange: true,
+            overHidden: true,
+          },
+          // {
+          //   label: "是否显示金额为0",
+          //   prop: "size",
+          //   search: true,
+          //   overHidden: true,
+          //   hide: true,
+          //   showColumn: false
+          // },
+          {
+            label: "应收金额",
+            prop: "amount",
+            search: false,
+            overHidden: true,
+          },
+          {
+            label: "实收金额",
+            prop: "settlementAmount",
+            search: false,
+            overHidden: true,
+          },
+          {
+            label: "未收金额",
+            prop: "outstandingAmount",
+            search: false,
+            overHidden: true,
+          },
+          {
+            label: "开票金额",
+            prop: "invoiceAmount",
+            search: false,
+            overHidden: true,
+          },
+        ],
+      },
+      // 仓库配置
+      configurationWarehouse: {
+        multipleChoices: false,
+        multiple: false,
+        collapseTags: false,
+        placeholder: "请点击右边按钮选择",
+        dicData: [],
+      },
+      brandOption: [],
+      userList: [],
+      tradeType: '',
+      sysitemType: null,
+      show: true,
+    };
+  },
+  filters: {
+    decimalFormat(num) {
+      return num ? Number(num).toFixed(2) : "0.00";
+    }
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(131), this.defaultOption);
+    this.getWorkDicts('brand').then(res => {
+      this.brandOption = res.data.data;
+    })
+    gainUser().then(res => {
+      this.userList = res.data.data;
+    });
+    let i = 0;
+    this.option.column.forEach(item => {
+      if (item.search) i++
+    })
+    if (i % 3 !== 0){
+      const num = 3 - Number(i % 3)
+      this.option.searchMenuSpan = num * 8;
+      this.option.searchMenuPosition = "right";
+    }
+  },
+  methods: {
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    searchCriteriaSwitch(type) {
+      if (type) {
+        this.option.height = this.option.height - 46;
+      } else {
+        this.option.height = this.option.height + 46;
+      }
+      this.$refs.crud.getTableHeight();
+    },
+    searchReset() {
+    },
+    //点击搜索按钮触发
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    onLoad(page, params) {
+      this.sysitemType = localStorage.getItem('sysitemType');
+      if (this.sysitemType == 999) {
+        this.tradeType = ''
+      } else if (this.sysitemType == 1) {
+        this.tradeType = 'XX'
+      } else if (this.sysitemType == 2) {
+        this.tradeType = 'GN'
+      } else if (this.sysitemType == 3) {
+        this.tradeType = 'JK'
+      } else if (this.sysitemType == 4) {
+        this.tradeType = 'CK'
+      } else if (this.sysitemType == 5) {
+        this.tradeType = 'SW'
+      } else if (this.sysitemType == 6) {
+        this.tradeType = 'JXS'
+      } else if (this.sysitemType == 7) {
+        this.tradeType = 'LY'
+      }
+      this.loading = true;
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false);
+      });
+      let queryParams = Object.assign({tradeType: this.tradeType,dc: 'd',}, params);
+      if (queryParams.accDate && queryParams.accDate.length > 0) {
+        queryParams = {
+          ...queryParams,
+          accDateStart: queryParams.accDate[0] + ' 00:00:00',
+          accDateEnd: queryParams.accDate[1] + ' 23:59:59',
+        }
+        delete queryParams.accDate;
+      }
+      getList(
+        page.currentPage,
+        page.pageSize,
+        queryParams
+      )
+        .then(res => {
+          if (res.data.data.records) {
+            res.data.data.records.forEach(e => {
+              e.itemLoading = true;
+            });
+          }
+          this.dataList = res.data.data.records ? res.data.data.records : [];
+          this.page.total = res.data.data.total;
+          if (this.page.total) {
+            this.option.height = window.innerHeight - 230;
+          }
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    editOpen(row) {
+      if (row.billType == "BJ") {
+        this.$router.push({
+          path: "/exportTrade/customerInquiry/index",
+          query: {
+            id: row.id
+          }
+        });
+      } else {
+        this.$router.push({
+          path: "/exportTrade/salesContract/index",
+          query: {
+            id: row.id
+          }
+        });
+      }
+    },
+    statement() {
+      this.statementData = {...this.search};
+      if (this.statementData.accDate && this.statementData.accDate.length > 0) {
+        this.statementData.accDateStart = this.statementData.accDate[0]+ " " + "00:00:00"
+        this.statementData.accDateEnd = this.statementData.accDate[1]+ " " + "23:59:59"
+        delete this.statementData.accDate
+      }
+      this.switchDialog = !this.switchDialog;
+    },
+    onClose(val) {
+      this.switchDialog = val;
+    },
+    //列保存触发
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(131),
+        this.option
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    async resetColumn() {
+      this.option = this.defaultOption;
+      const inSave = await this.delColumnData(this.getColumnName(131), this.defaultOption);
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout()
+        })
+        this.$message.success("重置成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    // 跳转到详情
+    beforeOpenPage(row, index) {
+      this.detailData = {
+        id: row.corpId
+      };
+      this.show = false;
+    },
+    goBack() {
+      this.detailData=this.$options.data().detailData
+      if (JSON.stringify(this.$route.query) != "{}") {
+        this.$router.$avueRouter.closeTag();
+        this.$router.push({
+          path: "/statisticAnalysis/collectLedger/index"
+        });
+      }
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false)
+      })
+      this.show = true;
+      this.onLoad(this.page, this.search);
+    },
+    outExport() {
+      if (!this.search.corpId) this.$set(this.search, 'corpId', '');
+      if (this.search.accDate && this.search.accDate.length > 0) {
+        this.search = {
+          ...this.search,
+          accDateStart: this.search.accDate[0] + ' 00:00:00',
+          accDateEnd: this.search.accDate[1] + ' 23:59:59',
+        }
+      } else {
+        this.search = {
+          ...this.search,
+          accDateStart: '',
+          accDateEnd: '',
+        }
+      }
+      this.$confirm('是否导出应收总账信息?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        window.open(
+          `/api/trade-finance/receivable/export?${
+            this.website.tokenHeader
+          }=${getToken()}&dc=d&tradeType=${this.tradeType}&corpId=${this.search.corpId}&accDateStart=${this.search.accDateStart}&accDateEnd=${this.search.accDateEnd}`
+        );
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消' //
+        });
+      })
+    },
+  }
+};
+</script>
+
+<style scoped>
+.page-crad ::v-deep .basic-container__card {
+  height: 94.2vh;
+}
+::v-deep .el-table__expanded-cell[class*="cell"] {
+  padding: 0px;
+}
+.itemTable ::v-deep .el-table {
+  width: 100%;
+}
+</style>

+ 180 - 0
src/views/statisticAnalysis/paymentLedger/detail.vue

@@ -0,0 +1,180 @@
+<template>
+  <div>
+    <div class="customer-head">
+      <div class="customer-back">
+        <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
+                   @click="backToList">返回列表
+        </el-button>
+      </div>
+    </div>
+    <basic-container class="page-crad" style="margin-top: 30px">
+      <avue-crud
+        ref="crud"
+        :option="option"
+        :data="dataList"
+        :table-loading="loading"
+        :cell-style="cellStyle"
+        :key="crudIndex"
+      >
+        <template slot="menuLeft">
+          <el-button type="info" size="small" @click="outExport" icon="el-icon-download">导出</el-button>
+        </template>
+        <template slot="accSysNo" slot-scope="scope">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="jumpPage(scope.row,scope.index)">{{ scope.row.accSysNo }}</span>
+        </template>
+      </avue-crud>
+    </basic-container>
+  </div>
+</template>
+
+<script>
+import {detail} from "@/api/statisticAnalysis/paymentLedger";
+import { getToken } from "@/util/auth";
+
+export default {
+  name: "detail",
+  props: {
+    detailData: {
+      type: Object
+    },
+    tradeType: {
+      type: [Number, String]
+    }
+  },
+  data() {
+    return {
+      crudIndex: 0,
+      dataList: [],
+      loading: false,
+      option: {
+        searchShow: true,
+        align: "center",
+        searchSpan: 8,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        cellBtn: false,
+        cancelBtn: false,
+        refreshBtn: false,
+        showSummary: true,
+        summaryText: '合计',
+        sumColumnList: [
+          {
+            name: 'amount',
+            type: 'sum'
+          },
+          {
+            name: 'settlementAmount',
+            type: 'sum'
+          },
+          {
+            name: 'outstandingAmount',
+            type: 'sum'
+          },
+        ],
+        searchIcon: true,
+        searchIndex: 2,
+        menu: false,
+        column: [
+          {
+            label: "结算单位",
+            prop: "corpName",
+            overHidden: true,
+          },
+          {
+            label: "订单号",
+            prop: "accSysNo",
+            overHidden: true,
+          },
+          {
+            label: "业务类型",
+            prop: "billType",
+            overHidden: true,
+          },
+          {
+            label: "业务时间",
+            prop: "createTime",
+            overHidden: true,
+          },
+          {
+            label: "应付金额",
+            prop: "amount",
+            overHidden: true,
+          },
+          {
+            label: "实付金额",
+            prop: "settlementAmount",
+            overHidden: true,
+          },
+          {
+            label: "未付金额",
+            prop: "outstandingAmount",
+            overHidden: true,
+          },
+        ],
+      },
+    }
+  },
+  created() {
+    if (this.detailData.id) {
+      this.queryData(this.detailData.id);
+    }
+  },
+  methods: {
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    queryData(id) {
+      this.loading = true;
+      detail(id, 'c', this.tradeType).then(res => {
+        this.dataList = res.data.data.records;
+      }).finally(() => {
+        this.loading = false;
+        this.option.height = window.innerHeight - 180;
+        this.crudIndex++;
+      })
+    },
+    backToList() {
+      this.$emit("goBack");
+    },
+    //导出
+    outExport() {
+      this.$confirm('是否导出应付总账详情信息?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        window.open(
+          `/api/trade-finance/dealWith/exportItem?${
+            this.website.tokenHeader
+          }=${getToken()}&dc=c&$tradeType=${this.tradeType}&corpId=${this.detailData.id}`
+        );
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消' //
+        });
+      })
+    },
+    // 跳转页面
+    jumpPage(row, index) {
+      if (this.tradeType == '' || this.tradeType == 'JXS') {
+        this.$router.$avueRouter.closeTag("/dealer/purchase/index");
+        this.$router.push({
+          path: "/dealer/purchase/index",
+          query: {
+            params: row.srcParentId
+          },
+        });
+      }
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 421 - 0
src/views/statisticAnalysis/paymentLedger/index.vue

@@ -0,0 +1,421 @@
+<template>
+  <div>
+    <basic-container class="page-crad" v-show="show">
+      <avue-crud
+        ref="crud"
+        :option="option"
+        :data="dataList"
+        :page.sync="page"
+        :search.sync="search"
+        :cell-style="cellStyle"
+        @search-change="searchChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :table-loading="loading"
+        @saveColumn="saveColumn"
+        @resetColumn="resetColumn"
+        @search-criteria-switch="searchCriteriaSwitch"
+        @search-reset="searchReset"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="info"
+            icon="el-icon-printer"
+            size="small"
+            :loading="exportLoading"
+            @click.stop="statement"
+            v-if="false"
+          >报表打印
+          </el-button>
+          <el-button type="info" size="small" @click="outExport" icon="el-icon-download">导出</el-button>
+        </template>
+        <template slot="corpNameSearch">
+          <crop-select
+            v-model="search.corpId"
+            corpType="KG"
+          ></crop-select>
+        </template>
+        <template slot="sizeSearch">
+          <el-select
+            v-model="search.size"
+            placeholder="请选择"
+          >
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
+          </el-select>
+        </template>
+        <template slot="corpName" slot-scope="scope">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="beforeOpenPage(scope.row,scope.index)">{{ scope.row.corpName }}</span>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <report-dialog
+      :switchDialog="switchDialog"
+      :searchValue="statementData"
+      :reportName="'经销商-可用库存表'"
+      @onClose="onClose()"
+    />
+    <detail
+      v-if="!show"
+      :detail-data="detailData"
+      :trade-type="tradeType"
+      @goBack="goBack"
+    ></detail>
+  </div>
+</template>
+
+<script>
+import { getToken } from "@/util/auth";
+import { getList } from "@/api/statisticAnalysis/paymentLedger";
+import { micrometerFormat } from "@/util/validate";
+import _ from "lodash";
+import reportDialog from "@/components/report-dialog/main";
+import { gainUser } from "@/api/basicData/customerInquiry";
+import detail from "./detail";
+
+export default {
+  name: "index",
+  components: {
+    reportDialog,
+    detail
+  },
+  data() {
+    return {
+      exportLoading:false,
+      switchDialog:false,
+      statementData: {},
+      form: {},
+      search: {},
+      dataList: [],
+      loading: false,
+      detailData: {},
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      option: {},
+      defaultOption: {
+        searchShow: true,
+        align: "center",
+        searchSpan: 8,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        showSummary: true,
+        summaryText: '合计',
+        sumColumnList: [
+          {
+            name: 'amount',
+            type: 'sum'
+          },
+          {
+            name: 'settlementAmount',
+            type: 'sum'
+          },
+          {
+            name: 'outstandingAmount',
+            type: 'sum'
+          },
+        ],
+        searchIcon: true,
+        searchIndex: 2,
+        menu: false,
+        column: [
+          {
+            label: "结算单位",
+            prop: "corpName",
+            search: true,
+            overHidden: true,
+          },
+          {
+            label: "业务区间",
+            prop: "accDate",
+            search: true,
+            type: 'date',
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            unlinkPanels: true,
+            searchRange: true,
+            overHidden: true,
+          },
+          // {
+          //   label: "是否显示金额为0",
+          //   prop: "size",
+          //   search: true,
+          //   overHidden: true,
+          //   hide: true,
+          //   showColumn: false
+          // },
+          {
+            label: "应付金额",
+            prop: "amount",
+            search: false,
+            overHidden: true,
+          },
+          {
+            label: "实付金额",
+            prop: "settlementAmount",
+            search: false,
+            overHidden: true,
+          },
+          {
+            label: "未付金额",
+            prop: "outstandingAmount",
+            search: false,
+            overHidden: true,
+          },
+        ],
+      },
+      // 仓库配置
+      configurationWarehouse: {
+        multipleChoices: false,
+        multiple: false,
+        collapseTags: false,
+        placeholder: "请点击右边按钮选择",
+        dicData: [],
+      },
+      brandOption: [],
+      userList: [],
+      tradeType: '',
+      sysitemType: null,
+      show: true,
+    };
+  },
+  filters: {
+    decimalFormat(num) {
+      return num ? Number(num).toFixed(2) : "0.00";
+    }
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(132), this.defaultOption);
+    this.getWorkDicts('brand').then(res => {
+      this.brandOption = res.data.data;
+    })
+    gainUser().then(res => {
+      this.userList = res.data.data;
+    });
+
+    let i = 0;
+    this.option.column.forEach(item => {
+      if (item.search) i++
+    })
+    if (i % 3 !== 0){
+      const num = 3 - Number(i % 3)
+      this.option.searchMenuSpan = num * 8;
+      this.option.searchMenuPosition = "right";
+    }
+  },
+  methods: {
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    searchReset() {
+    },
+    searchCriteriaSwitch(type) {
+      if (type) {
+        this.option.height = this.option.height - 46;
+      } else {
+        this.option.height = this.option.height + 46;
+      }
+      this.$refs.crud.getTableHeight();
+    },
+    //点击搜索按钮触发
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    onLoad(page, params) {
+      this.sysitemType = localStorage.getItem('sysitemType');
+      if (this.sysitemType == 999) {
+        this.tradeType = ''
+      } else if (this.sysitemType == 1) {
+        this.tradeType = 'XX'
+      } else if (this.sysitemType == 2) {
+        this.tradeType = 'GN'
+      } else if (this.sysitemType == 3) {
+        this.tradeType = 'JK'
+      } else if (this.sysitemType == 4) {
+        this.tradeType = 'CK'
+      } else if (this.sysitemType == 5) {
+        this.tradeType = 'SW'
+      } else if (this.sysitemType == 6) {
+        this.tradeType = 'JXS'
+      } else if (this.sysitemType == 7) {
+        this.tradeType = 'LY'
+      }
+      this.loading = true;
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false);
+      });
+      let queryParams = Object.assign({tradeType: this.tradeType,dc: 'c',}, params);
+      if (queryParams.accDate && queryParams.accDate.length > 0) {
+        queryParams = {
+          ...queryParams,
+          accDateStart: queryParams.accDate[0] + ' 00:00:00',
+          accDateEnd: queryParams.accDate[1] + ' 23:59:59',
+        }
+        delete queryParams.accDate;
+      }
+      getList(
+        page.currentPage,
+        page.pageSize,
+        queryParams
+      )
+        .then(res => {
+          if (res.data.data.records) {
+            res.data.data.records.forEach(e => {
+              e.itemLoading = true;
+            });
+          }
+          this.dataList = res.data.data.records ? res.data.data.records : [];
+          this.page.total = res.data.data.total;
+          if (this.page.total) {
+            this.option.height = window.innerHeight - 230;
+          }
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    editOpen(row) {
+      if (row.billType == "BJ") {
+        this.$router.push({
+          path: "/exportTrade/customerInquiry/index",
+          query: {
+            id: row.id
+          }
+        });
+      } else {
+        this.$router.push({
+          path: "/exportTrade/salesContract/index",
+          query: {
+            id: row.id
+          }
+        });
+      }
+    },
+    statement() {
+      this.statementData = {...this.search};
+      if (this.statementData.accDate && this.statementData.accDate.length > 0) {
+        this.statementData.accDateStart = this.statementData.accDate[0]+ " " + "00:00:00"
+        this.statementData.accDateEnd = this.statementData.accDate[1]+ " " + "23:59:59"
+        delete this.statementData.accDate
+      }
+      this.switchDialog = !this.switchDialog;
+    },
+    onClose(val) {
+      this.switchDialog = val;
+    },
+    //列保存触发
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(132),
+        this.option
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    async resetColumn() {
+      this.option = this.defaultOption;
+      const inSave = await this.delColumnData(this.getColumnName(132), this.defaultOption);
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout()
+        })
+        this.$message.success("重置成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    // 跳转到详情
+    beforeOpenPage(row, index) {
+      this.detailData = {
+        id: row.corpId
+      };
+      this.show = false;
+    },
+    goBack() {
+      this.detailData=this.$options.data().detailData
+      if (JSON.stringify(this.$route.query) != "{}") {
+        this.$router.$avueRouter.closeTag();
+        this.$router.push({
+          path: "/statisticAnalysis/collectLedger/index"
+        });
+      }
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false)
+      })
+      this.show = true;
+      this.onLoad(this.page, this.search);
+    },
+    outExport() {
+      if (!this.search.corpId) this.$set(this.search, 'corpId', '');
+      if (this.search.accDate && this.search.accDate.length > 0) {
+        this.search = {
+          ...this.search,
+          accDateStart: this.search.accDate[0] + ' 00:00:00',
+          accDateEnd: this.search.accDate[1] + ' 23:59:59',
+        }
+      } else {
+        this.search = {
+          ...this.search,
+          accDateStart: '',
+          accDateEnd: '',
+        }
+      }
+      this.$confirm('是否导出应付总账信息?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        window.open(
+          `/api/trade-finance/dealWith/export?${
+            this.website.tokenHeader
+          }=${getToken()}&dc=c&tradeType=${this.tradeType}&corpId=${this.search.corpId}&accDateStart=${this.search.accDateStart}&accDateEnd=${this.search.accDateEnd}`
+        );
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消' //
+        });
+      })
+    },
+  }
+};
+</script>
+
+<style scoped>
+.page-crad ::v-deep .basic-container__card {
+  height: 94.2vh;
+}
+::v-deep .el-table__expanded-cell[class*="cell"] {
+  padding: 0px;
+}
+.itemTable ::v-deep .el-table {
+  width: 100%;
+}
+</style>

+ 202 - 0
src/views/statisticAnalysis/profitLedger/detail.vue

@@ -0,0 +1,202 @@
+<template>
+  <div>
+    <div class="customer-head">
+      <div class="customer-back">
+        <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
+                   @click="backToList">返回列表
+        </el-button>
+      </div>
+    </div>
+    <basic-container class="page-crad" style="margin-top: 30px">
+      <avue-crud
+        ref="crud"
+        :option="option"
+        :data="dataList"
+        :table-loading="loading"
+        :cell-style="cellStyle"
+        :key="crudIndex"
+      >
+        <template slot="menuLeft">
+          <el-button type="info" size="small" @click="outExport" icon="el-icon-download">导出</el-button>
+        </template>
+        <template slot="accSysNo" slot-scope="scope">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="jumpPage(scope.row,scope.index)">{{ scope.row.accSysNo }}</span>
+        </template>
+      </avue-crud>
+    </basic-container>
+  </div>
+</template>
+
+<script>
+import {detail} from "@/api/statisticAnalysis/profitLedger";
+import { getToken } from "@/util/auth";
+
+export default {
+  name: "detail",
+  props: {
+    detailData: {
+      type: Object
+    },
+    tradeType: {
+      type: [Number, String]
+    }
+  },
+  data() {
+    return {
+      crudIndex: 0,
+      dataList: [],
+      loading: false,
+      option: {
+        searchShow: true,
+        align: "center",
+        searchSpan: 8,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        cellBtn: false,
+        cancelBtn: false,
+        refreshBtn: false,
+        showSummary: true,
+        summaryText: '合计',
+        sumColumnList: [
+          {
+            name: 'amount',
+            type: 'sum'
+          },
+          {
+            name: 'settlementAmount',
+            type: 'sum'
+          },
+          {
+            name: 'outstandingAmount',
+            type: 'sum'
+          },
+        ],
+        searchIcon: true,
+        searchIndex: 2,
+        menu: false,
+        column: [
+          {
+            label: "单据来源",
+            prop: "billType",
+            overHidden: true,
+          },
+          {
+            label: "结算单位",
+            prop: "corpName",
+            overHidden: true,
+          },
+          {
+            label: "订单号",
+            prop: "accSysNo",
+            overHidden: true,
+          },
+          {
+            label: "费用名称",
+            prop: "itemName",
+            overHidden: true,
+          },
+          {
+            label: "单价",
+            prop: "price",
+            overHidden: true,
+          },
+          {
+            label: "账单金额",
+            prop: "amount",
+            overHidden: true,
+          },
+          {
+            label: "结算金额",
+            prop: "settlementAmount",
+            overHidden: true,
+          },
+          {
+            label: "币别",
+            prop: "currency",
+            overHidden: true,
+          },
+          {
+            label: "汇率",
+            prop: "exchangeRate",
+            overHidden: true,
+          },
+        ],
+      },
+    }
+  },
+  created() {
+    if (this.detailData.id) {
+      this.queryData(this.detailData.id);
+    }
+  },
+  methods: {
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    queryData(id) {
+      this.loading = true;
+      detail(id, this.tradeType).then(res => {
+        this.dataList = res.data.data.records;
+      }).finally(() => {
+        this.loading = false;
+        this.option.height = window.innerHeight - 180;
+        this.crudIndex++;
+      })
+    },
+    backToList() {
+      this.$emit("goBack");
+    },
+    //导出
+    outExport() {
+      this.$confirm('是否导出应付总账详情信息?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        window.open(
+          `/api/trade-finance/profit/exportItem?${
+            this.website.tokenHeader
+          }=${getToken()}&$tradeType=${this.tradeType}&corpId=${this.detailData.id}`
+        );
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消' //
+        });
+      })
+    },
+    // 跳转页面
+    jumpPage(row, index) {
+      if (row.billType == '申请') {
+        if (this.tradeType == '' || this.tradeType == 'JXS') {
+          this.$router.$avueRouter.closeTag("/dealer/purchase/index");
+          this.$router.push({
+            path: "/dealer/purchase/index",
+            query: {
+              params: row.srcParentId
+            },
+          });
+        }
+      } else if (row.billType == '收费') {
+        if (this.tradeType == '' || this.tradeType == 'JXS') {
+          this.$router.$avueRouter.closeTag("/dealer/sales/index");
+          this.$router.push({
+            path: "/dealer/sales/index",
+            query: {
+              params: row.srcParentId
+            },
+          });
+        }
+      }
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 414 - 0
src/views/statisticAnalysis/profitLedger/index.vue

@@ -0,0 +1,414 @@
+<template>
+  <div>
+    <basic-container class="page-crad" v-show="show">
+      <avue-crud
+        ref="crud"
+        :option="option"
+        :data="dataList"
+        :page.sync="page"
+        :search.sync="search"
+        :cell-style="cellStyle"
+        @search-change="searchChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :table-loading="loading"
+        @saveColumn="saveColumn"
+        @resetColumn="resetColumn"
+        @search-criteria-switch="searchCriteriaSwitch"
+        @search-reset="searchReset"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="info"
+            icon="el-icon-printer"
+            size="small"
+            :loading="exportLoading"
+            @click.stop="statement"
+            v-if="false"
+          >报表打印
+          </el-button>
+          <el-button type="info" size="small" @click="outExport" icon="el-icon-download">导出</el-button>
+        </template>
+        <template slot="corpNameSearch">
+          <crop-select
+            v-model="search.corpId"
+            corpType="KG"
+          ></crop-select>
+        </template>
+        <template slot="sizeSearch">
+          <el-select
+            v-model="search.size"
+            placeholder="请选择"
+          >
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
+          </el-select>
+        </template>
+        <template slot="corpName" slot-scope="scope">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="beforeOpenPage(scope.row,scope.index)">{{ scope.row.corpName }}</span>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <report-dialog
+      :switchDialog="switchDialog"
+      :searchValue="statementData"
+      :reportName="'经销商-可用库存表'"
+      @onClose="onClose()"
+    />
+    <detail
+      v-if="!show"
+      :detail-data="detailData"
+      :trade-type="tradeType"
+      @goBack="goBack"
+    ></detail>
+  </div>
+</template>
+
+<script>
+import { getToken } from "@/util/auth";
+import { getList } from "@/api/statisticAnalysis/profitLedger";
+import { micrometerFormat } from "@/util/validate";
+import _ from "lodash";
+import reportDialog from "@/components/report-dialog/main";
+import { gainUser } from "@/api/basicData/customerInquiry";
+import detail from "./detail";
+
+export default {
+  name: "index",
+  components: {
+    reportDialog,
+    detail
+  },
+  data() {
+    return {
+      exportLoading:false,
+      switchDialog:false,
+      statementData: {},
+      form: {},
+      search: {},
+      dataList: [],
+      loading: false,
+      detailData: {},
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      option: {},
+      defaultOption: {
+        searchShow: true,
+        align: "center",
+        searchSpan: 8,
+        searchMenuSpan: 8,
+        border: true,
+        index: true,
+        addBtn: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        showSummary: true,
+        summaryText: '合计',
+        sumColumnList: [
+          {
+            name: 'amount',
+            type: 'sum'
+          },
+          {
+            name: 'handleAmount',
+            type: 'sum'
+          },
+          {
+            name: 'profitAmount',
+            type: 'sum'
+          },
+        ],
+        searchIcon: true,
+        searchIndex: 2,
+        menu: false,
+        column: [
+          {
+            label: "结算单位",
+            prop: "corpName",
+            search: true,
+            overHidden: true,
+          },
+          {
+            label: "业务区间",
+            prop: "accDate",
+            search: true,
+            type: 'date',
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            unlinkPanels: true,
+            searchRange: true,
+            overHidden: true,
+          },
+          {
+            label: "应收金额",
+            prop: "amount",
+            search: false,
+            overHidden: true,
+          },
+          {
+            label: "应付金额",
+            prop: "handleAmount",
+            search: false,
+            overHidden: true,
+          },
+          {
+            label: "利润金额",
+            prop: "profitAmount",
+            search: false,
+            overHidden: true,
+          },
+        ],
+      },
+      // 仓库配置
+      configurationWarehouse: {
+        multipleChoices: false,
+        multiple: false,
+        collapseTags: false,
+        placeholder: "请点击右边按钮选择",
+        dicData: [],
+      },
+      brandOption: [],
+      userList: [],
+      tradeType: '',
+      sysitemType: null,
+      show: true,
+    };
+  },
+  filters: {
+    decimalFormat(num) {
+      return num ? Number(num).toFixed(2) : "0.00";
+    }
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(132), this.defaultOption);
+    this.getWorkDicts('brand').then(res => {
+      this.brandOption = res.data.data;
+    })
+    gainUser().then(res => {
+      this.userList = res.data.data;
+    });
+
+    let i = 0;
+    this.option.column.forEach(item => {
+      if (item.search) i++
+    })
+    if (i % 3 !== 0){
+      const num = 3 - Number(i % 3)
+      this.option.searchMenuSpan = num * 8;
+      this.option.searchMenuPosition = "right";
+    }
+  },
+  methods: {
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    searchReset() {
+    },
+    searchCriteriaSwitch(type) {
+      if (type) {
+        this.option.height = this.option.height - 46;
+      } else {
+        this.option.height = this.option.height + 46;
+      }
+      this.$refs.crud.getTableHeight();
+    },
+    //点击搜索按钮触发
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    onLoad(page, params) {
+      this.sysitemType = localStorage.getItem('sysitemType');
+      if (this.sysitemType == 999) {
+        this.tradeType = ''
+      } else if (this.sysitemType == 1) {
+        this.tradeType = 'XX'
+      } else if (this.sysitemType == 2) {
+        this.tradeType = 'GN'
+      } else if (this.sysitemType == 3) {
+        this.tradeType = 'JK'
+      } else if (this.sysitemType == 4) {
+        this.tradeType = 'CK'
+      } else if (this.sysitemType == 5) {
+        this.tradeType = 'SW'
+      } else if (this.sysitemType == 6) {
+        this.tradeType = 'JXS'
+      } else if (this.sysitemType == 7) {
+        this.tradeType = 'LY'
+      }
+      this.loading = true;
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false);
+      });
+      let queryParams = Object.assign({tradeType: this.tradeType}, params);
+      if (queryParams.accDate && queryParams.accDate.length > 0) {
+        queryParams = {
+          ...queryParams,
+          accDateStart: queryParams.accDate[0] + ' 00:00:00',
+          accDateEnd: queryParams.accDate[1] + ' 23:59:59',
+        }
+        delete queryParams.accDate;
+      }
+      getList(
+        page.currentPage,
+        page.pageSize,
+        queryParams
+      )
+        .then(res => {
+          if (res.data.data.records) {
+            res.data.data.records.forEach(e => {
+              e.itemLoading = true;
+            });
+          }
+          this.dataList = res.data.data.records ? res.data.data.records : [];
+          this.page.total = res.data.data.total;
+          if (this.page.total) {
+            this.option.height = window.innerHeight - 230;
+          }
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    editOpen(row) {
+      if (row.billType == "BJ") {
+        this.$router.push({
+          path: "/exportTrade/customerInquiry/index",
+          query: {
+            id: row.id
+          }
+        });
+      } else {
+        this.$router.push({
+          path: "/exportTrade/salesContract/index",
+          query: {
+            id: row.id
+          }
+        });
+      }
+    },
+    statement() {
+      this.statementData = {...this.search};
+      if (this.statementData.accDate && this.statementData.accDate.length > 0) {
+        this.statementData.accDateStart = this.statementData.accDate[0]+ " " + "00:00:00"
+        this.statementData.accDateEnd = this.statementData.accDate[1]+ " " + "23:59:59"
+        delete this.statementData.accDate
+      }
+      this.switchDialog = !this.switchDialog;
+    },
+    onClose(val) {
+      this.switchDialog = val;
+    },
+    //列保存触发
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(132),
+        this.option
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    async resetColumn() {
+      this.option = this.defaultOption;
+      const inSave = await this.delColumnData(this.getColumnName(132), this.defaultOption);
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout()
+        })
+        this.$message.success("重置成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    // 跳转到详情
+    beforeOpenPage(row, index) {
+      this.detailData = {
+        id: row.corpId
+      };
+      this.show = false;
+    },
+    goBack() {
+      this.detailData=this.$options.data().detailData
+      if (JSON.stringify(this.$route.query) != "{}") {
+        this.$router.$avueRouter.closeTag();
+        this.$router.push({
+          path: "/statisticAnalysis/collectLedger/index"
+        });
+      }
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false)
+      })
+      this.show = true;
+      this.onLoad(this.page, this.search);
+    },
+    outExport() {
+      if (!this.search.corpId) this.$set(this.search, 'corpId', '');
+      if (this.search.accDate && this.search.accDate.length > 0) {
+        this.search = {
+          ...this.search,
+          accDateStart: this.search.accDate[0] + ' 00:00:00',
+          accDateEnd: this.search.accDate[1] + ' 23:59:59',
+        }
+      } else {
+        this.search = {
+          ...this.search,
+          accDateStart: '',
+          accDateEnd: '',
+        }
+      }
+      this.$confirm('是否导出应付总账信息?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        window.open(
+          `/api/trade-finance/profit/export?${
+            this.website.tokenHeader
+          }=${getToken()}&tradeType=${this.tradeType}&corpId=${this.search.corpId}&accDateStart=${this.search.accDateStart}&accDateEnd=${this.search.accDateEnd}`
+        );
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消' //
+        });
+      })
+    },
+  }
+};
+</script>
+
+<style scoped>
+.page-crad ::v-deep .basic-container__card {
+  height: 94.2vh;
+}
+::v-deep .el-table__expanded-cell[class*="cell"] {
+  padding: 0px;
+}
+.itemTable ::v-deep .el-table {
+  width: 100%;
+}
+</style>

+ 10 - 0
src/views/system/tenant.vue

@@ -183,6 +183,16 @@ export default {
             }]
           },
           {
+            label: "平台客户编码",
+            prop: "corpCode",
+            span: 12,
+          },
+          {
+            label: "对应平台(租户id)",
+            prop: "terrace",
+            span: 12,
+          },
+          {
             label: "系统背景",
             prop: "backgroundUrl",
             type: 'upload',