chenrui 4 년 전
부모
커밋
f1c5416adf
2개의 변경된 파일644개의 추가작업 그리고 98개의 파일을 삭제
  1. 318 49
      src/views/reportData/salesAmountReport/list.vue
  2. 326 49
      src/views/reportData/salesSlipReport/list.vue

+ 318 - 49
src/views/reportData/salesAmountReport/list.vue

@@ -1,31 +1,67 @@
 <template>
-  <a-card size="small" :bordered="false" class="provinceTypeSalesDetailsList-wrap">
+  <a-card size="small" :bordered="false" class="salesAmountReportList-wrap">
     <!-- 搜索条件 -->
     <div class="table-page-search-wrapper">
       <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
         <a-row :gutter="15">
           <a-col :md="6" :sm="24">
-            <a-form-item label="创建时间">
+            <a-form-item label="销售日期">
               <rangeDate ref="rangeDate" @change="dateChange" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="24">
-            <a-form-item label="区域">
-              <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
-                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
-              </a-select>
+            <a-form-item label="客户名称">
+              <a-input id="salesAmountReportList-allocateTypeSn" v-model.trim="queryParam.allocateTypeSn" allowClear placeholder="请输入客户名称"/>
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="24">
-            <a-form-item label="省份">
-              <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择省份" allowClear >
+            <a-form-item label="客户类型">
+              <a-select id="salesAmountReportList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择客户类型" allowClear >
                 <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
               </a-select>
             </a-form-item>
           </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <subarea id="salesAmountReportList-allocateTypeSn" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="12" :sm="24">
+              <a-row>
+                <a-form-item label="地区">
+                  <a-col span="7">
+                    <a-form-item prop="dealerProvinceSn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerProvinceSn" @change="getCityList" placeholder="请选择省">
+                        <a-select-option v-for="item in addrProvinceList" :value="item.id" :key="item.id + 'a'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCitySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCitySn" @change="getAreaList" placeholder="请选择市">
+                        <a-select-option v-for="item in addrCityList" :value="item.id" :key="item.id + 'b'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCountySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCountySn" placeholder="请选择区/县">
+                        <a-select-option v-for="item in addrDistrictList" :value="item.id" :key="item.id + 'c'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                </a-form-item>
+              </a-row>
+            </a-col>
+          </template>
           <a-col :md="6" :sm="24">
-            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="provinceTypeSalesDetailsList-refresh">查询</a-button>
-            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="provinceTypeSalesDetailsList-reset">重置</a-button>
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="salesAmountReportList-refresh">查询</a-button>
+            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="salesAmountReportList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
           </a-col>
         </a-row>
       </a-form>
@@ -34,11 +70,11 @@
     <s-table
       class="sTable"
       ref="table"
-      size="defalut"
+      size="small"
       :rowKey="(record) => record.id"
       :columns="columns"
       :data="loadData"
-      :scroll="{ x: 3650 }"
+      :scroll="{ x: 3120 }"
       bordered>
     </s-table>
   </a-card>
@@ -48,10 +84,12 @@
 import { STable, VSelect } from '@/components'
 import reportData from '@/libs/reportData'
 import rangeDate from '@/views/common/rangeDate.vue'
+import subarea from '@/views/common/subarea.js'
+import { getArea } from '@/api/data'
 // import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
 // import { allocateTypeAllList } from '@/api/allocateType'
 export default {
-  components: { STable, VSelect, rangeDate },
+  components: { STable, VSelect, rangeDate, subarea },
   data () {
     return {
       advanced: false, // 高级搜索 展开/关闭
@@ -66,42 +104,176 @@ export default {
       },
       disabled: false, //  查询、重置按钮是否可操作
       exportLoading: false,
-      reportData: reportData.reportDataList,
       columns: [
         { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
-        { title: '区域', dataIndex: 'area', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '省份', dataIndex: 'province', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '箭牌滤清器', dataIndex: 'targetName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '冠牌滤清器', dataIndex: 'dealerLevelDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '滤清器合计', dataIndex: 'totalQty', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '箭牌雨刮片', dataIndex: 'totalCost', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '冠牌雨刮片', dataIndex: 'totalPrice', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '雨刮片合计', dataIndex: 'auditTime', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '箭牌刹车片', dataIndex: 'allocateTypeName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '箭牌感应线', dataIndex: 'stateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '冠牌刹车片', dataIndex: 'printStateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: 'TBU刹车片', dataIndex: 'printCount', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: 'TBU刹车油', dataIndex: 'printCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: 'TBU感应线', dataIndex: 'printCsounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '刹车片合计', dataIndex: 'printdCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '德路斯润滑油', dataIndex: 'prfintCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '德路斯刹车油', dataIndex: 'printCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '德路斯变速箱油', dataIndex: 'phrintCounts', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '德路斯合计', dataIndex: 'printCsountss', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '稳升点火线圈', dataIndex: 'prinftCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '稳升灯泡', dataIndex: 'prisntCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '稳升合计', dataIndex: 'prinxtCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '汇箭', dataIndex: 'printCocunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '布瑞斯', dataIndex: 'printCvounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '箭牌喇叭', dataIndex: 'printCgounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '品牌合计', dataIndex: 'printCouhnts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: 'NGK', dataIndex: 'printCoujnts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '品牌+NGK总合计', dataIndex: 'printCournts', width: 150, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+        { title: '区域', dataIndex: 'area', width: 220, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '省份', dataIndex: 'provinceName', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'custName', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户类型', dataIndex: 'custType', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '品牌',
+          align: 'center',
+          children: [
+            {
+              title: '箭牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp1',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp2',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '喇叭',
+                  dataIndex: 'pp3',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp4',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '感应线',
+                  dataIndex: 'pp5',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '冠牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp6',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp7',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp8',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '汇箭',
+              dataIndex: 'pp9',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德路斯',
+              dataIndex: 'pp10',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '稳升',
+              dataIndex: 'pp11',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: 'TBU',
+              dataIndex: 'pp12',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '代理品牌',
+          align: 'center',
+          children: [
+            {
+              title: 'NGK',
+              dataIndex: 'pp13',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '飞利浦',
+              dataIndex: 'pp14',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '车仆',
+              dataIndex: 'pp15',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '瓦尔塔',
+              dataIndex: 'pp16',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '雷贝斯托',
+              dataIndex: 'pp17',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德尔福',
+              dataIndex: 'pp18',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '巴诺德',
+              dataIndex: 'pp19',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '实际销售合计金额', width: 200, dataIndex: 'totalAmount', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } }
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
-        this.disabled = true
-        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        // this.disabled = true
+        // if (this.tableHeight == 0) {
+        //   this.tableHeight = window.innerHeight - 380
+        // }
+        // const paramsPage = Object.assign(this.queryParam, { pageNo: parameter.pageNo, pageSize: parameter.pageSize }) //  有分页
+        // const params = Object.assign(parameter, this.queryParam) //  无分页
+        // return oosBuyerList(params).then(res => {
         //   const data = res.data
         //   const no = (data.pageNo - 1) * data.pageSize
         //   for (var i = 0; i < data.list.length; i++) {
@@ -115,8 +287,59 @@ export default {
           const data = {
             pageNo: 1,
             pageSize: 10,
-            list: reportData.reportDataList,
-            count: 10
+            list: [{
+              area: 'A区',
+              provinceName: '广东省',
+              custName: '箭冠汽配佛山白坭店',
+              custType: '市级经销商',
+              pp1: '0.00',
+              pp2: '0.00',
+              pp3: '0.00',
+              pp4: '0.00',
+              pp5: '0.00',
+              pp6: '0.00',
+              pp7: '0.00',
+              pp8: '0.00',
+              pp9: '0.00',
+              pp10: '0.00',
+              pp11: '0.00',
+              pp12: '0.00',
+              pp13: '92.50',
+              pp14: '0.00',
+              pp15: '0.00',
+              pp16: '0.00',
+              pp17: '0.00',
+              pp18: '0.00',
+              pp19: '0.00',
+              totalAmount: '92.50'
+            },
+            {
+              area: '合计:',
+              provinceName: '',
+              custName: '',
+              custType: '',
+              pp1: '0.00',
+              pp2: '0.00',
+              pp3: '0.00',
+              pp4: '0.00',
+              pp5: '0.00',
+              pp6: '0.00',
+              pp7: '0.00',
+              pp8: '0.00',
+              pp9: '0.00',
+              pp10: '0.00',
+              pp11: '0.00',
+              pp12: '0.00',
+              pp13: '92.50',
+              pp14: '0.00',
+              pp15: '0.00',
+              pp16: '0.00',
+              pp17: '0.00',
+              pp18: '0.00',
+              pp19: '0.00',
+              totalAmount: '92.50'
+            }],
+            count: 1
           }
           for (var i = 0; i < data.list.length; i++) {
             data.list[i].no = i + 1
@@ -125,8 +348,10 @@ export default {
           resolve(data)
         })
       },
-      allocateTypeList: [], //  调拨类型
-      openModal: false //  新增编辑  弹框
+      addrProvinceList: [], //  省下拉
+      addrCityList: [], //  市下拉
+      addrDistrictList: [], //  区下拉
+      allocateTypeList: [] //  调拨类型
     }
   },
   methods: {
@@ -145,10 +370,54 @@ export default {
       this.queryParam.state = undefined
       this.queryParam.allocateNo = ''
       this.$refs.table.refresh(true)
+    },
+    // 获取城市列表
+    getCityList (val) {
+      this.addrCityList = []
+      this.addrDistrictList = []
+      this.queryParam.dealerCitySn = undefined
+      this.queryParam.dealerCountySn = undefined
+      this.getArea('city', val)
+    },
+    // 获取区县列表
+    getAreaList (val) {
+      this.addrDistrictList = []
+      this.queryParam.dealerCountySn = undefined
+      this.getArea('district', val)
+    },
+    //  省/市/区
+    getArea (leve, sn) {
+      let params
+      if (leve == 'province') {
+        params = { type: '2' }
+      } else {
+        params = { parentId: sn, type: leve == 'city' ? '3' : '4' }
+      }
+      getArea(params).then(res => {
+        if (res.status == 200) {
+          if (leve == 'province') {
+            this.addrProvinceList = res.data || []
+          } else if (leve == 'city') {
+            this.addrCityList = res.data || []
+          } else if (leve == 'district') {
+            this.addrDistrictList = res.data || []
+          }
+        } else {
+          if (leve == 'province') {
+            this.addrProvinceList = []
+          } else if (leve == 'city') {
+            this.addrCityList = []
+          } else if (leve == 'district') {
+            this.addrDistrictList = []
+          }
+        }
+      })
     }
   },
   beforeRouteEnter (to, from, next) {
-    next(vm => {})
+    next(vm => {
+      vm.getArea('province')
+    })
   }
 }
 </script>

+ 326 - 49
src/views/reportData/salesSlipReport/list.vue

@@ -1,31 +1,72 @@
 <template>
-  <a-card size="small" :bordered="false" class="provinceTypeSalesDetailsList-wrap">
+  <a-card size="small" :bordered="false" class="salesSlipReportList-wrap">
     <!-- 搜索条件 -->
     <div class="table-page-search-wrapper">
       <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
         <a-row :gutter="15">
           <a-col :md="6" :sm="24">
-            <a-form-item label="创建时间">
+            <a-form-item label="销售日期">
               <rangeDate ref="rangeDate" @change="dateChange" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="24">
-            <a-form-item label="区域">
-              <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
-                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
-              </a-select>
+            <a-form-item label="客户名称">
+              <a-input id="salesSlipReportList-allocateTypeSn" v-model.trim="queryParam.allocateTypeSn" allowClear placeholder="请输入客户名称"/>
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="24">
-            <a-form-item label="省份">
-              <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择省份" allowClear >
+            <a-form-item label="客户类型">
+              <a-select id="salesSlipReportList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择客户类型" allowClear >
                 <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
               </a-select>
             </a-form-item>
           </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="销售单号">
+                <a-input id="salesSlipReportList-allocateTypeSn" v-model.trim="queryParam.allocateTypeSn" allowClear placeholder="请输入销售单号"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <subarea id="salesSlipReportList-allocateTypeSn" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="12" :sm="24">
+              <a-row>
+                <a-form-item label="地区">
+                  <a-col span="7">
+                    <a-form-item prop="dealerProvinceSn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerProvinceSn" @change="getCityList" placeholder="请选择省">
+                        <a-select-option v-for="item in addrProvinceList" :value="item.id" :key="item.id + 'a'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCitySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCitySn" @change="getAreaList" placeholder="请选择市">
+                        <a-select-option v-for="item in addrCityList" :value="item.id" :key="item.id + 'b'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCountySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCountySn" placeholder="请选择区/县">
+                        <a-select-option v-for="item in addrDistrictList" :value="item.id" :key="item.id + 'c'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                </a-form-item>
+              </a-row>
+            </a-col>
+          </template>
           <a-col :md="6" :sm="24">
-            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="provinceTypeSalesDetailsList-refresh">查询</a-button>
-            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="provinceTypeSalesDetailsList-reset">重置</a-button>
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="salesSlipReportList-refresh">查询</a-button>
+            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="salesSlipReportList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
           </a-col>
         </a-row>
       </a-form>
@@ -34,11 +75,11 @@
     <s-table
       class="sTable"
       ref="table"
-      size="defalut"
+      size="small"
       :rowKey="(record) => record.id"
       :columns="columns"
       :data="loadData"
-      :scroll="{ x: 3650 }"
+      :scroll="{ x: 3120 }"
       bordered>
     </s-table>
   </a-card>
@@ -48,10 +89,12 @@
 import { STable, VSelect } from '@/components'
 import reportData from '@/libs/reportData'
 import rangeDate from '@/views/common/rangeDate.vue'
+import subarea from '@/views/common/subarea.js'
+import { getArea } from '@/api/data'
 // import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
 // import { allocateTypeAllList } from '@/api/allocateType'
 export default {
-  components: { STable, VSelect, rangeDate },
+  components: { STable, VSelect, rangeDate, subarea },
   data () {
     return {
       advanced: false, // 高级搜索 展开/关闭
@@ -66,42 +109,177 @@ export default {
       },
       disabled: false, //  查询、重置按钮是否可操作
       exportLoading: false,
-      reportData: reportData.reportDataList,
       columns: [
         { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
-        { title: '区域', dataIndex: 'area', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '省份', dataIndex: 'province', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '箭牌滤清器', dataIndex: 'targetName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '冠牌滤清器', dataIndex: 'dealerLevelDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '滤清器合计', dataIndex: 'totalQty', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '箭牌雨刮片', dataIndex: 'totalCost', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '冠牌雨刮片', dataIndex: 'totalPrice', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '雨刮片合计', dataIndex: 'auditTime', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '箭牌刹车片', dataIndex: 'allocateTypeName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '箭牌感应线', dataIndex: 'stateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '冠牌刹车片', dataIndex: 'printStateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: 'TBU刹车片', dataIndex: 'printCount', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: 'TBU刹车油', dataIndex: 'printCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: 'TBU感应线', dataIndex: 'printCsounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '刹车片合计', dataIndex: 'printdCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '德路斯润滑油', dataIndex: 'prfintCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '德路斯刹车油', dataIndex: 'printCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '德路斯变速箱油', dataIndex: 'phrintCounts', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '德路斯合计', dataIndex: 'printCsountss', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '稳升点火线圈', dataIndex: 'prinftCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '稳升灯泡', dataIndex: 'prisntCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '稳升合计', dataIndex: 'prinxtCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '汇箭', dataIndex: 'printCocunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '布瑞斯', dataIndex: 'printCvounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '箭牌喇叭', dataIndex: 'printCgounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '品牌合计', dataIndex: 'printCouhnts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: 'NGK', dataIndex: 'printCoujnts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '品牌+NGK总合计', dataIndex: 'printCournts', width: 150, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+        { title: '区域', dataIndex: 'area', width: 220, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '销售单号', dataIndex: 'salesBillNo', width: 220, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '省份', dataIndex: 'provinceName', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'custName', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户类型', dataIndex: 'custType', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '品牌',
+          align: 'center',
+          children: [
+            {
+              title: '箭牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp1',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp2',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '喇叭',
+                  dataIndex: 'pp3',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp4',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '感应线',
+                  dataIndex: 'pp5',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '冠牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp6',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp7',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp8',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '汇箭',
+              dataIndex: 'pp9',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德路斯',
+              dataIndex: 'pp10',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '稳升',
+              dataIndex: 'pp11',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: 'TBU',
+              dataIndex: 'pp12',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '代理品牌',
+          align: 'center',
+          children: [
+            {
+              title: 'NGK',
+              dataIndex: 'pp13',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '飞利浦',
+              dataIndex: 'pp14',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '车仆',
+              dataIndex: 'pp15',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '瓦尔塔',
+              dataIndex: 'pp16',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '雷贝斯托',
+              dataIndex: 'pp17',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德尔福',
+              dataIndex: 'pp18',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '巴诺德',
+              dataIndex: 'pp19',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '实际销售合计金额', width: 200, dataIndex: 'totalAmount', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } }
       ],
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
-        this.disabled = true
-        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        // this.disabled = true
+        // if (this.tableHeight == 0) {
+        //   this.tableHeight = window.innerHeight - 380
+        // }
+        // const paramsPage = Object.assign(this.queryParam, { pageNo: parameter.pageNo, pageSize: parameter.pageSize }) //  有分页
+        // const params = Object.assign(parameter, this.queryParam) //  无分页
+        // return oosBuyerList(params).then(res => {
         //   const data = res.data
         //   const no = (data.pageNo - 1) * data.pageSize
         //   for (var i = 0; i < data.list.length; i++) {
@@ -115,8 +293,61 @@ export default {
           const data = {
             pageNo: 1,
             pageSize: 10,
-            list: reportData.reportDataList,
-            count: 10
+            list: [{
+              area: 'A区',
+              salesBillNo: 'XS2106020000001',
+              provinceName: '广东省',
+              custName: '箭冠汽配佛山白坭店',
+              custType: '市级经销商',
+              pp1: '0.00',
+              pp2: '0.00',
+              pp3: '0.00',
+              pp4: '0.00',
+              pp5: '0.00',
+              pp6: '0.00',
+              pp7: '0.00',
+              pp8: '0.00',
+              pp9: '0.00',
+              pp10: '0.00',
+              pp11: '0.00',
+              pp12: '0.00',
+              pp13: '92.50',
+              pp14: '0.00',
+              pp15: '0.00',
+              pp16: '0.00',
+              pp17: '0.00',
+              pp18: '0.00',
+              pp19: '0.00',
+              totalAmount: '92.50'
+            },
+            {
+              area: '合计:',
+              salesBillNo: '',
+              provinceName: '',
+              custName: '',
+              custType: '',
+              pp1: '0.00',
+              pp2: '0.00',
+              pp3: '0.00',
+              pp4: '0.00',
+              pp5: '0.00',
+              pp6: '0.00',
+              pp7: '0.00',
+              pp8: '0.00',
+              pp9: '0.00',
+              pp10: '0.00',
+              pp11: '0.00',
+              pp12: '0.00',
+              pp13: '92.50',
+              pp14: '0.00',
+              pp15: '0.00',
+              pp16: '0.00',
+              pp17: '0.00',
+              pp18: '0.00',
+              pp19: '0.00',
+              totalAmount: '92.50'
+            }],
+            count: 1
           }
           for (var i = 0; i < data.list.length; i++) {
             data.list[i].no = i + 1
@@ -125,8 +356,10 @@ export default {
           resolve(data)
         })
       },
-      allocateTypeList: [], //  调拨类型
-      openModal: false //  新增编辑  弹框
+      addrProvinceList: [], //  省下拉
+      addrCityList: [], //  市下拉
+      addrDistrictList: [], //  区下拉
+      allocateTypeList: [] //  调拨类型
     }
   },
   methods: {
@@ -145,10 +378,54 @@ export default {
       this.queryParam.state = undefined
       this.queryParam.allocateNo = ''
       this.$refs.table.refresh(true)
+    },
+    // 获取城市列表
+    getCityList (val) {
+      this.addrCityList = []
+      this.addrDistrictList = []
+      this.queryParam.dealerCitySn = undefined
+      this.queryParam.dealerCountySn = undefined
+      this.getArea('city', val)
+    },
+    // 获取区县列表
+    getAreaList (val) {
+      this.addrDistrictList = []
+      this.queryParam.dealerCountySn = undefined
+      this.getArea('district', val)
+    },
+    //  省/市/区
+    getArea (leve, sn) {
+      let params
+      if (leve == 'province') {
+        params = { type: '2' }
+      } else {
+        params = { parentId: sn, type: leve == 'city' ? '3' : '4' }
+      }
+      getArea(params).then(res => {
+        if (res.status == 200) {
+          if (leve == 'province') {
+            this.addrProvinceList = res.data || []
+          } else if (leve == 'city') {
+            this.addrCityList = res.data || []
+          } else if (leve == 'district') {
+            this.addrDistrictList = res.data || []
+          }
+        } else {
+          if (leve == 'province') {
+            this.addrProvinceList = []
+          } else if (leve == 'city') {
+            this.addrCityList = []
+          } else if (leve == 'district') {
+            this.addrDistrictList = []
+          }
+        }
+      })
     }
   },
   beforeRouteEnter (to, from, next) {
-    next(vm => {})
+    next(vm => {
+      vm.getArea('province')
+    })
   }
 }
 </script>