chenrui 1 år sedan
förälder
incheckning
1b229b4398

+ 11 - 0
src/config/router.config.js

@@ -3080,6 +3080,17 @@ export const asyncRouterMap = [
                   hidden: true
                   // permission: 'M_provincialWarehouseList'
                 }
+              },
+              {
+                path: 'relatedDealers/:sn/:name',
+                name: 'relatedDealersList',
+                component: () => import(/* webpackChunkName: "dealerManagement" */ '@/views/dealerManagement/provincialWarehouseManagement/relatedDealersList.vue'),
+                meta: {
+                  title: '关联经销商',
+                  icon: 'share-alt',
+                  hidden: true
+                  // permission: 'M_relatedDealersList'
+                }
               }
             ]
           },

+ 9 - 4
src/views/dealerManagement/provincialWarehouseManagement/chooseDealer.vue

@@ -46,9 +46,8 @@
     <s-table
       class="sTable fixPagination"
       ref="table"
-      style="height: 320px;"
-      :scroll="{ y: 230 }"
-      size="small"
+      :style="{ height: tableHeight+70+'px' }"
+      :scroll="{ y: tableHeight -30 }"
       :rowKey="(record) => record.dealerSn"
       rowKeyName="dealerSn"
       :columns="columns"
@@ -87,6 +86,7 @@ export default {
   },
   data () {
     return {
+      tableHeight: 0,
       spinning: false,
       queryParam: { //  查询条件
         nameLike: '',
@@ -117,7 +117,7 @@ export default {
       loadData: parameter => {
         this.disabled = true
         this.spinning = true
-        this.queryParam.serviceCenterSn = this.itemSn
+        this.queryParam.notDealerSn = this.itemSn
         this.queryParam.pageType = this.pageType
         return dealerQueryList(Object.assign(parameter, this.queryParam)).then(res => {
           let data
@@ -190,7 +190,12 @@ export default {
       this.$emit('plAdd', dealerInfoList.data)
     },
     pageInit (data) {
+      this.setTableH()
       this.$refs.table.refresh()
+    },
+    setTableH () {
+      const headHeight = this.$refs.tableSearch.offsetHeight
+      this.tableHeight = window.innerHeight - headHeight - 190
     }
   },
   watch: {

+ 7 - 92
src/views/dealerManagement/provincialWarehouseManagement/list.vue

@@ -49,9 +49,7 @@
           bordered>
           <!-- 省仓客户 -->
           <template slot="customNum" slot-scope="text, record">
-            <span @click="handleCustomer(record)" style="cursor: pointer;">
-              共有<span style="color:#39f;vertical-align:top;">{{ record.customerNum }}</span>个客户
-            </span>
+            共有<span style="color:#39f;vertical-align:top;">{{ record.customerNum }}</span>个客户
           </template>
           <!-- 省仓状态 -->
           <template slot="loginFlag" slot-scope="text, record">
@@ -78,33 +76,7 @@
         </s-table>
       </a-spin>
       <!-- 新增/编辑 -->
-      <provincial-warehouse-add-modal
-        v-drag
-        :openModal="openModal"
-        :nowData="nowData"
-        :itemId="itemId"
-        @ok="$refs.table.refresh(true)"
-        @close="closeModal" />
-      <!-- 省仓客户 -->
-      <lookUp-customers-modal
-        :itemSn="notDealerSn"
-        ref="lookUpCustomers"
-        :openModal="openCustomerModal"
-        @close="closeCustomer"></lookUp-customers-modal>
-      <!-- 关联经销商 -->
-      <a-modal
-        title="选择经销商"
-        :visible="openDealerModal"
-        :footer="null"
-        centered
-        class="lookUpCustomers-modal"
-        @cancel="closeDealerModal"
-        width="60%"
-      >
-        <div class="dealerModalCon">
-          <chooseDealer ref="dealerChoose" :itemSn="notDealerSn" @plAdd="handleAddDealer"></chooseDealer>
-        </div>
-      </a-modal>
+      <provincial-warehouse-add-modal v-drag :openModal="openModal" @ok="$refs.table.refresh(true)" @close="closeModal" />
     </a-card>
   </div>
 </template>
@@ -113,13 +85,11 @@
 import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import provincialWarehouseAddModal from './addModal.vue'
-import lookUpCustomersModal from './lookUpCustomersModal.vue'
-import chooseDealer from './chooseDealer.vue'
 import { serviceCenterList, provincialWarehouseEnable, serviceCenterBinding } from '@/api/serviceCenter'
 export default {
   name: 'DealerAccountManagementList',
   mixins: [commonMixin],
-  components: { STable, VSelect, provincialWarehouseAddModal, lookUpCustomersModal, chooseDealer },
+  components: { STable, VSelect, provincialWarehouseAddModal },
   data () {
     return {
       spinning: false,
@@ -129,7 +99,6 @@ export default {
         dealerName: '',
         enableFlag: undefined
       },
-      openDealerModal: false,
       disabled: false, //  查询、重置按钮是否可操作
       columns: [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
@@ -160,59 +129,13 @@ export default {
           return data
         })
       },
-      openModal: false, //  新增编辑  弹框
-      openDetailModal: false, // 详情  弹框
-      itemId: '', //  当前id
-      nowData: null, //  当前记录数据
-      productBrandList: [],
-      openCustomerModal: false,
-      notDealerSn: null
+      openModal: false //  新增编辑  弹框
     }
   },
   methods: {
-    // 关闭省仓客户列表弹窗
-    closeCustomer () {
-      this.notDealerSn = null
-      this.openCustomerModal = false
-      this.$refs.table.refresh()
-    },
-    // 省仓客户
-    handleCustomer (item) {
-      this.openCustomerModal = true
-      this.$refs.lookUpCustomers.pageInit({
-        itemSn: item.serviceCenterSn,
-        name: item.serviceCenterName
-      })
-    },
-    // 打开关联经销商弹窗
-    handleDealer (row) {
-      this.notDealerSn = row.serviceCenterSn
-      this.openDealerModal = true
-      this.$nextTick(() => {
-        this.$refs.dealerChoose.pageInit()
-      })
-    },
-    // 关闭关联经销商弹窗
-    closeDealerModal () {
-      this.openDealerModal = false
-      this.notDealerSn = null
-      this.$refs.dealerChoose.clearSelect()
-    },
     // 关联经销商
-    handleAddDealer (list) {
-      this.spinning = true
-      const params = {
-        serviceCenterSn: this.notDealerSn,
-        dealerList: list
-      }
-      serviceCenterBinding(params).then(res => {
-        if (res.status == 200) {
-          this.$message.success(res.message)
-        }
-        this.spinning = false
-        this.closeDealerModal()
-        this.$refs.table.refresh()
-      })
+    handleDealer (row) {
+      this.$router.push({ name: 'relatedDealersList', query: { sn: row.serviceCenterSn, name: row.serviceCenterName } })
     },
     //  重置
     resetSearchForm () {
@@ -224,21 +147,12 @@ export default {
     },
     //  新增/编辑
     handleEdit (row) {
-      // this.itemId = row ? row.id : ''
-      // this.nowData = row || null
       this.openModal = true
     },
     //  关闭弹框
     closeModal () {
-      this.itemId = ''
-      this.nowData = null
       this.openModal = false
     },
-    // 关闭详情弹框
-    closeDetailModal () {
-      this.itemId = ''
-      this.openDetailModal = false
-    },
     // 打开启用 禁用 弹窗
     openStatusModal (record) {
       const _this = this
@@ -297,6 +211,7 @@ export default {
     }
   },
   activated () {
+    console.log('111111111111111:', this.$store.state.app)
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
       this.pageInit()

+ 2 - 2
src/views/dealerManagement/provincialWarehouseManagement/lookUpCustomersModal.vue

@@ -1,5 +1,5 @@
 <template>
-  <a-modal
+  <a-drawer
     centered
     class="lookUpCustomers-modal"
     :footer="null"
@@ -78,7 +78,7 @@
         <a-button id="lookUpCustomers-modal-back" @click="isShow = false">关闭</a-button>
       </div>
     </a-spin>
-  </a-modal>
+  </a-drawer>
 </template>
 
 <script>

+ 298 - 0
src/views/dealerManagement/provincialWarehouseManagement/relatedDealersList.vue

@@ -0,0 +1,298 @@
+<template>
+  <div class="relatedDealersList-wrap">
+    <div ref="headerBar">
+      <a-page-header :ghost="false" :backIcon="false" class="header-bar">
+        <!-- 自定义的二级文字标题 -->
+        <template slot="subTitle">
+          <a id="salesEdit-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
+          <span class="subTitle-word text-overflow" style="max-width:300px;margin-left:15px;">省仓名称:{{ $route.query.name ||'--' }}</span>
+        </template>
+      </a-page-header>
+    </div>
+    <a-card size="small" :bordered="false" class="relatedDealersList-cont">
+      <a-tabs v-model="activeKeyVal">
+        <a-tab-pane key="1" tab="设置供应商">
+          <a-spin :spinning="spinning" tip="Loading...">
+            <!-- 筛选条件 -->
+            <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-model-item label="地区">
+                      <AreaList id="actualSalesReportList-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="6" :sm="24">
+                    <a-form-model-item label="区域/分区">
+                      <subarea ref="subarea" id="relatedDealersList-subarea" @change="subareaChange"></subarea>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :md="6" :sm="24">
+                    <a-form-item label="经销商名称">
+                      <a-input id="relatedDealersList-purchaseBillNo" v-model.trim="queryParam.dealerName" allowClear placeholder="请输入经销商名称"/>
+                    </a-form-item>
+                  </a-col>
+                  <a-col :md="6" :sm="24" style="margin-bottom: 10px;">
+                    <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="inventoryCheckMakeInventoryList-refresh">查询</a-button>
+                    <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="inventoryCheckMakeInventoryList-reset">重置</a-button>
+                    <a-button
+                      style="margin-left: 10px"
+                      type="primary"
+                      class="button-warning"
+                      @click="handleExport"
+                      :disabled="disabled"
+                      :loading="exportLoading"
+                    >导出</a-button>
+                  </a-col>
+                </a-row>
+              </a-form>
+            </div>
+            <div class="relatedDealersList-btn" style="margin-bottom:10px;">
+              <a-button type="primary" class="button-info" @click="openDealersModal">新增经销商</a-button>
+            </div>
+            <!-- 列表 -->
+            <s-table
+              class="sTable"
+              ref="table"
+              size="small"
+              :rowKey="(record) => record.dealerSn"
+              rowKeyName="dealerSn"
+              :columns="columns"
+              :data="loadData"
+              :defaultLoadData="false"
+              :style="{ height: tableHeight+70+'px' }"
+              :scroll="{ y: tableHeight }"
+              :rowClassName="(record, index) => record.checkProfitLossQty < 0 ? 'redBg-row':''"
+              bordered>
+              <!-- 地区 -->
+              <template slot="address" slot-scope="text, record">
+                {{ record.provinceName }}/{{ record.cityName }}/{{ record.districtName }}
+              </template>
+              <!-- 操作 -->
+              <template slot="action" slot-scope="text, record">
+                <a-button
+                  size="small"
+                  type="link"
+                  v-if="$hasPermissions('B_dealerAccount_edit')"
+                  class="button-info"
+                  @click="handleDelete(record)"
+                  id="provincialWarehouse-edit-btn">解绑</a-button>
+                <span v-else>--</span>
+              </template>
+            </s-table>
+          </a-spin>
+        </a-tab-pane>
+      </a-tabs>
+    </a-card>
+    <!-- 关联经销商 -->
+    <!-- <a-modal
+      title="选择经销商"
+      :visible="openDealerModal"
+      :footer="null"
+      centered
+      class="lookUpCustomers-modal"
+      @cancel="closeDealerModal"
+      width="60%"
+    >
+      <div class="dealerModalCon">
+        <chooseDealer ref="dealerChoose" :itemSn="$route.query.sn" @plAdd="handleAddDealer"></chooseDealer>
+      </div>
+    </a-modal> -->
+    <a-drawer
+      title="选择经销商"
+      placement="right"
+      closable
+      :visible="openDealerModal"
+      class="lookUpCustomers-modal"
+      @close="closeDealerModal"
+      width="72%"
+    >
+      <div class="dealerModalCon">
+        <chooseDealer ref="dealerChoose" :itemSn="$route.query.sn" @plAdd="handleAddDealer"></chooseDealer>
+      </div>
+    </a-drawer>
+  </div>
+</template>
+
+<script>
+import { commonMixin } from '@/utils/mixin'
+import { STable } from '@/components'
+import chooseDealer from './chooseDealer.vue'
+import subarea from '@/views/common/subarea.js'
+import AreaList from '@/views/common/areaList.js'
+import { hdExportExcel } from '@/libs/exportExcel'
+import { queryServiceCenterDealerPage, serviceCenterBinding, serviceCenterUnbinding, serviceCenterExport } from '@/api/serviceCenter'
+export default {
+  name: 'LookUpCustomers',
+  mixins: [commonMixin],
+  components: { STable, chooseDealer, subarea, AreaList },
+  data () {
+    return {
+      spinning: false,
+      isShow: this.openModal, //  是否打开弹框
+      disabled: false,
+      exportLoading: false,
+      queryParam: {
+        subareaArea: {
+          subareaSn: undefined,
+          subareaAreaSn: undefined
+        },
+        provinceSn: undefined,
+        citySn: undefined,
+        districtSn: undefined,
+        dealerName: undefined,
+        relationType: 'PURCHASE'
+      },
+      tableHeight: 0,
+      activeKeyVal: '1',
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        this.spinning = true
+        return queryServiceCenterDealerPage(Object.assign(parameter, this.queryParam)).then(res => {
+          let data
+          if (res.status == 200) {
+            data = res.data
+            const no = (data.pageNo - 1) * data.pageSize
+            for (var i = 0; i < data.list.length; i++) {
+              data.list[i].no = no + i + 1
+              data.list[i].loginFlag = Number(data.list[i].loginFlag)
+            }
+            this.disabled = false
+          }
+          this.spinning = false
+          return data
+        })
+      },
+      columns: [
+        { title: '序号', dataIndex: 'no', width: '8%', align: 'center' },
+        { title: '地区', scopedSlots: { customRender: 'address' }, width: '20%', align: 'center', ellipsis: true },
+        { title: '区域', dataIndex: 'subareaArea.subareaName', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '分区', dataIndex: 'subareaArea.subareaAreaName', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '经销商名称', dataIndex: 'dealerName', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '商户类型', dataIndex: 'dealerLevelDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '商户级别', dataIndex: 'dealerTypeDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '操作', scopedSlots: { customRender: 'action' }, width: '12%', align: 'center' }
+      ],
+      openDealerModal: false
+    }
+  },
+  methods: {
+    // 打开经销商弹窗
+    openDealersModal () {
+      this.openDealerModal = true
+      this.$nextTick(() => {
+        this.$refs.dealerChoose.pageInit()
+      })
+    },
+    // 关闭关联经销商弹窗
+    closeDealerModal () {
+      this.openDealerModal = false
+      this.$refs.dealerChoose.clearSelect()
+    },
+    // 关联经销商
+    handleAddDealer (list) {
+      this.spinning = true
+      const params = {
+        serviceCenterSn: this.$route.query.sn,
+        dealerList: list
+      }
+      serviceCenterBinding(params).then(res => {
+        if (res.status == 200) {
+          this.$message.success(res.message)
+        }
+        this.spinning = false
+        this.closeDealerModal()
+        this.$refs.table.refresh()
+      })
+    },
+    areaChange (val) {
+      this.queryParam.provinceSn = val[0] ? val[0] : ''
+      this.queryParam.citySn = val[1] ? val[1] : ''
+      this.queryParam.districtSn = val[2] ? val[2] : ''
+    },
+    subareaChange (val) {
+      this.queryParam.subareaArea.subareaSn = val[0] ? val[0] : undefined
+      this.queryParam.subareaArea.subareaAreaSn = val[1] ? val[1] : undefined
+    },
+    // 解绑
+    handleDelete (row) {
+      const ajaxData = {
+        serviceCenterSn: this.$route.query.sn,
+        dealerSn: row.dealerSn
+      }
+      this.spinning = true
+      serviceCenterUnbinding(ajaxData).then(res => {
+        if (res.status == 200) {
+          this.$message.success('解绑成功')
+          this.$refs.table.refresh(true)
+        }
+        this.spinning = false
+      })
+    },
+    //  重置
+    resetSearchForm () {
+      this.queryParam = {
+        subareaArea: {
+          subareaSn: undefined,
+          subareaAreaSn: undefined
+        },
+        provinceSn: undefined,
+        citySn: undefined,
+        districtSn: undefined,
+        dealerName: undefined,
+        serviceCenterSn: this.$route.query.sn,
+        relationType: 'PURCHASE'
+      }
+      this.$refs.areaList.clearData()
+      this.$refs.subarea.clearData()
+      this.$refs.table.refresh()
+    },
+    //  导出
+    handleExport () {
+      const _this = this
+      _this.exportLoading = true
+      _this.spinning = true
+      _this.queryParam.serviceCenterName = _this.serviceCenterName
+      hdExportExcel(serviceCenterExport, _this.queryParam, '省仓客户列表导出', function () {
+        _this.exportLoading = false
+        _this.spinning = false
+      })
+    },
+    //  返回
+    handleBack () {
+      this.$router.go(-1)
+    },
+    pageInit () {
+      const _this = this
+      this.$nextTick(() => { // 页面渲染完成后的回调
+        _this.setTableH()
+      })
+      _this.resetSearchForm()
+    },
+    setTableH () {
+      const headHeight = this.$refs.headerBar.offsetHeight
+      this.tableHeight = window.innerHeight - headHeight - 340
+    }
+  },
+  watch: {
+    '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
+      this.setTableH()
+    }
+  },
+  activated () {
+    this.pageInit()
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .relatedDealersList-wrap{
+    .table-operator{
+    text-align:right;
+    }
+  }
+</style>