刘翔宇-旅管家 3 years ago
parent d45f98403b
commit 1334d445c5

@ -1,184 +1,192 @@
<template>
<div style="padding: 0 20px;">
<div ref="lxHeader">
<lx-header icon="md-apps" text="平台财务管理" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<slot>
<div style="display: flex;justify-content: flex-start;flex-wrap: wrap;">
<Button class="select" icon="ios-add" type="primary" style="margin-right: 10px;"
@click="$refs['rechargeFine'].isShow = true,$refs['rechargeFine'].type = 'recharge'"
>商家充值
</Button>
<Button class="select" icon="ios-remove" type="primary" style="margin-right: 10px;"
@click="$refs['rechargeFine'].isShow = true,$refs['rechargeFine'].type = 'fine'"
>商家罚款
</Button>
<Select v-model="select.merchantId" class="select" style="width:160px;margin-right: 10px;" :clearable="true"
placeholder="所属商家" filterable
>
<Option v-for="item in merchants" :value="item.id" :key="item.id">{{ item.name }}</Option>
</Select>
<Select v-model="select.type" class="select" style="width:100px;margin-right: 10px;" :clearable="true"
placeholder="类型" filterable
>
<Option v-for="item in [{label:'',value:'fee'},{label:'',value:'recharge'},{label:'退',value:'refund'},{label:'',value:'fine'}]"
:value="item.value" :key="item.value"
>{{ item.label }}
</Option>
</Select>
<Input v-model="select.serial" style="width: 140px;margin-right: 10px;" clearable placeholder="请输入订单编号"/>
<Button icon="ios-search" type="primary" style="margin-right: 10px;" @click="getFlow"></Button>
<Button icon="ios-repeat" type="primary" style="margin-right: 10px;"
@click="select = {pageIndex:1,pageSize:10,merchantId:'',type:''},getFlow()"
>全部
</Button>
<Button icon="ios-download" type="primary" style="margin-right: 10px;" @click="downloadExel"></Button>
</div>
</slot>
</lx-header>
</div>
<xy-table :total="total" @pageSizeChange="e => select.pageSize = e" @pageIndexChange="pageChange" :list="list"
:table-item="table"
>
<template v-slot:btns>
<div></div>
</template>
</xy-table>
<rechargeFine ref="rechargeFine" :merchants="merchants" @refresh="getFlow"></rechargeFine>
</div>
</template>
<script>
import { index, getMerchants } from '@/api/finance'
import { parseTime } from '@/utils'
import { download } from '@/utils/downloadRequest'
import rechargeFine from '@/views/finance/component/rechargeFine'
export default {
components: {
rechargeFine
},
data() {
return {
select: {
pageIndex: 1,
pageSize: 10,
merchantId: '',
type: '',
serial:''
},
merchants: [],
total: 0,
list: [],
table: [
{
prop: 'merchant.name',
label: '商家名称',
width: 240,
align: 'left',
fixed:'left'
},
{
prop:'order.serial',
label:'订单编号',
width: 150
},
{
prop: 'money',
label: '金额',
align: 'right',
width: 140
},
{
prop: 'balance',
label: '实时余额',
align: 'right',
width: 140
},
{
prop: 'recharge.paid_at',
label: '商户充值时间',
width: 220,
formatter: (cell, data, value, index) => {
if(value)
return parseTime(new Date(value), '{y}-{m}-{d} {h}:{i}:{s}')
}
},
{
prop: 'created_at',
label: '系统入账时间',
width: 220,
formatter: (cell, data, value, index) => {
return parseTime(new Date(value), '{y}-{m}-{d} {h}:{i}:{s}')
}
},
{
prop: 'related_type_name',
label: '发生原因',
width: 140
},
{
prop: 'comment',
label: '备注',
minWidth:220,
align: 'left'
}
]
}
},
methods: {
downloadExel() {
download(
'/api/admin/finance/index',
'get',
{
merchant_id: this.select.merchantId,
type: this.select.type,
serial: this.select.serial,
is_export: 1
},
'财务流水.xlsx')
},
pageChange(e) {
this.select.pageIndex = e
this.getFlow()
},
async getMerchant() {
const res = await getMerchants()
this.merchants = res
},
async getFlow() {
const res = await index({
page: this.select.pageIndex,
page_size: this.select.pageSize,
merchant_id: this.select.merchantId,
type: this.select.type,
serial: this.select.serial
})
this.list = res.data
this.total = res.total
}
},
mounted() {
this.getMerchant()
this.getFlow()
}
}
</script>
<style scoped lang="scss">
@media screen and (max-width: 1190px) {
.select {
margin-bottom: 6px;
}
}
<template>
<div style="padding: 0 20px;">
<div ref="lxHeader">
<lx-header icon="md-apps" text="平台财务管理" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<slot>
<div style="display: flex;justify-content: flex-start;flex-wrap: wrap;">
<Button class="select" icon="ios-add" type="primary" style="margin-right: 10px;"
@click="$refs['rechargeFine'].isShow = true,$refs['rechargeFine'].type = 'recharge'">商家充值
</Button>
<Button class="select" icon="ios-remove" type="primary" style="margin-right: 10px;"
@click="$refs['rechargeFine'].isShow = true,$refs['rechargeFine'].type = 'fine'">商家扣款
</Button>
<Select v-model="select.merchantId" class="select" style="width:160px;margin-right: 10px;" :clearable="true"
placeholder="所属商家" filterable>
<Option v-for="item in merchants" :value="item.id" :key="item.id">{{ item.username }}</Option>
</Select>
<Select v-model="select.type" class="select" style="width:100px;margin-right: 10px;" :clearable="true"
placeholder="类型" filterable>
<Option
v-for="item in [{label:'佣金',value:'fee'},{label:'充值',value:'recharge'},{label:'退款',value:'refund'},{label:'扣款',value:'fine'},{label:'手工返佣',value:'manually_refund_fee'},{label:'自动返佣',value:'auto_refund_fee'}]"
:value="item.value" :key="item.value">{{ item.label }}
</Option>
</Select>
<Input v-model="select.serial" style="width: 140px;margin-right: 10px;" clearable placeholder="请输入订单编号" />
<div>
<Input v-model="select.money_min" style="width: 90px;" clearable placeholder="开始金额" />
<span>~</span>
<Input v-model="select.money_max" style="width: 90px;margin-right: 10px;" clearable placeholder="结束金额" />
</div>
<Button icon="ios-search" type="primary" style="margin-right: 10px;" @click="getFlow"></Button>
<Button icon="ios-repeat" type="primary" style="margin-right: 10px;"
@click="select = {pageIndex:1,pageSize:10,merchantId:'',type:''},getFlow()">全部
</Button>
<Button icon="ios-download" type="primary" style="margin-right: 10px;" @click="downloadExel"></Button>
</div>
</slot>
</lx-header>
</div>
<xy-table :total="total" @pageSizeChange="e => select.pageSize = e" @pageIndexChange="pageChange" :list="list"
:table-item="table">
<template v-slot:btns>
<div></div>
</template>
</xy-table>
<rechargeFine ref="rechargeFine" :merchants="merchants" @refresh="getFlow"></rechargeFine>
</div>
</template>
<script>
import {
index,
getMerchants
} from '@/api/finance'
import {
parseTime
} from '@/utils'
import {
download
} from '@/utils/downloadRequest'
import rechargeFine from '@/views/finance/component/rechargeFine'
export default {
components: {
rechargeFine
},
data() {
return {
select: {
pageIndex: 1,
pageSize: 10,
merchantId: '',
type: '',
serial: '',
money_min: '',
money_max: ''
},
merchants: [],
total: 0,
list: [],
table: [{
prop: 'merchant.username',
label: '商家名称',
width: 240,
align: 'left',
fixed: 'left'
},
{
prop: 'order.serial',
label: '订单编号',
width: 150
},
{
prop: 'money',
label: '金额',
align: 'right',
width: 140
},
{
prop: 'balance',
label: '实时余额',
align: 'right',
width: 140
},
{
prop: 'recharge.paid_at',
label: '商户充值时间',
width: 220,
formatter: (cell, data, value, index) => {
if (value)
return parseTime(new Date(value), '{y}-{m}-{d} {h}:{i}:{s}')
}
},
{
prop: 'created_at',
label: '系统入账时间',
width: 220,
formatter: (cell, data, value, index) => {
return parseTime(new Date(value), '{y}-{m}-{d} {h}:{i}:{s}')
}
},
{
prop: 'related_type_name',
label: '发生原因',
width: 140
},
{
prop: 'comment',
label: '备注',
minWidth: 220,
align: 'left'
}
]
}
},
methods: {
downloadExel() {
download(
'/api/admin/finance/index',
'get', {
merchant_id: this.select.merchantId,
type: this.select.type,
serial: this.select.serial,
is_export: 1
},
'财务流水.xlsx')
},
pageChange(e) {
this.select.pageIndex = e
this.getFlow()
},
async getMerchant() {
const res = await getMerchants({
page_size: 9999
})
this.merchants = res
},
async getFlow() {
const res = await index({
page: this.select.pageIndex,
page_size: this.select.pageSize,
merchant_id: this.select.merchantId,
...this.select
})
this.list = res.data
this.total = res.total
}
},
mounted() {
this.getMerchant()
this.getFlow()
}
}
</script>
<style scoped lang="scss">
@media screen and (max-width: 1190px) {
.select {
margin-bottom: 6px;
}
}
</style>

@ -14,11 +14,9 @@
<div class="select-content-item">
<div class="select-content-item-label">所属商户</div>
<div>
<el-select size="small" :value="select.merchant ? select.merchant.name : ''" placeholder="所属商户"
@change="e => select.merchant = e">
<el-option v-for="item in merchants" :key="item.id" :value="item" :label="item.name">
</el-option>
</el-select>
<el-autocomplete @select="handleSelect" v-model="select.merchant.name" :fetch-suggestions="querySearchAsync" clearable
placeholder="请输入选择商家"></el-autocomplete>
<el-checkbox style="margin-left: 10px;" v-model="select.is_merchant"></el-checkbox>
</div>
</div>
@ -148,15 +146,18 @@
import {
download
} from '@/utils/downloadRequest'
import {
index as merchantIndex
} from '@/api/merchant'
import orderLog from '@/views/order/component/orderLog'
import actions from '@/views/order/component/actions'
import orderEdit from '@/views/order/component/orderEdit'
import orderEdit from '@/views/order/component/orderEdit'
export default {
components: {
orderLog,
actions,
actions,
orderEdit
},
data() {
@ -277,28 +278,31 @@
width: 220,
align: "left",
customFn: (row) => {
return ( <div style = {
return ( < div style = {
{
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
alignItems: 'left',
justifyContent: 'left',
cursor: 'pointer',
color: "blue"
}
}
on={{
['click']:(e)=>{
this.selectId=row.order.id;
this.isShowEdit=true;
}
}}
> {
}
on = {
{
['click']: (e) => {
this.selectId = row.order.id;
this.isShowEdit = true;
}
}
}
>
{
row.order.member_address ? row.order.member_address : "修改服务地址"
} </div> )
} < /div> )
}
},
},
{
label: "用户信息",
Fprop: 'member',
@ -353,19 +357,19 @@
width: 100
},
{
prop: "merchant.name",
prop: "merchant.username",
label: "服务商家",
align: "left",
width: 220
width: 160
},
{
label: "历史商家",
width: 220,
width: 160,
align: "left",
customFn: (row) => {
return row.assign_merchant.map(item => {
return ( < div > {
item.name
item.username
} < /div>)
})
}
@ -389,6 +393,29 @@
}
},
methods: {
handleSelect(item) {
console.log(item)
this.select.merchant = {
id: item.id,
name: item.value
};
},
querySearchAsync(queryString, cb) {
merchantIndex({
keyword: queryString,
page_size: 999
}).then(res => {
var data = res.data;
let _data = [];
for (var m of data) {
_data.push({
value: m.username,
id: m.id
})
}
cb(_data)
})
},
resetsearch() {
this.select.page = 1;
this.select.merchant = '';

Loading…
Cancel
Save