开票优化

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) { export function getbinding(data) {
return request({ 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", method: "post",
data: { data: {
shopId: localStorage.getItem("shopId"), shopId: localStorage.getItem("shopId"),

View File

@ -2,15 +2,6 @@
<div class="app-container"> <div class="app-container">
<div class="title">应用中心</div> <div class="title">应用中心</div>
<div class="list"> <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)"> <div class="item" v-for="item in list" :key="item.id" @click="to(item)">
<img :src="item.coverImg" class="icon"> <img :src="item.coverImg" class="icon">
<div class="info"> <div class="info">
@ -22,28 +13,35 @@
</div> </div>
</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 :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-input v-model="forms.account" :disabled="title != '绑定数点票账号'" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item label="密码/验证码" label-width="120px"> <el-form-item label="项目分类:" label-width="100px">
<el-input v-model="forms.name" autocomplete="off"></el-input> <el-select v-model="forms.article" :disabled="title != '绑定数点票账号'" :filter-method="getindustry"
</el-form-item> filterable style="width: 100%;" placeholder="餐饮">
<el-form-item label="开票项目:" label-width="120px"> <el-option :label="item.name" :value="item.name" v-for="(item, index) in getindustryList"
<el-input v-model="forms.name" autocomplete="off"></el-input> :key="index"></el-option>
</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-select> </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> </el-form>
<span slot="footer" class="dialog-footer" v-if="title == '绑定数点票账号'"> <span slot="footer" class="dialog-footer" v-if="title == '绑定数点票账号'">
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>
@ -54,37 +52,63 @@
</template> </template>
<script> <script>
import { appCenterGet, getbinding } from "@/api/application"; import { appCenterGet, getbinding, getindustry, getdigitalInvoice } from "@/api/application";
export default { export default {
data() { data() {
return { return {
list: [], list: [],
dialogVisible: false, dialogVisible: false,
forms: {}, forms: {
article: '餐饮',
sdType: ""
},
title: '绑定数点票账号', title: '绑定数点票账号',
digitalInvoiceList: [],
getindustryList: [],
} }
}, },
mounted() { mounted() {
this.appCenterGet() this.appCenterGet()
this.getbinding() this.getbinding()
this.getdigitalInvoice()
this.getindustry()
}, },
methods: { methods: {
changeEvent(d, names) {
console.log(d, names, '调试1')
console.log(this.forms, '调试2')
this.forms[names] = d
// this.forms.sdType = ''
},
upPop() { upPop() {
this.dialogVisible = true this.dialogVisible = true
}, },
sumbitEvent() { sumbitEvent() {
if (this.forms.account) { if (this.forms.account) {
this.dialogVisible = false
this.getbinding(this.forms) 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) { to(item) {
localStorage.setItem('applocation', JSON.stringify(item)) localStorage.setItem('applocation', JSON.stringify(item))
this.$router.push({ if (item.absUrl) {
name: item.absUrl
}) this.$router.push({
name: item.absUrl
})
} else {
this.upPop()
}
}, },
// //
async appCenterGet() { async appCenterGet() {
@ -102,7 +126,11 @@ export default {
const res = await getbinding(d) const res = await getbinding(d)
if (res) { if (res) {
this.forms = res.store 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.title = '数电票账号已绑定'
this.dialogVisible = false
} else { } else {
this.title = '绑定数点票账号' this.title = '绑定数点票账号'
this.forms = {} 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"> <template v-slot="scope">
<div class="u-flex gap-10"> <div class="u-flex gap-10">
<el-button type="text" @click="$refs.orderDetail.show(scope.row)">详情</el-button> <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> <el-button v-if="scope.row.status == 'unpaid'" type="primary" size="mini" @click="payOrder(scope.row)">结账</el-button>
</div> </div>
</template> </template>
@ -162,6 +164,8 @@
layout="total, sizes, prev, pager, next, jumper"></el-pagination> layout="total, sizes, prev, pager, next, jumper"></el-pagination>
</div> </div>
<orderDetail ref="orderDetail" @close="getTableData" /> <orderDetail ref="orderDetail" @close="getTableData" />
<!-- 开票 -->
<Invoicing ref="Invoicing"></Invoicing>
</div> </div>
</template> </template>
@ -173,9 +177,10 @@ import dayjs from "dayjs";
import { downloadFile } from "@/utils/index"; import { downloadFile } from "@/utils/index";
import orderDetail from "./components/orderDetail"; import orderDetail from "./components/orderDetail";
import Invoicing from "./components/Invoicing";
export default { export default {
components: { orderDetail }, components: { orderDetail,Invoicing },
data() { data() {
return { return {
orderEnum, orderEnum,