|
@@ -1,425 +0,0 @@
|
|
|
-<template>
|
|
|
- <div>
|
|
|
- <a-card size="small" :bordered="false" class="feeDetailList-wrap searchBoxNormal">
|
|
|
- <!-- 搜索条件 -->
|
|
|
- <div class="table-page-search-wrapper" ref="tableSearch">
|
|
|
- <a-form-model
|
|
|
- id="feeDetailList-form"
|
|
|
- ref="ruleForm"
|
|
|
- class="form-model-con"
|
|
|
- layout="inline"
|
|
|
- :rules="rules"
|
|
|
- :model="queryParam">
|
|
|
- <a-row :gutter="15">
|
|
|
- <a-col :md="6" :sm="24">
|
|
|
- <a-form-model-item label="统计月份" prop="time">
|
|
|
- <monthDate
|
|
|
- ref="monthDate"
|
|
|
- id="monthQueryList-time"
|
|
|
- :value="queryParam.monthVal"
|
|
|
- @change="monthChange"></monthDate>
|
|
|
- </a-form-model-item>
|
|
|
- </a-col>
|
|
|
- <a-col :md="6" :sm="24">
|
|
|
- <a-form-model-item label="地区">
|
|
|
- <AreaList id="feeDetailList-areaList" changeOnSelect ref="areaList" @change="areaChange" defValKey="id"></AreaList>
|
|
|
- </a-form-model-item>
|
|
|
- </a-col>
|
|
|
- <a-col :md="6" :sm="24">
|
|
|
- <a-form-item label="区域/分区">
|
|
|
- <subarea id="feeDetailList-subarea" ref="subarea" @change="subareaChange"></subarea>
|
|
|
- </a-form-item>
|
|
|
- </a-col>
|
|
|
- <template v-if="advanced">
|
|
|
- <a-col :md="6" :sm="24">
|
|
|
- <a-form-model-item label="客户名称">
|
|
|
- <dealerSubareaScopeList ref="dealerSubareaScopeList" id="feeDetailList-dealerName" @change="custChange" />
|
|
|
- </a-form-model-item>
|
|
|
- </a-col>
|
|
|
- <a-col :md="6" :sm="24">
|
|
|
- <a-form-model-item label="商户级别">
|
|
|
- <v-select
|
|
|
- v-model="queryParam.dealerLevel"
|
|
|
- ref="dealerLevel"
|
|
|
- id="feeDetailList-dealerLevel"
|
|
|
- code="DEALER_LEVEL"
|
|
|
- placeholder="请选择客户级别"
|
|
|
- allowClear></v-select>
|
|
|
- </a-form-model-item>
|
|
|
- </a-col>
|
|
|
- <a-col :md="6" :sm="24">
|
|
|
- <a-form-model-item label="轮胎省仓">
|
|
|
- <v-select
|
|
|
- v-model="queryParam.dealerLevel"
|
|
|
- ref="dealerLevel"
|
|
|
- id="feeDetailList-dealerLevel"
|
|
|
- code="DEALER_LEVEL"
|
|
|
- placeholder="请选择轮胎省仓"
|
|
|
- allowClear></v-select>
|
|
|
- </a-form-model-item>
|
|
|
- </a-col>
|
|
|
- </template>
|
|
|
- <a-col :md="6" :sm="24">
|
|
|
- <a-button
|
|
|
- type="primary"
|
|
|
- @click="handleSearch"
|
|
|
- :disabled="disabled"
|
|
|
- id="feeDetailList-refresh">查询</a-button>
|
|
|
- <a-button
|
|
|
- style="margin-left: 8px"
|
|
|
- @click="resetSearchForm"
|
|
|
- :disabled="disabled"
|
|
|
- id="feeDetailList-reset">重置</a-button>
|
|
|
- <a-button
|
|
|
- style="margin-left: 10px"
|
|
|
- type="primary"
|
|
|
- class="button-warning"
|
|
|
- @click="handleExport(0)"
|
|
|
- :disabled="disabled"
|
|
|
- :loading="exportLoading"
|
|
|
- v-if="$hasPermissions('B_tireReportExport')"
|
|
|
- id="feeDetailList-export">导出</a-button>
|
|
|
- <a @click="advanced=!advanced" style="margin-left: 5px">
|
|
|
- {{ advanced ? '收起' : '展开' }}
|
|
|
- <a-icon :type="advanced ? 'up' : 'down'" />
|
|
|
- </a>
|
|
|
- </a-col>
|
|
|
- </a-row>
|
|
|
- </a-form-model>
|
|
|
- </div>
|
|
|
- </a-card>
|
|
|
- <a-card size="small" :bordered="false">
|
|
|
- <a-spin :spinning="spinning" tip="Loading...">
|
|
|
- <!-- 列表 -->
|
|
|
- <s-table
|
|
|
- class="sTable fixPagination"
|
|
|
- ref="table"
|
|
|
- size="small"
|
|
|
- :rowKey="(record) => record.no"
|
|
|
- rowKeyName="no"
|
|
|
- :style="{ height: tableHeight+70+'px' }"
|
|
|
- :columns="columns"
|
|
|
- :data="loadData"
|
|
|
- :scroll="{x:2500, y: tableHeight-120}"
|
|
|
- :defaultLoadData="false"
|
|
|
- bordered>
|
|
|
- <template slot="addressInfo" slot-scope="text, record">
|
|
|
- {{ record.dealerEntity.provinceName }}{{ '/'+record.dealerEntity.cityName }}{{ '/'+record.dealerEntity.districtName }}
|
|
|
- </template>
|
|
|
- <!-- 操作 -->
|
|
|
- <template slot="action" slot-scope="text, record">
|
|
|
- <a-button
|
|
|
- v-if="$hasPermissions('B_outDetailShow')"
|
|
|
- size="small"
|
|
|
- type="link"
|
|
|
- class="button-warning"
|
|
|
- @click="handleOutDetail(record)"
|
|
|
- id="feeDetailList-outDetail">出库明细</a-button>
|
|
|
- <span v-else>--</span>
|
|
|
- </template>
|
|
|
- <template slot="footer">
|
|
|
- <a-row :gutter="15">
|
|
|
- <a-col :md="4" :sm="24" v-if="$hasPermissions('M_feeDetailList_salesPrice')">平台出库数量:{{ (totalData && (totalData.putAmount || totalData.putAmount==0)) ? toThousands(totalData.putAmount): '--' }}</a-col>
|
|
|
- <a-col :md="4" :sm="24">省仓出库加盟商:{{ (totalData && (totalData.returnAmount || totalData.returnAmount==0)) ? toThousands(totalData.returnAmount): '--' }}</a-col>
|
|
|
- <a-col :md="4" :sm="24">运费补贴:{{ (totalData && (totalData.returnAmount || totalData.returnAmount==0)) ? toThousands(totalData.returnAmount): '--' }}</a-col>
|
|
|
- <a-col :md="4" :sm="24">积分合计:{{ (totalData && (totalData.returnAmount || totalData.returnAmount==0)) ? toThousands(totalData.returnAmount): '--' }}</a-col>
|
|
|
- <a-col :md="4" :sm="24">积分工厂承担60%:{{ (totalData && (totalData.returnAmount || totalData.returnAmount==0)) ? toThousands(totalData.returnAmount): '--' }}</a-col>
|
|
|
- <a-col :md="4" :sm="24">积分供应链管理部承担40%:{{ (totalData && (totalData.returnAmount || totalData.returnAmount==0)) ? toThousands(totalData.returnAmount): '--' }}</a-col>
|
|
|
- <a-col :md="4" :sm="24">开单金额:{{ (totalData && (totalData.returnAmount || totalData.returnAmount==0)) ? toThousands(totalData.returnAmount): '--' }}</a-col>
|
|
|
- <a-col :md="4" :sm="24">平台服务费:{{ (totalData && (totalData.returnAmount || totalData.returnAmount==0)) ? toThousands(totalData.returnAmount): '--' }}</a-col>
|
|
|
- <a-col :md="4" :sm="24">省仓服务费:{{ (totalData && (totalData.returnAmount || totalData.returnAmount==0)) ? toThousands(totalData.returnAmount): '--' }}</a-col>
|
|
|
- </a-row>
|
|
|
- </template>
|
|
|
- </s-table>
|
|
|
- </a-spin>
|
|
|
- </a-card>
|
|
|
- <!-- 导出提示框 -->
|
|
|
- <reportModal :visible="showExport" @close="showExport=false"></reportModal>
|
|
|
- <!-- 出库明细弹窗 -->
|
|
|
- <outDetailModal ref="outDetail" :openModal="showOutDetail" @close="showOutDetail=false"></outDetailModal>
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-import { commonMixin } from '@/utils/mixin'
|
|
|
-import { hdExportExcel } from '@/libs/exportExcel'
|
|
|
-// 组件
|
|
|
-import { STable, VSelect } from '@/components'
|
|
|
-import monthDate from '@/views/common/monthDate.vue'
|
|
|
-import subarea from '@/views/common/subarea.js'
|
|
|
-import AreaList from '@/views/common/areaList.js'
|
|
|
-import BizUser from '@/views/common/bizUser.js'
|
|
|
-import reportModal from '@/views/common/reportModal.vue'
|
|
|
-// import outDetailModal from './outDetailModal'
|
|
|
-import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
|
|
|
-// 接口
|
|
|
-import { queryTireDetailCount, tireListExport, tireReportDetailList, tireOutDetailListExport } from '@/api/reportData'
|
|
|
-export default {
|
|
|
- name: 'FeeDetailList',
|
|
|
- mixins: [commonMixin],
|
|
|
- components: { STable, VSelect, monthDate, subarea, AreaList, BizUser, dealerSubareaScopeList, reportModal },
|
|
|
- data () {
|
|
|
- return {
|
|
|
- spinning: false,
|
|
|
- disabled: false, // 查询、重置按钮是否可操作
|
|
|
- advanced: true, // 高级搜索 展开/关闭
|
|
|
- tableHeight: 0, // 表格高度
|
|
|
- exportLoading: false, // 导出按钮加载状态
|
|
|
- showExport: false, // 导出弹窗
|
|
|
- // 查询条件
|
|
|
- queryParam: {
|
|
|
- time: [], // 日期
|
|
|
- bizBeginDate: '', // 开始时间
|
|
|
- bizEndDate: '', // 结束时间
|
|
|
- provinceSn: undefined, // 省
|
|
|
- citySn: undefined, // 市
|
|
|
- districtSn: undefined, // 区
|
|
|
- dealerLevel: undefined, // 客户等级
|
|
|
- dealerName: undefined, // 客户名称
|
|
|
- dealerSn: undefined, // 客户sn
|
|
|
- subareaArea: {
|
|
|
- subareaSn: undefined, // 区域
|
|
|
- subareaAreaSn: undefined, // 分区
|
|
|
- bizUserSn: undefined // 区域负责人
|
|
|
- },
|
|
|
- productWord: '', // 产品编码/原厂编码
|
|
|
- productName: '' // 产品名称
|
|
|
- },
|
|
|
- totalData: null, // 合计
|
|
|
- showOutDetail: false, // 出库明细弹窗
|
|
|
- rules: {
|
|
|
- 'time': [{ required: true, message: '请选择日期', trigger: 'change' }]
|
|
|
- },
|
|
|
- // 加载数据方法 必须为 Promise 对象
|
|
|
- loadData: parameter => {
|
|
|
- this.disabled = true
|
|
|
- this.spinning = true
|
|
|
- const oldParams = Object.assign(parameter, this.queryParam)
|
|
|
- const params = JSON.parse(JSON.stringify(oldParams))
|
|
|
- delete params.time
|
|
|
- // 获取列表数据 有分页
|
|
|
- return tireReportDetailList(params).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
|
|
|
- }
|
|
|
- this.disabled = false
|
|
|
- // 获取统计数据
|
|
|
- this.getCount(params)
|
|
|
- }
|
|
|
- this.spinning = false
|
|
|
- return data
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- watch: {
|
|
|
- advanced (newValue, oldValue) {
|
|
|
- const _this = this
|
|
|
- this.$nextTick(() => { // 页面渲染完成后的回调
|
|
|
- _this.setTableH()
|
|
|
- })
|
|
|
- },
|
|
|
- '$store.state.app.winHeight' (newValue, oldValue) { // 窗口变更时,需同时更改表格高度
|
|
|
- this.setTableH()
|
|
|
- }
|
|
|
- },
|
|
|
- computed: {
|
|
|
- columns () {
|
|
|
- const _this = this
|
|
|
- const arr = [
|
|
|
- { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
|
|
|
- { title: '地区', scopedSlots: { customRender: 'addressInfo' }, width: '15%', align: 'center' },
|
|
|
- { title: '区域', dataIndex: 'subareaArea.subareaName', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '客户名称', dataIndex: 'dealerEntity.dealerName', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '客户级别', dataIndex: 'dealerEntity.dealerLevelDictValue', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '轮胎省仓', dataIndex: 'dealerEntity.dealerLevelDictValue', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '产品编码', dataIndex: 'productEntity.code', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '原厂编码', dataIndex: 'productEntity.code', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '产品尺寸', dataIndex: 'productEntity.code', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '产品名称', dataIndex: 'productEntity.code', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '积分值', dataIndex: 'productEntity.code', width: '14%', align: 'center', customRender: function (text) { return text || '--' } },
|
|
|
- { title: '平台出库数量', dataIndex: 'crossRegionQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: '省仓出库加盟商数量', dataIndex: 'putQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: <a-tooltip placement='top' title='省仓出库加盟商数量*5'>运费补贴 <a-icon type="question-circle" /></a-tooltip>, dataIndex: 'rptDealerStockVO.totalStockQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: <a-tooltip placement='top' title='非轮胎省仓,积分合计=平台出库数量*积分值;是轮胎省仓,积分合计=省仓出给加盟商数量*积分值'>积分合计 <a-icon type="question-circle" /></a-tooltip>, dataIndex: 'outQtyDealer', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: '积分工厂承担60%', dataIndex: 'returnQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: '积分供应链管理部承担40%', dataIndex: 'returnQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: '开单金额', dataIndex: 'returnQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: '平台服务费率', dataIndex: 'returnQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: '省仓服务费率', dataIndex: 'returnQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: <a-tooltip placement='top' title='开单金额 * 平台服务费率'>平台服务费 <a-icon type="question-circle" /></a-tooltip>, dataIndex: 'returnQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
|
|
|
- { title: <a-tooltip placement='top' title='开单金额 * 省仓服务费率'>省仓服务费 <a-icon type="question-circle" /></a-tooltip>, dataIndex: 'returnQty', width: '14%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
|
|
|
- ]
|
|
|
- return arr
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- // 查询
|
|
|
- handleSearch () {
|
|
|
- const _this = this
|
|
|
- this.$refs.ruleForm.validate(valid => {
|
|
|
- if (valid) {
|
|
|
- _this.$refs.table.refresh(true)
|
|
|
- } else {
|
|
|
- _this.$message.error('请选择日期')
|
|
|
- return false
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- // 客户名称 change
|
|
|
- custChange (val) {
|
|
|
- this.queryParam.dealerName = val.name
|
|
|
- this.queryParam.dealerSn = val.key
|
|
|
- },
|
|
|
- // 统计
|
|
|
- getCount (params) {
|
|
|
- queryTireDetailCount(params).then(res => {
|
|
|
- if (res.status == 200 && res.data) {
|
|
|
- this.totalData = res.data
|
|
|
- } else {
|
|
|
- this.totalData = null
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- // 出库明细
|
|
|
- handleOutDetail (row) {
|
|
|
- const params = {
|
|
|
- bizBeginDate: this.queryParam.bizBeginDate,
|
|
|
- bizEndDate: this.queryParam.bizEndDate,
|
|
|
- dealerSn: row.dealerSn,
|
|
|
- productSn: row.productSn
|
|
|
- }
|
|
|
- this.showOutDetail = true
|
|
|
- const titObj = {
|
|
|
- tit: row.dealerEntity.dealerName,
|
|
|
- code: row.productEntity.code
|
|
|
- }
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.outDetail.getAjaxData(params, titObj)
|
|
|
- })
|
|
|
- },
|
|
|
- // 地区
|
|
|
- areaChange (val) {
|
|
|
- this.queryParam.provinceSn = val[0] ? val[0] : undefined
|
|
|
- this.queryParam.citySn = val[1] ? val[1] : undefined
|
|
|
- this.queryParam.districtSn = val[2] ? val[2] : undefined
|
|
|
- },
|
|
|
- // 日期选择 change
|
|
|
- monthChange (date) {
|
|
|
- if (date[0] && date[1]) {
|
|
|
- this.queryParam.time = date
|
|
|
- } else {
|
|
|
- this.queryParam.time = []
|
|
|
- }
|
|
|
- this.queryParam.bizBeginDate = date[0] ? date[0].replace(/-/g, '') : ''
|
|
|
- this.queryParam.bizEndDate = date[1] ? date[1].replace(/-/g, '') : ''
|
|
|
- },
|
|
|
- // 区域分区 change
|
|
|
- subareaChange (val) {
|
|
|
- this.queryParam.subareaArea.subareaSn = val[0] ? val[0] : undefined
|
|
|
- this.queryParam.subareaArea.subareaAreaSn = val[1] ? val[1] : undefined
|
|
|
- },
|
|
|
- // 重置
|
|
|
- resetSearchForm () {
|
|
|
- this.queryParam.time = []
|
|
|
- this.$refs.rangeDate.resetDate()
|
|
|
- this.queryParam.bizBeginDate = ''
|
|
|
- this.queryParam.bizEndDate = ''
|
|
|
- this.queryParam.provinceSn = undefined
|
|
|
- this.queryParam.citySn = undefined
|
|
|
- this.queryParam.districtSn = undefined
|
|
|
- this.queryParam.dealerName = undefined
|
|
|
- this.queryParam.dealerSn = undefined
|
|
|
- this.queryParam.subareaArea.subareaSn = undefined
|
|
|
- this.queryParam.subareaArea.subareaAreaSn = undefined
|
|
|
- this.queryParam.dealerLevel = undefined
|
|
|
- this.queryParam.subareaArea.bizUserSn = undefined
|
|
|
- this.queryParam.productWord = undefined
|
|
|
- this.queryParam.productName = undefined
|
|
|
- this.$refs.subarea.clearData()
|
|
|
- this.$refs.dealerSubareaScopeList.resetForm()
|
|
|
- this.totalData = null
|
|
|
- this.$refs.areaList.clearData()
|
|
|
- this.$refs.table.clearTable()
|
|
|
- this.$refs.ruleForm.resetFields()
|
|
|
- },
|
|
|
- // 导出 必填判断
|
|
|
- handleExport (pos) {
|
|
|
- const _this = this
|
|
|
- this.$refs.ruleForm.validate(valid => {
|
|
|
- if (valid) {
|
|
|
- if (pos == 0) {
|
|
|
- _this.exportList()
|
|
|
- } else {
|
|
|
- _this.exportOutDetailList()
|
|
|
- }
|
|
|
- } else {
|
|
|
- _this.$message.error('请选择日期')
|
|
|
- return false
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- // 轮胎明细报表导出
|
|
|
- exportList () {
|
|
|
- const _this = this
|
|
|
- const params = JSON.parse(JSON.stringify(_this.queryParam))
|
|
|
- _this.exportLoading = true
|
|
|
- _this.spinning = true
|
|
|
- _this.showExport = true
|
|
|
- _this.$store.state.app.curActionPermission = 'B_tireReportExport'
|
|
|
- params.exportFlag = 1
|
|
|
- delete params.time
|
|
|
- hdExportExcel(tireListExport, params, '轮胎明细报表', function () {
|
|
|
- _this.exportLoading = false
|
|
|
- _this.spinning = false
|
|
|
- _this.$store.state.app.curActionPermission = ''
|
|
|
- })
|
|
|
- },
|
|
|
- // 轮胎出库明细报表 导出
|
|
|
- exportOutDetailList () {
|
|
|
- const _this = this
|
|
|
- const params = JSON.parse(JSON.stringify(_this.queryParam))
|
|
|
- _this.exportLoading = true
|
|
|
- _this.spinning = true
|
|
|
- _this.showExport = true
|
|
|
- _this.$store.state.app.curActionPermission = 'B_tireDetailExport'
|
|
|
- delete params.time
|
|
|
- hdExportExcel(tireOutDetailListExport, params, '轮胎出库明细报表', function () {
|
|
|
- _this.exportLoading = false
|
|
|
- _this.spinning = false
|
|
|
- _this.$store.state.app.curActionPermission = ''
|
|
|
- })
|
|
|
- },
|
|
|
- // 初始化
|
|
|
- pageInit () {
|
|
|
- this.$nextTick(() => { // 页面渲染完成后的回调
|
|
|
- this.setTableH()
|
|
|
- })
|
|
|
- },
|
|
|
- // 计算表格高度
|
|
|
- setTableH () {
|
|
|
- const tableSearchH = this.$refs.tableSearch.offsetHeight
|
|
|
- this.tableHeight = window.innerHeight - tableSearchH - 280
|
|
|
- }
|
|
|
- },
|
|
|
- mounted () {
|
|
|
- if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
|
|
|
- this.pageInit()
|
|
|
- }
|
|
|
- },
|
|
|
- activated () {
|
|
|
- // 如果是新页签打开,则重置当前页面
|
|
|
- if (this.$store.state.app.isNewTab) {
|
|
|
- this.pageInit()
|
|
|
- }
|
|
|
- },
|
|
|
- beforeRouteEnter (to, from, next) {
|
|
|
- next(vm => {})
|
|
|
- }
|
|
|
-}
|
|
|
-</script>
|