提交 77e28f3a authored 作者: lihuihui's avatar lihuihui
......@@ -8,6 +8,7 @@
"version": "0.0.0",
"dependencies": {
"axios": "^0.21.1",
"clipboard": "^2.0.8",
"element-ui": "^2.15.5",
"query-string": "^7.0.1",
"vue": "^2.6.14",
......@@ -2244,6 +2245,16 @@
"fsevents": "~2.3.2"
}
},
"node_modules/clipboard": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz",
"integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==",
"dependencies": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
"tiny-emitter": "^2.0.0"
}
},
"node_modules/co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
......@@ -2511,6 +2522,11 @@
"node": ">= 6"
}
},
"node_modules/delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"node_modules/depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
......@@ -3589,6 +3605,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
"dependencies": {
"delegate": "^3.1.2"
}
},
"node_modules/graceful-fs": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
......@@ -5306,6 +5330,11 @@
"get-ready": "~1.0.0"
}
},
"node_modules/select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
},
"node_modules/semver": {
"version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
......@@ -5754,6 +5783,11 @@
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
"dev": true
},
"node_modules/tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"node_modules/to-arraybuffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
......@@ -8156,6 +8190,16 @@
"readdirp": "~3.6.0"
}
},
"clipboard": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz",
"integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==",
"requires": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
"tiny-emitter": "^2.0.0"
}
},
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
......@@ -8355,6 +8399,11 @@
"esprima": "^4.0.0"
}
},
"delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
......@@ -9179,6 +9228,14 @@
"type-fest": "^0.20.2"
}
},
"good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
"requires": {
"delegate": "^3.1.2"
}
},
"graceful-fs": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
......@@ -10497,6 +10554,11 @@
"get-ready": "~1.0.0"
}
},
"select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
},
"semver": {
"version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
......@@ -10848,6 +10910,11 @@
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
"dev": true
},
"tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"to-arraybuffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
......
......@@ -13,6 +13,7 @@
},
"dependencies": {
"axios": "^0.21.1",
"clipboard": "^2.0.8",
"element-ui": "^2.15.5",
"query-string": "^7.0.1",
"vue": "^2.6.14",
......
......@@ -59,13 +59,13 @@ export default {
.app-aside {
position: sticky;
top: 0;
width: 240px;
width: 200px;
z-index: 100;
background: #fff;
border-right: 1px solid rgba(0, 0, 0, 0.12);
overflow-x: hidden;
overflow-y: auto;
flex: 0 0 240px;
flex: 0 0 200px;
}
.nav {
margin: 20px 0;
......
......@@ -20,10 +20,10 @@ export default {
</script>
<style lang="scss">
.app-breadcrumb {
padding: 20px 0 32px;
padding: 18px 0 32px;
.el-breadcrumb {
font-size: 24px;
font-size: 20px;
font-weight: 400;
line-height: 1;
}
......
......@@ -24,7 +24,7 @@ export default {
display: flex;
flex-direction: column;
min-height: 100vh;
background-color: #f4f5f7;
background-color: #ededed;
}
.app-layout-container {
flex: 1;
......
......@@ -27,7 +27,7 @@ export default {
.app-main {
position: relative;
flex: 1;
padding: 24px;
padding: 20px;
overflow: hidden;
}
.app-main-inner {
......
......@@ -10,7 +10,7 @@ import beforeEnter from '@/utils/beforeEnter'
// Element-UI
import ElementUI from 'element-ui'
import '@/assets/theme/style.scss'
Vue.use(ElementUI)
Vue.use(ElementUI, { size: 'small' })
// 注册模块
modules({ router, store })
......
import httpRequest from '@/utils/axios'
// 获取项目列表
export function getProjectList(data) {
return httpRequest.get('/api/finance/v1/projects/list', data)
export function getProjectList(params) {
return httpRequest.get('/api/finance/v1/projects/list', { params })
}
// 获取支付过滤条件
export function getCondition(data) {
return httpRequest.get('/api/finance/v1/payments/condition', data)
export function getCondition(params) {
return httpRequest.get('/api/finance/v1/payments/condition', { params })
}
// 获取支付列表
export function getPayList(data) {
return httpRequest.get('/api/finance/v1/payments/list', data)
}
// 查看支付详情
export function payDetail(params) {
return httpRequest.get('/api/finance/v1/payments/details', { params })
}
// 支付列表下载
export function download(data) {
return httpRequest.get('/api/finance//v1/payments/download', data)
return httpRequest.get('/api/finance/v1/payments/download', data)
}
// 是否允许开具发票
export function allowCreate(data) {
return httpRequest.post('/api/finance/v1/payments/update-can-invoice', data)
......@@ -32,10 +35,6 @@ export function getTableTitle(data) {
export function updateTableTitle(data) {
return httpRequest.get('/api/finance/v1/payments/update-title', data)
}
// 查看支付详情
export function payDetail(data) {
return httpRequest.get('/api/finance/v1/payments/details', data)
}
// 开具发票
export function createNewTicket(data) {
return httpRequest.get('/api/finance/v1/invoices/create', data)
......@@ -46,17 +45,5 @@ export function cancelTicket(data) {
}
// 确认(取消)单条缴费到账
export function payConfirm(data) {
return httpRequest.get('/api/finance/v1/payments/details-confirm', data)
}
// 渠道列表
export function getChannelList(data) {
return httpRequest.get('/api/finance/v1/channels/list', data)
}
// // 申请状态
// export function getApplyStatusList(data) { // 待修改
// return httpRequest.get('/api/finance/v1/channels/list', data)
// }
// 费用类型
export function getExpenseList(data) { // 待修改
return httpRequest.get('/api/finance/v1/channels/list', data)
return httpRequest.post('/api/finance/v1/payments/details-confirm', data)
}
......@@ -3,41 +3,42 @@
<table border="1" width="1200px" cellspacing="0">
<tr>
<th>不含税销售金额</th>
<td>dfsvasdfc</td>
<td>{{dealList.sales_amount_excluding_tax}}</td>
<th>渠道代理费提基数</th>
<td>vfdvdav</td>
<td>{{dealList.channel_agent_fee_base}}</td>
<th>服务费规则</th>
<td>dfvdvdfav</td>
<td>{{dealList.service_fee_rules}}</td>
</tr>
<tr>
<th>服务费比例</th>
<td>dfdsfsef</td>
<td>{{dealList.service_charge_ratio}}</td>
<th>代理服务费</th>
<td>fvfdvdfv</td>
<td>{{dealList.agency_service_fee}}</td>
<th>代理服务费(不含税金额)</th>
<td>vfadvdeafv</td>
<td>{{dealList.agency_service_fee_excluding_tax}}</td>
</tr>
<tr>
<th>户名</th>
<td>dfdsfsef</td>
<td>{{dealList.channel_account_name}}</td>
<th>账号</th>
<td>fvfdvdfv</td>
<td>{{dealList.channel_account}}</td>
<th>开户行</th>
<td>vfadvdeafv</td>
<td>{{dealList.channel_bank_of_deposit}}</td>
</tr>
<tr>
<th>渠道税率</th>
<td colspan="5">dfdsfsef</td>
<td colspan="5">{{dealList.channel_tax_rate}}</td>
</tr>
</table>
</template>
<script>
export default {
prop: {
payDetailList: {
type: Array,
default: []
props: {
dealList: {
type: Object,
// eslint-disable-next-line vue/require-valid-default-prop
default: {}
}
}
}
......
......@@ -3,35 +3,36 @@
<table border="1" width="1200px" cellspacing="0">
<tr>
<th>应缴金额</th>
<td>dfsvasdfc</td>
<td>{{dealList.bill_total}}</td>
<th>实缴金额</th>
<td>vfdvdav</td>
<th>缴金额</th>
<td>dfvdvdfav</td>
<td>{{dealList.amount_need_to_pay}}</td>
<th>缴金额</th>
<td>{{dealList.amount_waiting_for_pay}}</td>
</tr>
<tr>
<th>手续费</th>
<td>dfdsfsef</td>
<td>{{dealList.service_charge}}</td>
<th>到账金额</th>
<td>fvfdvdfv</td>
<td>{{dealList.amount_received}}</td>
<th>待确认金额</th>
<td>vfadvdeafv</td>
<td>{{dealList.amount_waiting_for_confirm}}</td>
</tr>
<tr>
<th>首次缴费金额</th>
<td></td>
<th>末次缴费金额</th>
<td colspan="3"></td>
<th>首次缴费时间</th>
<td>{{dealList.first_payment_time}}</td>
<th>末次缴费时间</th>
<td colspan="3">{{dealList.final_payment_time}}</td>
</tr>
</table>
</template>
<script>
export default {
prop: {
payDetailList: {
type: Array,
default: []
props: {
dealList: {
type: Object,
// eslint-disable-next-line vue/require-valid-default-prop
default: {}
}
}
}
......
<!-- 支付详情-已确认列表 -->
<template>
<app-card>
<app-list v-bind="tableOptions" ref="list" @selection-change="handleSelectionChange">
<template v-slot:table-x>
<el-button @click="toDetail">查看</el-button>
<el-button>取消到账</el-button>
<app-list v-bind="tableOptions" ref="list" >
<template v-slot:table-x = "{ row }">
<el-button @click="toDetail(row)">查看</el-button>
<el-button @click="cancelReceive(row)">取消到账</el-button>
</template>
</app-list>
</app-card>
......@@ -13,13 +13,14 @@
// 组件
import AppList from '@/components/base/AppList.vue'
import AppCard from '@/components/base/AppCard.vue'
import { payDetail, payConfirm } from '../api'
// 接口
// import { getOrderList } from '../api'
export default {
prop: {
payDetailList: {
type: Array,
default: []
props: {
id: {
type: String,
default: ''
}
},
components: { AppCard, AppList },
......@@ -32,76 +33,42 @@ export default {
tableOptions() {
return {
remote: {
// httpRequest: getOrderList, // 获取订单列表
params: {},
httpRequest: payDetail, // 获取订单列表
params: { id: this.id },
beforeRequest: this.beforeRequest
},
columns: [
{ label: '#', type: 'index', minWidth: '50px', fixed: 'left' },
{ label: '支付凭证', prop: 'id', minWidth: 100 },
{ label: '支付人姓名', prop: 'img', align: 'center', minWidth: 100 },
{ label: '支付金额', prop: 'name', align: 'center', minWidth: 100 },
{ label: '支付时间', prop: 'standardPrice', align: 'center', minWidth: 100 },
{ label: '支付方式', prop: 'num', align: 'center', minWidth: 100 },
{ label: '支付状态', prop: 'payPrice', align: 'center', minWidth: 100 },
{ label: '创建日期', prop: 'payPrice', align: 'center', minWidth: 100 },
{ label: '支付人姓名', prop: 'name', align: 'center', minWidth: 100 },
{ 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_status', align: 'center', minWidth: 100 },
{ label: '创建日期', prop: 'created_time', align: 'center', minWidth: 100 },
{ slots: 'table-x', align: 'center', minWidth: 100 }
],
data: [
{
id: 'dfSDfsdf',
img: 'FDZF',
name: 'DSZF',
standardPrice: 'FDSZF',
num: 'dsff',
payPrice: 'aefes'
},
{
id: 'dfSDfsdf',
img: 'FDZF',
name: 'DSZF',
standardPrice: 'FDSZF',
num: 'dsff',
payPrice: 'aefes'
},
{
id: 'dfSDfsdf',
img: 'FDZF',
name: 'DSZF',
standardPrice: 'FDSZF',
num: 'dsff',
payPrice: 'aefes'
},
{
id: 'dfSDfsdf',
img: 'FDZF',
name: 'DSZF',
standardPrice: 'FDSZF',
num: 'dsff',
payPrice: 'aefes'
}
]
}
}
},
methods: {
beforeRequest(params, isReset) {
// 重置
if (isReset) {
params.price_min = ''
params.price_max = ''
}
params.status = this.activeName === '0' ? '' : this.activeName
params.price_zone = `${params.price_min || ''},${params.price_max || ''}`
return params
},
// 选择
handleSelectionChange(value) {
this.multipleSelection = value
},
// 查看支付详情
toDetail() {
this.$router.push({
name: 'paydetail'
name: 'paydetail',
params: {
id: this.id
}
})
},
// 取消到账
cancelReceive() {
payConfirm().then(res => {
if (res.code === 0) {
this.$parent.fetchTicketDetail()
}
})
}
}
......
......@@ -4,17 +4,15 @@
<table border="1" width="1200px" cellspacing="0">
<tr>
<th>订单用户名称</th>
<td>111</td>
<th>支付人姓名</th>
<td>111</td>
<td>{{dealList.name}}</td>
<td>订单编号</td>
<td>adad</td>
<td>{{dealList.id}}</td>
<td>支付状态</td>
<td>sdad</td>
<td>{{dealList.payment_status}}</td>
</tr>
<tr>
<th>备注</th>
<td colspan="8">21h3u</td>
<td colspan="5">{{dealList.comment}}</td>
</tr>
</table>
</div>
......@@ -22,11 +20,14 @@
<script>
export default {
prop: {
payDetailList: {
type: Array,
default: []
props: {
dealList: {
type: Object,
// eslint-disable-next-line vue/require-valid-default-prop
default: {}
}
},
mounted() {
}
}
</script>
......
......@@ -28,12 +28,13 @@
<script>
// import QrcodeVue from 'qrcode.vue'
// import Clipboard from 'clipboard'
import Clipboard from 'clipboard'
export default {
// components: { QrcodeVue },
props: {
title: { type: String, default: '推广' },
value: { type: String, default: '' }
value: { type: String, default: '' },
id: { type: String, default: '' }
},
data() {
return {
......@@ -48,18 +49,18 @@ export default {
.toDataURL('image/png')
.replace('image/png', 'image/octet-stream')
},
// initClipboard() {
// if (this.clipboard) {
// return
// }
// this.clipboard = new Clipboard(this.$refs.copy.$el)
// this.clipboard.on('success', () => {
// this.$message({ message: '复制成功!', type: 'success' })
// })
// this.clipboard.on('error', () => {
// this.$message({ message: '复制失败,请手动选择复制!', type: 'error' })
// })
// },
initClipboard() {
if (this.clipboard) {
return
}
this.clipboard = new Clipboard(this.$refs.copy.$el)
this.clipboard.on('success', () => {
this.$message({ message: '复制成功!', type: 'success' })
})
this.clipboard.on('error', () => {
this.$message({ message: '复制失败,请手动选择复制!', type: 'error' })
})
},
handleOpened() {
this.$nextTick(function () {
this.initClipboard()
......
......@@ -4,19 +4,19 @@
<table border="1" width="1200px" cellspacing="0">
<tr>
<th>学员姓名</th>
<td>111</td>
<td>{{dealList.name}}</td>
<th>报名项目</th>
<td>111</td>
<td>{{dealList.project_name}}</td>
<td>所属班次</td>
<td>adad</td>
<td>{{dealList.bill_customer_class}}</td>
</tr>
<tr>
<th>开学时间</th>
<td>21h3u</td>
<td>{{dealList.bill_customer_class_start_time}}</td>
<th>学制期限</th>
<td>21h3u</td>
<td>{{dealList.bill_customer_class_length_of_schooling}}</td>
<th>跟进人</th>
<td>21h3u</td>
<td>{{dealList.sales_rep_user_id_name}}</td>
</tr>
</table>
</div>
......@@ -24,10 +24,11 @@
<script>
export default {
prop: {
payDetailList: {
type: Array,
default: []
props: {
dealList: {
type: Object,
// eslint-disable-next-line vue/require-valid-default-prop
default: {}
}
}
}
......
......@@ -2,59 +2,66 @@
<!-- 支付详情-发票表格 -->
<template>
<div class="ticketInfo">
<table border="1" width="1200px" cellspacing="0" v-for="(item, index) in TicketInfoList" :key="index" class="table">
fddsrf
<table border="1" width="1200px" cellspacing="0" v-for="(item, index) in invioceList" :key="index" class="table">
<tr>
<th colspan="10">{{ item.title }}</th>
<th colspan="10">发票{{ item.id }}</th>
</tr>
<tr>
<th>发票</th>
<td>{{ item.ticketNum }}</td>
<th>发票</th>
<td>{{ item.invoice_haoma }}</td>
<th>发票代码</th>
<td>{{ item.code }}</td>
<th>发票类型</th>
<td>{{ item.ticketType }}</td>
<th>开票人类型</th>
<td>{{ item.peopleType }}</td>
<td>{{ item.invoice_daima }}</td>
<th>开票类型</th>
<td>{{ item.toTicketType }}</td>
<td>{{ item.invoice_color_type }}</td>
<th>抬头类型</th>
<td>{{ item.taxpayer_type }}</td>
<th>发票类型</th>
<td>{{ item.invoice_type }}</td>
</tr>
<tr v-show="item.invoice_status === 6">
<th>原发票号码</th>
<td>{{item.old_invoice_haoma}}</td>
<th>原发票代码</th>
<td>{{item.old_invoice_daima}}</td>
</tr>
<tr>
<th>含税金额</th>
<td>{{ item.totalPrice }}</td>
<td>{{ item.invoice_total_amount }}</td>
<th>税率</th>
<td>{{ item.percent }}</td>
<td>{{ item.invoice_tax_rate }}</td>
<th>税额</th>
<td>{{ item.percentPart }}</td>
<td>{{ item.invoice_tax_rate_amount }}</td>
<th>不含税金额(元)</th>
<td>{{ item.price }}</td>
<td>{{ item.invoice_excluding_tax_amount }}</td>
<th>发票申请日期</th>
<td>{{ item.applyDate }}</td>
<td>{{ item.invoice_application_time }}</td>
</tr>
<tr>
<th>票据类型</th>
<td>{{ item.type }}</td>
<th>纳税人名称</th>
<td>{{ item.name }}</td>
<td>{{ item.taxpayer_name }}</td>
<th>纳税人识别号</th>
<td>{{ item.num }}</td>
<td>{{ item.taxpayer_identifier }}</td>
<th>邮箱地址</th>
<td>{{ item.email }}</td>
<th>开票日期</th>
<td>{{ item.date }}</td>
<td>{{ item.recipient_email }}</td>
<th>出票日期</th>
<td>{{ item.invoice_issuing_time }}</td>
<th>操作人</th>
<td>{{ item.created_operator_name }}</td>
</tr>
<tr>
<th>邮寄地址</th>
<td colspan="3">{{ item.address }}</td>
<td colspan="3">{{ item.recipient_address }}</td>
<th>收件人姓名</th>
<td>{{ item.recipientName }}</td>
<td>{{ item.recipient_name }}</td>
<th>收件人手机号</th>
<td>{{ item.recipientPhone }}</td>
<td>{{ item.recipient_mobile }}</td>
<th>票据跟进人</th>
<td>{{ item.follow }}</td>
<td>{{ item.sales_rep_user_id_name }}</td>
</tr>
<tr>
<th>备注</th>
<td colspan="9">{{ item.remark }}</td>
<td colspan="9">{{ item.taxpayer_remark }}</td>
</tr>
</table>
</div>
......@@ -62,61 +69,20 @@
<script>
export default {
prop: {
payDetailList: {
type: Array,
default: []
props: {
dealList: {
type: Object,
// eslint-disable-next-line vue/require-valid-default-prop
default: {}
}
},
data() {
return {
TicketInfoList: [
{
ticketNum: 'jdaijdajk',
code: 'eqeqeq',
remark: 'eqeq',
follow: 'eqe',
recipientPhone: 'weqe',
recipientName: 'wewr',
address: 'eqweq',
date: 'qeeqe',
email: 'eqweq',
num: 'dqwdq',
name: 'uutu',
type: 'ty67u',
applyDate: 'fee3t',
price: '24424',
percentPart: '342234',
percent: '2342 3',
totalPrice: 'wr342',
toTicketType: 'dfe',
peopleType: 'cvd',
title: 'daddd'
},
{
ticketNum: 'jdaijdajk',
code: 'eqeqeq',
remark: 'eqeq',
follow: 'eqe',
recipientPhone: 'weqe',
recipientName: 'wewr',
address: 'eqweq',
date: 'qeeqe',
email: 'eqweq',
num: 'dqwdq',
name: 'uutu',
type: 'ty67u',
applyDate: 'fee3t',
price: '24424',
percentPart: '342234',
percent: '2342 3',
totalPrice: 'wr342',
toTicketType: 'dfe',
peopleType: 'cvd',
title: 'daddd'
}
]
invioceList: []
}
},
mounted() {
this.invioceList = this.dealList.invoices_list || []
}
}
</script>
......
......@@ -5,27 +5,27 @@
<table border="1" width="720px" cellspacing="0" class="table">
<tr>
<th>客户姓名</th>
<td>lisi</td>
<th>k客户编号</th>
<td>lisi</td>
<td>{{detailList.name}}</td>
<th>客户编号</th>
<td>{{detailList.customer_id}}</td>
<th>订单编号</th>
<td>lisi</td>
<td>{{detailList.id}}</td>
</tr>
<tr>
<th>支付状态</th>
<td>lisi</td>
<td>{{detailList.payment_status}}</td>
<th>报名项目</th>
<td>lisi</td>
<td>{{detailList.project_id}}</td>
<th>应缴金额</th>
<td>lisi</td>
<td>{{detailList.bill_total}}</td>
</tr>
<tr>
<th>实缴金额</th>
<td>lisi</td>
<td>{{detailList.amount_need_to_pay}}</td>
<th>交易流水号</th>
<td>lisi</td>
<td>{{detailList.txn_id_list}}</td>
<th>缴费时间</th>
<td>lisi</td>
<td>{{detailList.final_payment_time}}</td>
</tr>
</table>
<el-form label-width="120px" ref="ruleForm" :model="form" :rules="rules">
......@@ -65,7 +65,7 @@
</el-form-item>
<!-- 企业发票显示税号 -->
<el-form-item label="纳税人识别号" prop="taxpayer_identifier" v-show="form.people_type === '1'">
<el-input v-model="taxpayer_identifier"></el-input>
<el-input v-model="form.taxpayer_identifier"></el-input>
</el-form-item>
<div v-show="form.people_type === '1' && form.invioce_type === '3' " >
<el-form-item label="地址" prop="taxpayer_address">
......@@ -102,7 +102,7 @@
</el-form-item>
</div>
<el-form-item>
<el-button size="mini" @click="$emit('ticketVisible')">取消</el-button>
<el-button size="mini" @click="$emit('close')">取消</el-button>
<el-button type="primary" @click="onSubmit" size="mini">提交</el-button>
</el-form-item>
</el-form>
......@@ -110,20 +110,27 @@
</template>
<script>
import { payDetail } from '../api'
export default {
props: {
ticketVisible: {
type: Boolean,
default: false
},
id: {
type: String,
default: ''
}
},
data() {
return {
detailList: {},
form: {
toticket_type: '',
people_type: '',
ticket_type: '',
taxpayer_name: '',
taxpayer_identifier: '',
taxpayer_num: '',
address: '',
phone: '',
......@@ -137,12 +144,12 @@ export default {
rules: {
toticket_type: [{ required: true, message: '请选择开票类型', trigger: 'change' }],
people_type: [{ required: true, message: '请选择抬头类型', trigger: 'change' }],
ticket_type: [{ required: true, message: '请选择发票类型', trigger: 'change' }],
invioce_type: [{ required: true, message: '请选择发票类型', trigger: 'change' }],
taxpayer_name: [
{ required: true, message: '请输入纳税人名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
],
taxpayer_num: [
taxpayer_identifier: [
{ required: true, message: '请输入纳税人识别号', trigger: 'blur' },
{ min: 3, max: 30, message: '长度在 3 到 30 个字符', trigger: 'blur' }
],
......@@ -150,7 +157,7 @@ export default {
{ required: true, message: '请输入地址', trigger: 'blur' },
{ min: 3, max: 30, message: '长度在 3 到 30 个字符', trigger: 'blur' }
],
phone: [
taxpayer_mobile: [
{ required: true, message: '请输入电话', trigger: 'blur' },
{ min: 11, max: 11, message: '长度在 11 个字符', trigger: 'blur' }
],
......@@ -181,7 +188,18 @@ export default {
}
}
},
mounted() {
this.getPayDetail()
},
methods: {
getPayDetail() {
const params = { id: this.id }
payDetail(params).then(res => {
if (res.code === 0) {
this.detailList = res.data.list[0]
}
})
},
// 提交开票信息
onSubmit() {
this.$refs.ruleForm.validate(valid => {
......
<!-- 待确认列表 -->
<template>
<app-card><app-list v-bind="tableOptions" ref="list" @selection-change="handleSelectionChange"><template v-slot:table-x><el-button @click="toDeal">处理</el-button></template></app-list></app-card>
<app-card>
<app-list v-bind="tableOptions" ref="list" >
<template v-slot:status-select>
<el-button @click="toDeal">处理</el-button>
</template>
</app-list>
</app-card>
</template>
<script>
// 组件
import AppList from '@/components/base/AppList.vue'
import AppCard from '@/components/base/AppCard.vue'
// 接口
// import { getOrderList } from '../api'
import { payDetail } from '../api'
export default {
prop: {
payDetailList: {
type: Array,
default: []
props: {
id: {
type: String,
default: ''
}
},
components: { AppCard, AppList },
......@@ -26,75 +32,27 @@ export default {
tableOptions() {
return {
remote: {
// httpRequest: getOrderList, // 获取订单列表
httpRequest: payDetail, // 获取订单列表
params: {},
beforeRequest: this.beforeRequest
},
columns: [
{ label: '#', type: 'index', minWidth: '50px', fixed: 'left' },
{ label: '支付凭证', prop: 'id', minWidth: 100 },
{ label: '支付人姓名', prop: 'img', align: 'center', minWidth: 100 },
{ label: '支付金额', prop: 'name', align: 'center', minWidth: 100 },
{ label: '支付时间', prop: 'standardPrice', align: 'center', minWidth: 100 },
{ label: '支付方式', prop: 'num', align: 'center', minWidth: 100 },
{ label: '其他支付方式', prop: 'num', align: 'center', minWidth: 100 },
{ label: '交易流水号', prop: 'num', align: 'center', minWidth: 100 },
{ label: '支付状态', prop: 'payPrice', align: 'center', minWidth: 100 },
{ label: '创建日期', prop: 'payPrice', align: 'center', minWidth: 100 },
{ label: '支付人姓名', prop: 'name', align: 'center', minWidth: 100 },
{ 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_status', align: 'center', minWidth: 100 },
{ label: '创建日期', prop: 'created_time', align: 'center', minWidth: 100 },
{ slots: 'table-x', align: 'center', minWidth: 100 }
],
data: [
{
id: 'dfSDfsdf',
img: 'FDZF',
name: 'DSZF',
standardPrice: 'FDSZF',
num: 'dsff',
payPrice: 'aefes'
},
{
id: 'dfSDfsdf',
img: 'FDZF',
name: 'DSZF',
standardPrice: 'FDSZF',
num: 'dsff',
payPrice: 'aefes'
},
{
id: 'dfSDfsdf',
img: 'FDZF',
name: 'DSZF',
standardPrice: 'FDSZF',
num: 'dsff',
payPrice: 'aefes'
},
{
id: 'dfSDfsdf',
img: 'FDZF',
name: 'DSZF',
standardPrice: 'FDSZF',
num: 'dsff',
payPrice: 'aefes'
}
]
}
}
},
methods: {
// beforeRequest(params, isReset) {
// // 重置
// if (isReset) {
// params.price_min = ''
// params.price_max = ''
// }
// params.status = this.activeName === '0' ? '' : this.activeName
// params.price_zone = `${params.price_min || ''},${params.price_max || ''}`
// return params
// },
// // 选择
// handleSelectionChange(value) {
// this.multipleSelection = value
// },
// 处理
toDeal() {
console.log('111')
......
......@@ -4,60 +4,62 @@
<table border="1" width="1200px" cellspacing="0">
<tr>
<th>支付人姓名</th>
<td>dsfrsfc</td>
<td>{{confirmDetail.name}}</td>
<th>费用类型</th>
<td>是的v方式地方vc</td>
<td>{{confirmDetail.type}}</td>
<th>支付金额</th>
<td>21313</td>
<td>{{confirmDetail.amount}}</td>
<th>支付状态</th>
<td>个大哥大哥v那边</td>
<td>{{confirmDetail.payment_status}}</td>
</tr>
<tr>
<th>支付方式</th>
<td></td>
<td>{{confirmDetail.payment_method}}</td>
<th>其他支付方式</th>
<td></td>
<td>{{confirmDetail.payment_method_others}} </td>
<th>支付时间</th>
<td colspan="3"></td>
<td colspan="3">{{confirmDetail.payment_time}}</td>
</tr>
<tr>
<td></td>
<td colspan="7">是的方式为非阿法尔</td>
<td colspan="7">
<img :src="confirmDetail.payment_voucher_filename" alt="">
</td>
</tr>
<tr>
<th>项目</th>
<td></td>
<td>{{project.project_id}}</td>
<th>销售</th>
<td></td>
<td>{{project.sales_rep_user_id_name}}</td>
<th>渠道</th>
<td colspan="3"></td>
<td colspan="3">{{project.channel_id}}</td>
</tr>
<tr>
<th>备注</th>
<td colspan="7">dfsdfs</td>
<td colspan="7">{{confirmDetail.taxpayer_remark}}</td>
</tr>
<tr>
<th>创建时间</th>
<td colspan="3">5</td>
<th>到账时间</th>
<td colspan="3"></td>
<td colspan="3">{{confirmDetail.created_time}}</td>
<th>更新时间</th>
<td colspan="3">{{confirmDetail.updated_time}}</td>
</tr>
</table>
</app-card>
<app-card>
<el-form ref="formRef" :model="form" :rules="formRules">
<el-form-item label="支付状态" label-width="80px" prop="payStatus">
<el-select v-model="form.payStatus">
<el-form-item label="支付状态" label-width="80px" 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="commission">
<el-input size="mini" v-model="form.commission"></el-input>
<el-form-item label="手续费" label-width="80px" prop="service_charge">
<el-input size="mini" v-model="form.service_charge"></el-input>
</el-form-item>
<el-form-item label="到账时间" label-width="80px" prop="date">
<el-form-item label="到账时间" label-width="80px" prop="receiving_time">
<el-date-picker
v-model="form.date"
v-model="form.receiving_time"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期时间"
......@@ -67,21 +69,18 @@
style="width: 360px"
></el-date-picker>
</el-form-item>
<el-form-item label="备注" label-width="80px" prop="remark">
<el-form-item label="备注" label-width="80px" prop="taxpayer_remark">
<el-input size="mini" v-model="form.remark"> </el-input>
</el-form-item>
<el-form-item label="到账凭证" label-width="80px" prop="document">
<el-form-item label="到账凭证" label-width="80px" prop="receiving_voucher_filename">
<el-upload class="upload-demo"
drag action="https://jsonplaceholder.typicode.com/posts/"
drag
action="https://webapp-pub.oss-cn-beijing.aliyuncs.com"
multiple
:file-list="fileList"
accept=".xls,.xlsx"
:before-upload="beforeUpload"
:http-request="fetchFileUpload" >
show-file-list
:file-list="form.receiving_voucher_filename">
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传excel文件</div>
</el-upload>
</el-form-item>
<el-form-item>
......@@ -94,29 +93,33 @@
<script>
import AppCard from '@/components/base/AppCard.vue'
import { payConfirm } from '../api'
import { splitStrLast } from '@/utils/util'
import { payConfirm, payDetail } from '../api'
// import { splitStrLast } from '@/utils/util'
export default {
components: { AppCard },
data() {
return {
form: {
commission: '',
payStatus: '',
date: '',
remark: '',
document: ''
service_charge: '',
payment_status: '',
receiving_time: '',
taxpayer_remark: '',
receiving_voucher_filename: ''
},
rules: {
payStatus: [
payment_status: [
{ required: true, message: '请选择支付状态', trigger: 'change' }
],
commission: [
service_charge: [
{ required: true, message: '请输入手续费', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
],
document: [
taxpayer_remark: [
{ required: true, message: '请输入备注', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
],
receiving_voucher_filename: [
{ required: true, message: '请上传到账凭证', trigger: 'change' }
]
},
......@@ -127,11 +130,11 @@ export default {
// 列表配置
tableOptions() {
return {
remote: {
// httpRequest: getOrderList, // 获取订单列表
params: {},
beforeRequest: this.beforeRequest
},
// remote: {
// // httpRequest: getOrderList, // 获取订单列表
// params: {},
// beforeRequest: this.beforeRequest
// },
filters: [
{
type: 'select',
......@@ -157,27 +160,26 @@ export default {
}
},
mounted() {
this.dealPay()
this.getPayDetail()
},
methods: {
beforeUpload(file) {
const suffix = splitStrLast(file.name, '.')
if (!['xlsx', 'xls'].includes(suffix)) {
this.$message.error('只能上传excel文件')
return false
} else {
return true
getPayDetail() {
payDetail().then(res => {
if (res.code === 0) {
this.project = res.data.list[0]
this.confirmDetail = res.data.list[0].confirmed_details[0]
}
},
fetchFileUpload(data) {
const formData = new window.FormData()
formData.append('file', data.file)
this.importDisabled = true
})
},
dealPay() {
this.$refs.formRef.validate(valid => {
if (valid) {
payConfirm().then(res => {})
payConfirm().then(res => {
if (res.code === 0) {
this.$message.success('支付已经到账')
history.go(-1)
}
})
}
})
}
......
......@@ -15,14 +15,11 @@
<app-card title="渠道信息">
<Channel :dealList= "dealList" />
</app-card>
<app-card title="商品信息">
<Commodity :dealList= "dealList" />
</app-card>
<app-card title="支付待确认记录">
<Toconfirm :dealList= "dealList" />
<Toconfirm :dealList= "dealList" :id="this.id" />
</app-card>
<app-card title="支付确认记录">
<Confirmed :dealList= "dealList" />
<Confirmed :dealList= "dealList" :id="this.id"/>
</app-card>
</div>
</template>
......@@ -35,28 +32,29 @@ import Student from '../components/Student.vue'
import Collection from '../components/Collection.vue'
import Ticket from '../components/Ticket.vue'
import Channel from '../components/Channel.vue'
import Commodity from '../components/Commodity.vue'
import Toconfirm from '../components/Toconfirm.vue'
import Confirmed from '../components/Confirmed.vue'
import { payDetail } from '../api'
export default {
components: { AppCard, Order, Student, Collection, Ticket, Channel, Commodity, Toconfirm, Confirmed },
components: { AppCard, Order, Student, Collection, Ticket, Channel, Toconfirm, Confirmed },
data() {
return {
id: '',
detailList: {}
dealList: {}
}
},
created() {
this.id = this.$route.params.id // 详情列表
console.log(this.id + '---id')
// 获取发票详情信息
this.fetchTicketDetail()
},
methods: {
fetchTicketDetail() {
payDetail().then((res) => {
if (res.data === 0) {
this.detailList = res.data
const params = { id: this.id }
payDetail(params).then((res) => {
if (res.code === 0) {
this.dealList = res.data.list[0]
}
})
}
......
......@@ -3,55 +3,59 @@
<table border="1" width="1200px" cellspacing="0">
<tr>
<th>支付人姓名</th>
<td>额度无绯闻绯闻</td>
<td>{{confirmDetail.name}}</td>
<th>费用类型</th>
<td>发呆发呆舒服</td>
<td>{{confirmDetail.type}}</td>
<th>支付金额</th>
<td>发v郭德纲vb</td>
<td>{{confirmDetail.amount}}</td>
<th>支付状态</th>
<td>发啊发恶风</td>
<td>{{confirmDetail.payment_status}}</td>
</tr>
<tr>
<th>项目</th>
<td>书法色法俄吧v</td>
<td>{{project.project_id}}</td>
<th>销售</th>
<td>反对党撒发色吧</td>
<td>{{project.sales_rep_user_id_name}}</td>
<th>渠道</th>
<td colspan="3">都是十分热啊</td>
<td colspan="3">{{project.channel_id}}</td>
</tr>
<tr>
<th>支付方式</th>
<td>吧官方办法但是不管v</td>
<td>{{confirmDetail.payment_method}}</td>
<th>其他支付方式</th>
<td>v地方v地方v </td>
<td>{{confirmDetail.payment_method_others}} </td>
<th>支付时间</th>
<td colspan="3">电饭煲v地方吧</td>
<td colspan="3">{{confirmDetail.payment_time}}</td>
</tr>
<tr>
<th>到账金额</th>
<td>发电站v博格达峰准备v</td>
<td>{{confirmDetail.amount_received}}</td>
<th>手续费</th>
<td>吧成功v不分手吧</td>
<td>{{confirmDetail.service_charge}}</td>
<th>到账时间</th>
<td colspan="3">从v小板凳上早班v</td>
<td colspan="3">{{confirmDetail.receiving_time}}</td>
</tr>
<tr>
<th>支付凭证</th>
<td colspan="7">吧非常v表达方式吧 </td>
<td colspan="7">
<img :src="confirmDetail.payment_voucher_filename" alt="">
</td>
</tr>
<tr>
<th>到账凭证</th>
<td colspan="7">v的风格vx</td>
<td colspan="7">
<img :src="confirmDetail.receiving_voucher_filename" alt="">
</td>
</tr>
<tr>
<th>备注</th>
<td colspan="7">饭店隔壁v额的烦不烦</td>
<td colspan="7">{{confirmDetail.taxpayer_remark}}</td>
</tr>
<tr>
<th>创建时间</th>
<td colspan="3">奋斗让vv个多v</td>
<td colspan="3">{{confirmDetail.created_time}}</td>
<th>更新时间</th>
<td colspan="3">百分之百政府公布 </td>
<td colspan="3">{{confirmDetail.updated_time}}</td>
</tr>
</table>
</el-card>
......@@ -62,16 +66,23 @@ import { payDetail } from '../api'
export default {
data() {
return {
confirmDetail: {},
project: {},
id: ''
}
},
mounted() {
this.id = this.$route.params.id
this.getPayDetail()
},
methods: {
getPayDetail() {
payDetail().then(res => {
const params = { id: this.id }
payDetail(params).then(res => {
if (res.code === 0) {
this.project = res.data.list[0]
this.confirmDetail = res.data.list[0].confirmed_details[0]
}
})
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论