提交 16cccc19 authored 作者: lihuihui's avatar lihuihui

Merge branch 'master' of https://gitlab.ezijing.com/webapp/finance-admin

# 请输入一个提交信息以解释此合并的必要性,尤其是将一个更新后的上游分支 # 合并到主题分支。 # # 以 '#' 开始的行将被忽略,而空的提交说明将终止提交。
......@@ -35,3 +35,7 @@ export function getTableColumns(params) {
export function updateTableColumns(data) {
return httpRequest.post('/api/finance/v1/payments/update-title', data)
}
export function getRoles(params) {
return httpRequest.get('/api/finance/user/get-info', { params })
}
......@@ -210,7 +210,7 @@ export default {
},
// 当前列表项
currentColumns() {
if (this.hasColumnsOptions && this.customColumns.length) {
if (this.hasColumnsOptions) {
return this.columns.map(column => {
const found = this.customColumns.find(item => item.prop === column.prop)
return { ...column, visible: found ? found.visible : true }
......@@ -235,7 +235,7 @@ export default {
let params = this.params
// 翻页参数设置
if (this.hasPagination) {
params.page = (this.page.currentPage).toString()
params.page = this.page.currentPage.toString()
params['per-page'] = this.page.size.toString()
}
// 接口请求之前
......
......@@ -42,7 +42,7 @@ export default {
{
name: '项目列表',
path: '/project',
icon: 'el-icon-box'
icon: 'el-icon-folder'
}
]
}
......
......@@ -59,23 +59,20 @@ export default {
{ label: '线下', value: '2' }
],
placeholder: '渠道类型'
}
],
moreFilters: [
},
{
label: '合同编码',
type: 'input',
prop: 'contract_code',
placeholder: '合同编码'
},
{
label: '合同状态',
type: 'select',
prop: 'contract_status',
options: [
{ label: '未上传', value: '1' },
{ label: '已上传', value: '2' }
]
],
placeholder: '合同状态'
}
],
columns: [
......
......@@ -49,7 +49,15 @@ export function payConfirm(data) {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
// 获取oss signature
export function getSignature() {
return httpRequest.get('/api/usercenter/aliyun/get-signature')
// 确认足额支付
export function confirmPayDetail(data) {
return httpRequest.post('/api/finance/v1/payments/undo-confirm', data)
}
// 取消足额支付
export function cancelPayDetail(data) {
return httpRequest.post('/api/finance/v1/payments/undo-confirm', data)
}
// 取消单条缴费到账
export function payCancel(data) {
return httpRequest.post('/api/finance/v1/payments/undo-details-confirm', data)
}
<!-- 支付详情-渠道信息 -->
<template>
<table border="1" width="1200px" cellspacing="0">
<table border="1" width="1500px" cellspacing="0" class="table">
<tr>
<th>不含税销售金额</th>
<td>{{dealList.sales_amount_excluding_tax}}</td>
<td>{{ dealList.sales_amount_excluding_tax }}</td>
<th>渠道代理费提基数</th>
<td>{{dealList.channel_agent_fee_base}}</td>
<td>{{ dealList.channel_agent_fee_base }}</td>
<th>服务费规则</th>
<td>{{dealList.service_fee_rules}}</td>
<td>{{ dealList.service_fee_rules }}</td>
</tr>
<tr>
<th>服务费比例</th>
<td>{{dealList.service_charge_ratio}}</td>
<td>{{ dealList.service_charge_ratio }}</td>
<th>代理服务费</th>
<td>{{dealList.agency_service_fee}}</td>
<td>{{ dealList.agency_service_fee }}</td>
<th>代理服务费(不含税金额)</th>
<td>{{dealList.agency_service_fee_excluding_tax}}</td>
<td>{{ dealList.agency_service_fee_excluding_tax }}</td>
</tr>
<tr>
<th>户名</th>
<td>{{dealList.channel_account_name}}</td>
<td>{{ dealList.channel_account_name }}</td>
<th>账号</th>
<td>{{dealList.channel_account}}</td>
<td>{{ dealList.channel_account }}</td>
<th>开户行</th>
<td>{{dealList.channel_bank_of_deposit}}</td>
<td>{{ dealList.channel_bank_of_deposit }}</td>
</tr>
<tr>
<th>渠道税率</th>
<td colspan="5">{{dealList.channel_tax_rate}}</td>
<td colspan="5">{{ dealList.channel_tax_rate }}</td>
</tr>
</table>
</template>
......@@ -38,10 +38,24 @@ export default {
dealList: {
type: Object,
default: () => {}
}
}
}
</script>
<style></style>
<style scoped>
.table {
border: 1px solid #000;
}
th {
width: 120px;
text-align: center;
font-size: 20px;
color: rgb(10, 1, 1);
font-weight: normal;
}
td {
width: 120px;
text-align: center;
}
</style>
<!-- 支付详情-收款信息 -->
<template>
<table border="1" width="1200px" cellspacing="0">
<table border="1" width="1500px" cellspacing="0" class="table">
<tr>
<th>应缴金额</th>
<td>{{dealList.bill_total}}</td>
<td>{{ dealList.bill_total }}</td>
<th>实缴金额</th>
<td>{{dealList.amount_need_to_pay}}</td>
<td>{{ dealList.amount_need_to_pay }}</td>
<th>待缴金额</th>
<td>{{dealList.amount_waiting_for_pay}}</td>
<td>{{ dealList.amount_waiting_for_pay }}</td>
</tr>
<tr>
<th>手续费</th>
<td>{{dealList.service_charge}}</td>
<td>{{ dealList.service_charge }}</td>
<th>到账金额</th>
<td>{{dealList.amount_received}}</td>
<td>{{ dealList.amount_received }}</td>
<th>待确认金额</th>
<td>{{dealList.amount_waiting_for_confirm}}</td>
<td>{{ dealList.amount_waiting_for_confirm }}</td>
</tr>
<tr>
<th>首次缴费时间</th>
<td>{{dealList.first_payment_time}}</td>
<td colspan="2">{{ dealList.first_payment_time }}</td>
<th>末次缴费时间</th>
<td colspan="3">{{dealList.final_payment_time}}</td>
<td colspan="2">{{ dealList.final_payment_time }}</td>
</tr>
</table>
</template>
......@@ -37,6 +37,19 @@ export default {
}
</script>
<style>
<style scoped>
.table {
border: 1px solid #000;
}
th {
width: 120px;
text-align: center;
font-size: 20px;
color: rgb(10, 1, 1);
font-weight: normal;
}
td {
width: 120px;
text-align: center;
}
</style>
<!-- 支付详情-已确认列表 -->
<template>
<app-card>
<app-list v-bind="tableOptions" ref="list" >
<template v-slot:table-x = "{ row }">
<app-list v-bind="tableOptions" ref="list">
<template v-slot:table-x="{ row }">
<router-link :to="{ name: 'paydetail', params: { id: row.id } }">
<el-button>查看</el-button>
</router-link>
<el-button @click="cancelReceive(row)">取消到账</el-button>
<el-button @click="cancelReceive(row)" style="margin-top: 5px">取消到账</el-button>
</template>
</app-list>
</app-card>
......@@ -15,7 +15,7 @@
// 组件
import AppList from '@/components/base/AppList.vue'
import AppCard from '@/components/base/AppCard.vue'
import { payDetail, payConfirm } from '../api'
import { payDetail, payCancel } from '../api'
const payStatusMap = { 20: '支付待确认', 30: '部分到账', 70: '足额支付待确认', 80: '足额支付' }
// 接口
export default {
......@@ -27,8 +27,7 @@ export default {
},
components: { AppCard, AppList },
data() {
return {
}
return {}
},
computed: {
// 列表配置
......@@ -41,15 +40,15 @@ export default {
},
columns: [
{ label: '#', type: 'index', minWidth: '50px', fixed: 'left' },
{ label: '支付凭证', prop: 'id', minWidth: 100 },
{ label: '支付人姓名', prop: 'name', align: 'center', minWidth: 100 },
{ label: '支付凭证', prop: 'payment_voucher_filename', minWidth: 100 },
{ label: '支付人姓名', prop: 'name', align: 'center', minWidth: 120 },
{ label: '支付金额', prop: 'amount', align: 'center', minWidth: 100 },
{ label: '支付时间', prop: 'payment_time', align: 'center', minWidth: 100 },
{ label: '支付方式', prop: 'payment_method', align: 'center', minWidth: 100 },
{ label: '其他支付方式', prop: 'payment_method_others', align: 'center', minWidth: 100 },
{ label: '交易流水号', prop: 'txn_id', align: 'center', minWidth: 100 },
// eslint-disable-next-line object-curly-newline
{ label: '支付状态',
{ label: '其他支付方式', prop: 'payment_method_others', align: 'center', minWidth: 150 },
{ label: '交易流水号', prop: 'txn_id', align: 'center', minWidth: 150 },
{
label: '支付状态',
prop: 'payment_status',
align: 'center',
minWidth: 100,
......@@ -67,7 +66,7 @@ export default {
// 取消到账
cancelReceive() {
const params = { id: this.id }
payConfirm(params).then(res => {
payCancel(params).then(res => {
if (res.code === 0) {
this.$parent.fetchTicketDetail()
}
......
<!-- 支付详情-订单信息 -->
<template>
<div>
<table border="1" width="1200px" cellspacing="0">
<table border="1" width="1500px" cellspacing="0" class="table">
<tr>
<th>订单用户名称</th>
<td>{{dealList.name}}</td>
<td>{{ dealList.name }}</td>
<td>订单编号</td>
<td>{{dealList.id}}</td>
<td>{{ dealList.id }}</td>
<td>支付状态</td>
<td>{{dealList.payment_status}}</td>
<td>{{ dealList.payment_status }}</td>
</tr>
<tr>
<th>备注</th>
<td colspan="5">{{dealList.comment}}</td>
<td colspan="5">{{ dealList.comment }}</td>
</tr>
</table>
</div>
......@@ -24,12 +24,25 @@ export default {
dealList: {
type: Object,
default: () => {}
}
},
mounted() {
}
mounted() {}
}
</script>
<style></style>
<style scoped>
.table {
border: 1px solid #000;
}
th {
width: 120px;
text-align: center;
font-size: 20px;
color: rgb(10, 1, 1);
font-weight: normal;
}
td {
width: 120px;
text-align: center;
}
</style>
<!-- 支付详情-学员信息 -->
<template>
<div>
<table border="1" width="1200px" cellspacing="0">
<table border="1" width="1500px" cellspacing="0" class="table">
<tr>
<th>学员姓名</th>
<td>{{dealList.name}}</td>
<td>{{ dealList.name }}</td>
<th>报名项目</th>
<td>{{dealList.project_name}}</td>
<td>{{ dealList.project_name }}</td>
<td>所属班次</td>
<td>{{dealList.bill_customer_class}}</td>
<td>{{ dealList.bill_customer_class }}</td>
</tr>
<tr>
<th>开学时间</th>
<td>{{dealList.bill_customer_class_start_time}}</td>
<td>{{ dealList.bill_customer_class_start_time }}</td>
<th>学制期限</th>
<td>{{dealList.bill_customer_class_length_of_schooling}}</td>
<td>{{ dealList.bill_customer_class_length_of_schooling }}</td>
<th>跟进人</th>
<td>{{dealList.sales_rep_user_id_name}}</td>
<td>{{ dealList.sales_rep_user_id_name }}</td>
</tr>
</table>
</div>
......@@ -28,10 +28,24 @@ export default {
dealList: {
type: Object,
default: () => {}
}
}
}
</script>
<style></style>
<style scoped>
.table {
border: 1px solid #000;
}
th {
width: 120px;
text-align: center;
font-size: 20px;
color: rgb(10, 1, 1);
font-weight: normal;
}
td {
width: 120px;
text-align: center;
}
</style>
<!-- 支付详情-发票表格 -->
<template>
<div class="ticketInfo">
<table border="1" width="1200px" cellspacing="0" class="table" v-for="(item, index) in invioceList" :key="index" >
<table border="1" width="1500px" cellspacing="0" class="table" v-for="(item, index) in invioceList" :key="index">
<tr>
<th colspan="10">发票{{ item.id }}</th>
</tr>
......@@ -20,9 +19,9 @@
</tr>
<tr v-show="item.invoice_status === 6">
<th>原发票号码</th>
<td>{{item.old_invoice_haoma}}</td>
<td>{{ item.old_invoice_haoma }}</td>
<th>原发票代码</th>
<td>{{item.old_invoice_daima}}</td>
<td>{{ item.old_invoice_daima }}</td>
</tr>
<tr>
<th>含税金额</th>
......@@ -50,13 +49,13 @@
</tr>
<tr>
<th>地址</th>
<td>{{item.taxpayer_address}}</td>
<td>{{ item.taxpayer_address }}</td>
<th>电话</th>
<td>{{item.taxpayer_mobile}}</td>
<td>{{ item.taxpayer_mobile }}</td>
<th>开户行</th>
<td>{{item.taxpayer_bank_name}}</td>
<td>{{ item.taxpayer_bank_name }}</td>
<th>银行账号</th>
<td>{{item.taxpayer_bank_account}}</td>
<td>{{ item.taxpayer_bank_account }}</td>
</tr>
<tr>
<th>邮寄地址</th>
......@@ -102,8 +101,20 @@ export default {
}
</script>
<style>
<style scoped>
.table {
border: 1px solid #000;
margin-bottom: 40px;
}
th {
width: 120px;
text-align: center;
font-size: 20px;
color: rgb(10, 1, 1);
font-weight: normal;
}
td {
width: 120px;
text-align: center;
}
</style>
<!-- 待确认列表 -->
<template>
<app-card>
<app-list v-bind="tableOptions" ref="list" >
<template v-slot:table-x="{ row }">
<router-link :to="{ name: 'deal', params: { id: row.id } }">
<app-card>
<app-list v-bind="tableOptions" ref="list">
<template v-slot:table-x="{ row }">
<router-link :to="{ name: 'deal', params: { id: row.id } }">
<el-button>处理</el-button>
</router-link>
</template>
</app-list>
</template>
</app-list>
</app-card>
</template>
<script>
......@@ -37,12 +36,12 @@ export default {
columns: [
{ label: '#', type: 'index', minWidth: '50px', fixed: 'left' },
{ label: '支付凭证', prop: 'id', minWidth: 100 },
{ label: '支付人姓名', prop: 'name', align: 'center', minWidth: 100 },
{ label: '支付人姓名', prop: 'name', align: 'center', minWidth: 150 },
{ label: '支付金额', prop: 'amount', align: 'center', minWidth: 100 },
{ label: '支付时间', prop: 'payment_time', align: 'center', minWidth: 100 },
{ label: '支付方式', prop: 'payment_method', align: 'center', minWidth: 100 },
{ label: '其他支付方式', prop: 'payment_method_others', align: 'center', minWidth: 100 },
{ label: '交易流水号', prop: 'txn_id', align: 'center', minWidth: 100 },
{ label: '其他支付方式', prop: 'payment_method_others', align: 'center', minWidth: 150 },
{ label: '交易流水号', prop: 'txn_id', align: 'center', minWidth: 150 },
{ label: '支付状态', prop: 'payment_status', align: 'center', minWidth: 100 },
{ label: '创建日期', prop: 'created_time', align: 'center', minWidth: 100 },
{ slots: 'table-x', align: 'center', minWidth: 100 }
......
......@@ -17,15 +17,17 @@ const routes = [
},
{
name: 'deal',
path: 'deal',
path: 'payment/:id/deal',
component: () => import('./views/Deal.vue'),
meta: { title: '支付详情' }
meta: { title: '支付详情' },
props: true
},
{
name: 'paydetail',
path: 'paydetail',
path: 'payment/:id/view',
component: () => import('./views/PayDetail.vue'),
meta: { title: '支付详情' }
meta: { title: '支付详情' },
props: true
}
]
}
......
<template>
<div>
<app-card title="支付明细信息" v-if="false">
<app-card title="支付明细信息" v-if="id">
<table border="1" width="1200px" cellspacing="0">
<tr>
<th>支付人姓名</th>
......@@ -36,7 +36,7 @@
</tr>
<tr>
<th>备注</th>
<td colspan="7">{{ confirmDetail.taxpayer_remark }}</td>
<td colspan="7">{{ confirmDetail.comment }}</td>
</tr>
<tr>
<th>创建时间</th>
......@@ -47,47 +47,44 @@
</table>
</app-card>
<app-card>
<el-form ref="formRef" :model="form" :rules="formRules">
<el-form-item label="支付状态" label-width="80px" prop="payment_status">
<el-form ref="formRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="支付状态" prop="payment_status">
<el-select v-model="form.payment_status">
<el-option label="已支付" :value="1"></el-option>
<el-option label="未支付" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="手续费" label-width="80px" prop="service_charge">
<el-input size="mini" v-model="form.service_charge"></el-input>
<el-input v-model="form.service_charge"></el-input>
</el-form-item>
<el-form-item label="到账时间" label-width="80px" prop="receiving_time">
<el-form-item label="到账时间" prop="receiving_time">
<el-date-picker
v-model="form.receiving_time"
type="datetimerange"
type="datetime"
range-separator="至"
start-placeholder="开始日期时间"
end-placeholder="结束日期时间"
value-format="yyyy-MM-dd HH:mm:ss"
size="small"
style="width: 360px"
></el-date-picker>
</el-form-item>
<el-form-item label="备注" label-width="80px" prop="taxpayer_remark">
<el-input size="mini" v-model="form.remark"> </el-input>
<el-form-item label="备注" prop="comment">
<el-input type="textarea" v-model="form.comment"> </el-input>
</el-form-item>
<el-form-item label="到账凭证" label-width="80px" prop="receiving_voucher_filename">
<el-form-item label="到账凭证" prop="receiving_voucher_filename">
<el-upload
class="upload-demo"
drag
list-type="picture-card"
action=""
multiple
show-file-list
:before-upload="beforeUpload"
:auto-upload="false"
:on-change="handleChange"
:on-remove="handleChange"
accept="image/*"
>
<img :src="form.receiving_voucher_filename" alt="" />
<!-- <div class="el-upload__text">拖到此处,或<em>点击上传</em></div> -->
</el-upload>
</el-form-item>
<el-form-item>
<el-button type="primary" style="margin-left: 200px" @click="dealPay">提交</el-button>
<el-button type="primary" @click="dealPay">提交</el-button>
</el-form-item>
</el-form>
</app-card>
......@@ -97,103 +94,63 @@
<script>
import AppCard from '@/components/base/AppCard.vue'
import { payConfirm, payDetail } from '../api'
// import { splitStrLast } from '@/utils/util'
export default {
props: { id: { type: String } },
components: { AppCard },
data() {
return {
confirmDetail: {},
uploadData: {},
id: '',
form: {
service_charge: '',
payment_status: '',
receiving_time: '',
taxpayer_remark: '',
comment: '',
receiving_voucher_filename: []
},
rules: {
payment_status: [{ required: true, message: '请选择支付状态', trigger: 'change' }],
service_charge: [
{ required: true, message: '请输入手续费', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
],
taxpayer_remark: [
{ required: true, message: '请输入备注', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
],
service_charge: [{ required: true, message: '请输入手续费', trigger: 'blur' }],
receiving_time: [{ required: true, message: '请选择到账时间', trigger: 'blur' }],
comment: [{ required: true, message: '请输入备注', trigger: 'blur' }],
receiving_voucher_filename: [{ required: true, message: '请上传到账凭证', trigger: 'change' }]
},
importDisabled: false
}
},
computed: {
// 列表配置
tableOptions() {
return {
filters: [
{
type: 'select',
prop: 'project',
options: this.payState,
labelKey: 'project_name',
valueKey: 'project_id',
placeholder: '支付状态'
},
{
type: 'input',
prop: 'spu_name',
placeholder: '手续费'
},
{ prop: 'date', slots: 'filter-date' },
{
type: 'input',
prop: 'spu_name',
placeholder: '备注'
}
]
}
}
},
mounted() {
this.id = this.$route.params.id
// this.getPayDetail()
this.id && this.getPayDetail()
},
methods: {
beforeUpload(file, target) {
console.log(file)
this.form.receiving_voucher_filename.pust(file)
},
handleSuccess(res, file, target) {
this.fileLoading = ''
const _file = file.raw
this.form.receiving_voucher_filename = _file.src
handleChange(file, fileList) {
this.form.receiving_voucher_filename = fileList
},
// 获取支付信息
getPayDetail() {
const params = { id: this.id }
payDetail(params).then(res => {
payDetail({ id: this.id }).then(res => {
if (res.code === 0) {
this.project = res.data.list[0]
this.confirmDetail = res.data.list[0].confirmed_details[0]
const [first = {}] = res.data.list
this.project = first
this.confirmDetail = first.confirmed_details[0]
}
})
},
// 确认支付
dealPay() {
this.$refs.formRef.validate(valid => {
if (valid) {
const params = Object.assign({ id: this.id }, this.form)
console.log(params)
payConfirm(this.form).then(res => {
if (res.code === 0) {
this.$message.success('支付已经到账')
history.go(-1)
} else {
this.$message.error('提交失败')
}
this.$refs.formRef.validate().then(() => {
const params = Object.assign({ id: this.id }, this.form)
// 图片上传
this.form.receiving_voucher_filename.forEach((file, index) => {
params[`receiving_voucher_filename[${index}]`] = file.raw
})
delete params.receiving_voucher_filename
payConfirm(params)
.then(res => {
this.$message.success('支付已经到账')
history.go(-1)
})
.catch(error => {
this.$message.error(error.message)
})
}
})
}
}
......
<template>
<div>
<el-button @click="fetchTicketDetail" type="danger">财务确认足额支付</el-button>
<el-button @click="fetchTicketDetail" type="primary">刷新状态及金额</el-button>
<template v-if="dealList.payment_status === '70'">
<el-button
@click="fetchConfirmTicketDetail('FINANCE')"
type="danger"
v-if="isFINANCE && dealList.finance_confirm_status === 0"
>财务确认足额支付</el-button
>
<el-button
@click="fetchConfirmTicketDetail('BUSINESS')"
type="danger"
v-if="isBUSINESS && dealList.bussiness_confirm_status === 0"
>业务确认足额支付</el-button
>
</template>
<template v-if="dealList.payment_status === '80'">
<el-button
@click="fetchCancelTicketDetail('FINANCE')"
type="danger"
v-if="isFINANCE && dealList.finance_confirm_status === 1"
>财务取消足额支付</el-button
>
<el-button
@click="fetchCancelTicketDetail('BUSINESS')"
type="danger"
v-if="isBUSINESS && dealList.bussiness_confirm_status === 1"
>业务取消足额支付</el-button
>
</template>
<app-card title="订单信息">
<Order :dealList= "dealList" />
<Order :dealList="dealList" />
</app-card>
<app-card title="学员信息">
<Student :dealList= "dealList" />
<Student :dealList="dealList" />
</app-card>
<app-card title="收款信息">
<Collection :dealList= "dealList" />
<Collection :dealList="dealList" />
</app-card>
<app-card title="发票信息">
<Ticket :dealList= "dealList" />
<Ticket :dealList="dealList" />
</app-card>
<app-card title="渠道信息">
<Channel :dealList= "dealList" />
<Channel :dealList="dealList" />
</app-card>
<app-card title="支付待确认记录">
<Toconfirm :dealList= "dealList" :id="this.id" />
<Toconfirm :dealList="dealList" :id="this.id" />
</app-card>
<app-card title="支付确认记录">
<Confirmed :dealList= "dealList" :id="this.id"/>
<Confirmed :dealList="dealList" :id="this.id" />
</app-card>
</div>
</template>
......@@ -36,7 +62,7 @@ import Ticket from '../components/Ticket.vue'
import Channel from '../components/Channel.vue'
import Toconfirm from '../components/Toconfirm.vue'
import Confirmed from '../components/Confirmed.vue'
import { payDetail } from '../api'
import { payDetail, confirmPayDetail, cancelPayDetail } from '../api'
export default {
components: { AppCard, Order, Student, Collection, Ticket, Channel, Toconfirm, Confirmed },
data() {
......@@ -45,19 +71,64 @@ export default {
dealList: {}
}
},
created() {
computed: {
roles() {
return this.$store.state.roles
},
isFINANCE() {
return (
this.roles.includes('finance_manager') ||
this.roles.includes('finance_director') ||
this.roles.includes('developer')
)
},
isBUSINESS() {
return (
this.roles.includes('admissions_director') ||
this.roles.includes('dean_of_admissions') ||
this.roles.includes('developer')
)
}
},
beforeMount() {
this.id = this.$route.params.id // 详情列表
// 获取发票详情信息
this.fetchTicketDetail()
this.$store.dispatch('getRoles')
},
methods: {
fetchTicketDetail() {
const params = { id: this.id }
payDetail(params).then((res) => {
payDetail(params).then(res => {
if (res.code === 0) {
this.dealList = res.data.list[0]
}
})
},
// 确认
fetchConfirmTicketDetail(val) {
console.log(val)
const params = {
confirm_type: val,
id: this.id
}
confirmPayDetail(params).then(res => {
if (res.code === 0) {
this.fetchTicketDetail()
}
})
},
// 取消
fetchCancelTicketDetail(val) {
const params = {
confirm_type: val,
id: this.id
}
cancelPayDetail(params).then(res => {
if (res.code === 0) {
this.fetchTicketDetail()
}
})
}
}
}
......
import Vue from 'vue'
import Vuex from 'vuex'
import { getUser, logout } from '@/api/base'
import { getUser, logout, getRoles } from '@/api/base'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
user: {}
user: {},
roles: []
},
mutations: {
setUser(state, user) {
state.user = user
},
setRoles(state, roles) {
state.roles = roles
}
},
actions: {
......@@ -43,6 +47,15 @@ export default new Vuex.Store({
return false
})
return isLogin
},
// 获取角色
getRoles({ commit }) {
return getRoles().then(response => {
const { roles = [] } = response.data
commit('setRoles', roles)
console.log(roles)
return response
})
}
}
})
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论