Browse Source

优化代码

master
yunuo970428 3 days ago
parent
commit
42952145d3
  1. 19
      anrui-reportcenter-ui/src/api/statement/rebateSummary.js
  2. 40
      anrui-reportcenter-ui/src/router/index.js
  3. 122
      anrui-reportcenter-ui/src/views/statement/rebateSummary/division.vue
  4. 0
      anrui-reportcenter-ui/src/views/statement/rebateSummary/divisionByBrand.vue
  5. 110
      anrui-reportcenter-ui/src/views/statement/rebateSummary/filiale.vue
  6. 123
      anrui-reportcenter-ui/src/views/statement/rebateSummary/group.vue
  7. 191
      anrui-reportcenter-ui/src/views/statement/rebateSummary/rebateSummaryByBusinessDivision.vue
  8. 193
      anrui-reportcenter-ui/src/views/statement/rebateSummary/rebateSummaryByFiliale.vue
  9. 117
      anrui-reportcenter-ui/src/views/statement/rebateSummary/rebateTypeDetails.vue
  10. 240
      anrui-reportcenter-ui/src/views/statement/rebateSummary/rebateTypeSummary.vue

19
anrui-reportcenter-ui/src/api/statement/rebateSummary.js

@ -0,0 +1,19 @@
import request from '@/utils/request'
export default {
// 查询分页列表
listPage: function(data) {
return request({
url: '/reportcenter/v1/factoryDailyReport/pageList1',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
listPageByDivision: function() {
return request({
url: '/scm/v1/scmvehrebate/statistics',
method: 'get'
})
}
}

40
anrui-reportcenter-ui/src/router/index.js

@ -86,7 +86,45 @@ export const constantRoutes = [
meta: { title: '分公司日报表', noCache: true }
}
]
}
},
// 报表
{
path: '/statement',
component: Layout,
redirect: '/statement',
meta: {
title: '报表'
},
children: [
{
path: '/statement/bikeRebateStatistics',
component: () => import('@/views/statement/bikeRebateStatistics/bikeRebateStatistics.vue'),
name: 'BikeRebateStatistics',
meta: {
title: '单车返利统计',
noCache: true
}
},
{
path: '/statement/rebateType',
component: () => import('@/views/statement/rebateType/rebateTypeByDetail.vue'),
name: 'RebateTypeByDetail',
meta: {
title: '厂家返利类型',
noCache: true
}
},
{
path: '/statement/rebateSummary',
component: () => import('@/views/statement/rebateSummary/group.vue'),
name: 'RebateSummaryByGroup',
meta: {
title: '厂家返利汇总',
noCache: true
}
}
]
},
// 404 page must be placed at the end !!!
// { path: '*', redirect: '/404', hidden: true }
]

122
anrui-reportcenter-ui/src/views/statement/rebateSummary/division.vue

@ -0,0 +1,122 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="厂家返利汇总统计报表" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="listtop">
<div class="tit">厂家返利汇总统计报表</div>
<div style="margin-right: 10px"><span class="bluezi" @click="lookBrand">品牌</span></div>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;">
<el-table-column prop="year" label="年份" align="center" min-width="120" />
<el-table-column prop="estimate" label="预提" align="center" min-width="120" />
<el-table-column prop="upload" label="上传" align="center" min-width="120" />
<el-table-column prop="adjust" label="调整" align="center" min-width="120" />
<el-table-column label="未上传" align="center">
<el-table-column prop="unUpload.total" label="合计" align="center" min-width="120" />
<el-table-column label="其中费用" align="center">
<el-table-column prop="unUpload.fee" label="合计" align="center" min-width="120" />
<el-table-column prop="unUpload.feeOutlay" label="支出" align="center" min-width="120" />
<el-table-column prop="unUpload.feeUnPaid" label="待支付" align="center" min-width="120" />
<el-table-column prop="unUpload.feeTopping" label="抵顶" align="center" min-width="120" />
</el-table-column>
<el-table-column prop="unUpload.rebate" label="其中返利" align="center" min-width="120" />
</el-table-column>
</el-table>
</div>
</div>
</div>
<divisionByBrand v-show="viewState == 2" ref="divBrand" @doback="resetState" />
</div>
</template>
<script>
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/rebateSummary'
import divisionByBrand from './divisionByBrand'
export default {
name: 'Division',
components: {
ButtonBar,
divisionByBrand
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
linkSid: '',
listQuery: {
params: {
type: '',
orgPath: ''
},
current: 1,
size: 5,
total: 0
},
FormLoading: false,
listLoading: false
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
//
getList() {
this.listLoading = true
this.listQuery.params.type = 'syb'
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
req.listPage(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.linkSid = response.data.linkSid
} else {
this.list = []
this.linkSid = ''
}
})
},
lookBrand() {
this.viewState = 2
this.$refs['divBrand'].getList(this.linkSid)
},
resetState() {
this.viewState = 1
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

0
anrui-reportcenter-ui/src/views/statement/rebateSummary/divisionByBrand.vue

110
anrui-reportcenter-ui/src/views/statement/rebateSummary/filiale.vue

@ -0,0 +1,110 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="厂家返利汇总统计报表" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="listtop">
<div class="tit">{{ filialeName }}厂家返利汇总统计报表</div>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;">
<el-table-column prop="year" label="年份" align="center" min-width="120" />
<el-table-column prop="estimate" label="预提" align="center" min-width="120" />
<el-table-column prop="upload" label="上传" align="center" min-width="120" />
<el-table-column prop="adjust" label="调整" align="center" min-width="120" />
<el-table-column label="未上传" align="center">
<el-table-column prop="unUpload.total" label="合计" align="center" min-width="120" />
<el-table-column label="其中费用" align="center">
<el-table-column prop="unUpload.fee" label="合计" align="center" min-width="120" />
<el-table-column prop="unUpload.feeOutlay" label="支出" align="center" min-width="120" />
<el-table-column prop="unUpload.feeUnPaid" label="待支付" align="center" min-width="120" />
<el-table-column prop="unUpload.feeTopping" label="抵顶" align="center" min-width="120" />
</el-table-column>
<el-table-column prop="unUpload.rebate" label="其中返利" align="center" min-width="120" />
</el-table-column>
</el-table>
</div>
</div>
</div>
</div>
</template>
<script>
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/rebateSummary'
export default {
name: 'Filiale',
components: {
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
filialeName: '',
listQuery: {
params: {
type: '',
orgPath: ''
},
current: 1,
size: 5,
total: 0
},
FormLoading: false,
listLoading: false
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
//
getList() {
this.listLoading = true
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
req.listPage(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.filialeName = response.data.name
} else {
this.list = []
this.filialeName = ''
}
})
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

123
anrui-reportcenter-ui/src/views/statement/rebateSummary/group.vue

@ -0,0 +1,123 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="厂家返利汇总统计报表" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="listtop">
<div class="tit">厂家返利汇总统计报表</div>
<div style="margin-right: 10px"><span class="bluezi" @click="lookDivision">事业部</span></div>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;">
<el-table-column prop="year" label="年份" align="center" min-width="120" />
<el-table-column prop="estimate" label="预提" align="center" min-width="120" />
<el-table-column prop="upload" label="上传" align="center" min-width="120" />
<el-table-column prop="adjust" label="调整" align="center" min-width="120" />
<el-table-column label="未上传" align="center">
<el-table-column prop="unUpload.total" label="合计" align="center" min-width="120" />
<el-table-column label="其中费用" align="center">
<el-table-column prop="unUpload.fee" label="合计" align="center" min-width="120" />
<el-table-column prop="unUpload.feeOutlay" label="支出" align="center" min-width="120" />
<el-table-column prop="unUpload.feeUnPaid" label="待支付" align="center" min-width="120" />
<el-table-column prop="unUpload.feeTopping" label="抵顶" align="center" min-width="120" />
</el-table-column>
<el-table-column prop="unUpload.rebate" label="其中返利" align="center" min-width="120" />
</el-table-column>
</el-table>
</div>
</div>
</div>
<rebateSummaryByBusinessDivision v-show="viewState == 2" ref="divDivision" @doback="resetState" />
</div>
</template>
<script>
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/rebateSummary'
import rebateSummaryByBusinessDivision from './rebateSummaryByBusinessDivision'
export default {
name: 'RebateSummaryByGroup',
components: {
ButtonBar,
rebateSummaryByBusinessDivision
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
listQuery: {
params: {
type: '',
orgPath: ''
},
current: 1,
size: 5,
total: 0
},
FormLoading: false,
listLoading: false
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
//
getList() {
this.listLoading = true
this.listQuery.params.type = 'jt'
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
req.listPage(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
} else {
this.list = []
}
})
},
lookDivision() {
this.viewState = 2
this.$refs['divDivision'].getList()
},
resetState() {
this.viewState = 1
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

191
anrui-reportcenter-ui/src/views/statement/rebateSummary/rebateSummaryByBusinessDivision.vue

@ -0,0 +1,191 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="厂家返利汇总统计报表" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="listtop">
<div class="tit">厂家返利汇总统计报表</div>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" :span-method="objectSpanMethod">
<el-table-column label="事业部" align="center" width="120">
<template slot-scope="scope">
<span class="bluezi" @click="lookFiliale(scope.row)">{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column prop="year" label="年份" align="center" min-width="120" />
<el-table-column prop="estimate" label="预提" align="center" min-width="120" />
<el-table-column prop="upload" label="上传" align="center" min-width="120" />
<el-table-column prop="adjust" label="调整" align="center" min-width="120" />
<el-table-column label="未上传" align="center">
<el-table-column prop="unUpload.total" label="合计" align="center" min-width="120" />
<el-table-column label="其中费用" align="center">
<el-table-column prop="unUpload.fee" label="合计" align="center" min-width="120" />
<el-table-column prop="unUpload.feeOutlay" label="支出" align="center" min-width="120" />
<el-table-column prop="unUpload.feeUnPaid" label="待支付" align="center" min-width="120" />
<el-table-column prop="unUpload.feeTopping" label="抵顶" align="center" min-width="120" />
</el-table-column>
<el-table-column prop="unUpload.rebate" label="其中返利" align="center" min-width="120" />
</el-table-column>
</el-table>
</div>
</div>
</div>
</div>
</template>
<script>
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/rebateSummary'
export default {
name: 'RebateSummaryByBusinessDivision',
components: {
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
listQuery: {
params: {
type: '',
orgPath: ''
},
current: 1,
size: 5,
total: 0
},
FormLoading: false,
listLoading: false
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
//
getList() {
this.listLoading = true
this.listQuery.params.type = 'syb'
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
req.listPage(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
} else {
this.list = []
}
})
},
// element-ui
// objectSpanMethod { row, column, rowIndex, columnIndex }
// row:
// column:
// rowIndex:
// columnIndex:
// 1:
// :
// 0: ,
mergeCol(id, rowIndex) {
// debugger
//
// id:
// rowIndex:
var idName = this.list[rowIndex][id] //
if (rowIndex > 0) {
//
// eslint-disable-next-line eqeqeq
if (this.list[rowIndex][id] !== this.list[rowIndex - 1][id]) {
//
var i = rowIndex
var num = 0 // i,,num
while (i < this.list.length) {
// table,
if (this.list[i][id] === idName) {
//
i++ // ,1
num++ // num1
} else {
i = this.list.length // ,table,
}
}
return {
rowspan: num, //
colspan: 1
}
} else {
return {
rowspan: 0, // ,rowspan0
colspan: 1
}
}
} else {
// ,
let i = rowIndex
let num = 0
while (i < this.list.length) {
// table,
if (this.list[i][id] === idName) {
i++
num++
} else {
i = this.list.length
}
}
return {
rowspan: num,
colspan: 1
}
}
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
//
switch (
columnIndex //
) {
// ,(0,1 0,1)
// gzTroubles,gzID
case 0:
return this.mergeCol('name', rowIndex)
}
},
lookFiliale(row) {
this.viewState = 2
},
resetState() {
this.viewState = 1
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

193
anrui-reportcenter-ui/src/views/statement/rebateSummary/rebateSummaryByFiliale.vue

@ -0,0 +1,193 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="厂家返利汇总统计报表" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="listtop">
<div class="tit">厂家返利汇总统计报表</div>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" :span-method="objectSpanMethod">
<el-table-column prop="customerName" label="分公司" align="center" width="120" />
<el-table-column prop="customerName" label="年份" align="center" width="120" />
<el-table-column prop="vehMark" label="预提" align="center" min-width="180" />
<el-table-column prop="vinNo" label="上传" align="center" width="150" />
<el-table-column prop="count" label="调整" align="center" width="120" />
<el-table-column prop="amount" label="实销日期" align="center" width="120" />
<el-table-column label="未上传" align="center">
<el-table-column prop="count" label="合计" align="center" width="120" />
<el-table-column label="其中费用" align="center">
<el-table-column prop="count" label="支出" align="center" width="120" />
<el-table-column prop="count" label="待支付" align="center" width="120" />
<el-table-column prop="count" label="抵顶" align="center" width="120" />
</el-table-column>
<el-table-column prop="count" label="其中返利" align="center" width="120" />
</el-table-column>
</el-table>
</div>
</div>
</div>
</div>
</template>
<script>
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/salesstatement'
export default {
name: 'BikeRebateStatistics',
components: {
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 10,
total: 0,
params: {
goodsSpuName: '',
useOrgSid: '',
startDate: '',
endDate: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
//
getList() {
this.listLoading = true
req.goodsTrendReport(this.listQuery).then(response => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
// element-ui
// objectSpanMethod { row, column, rowIndex, columnIndex }
// row:
// column:
// rowIndex:
// columnIndex:
// 1:
// :
// 0: ,
mergeCol(id, rowIndex) {
// debugger
//
// id:
// rowIndex:
var idName = this.list[rowIndex][id] //
if (rowIndex > 0) {
//
// eslint-disable-next-line eqeqeq
if (this.list[rowIndex][id] !== this.list[rowIndex - 1][id]) {
//
var i = rowIndex
var num = 0 // i,,num
while (i < this.list.length) {
// table,
if (this.list[i][id] === idName) {
//
i++ // ,1
num++ // num1
} else {
i = this.list.length // ,table,
}
}
return {
rowspan: num, //
colspan: 1
}
} else {
return {
rowspan: 0, // ,rowspan0
colspan: 1
}
}
} else {
// ,
let i = rowIndex
let num = 0
while (i < this.list.length) {
// table,
if (this.list[i][id] === idName) {
i++
num++
} else {
i = this.list.length
}
}
return {
rowspan: num,
colspan: 1
}
}
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
//
switch (
columnIndex //
) {
// ,(0,1 0,1)
// gzTroubles,gzID
case 0:
return this.mergeCol('useOrgName', rowIndex)
case 1:
return this.mergeCol('brandName', rowIndex)
}
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

117
anrui-reportcenter-ui/src/views/statement/rebateSummary/rebateTypeDetails.vue

@ -0,0 +1,117 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="厂家返利汇总统计报表" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="listtop">
<div class="tit">厂家返利汇总统计报表</div>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;">
<el-table-column prop="customerName" label="返利类型" align="center" width="120" />
<el-table-column prop="vehMark" label="预提" align="center" min-width="180" />
<el-table-column prop="vinNo" label="上传" align="center" width="150" />
<el-table-column prop="count" label="调整" align="center" width="120" />
<el-table-column label="未上传" align="center">
<el-table-column prop="count" label="合计" align="center" width="120" />
<el-table-column label="其中费用" align="center">
<el-table-column prop="count" label="支出" align="center" width="120" />
<el-table-column prop="count" label="待支付" align="center" width="120" />
<el-table-column prop="count" label="抵顶" align="center" width="120" />
</el-table-column>
<el-table-column prop="count" label="其中返利" align="center" width="120" />
</el-table-column>
</el-table>
</div>
</div>
</div>
</div>
</template>
<script>
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/statement/salesstatement'
export default {
name: 'BikeRebateStatistics',
components: {
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 10,
total: 0,
params: {
goodsSpuName: '',
useOrgSid: '',
startDate: '',
endDate: '',
userSid: '',
orgPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
//
getList() {
this.listLoading = true
req.goodsTrendReport(this.listQuery).then(response => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

240
anrui-reportcenter-ui/src/views/statement/rebateSummary/rebateTypeSummary.vue

@ -0,0 +1,240 @@
<template>
<div>
<div class="tab-header webtop">
<div style="margin: 0 auto;">{{ title }}</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div style="margin-top: 10px; height: 100%;">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%" :span-method="arraySpanMethod" :cell-style="cellStyleMethod">
<el-table-column prop="purchaseSystemName" label="采购系统" align="center" width="150" />
<el-table-column prop="brandName" label="品牌" align="center" width="150" />
<el-table-column prop="rebateName" label="返利项目" align="center" width="150" />
<el-table-column prop="estimateRebate" label="预提" align="center" min-width="180" />
<el-table-column prop="uploadMoney" label="上传" align="center" width="150" />
<el-table-column prop="adjustmentMoney" label="调整" align="center" width="120" />
<el-table-column label="未上传" align="center">
<el-table-column prop="totalAmount" label="合计" align="center" width="120" />
<el-table-column label="其中费用" align="center">
<el-table-column prop="expectItureCost" label="支出" align="center" width="120" />
<el-table-column prop="expectTreatCost" label="待支付" align="center" width="120" />
<el-table-column prop="expectSuppCost" label="抵顶" align="center" width="120" />
</el-table-column>
<el-table-column prop="surplusAmount" label="其中返利" align="center" width="120" />
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
// import req from '@/api/statement/monthlyReport/inventoryManagement'
export default {
name: 'RebateTypeSummary',
data() {
return {
index: 0,
tableKey: 0,
listLoading: false,
title: '',
list: [
{
purchaseSystemName: '绵阳富创',
brandName: '陕汽',
rebateName: '单车返利',
estimateRebate: '1',
uploadMoney: '2',
adjustmentMoney: '3',
totalAmount: '4',
expectItureCost: '5',
expectTreatCost: '6',
expectSuppCost: '7',
surplusAmount: '8'
},
{
purchaseSystemName: '绵阳富创',
brandName: '陕汽',
rebateName: '专项返利',
estimateRebate: '2',
uploadMoney: '3',
adjustmentMoney: '4',
totalAmount: '5',
expectItureCost: '6',
expectTreatCost: '7',
expectSuppCost: '8',
surplusAmount: '9'
},
{
purchaseSystemName: '绵阳富创',
brandName: '轻卡',
rebateName: '单车返利',
estimateRebate: '11',
uploadMoney: '22',
adjustmentMoney: '33',
totalAmount: '44',
expectItureCost: '55',
expectTreatCost: '66',
expectSuppCost: '77',
surplusAmount: '88'
},
{
purchaseSystemName: '绵阳富创',
brandName: '轻卡',
rebateName: '专项返利',
estimateRebate: '22',
uploadMoney: '33',
adjustmentMoney: '44',
totalAmount: '55',
expectItureCost: '66',
expectTreatCost: '77',
expectSuppCost: '88',
surplusAmount: '99'
}
],
purchaseSystemNameArr: [],
purchaseSystemNamePos: '',
brandNameArr: [],
brandNamePos: ''
}
},
created() {
this.formatData()
},
methods: {
showAdd(row) {
this.title = '安瑞集团' + row.createDate + row.useOrgName + '服务站配件库存管理指标完成情况报表'
// req.getDetail({ createDate: row.createDate, useOrgSid: row.useOrgSid }).then(resp => {
// if (resp.success) {
// this.list = resp.data
// this.$nextTick(() => {
// this.formatData()
// })
// }
// })
},
formatData() {
let data = JSON.parse(JSON.stringify(this.list))
let pos = 0
let temp = {}
//
for (let i = 0; i < data.length; i++) {
//
temp[data[i].brandName] ? temp[data[i].brandName] : (temp[data[i].brandName] = {})
//
for (const key in data[i]) {
//
if (this.isNumberOrDecimalButNotPhone(data[i][key])) {
// 0
if (temp[data[i].brandName][key] === undefined || isNaN(temp[data[i].brandName][key])) {
temp[data[i].brandName][key] = 0
}
temp[data[i].brandName][key] = Math.round((parseFloat(temp[data[i].brandName][key]) + parseFloat(data[i][key])) * 100) / 100
} else {
temp[data[i].brandName][key] = '--'
}
}
// brandName
if (i > 0 && data[i].brandName !== data[i - 1].brandName) {
this.list.splice(i + pos, 0, {
...temp[data[i - 1].brandName],
purchaseSystemName: data[i - 1].purchaseSystemName,
brandName: data[i - 1].brandName,
rebateName: '小计'
})
pos++
// temp0
for (const key in data[i]) {
//
if (this.isNumberOrDecimalButNotPhone(data[i - 1][key])) {
temp[data[i - 1].brandName][key] = 0
} else {
temp[data[i - 1].brandName][key] = '--'
}
}
} else if (i === data.length - 1) {
//
this.list.push({
...temp[data[i - 1].brandName],
purchaseSystemName: data[i - 1].purchaseSystemName,
brandName: data[i - 1].brandName,
rebateName: '小计'
})
pos++
}
}
this.getSpanArr(this.list, this.purchaseSystemNameArr, this.purchaseSystemNamePos, 'purchaseSystemName')
this.getSpanArr(this.list, this.brandNameArr, this.brandNamePos, 'brandName')
console.log(2222222, this.list)
console.log(this.purchaseSystemNameArr)
},
cellStyleMethod({ row, column, rowIndex, columnIndex }) {
// if (row.rebateName === '') {
// if (columnIndex === 2) {
// return { 'text-align': 'center' }
// }
// }
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (row.rebateName === '小计') {
if (columnIndex === 0 || columnIndex === 1) {
return [0, 0]
} else if (columnIndex === 2) {
return [1, 1]
}
} else {
if (columnIndex == 0) {
console.log(rowIndex)
const _row = this.purchaseSystemNameArr[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
// [0,0] [2,1]
rowspan: _row,
colspan: _col
}
}
if (columnIndex == 1) {
const _row = this.brandNameArr[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
// [0,0] [2,1]
rowspan: _row,
colspan: _col
}
}
}
},
getSpanArr(data, temp, pos, label) {
// data
for (let i = 0; i < data.length; i++) {
if (i === 0) {
temp.push(1)
pos = 0
} else {
//
if (data[i][label] === data[i - 1][label]) {
temp[pos] += 1
temp.push(0)
} else {
temp.push(1)
pos = i
}
}
}
},
//
isNumberOrDecimalButNotPhone(str) {
return /^1[0-9]{10}$/.test(str) === false && /^[\d.]+$/.test(str)
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {}
this.$emit('doback')
}
}
}
</script>
<style scoped>
</style>
Loading…
Cancel
Save