开票优化

This commit is contained in:
duan 2024-11-25 10:59:20 +08:00
parent d704253591
commit 161caeeabe
4 changed files with 125 additions and 36 deletions

View File

@ -18,7 +18,29 @@ export function tbPrintMachine(data, method = "post") {
// 开票
export function getbinding(data) {
return request({
url: "/api/tbShopInfo/binding",
url: "/api/invoice/binding",
method: "post",
data: {
shopId: localStorage.getItem("shopId"),
...data
}
});
}
// 获取数电发票类型
export function getdigitalInvoice(data) {
return request({
url: "/api/invoice/digitalInvoice",
method: "post",
data: {
shopId: localStorage.getItem("shopId"),
...data
}
});
}
// 获取项目分类
export function getindustry(data) {
return request({
url: "/api/invoice/industry",
method: "post",
data: {
shopId: localStorage.getItem("shopId"),

View File

@ -2,15 +2,6 @@
<div class="app-container">
<div class="title">应用中心</div>
<div class="list">
<div class="item" @click="upPop">
<img src="./kp.png" class="icon">
<div class="info">
<div class="name">开票</div>
<div class="intro">
</div>
</div>
</div>
<div class="item" v-for="item in list" :key="item.id" @click="to(item)">
<img :src="item.coverImg" class="icon">
<div class="info">
@ -22,28 +13,35 @@
</div>
</div>
<!-- 弹窗 -->
<el-dialog :title="title" :visible.sync="dialogVisible" width="30%" >
<el-dialog :title="title" :visible.sync="dialogVisible" width="30%">
<el-form :model="forms">
<el-form-item label="账号:" label-width="60px">
<el-form-item label="账号:" label-width="100px">
<el-input v-model="forms.account" :disabled="title != '绑定数点票账号'" autocomplete="off"></el-input>
</el-form-item>
<!-- <el-form-item label="密码/验证码" label-width="120px">
<el-input v-model="forms.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="开票项目:" label-width="120px">
<el-input v-model="forms.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="开票类型:" label-width="120px">
<el-input v-model="forms.name" autocomplete="off"></el-input>
</el-form-item> -->
<div style="text-align: right;" v-if="title == '绑定数点票账号'">联系区域经理开通</div>
<div style="text-align: center;" v-else @click="title = '绑定数点票账号'">更换绑定</div>
<!-- <el-form-item label="活动区域" label-width="120px">
<el-select v-model="form.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-form-item label="项目分类:" label-width="100px">
<el-select v-model="forms.article" :disabled="title != '绑定数点票账号'" :filter-method="getindustry"
filterable style="width: 100%;" placeholder="餐饮">
<el-option :label="item.name" :value="item.name" v-for="(item, index) in getindustryList"
:key="index"></el-option>
</el-select>
</el-form-item> -->
</el-form-item>
<el-form-item label="数电发票:" label-width="100px">
<el-select v-model="forms.sdType" :disabled="title != '绑定数点票账号'"
@change="changeEvent($event, 'sdType')" style="width: 100%;" placeholder="">
<el-option :label="item" :value="item" v-for="(item, index) in digitalInvoiceList[0]"
:key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="税率:" label-width="100px">
<el-select :disabled="title != '绑定数点票账号'" v-model="forms.taxAmount" style="width: 100%;"
placeholder="">
<el-option :label="item" :value="item" v-for="(item, index) in digitalInvoiceList[1]"
:key="index"></el-option>
</el-select>
</el-form-item>
<div style="text-align: right;" v-if="title == '绑定数点票账号'">联系区域经理开通</div>
<div style="text-align: center;cursor: pointer;" v-else @click="title = '绑定数点票账号'">更换绑定</div>
</el-form>
<span slot="footer" class="dialog-footer" v-if="title == '绑定数点票账号'">
<el-button @click="dialogVisible = false"> </el-button>
@ -54,37 +52,63 @@
</template>
<script>
import { appCenterGet, getbinding } from "@/api/application";
import { appCenterGet, getbinding, getindustry, getdigitalInvoice } from "@/api/application";
export default {
data() {
return {
list: [],
dialogVisible: false,
forms: {},
forms: {
article: '餐饮',
sdType: ""
},
title: '绑定数点票账号',
digitalInvoiceList: [],
getindustryList: [],
}
},
mounted() {
this.appCenterGet()
this.getbinding()
this.getdigitalInvoice()
this.getindustry()
},
methods: {
changeEvent(d, names) {
console.log(d, names, '调试1')
console.log(this.forms, '调试2')
this.forms[names] = d
// this.forms.sdType = ''
},
upPop() {
this.dialogVisible = true
},
sumbitEvent() {
if (this.forms.account) {
this.dialogVisible = false
this.getbinding(this.forms)
}
},
//
async getdigitalInvoice() {
const res = await getdigitalInvoice()
this.digitalInvoiceList = res
},
//
async getindustry(d = '餐饮') {
const res = await getindustry({ article: d })
this.getindustryList = res.list
},
//
to(item) {
localStorage.setItem('applocation', JSON.stringify(item))
this.$router.push({
name: item.absUrl
})
if (item.absUrl) {
this.$router.push({
name: item.absUrl
})
} else {
this.upPop()
}
},
//
async appCenterGet() {
@ -102,7 +126,11 @@ export default {
const res = await getbinding(d)
if (res) {
this.forms = res.store
this.$set(this.forms, 'article', res.article)
this.$set(this.forms, 'sdType', res.sdType)
this.$set(this.forms, 'taxAmount', res.taxAmount)
this.title = '数电票账号已绑定'
this.dialogVisible = false
} else {
this.title = '绑定数点票账号'
this.forms = {}

View File

@ -0,0 +1,34 @@
<template>
<el-dialog title="开票" :visible.sync="dialogFormVisible">
<el-form :model="forms">
<el-form-item label="活动名称" label-width="120px">
<el-input v-model="forms.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="活动区域" label-width="120px">
<el-select v-model="forms.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false"> </el-button>
<el-button type="primary" @click="dialogFormVisible = false"> </el-button>
</div>
</el-dialog>
</template>
<script>
export default {
data() {
return {
dialogFormVisible: false,
forms: {}
}
},
methods: {
show() {
this.dialogFormVisible = !this.dialogFormVisible
}
}
}
</script>

View File

@ -150,6 +150,8 @@
<template v-slot="scope">
<div class="u-flex gap-10">
<el-button type="text" @click="$refs.orderDetail.show(scope.row)">详情</el-button>
<el-button type="text" @click="$refs.Invoicing.show(scope.row)">开票</el-button>
<el-button v-if="scope.row.status == 'unpaid'" type="primary" size="mini" @click="payOrder(scope.row)">结账</el-button>
</div>
</template>
@ -162,6 +164,8 @@
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
</div>
<orderDetail ref="orderDetail" @close="getTableData" />
<!-- 开票 -->
<Invoicing ref="Invoicing"></Invoicing>
</div>
</template>
@ -173,9 +177,10 @@ import dayjs from "dayjs";
import { downloadFile } from "@/utils/index";
import orderDetail from "./components/orderDetail";
import Invoicing from "./components/Invoicing";
export default {
components: { orderDetail },
components: { orderDetail,Invoicing },
data() {
return {
orderEnum,