Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
薪
薪瑞通-前端
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
许珑标
薪瑞通-前端
Commits
c2e447c1
Commit
c2e447c1
authored
Apr 27, 2025
by
许珑标
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
开票人信息、开票申请
parent
0d2a1dc9
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
685 additions
and
121 deletions
+685
-121
src/api/business/invoiceApply.js
src/api/business/invoiceApply.js
+9
-0
src/api/business/taxUser.js
src/api/business/taxUser.js
+53
-0
src/views/business/companyInfo/merchant.vue
src/views/business/companyInfo/merchant.vue
+1
-0
src/views/business/invoiceApply/index.vue
src/views/business/invoiceApply/index.vue
+39
-2
src/views/business/invoiceApply/ready.vue
src/views/business/invoiceApply/ready.vue
+217
-117
src/views/business/taxUnit/index.vue
src/views/business/taxUnit/index.vue
+6
-2
src/views/business/taxUser/index.vue
src/views/business/taxUser/index.vue
+360
-0
No files found.
src/api/business/invoiceApply.js
View file @
c2e447c1
...
@@ -83,3 +83,12 @@ export function updateInvoiceStatus(data) {
...
@@ -83,3 +83,12 @@ export function updateInvoiceStatus(data) {
data
:
data
data
:
data
})
})
}
}
// 通过外部付款卡号获取销售方开票信息
export
function
getSellerInvoiceInfo
(
cardNo
)
{
return
request
({
url
:
`/business/laborSign/getSellerInvoiceInfo/
${
cardNo
}
`
,
method
:
'
get
'
,
})
}
src/api/business/taxUser.js
0 → 100644
View file @
c2e447c1
import
request
from
'
@/utils/request
'
// 查询办税人信息列表
export
function
listLoginUser
(
query
)
{
return
request
({
url
:
'
/business/loginUser/list
'
,
method
:
'
get
'
,
params
:
query
})
}
// 查询办税人信息所有列表
export
function
listAllLoginUser
(
query
)
{
return
request
({
url
:
'
/business/loginUser/listAll
'
,
method
:
'
get
'
,
params
:
query
})
}
// 查询办税人信息详细
export
function
getLoginUser
(
id
)
{
return
request
({
url
:
'
/business/loginUser/getInfo/
'
+
id
,
method
:
'
get
'
})
}
// 新增办税人信息
export
function
addLoginUser
(
data
)
{
return
request
({
url
:
'
/business/loginUser/add
'
,
method
:
'
post
'
,
data
:
data
})
}
// 修改办税人信息
export
function
updateLoginUser
(
data
)
{
return
request
({
url
:
'
/business/loginUser/edit
'
,
method
:
'
post
'
,
data
:
data
})
}
// 删除办税人信息
export
function
delLoginUser
(
id
)
{
return
request
({
url
:
'
/business/loginUser/remove/
'
+
id
,
method
:
'
get
'
})
}
src/views/business/companyInfo/merchant.vue
View file @
c2e447c1
...
@@ -201,6 +201,7 @@ export default {
...
@@ -201,6 +201,7 @@ export default {
/** 查询付款主体信息列表 */
/** 查询付款主体信息列表 */
getList
()
{
getList
()
{
this
.
loading
=
true
;
this
.
loading
=
true
;
this
.
queryParams
.
bindType
=
1
listCompanyInfo
(
this
.
queryParams
).
then
(
response
=>
{
listCompanyInfo
(
this
.
queryParams
).
then
(
response
=>
{
this
.
companyInfoList
=
response
.
rows
;
this
.
companyInfoList
=
response
.
rows
;
this
.
total
=
response
.
total
;
this
.
total
=
response
.
total
;
...
...
src/views/business/invoiceApply/index.vue
View file @
c2e447c1
...
@@ -155,6 +155,13 @@
...
@@ -155,6 +155,13 @@
v-hasPermi=
"['business:invoiceApply:uploadInvoiceFile']"
v-hasPermi=
"['business:invoiceApply:uploadInvoiceFile']"
@
click=
"uploadInvoiceDailog(scope.row)"
@
click=
"uploadInvoiceDailog(scope.row)"
>
上传发票
</el-button>
>
上传发票
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-s-help"
v-hasPermi=
"['business:invoiceApply:uploadInvoiceFile']"
@
click=
"onlineInvoice(scope.row)"
>
一键开票
</el-button>
<el-button
<el-button
size=
"mini"
size=
"mini"
type=
"text"
type=
"text"
...
@@ -426,7 +433,18 @@
...
@@ -426,7 +433,18 @@
<el-button
@
click=
"uploadInvoiceOpen = false"
>
取 消
</el-button>
<el-button
@
click=
"uploadInvoiceOpen = false"
>
取 消
</el-button>
</span>
</span>
</el-dialog>
</el-dialog>
<!-- 一键发票对话框 -->
<el-dialog
title=
"上传发票"
:visible.sync=
"onlineInvoiceForm.panel"
>
<el-form
:model=
"onlineInvoiceForm"
ref=
"onlineInvoiceForm"
size=
"small"
label-width=
"100px"
>
<el-select
v-model=
"onlineInvoiceForm.taxpayerId"
placeholder=
"请选择开票员"
clearable
>
<el-option
v-for=
"item in taxpayerList"
:key=
"item.loginUserIdCard"
:label=
"item.loginName"
:value=
"item.id"
/>
</el-select>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"uploadInvoiceFile"
>
确 定
</el-button>
<el-button
@
click=
"onlineInvoiceForm.panel = false"
>
取 消
</el-button>
</span>
</el-dialog>
</div>
</div>
</template>
</template>
...
@@ -442,6 +460,7 @@ import {
...
@@ -442,6 +460,7 @@ import {
import
{
listCompanyInfo
}
from
'
@/api/business/companyInfo
'
import
{
listCompanyInfo
}
from
'
@/api/business/companyInfo
'
import
fa
from
'
element-ui/src/locale/lang/fa
'
import
fa
from
'
element-ui/src/locale/lang/fa
'
import
{
laborSign
,
querySignList
}
from
'
@/api/business/unitInfo
'
import
{
laborSign
,
querySignList
}
from
'
@/api/business/unitInfo
'
import
{
listAllLoginUser
}
from
'
@/api/business/taxUser
'
export
default
{
export
default
{
name
:
"
InvoiceApply
"
,
name
:
"
InvoiceApply
"
,
...
@@ -453,6 +472,11 @@ export default {
...
@@ -453,6 +472,11 @@ export default {
dicts
:
[
'
invoice_status
'
,
'
tax_invoice_type
'
],
dicts
:
[
'
invoice_status
'
,
'
tax_invoice_type
'
],
data
()
{
data
()
{
return
{
return
{
// 一键开票
onlineInvoiceForm
:
{
panel
:
false
,
taxpayerId
:
''
},
//上传发票
//上传发票
applyInvoiceId
:
null
,
applyInvoiceId
:
null
,
viewInvoiceFileOpen
:
false
,
viewInvoiceFileOpen
:
false
,
...
@@ -586,7 +610,8 @@ export default {
...
@@ -586,7 +610,8 @@ export default {
invocieUrl
:
[
invocieUrl
:
[
{
required
:
true
,
message
:
"
发票文件地址不能为空
"
,
trigger
:
"
blur
"
}
{
required
:
true
,
message
:
"
发票文件地址不能为空
"
,
trigger
:
"
blur
"
}
],
],
}
},
taxpayerList
:
[],
};
};
},
},
created
()
{
created
()
{
...
@@ -816,6 +841,18 @@ export default {
...
@@ -816,6 +841,18 @@ export default {
this
.
form
=
response
.
data
;
this
.
form
=
response
.
data
;
});
});
},
},
onlineInvoice
(
row
)
{
let
taxpayerQuery
=
{
// companyType: 2,
// companyId: row.taxCompanyId
}
listAllLoginUser
(
taxpayerQuery
).
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
taxpayerList
=
resp
.
data
}
})
this
.
onlineInvoiceForm
.
panel
=
true
},
},
},
};
};
</
script
>
</
script
>
...
...
src/views/business/invoiceApply/ready.vue
View file @
c2e447c1
...
@@ -69,11 +69,63 @@
...
@@ -69,11 +69,63 @@
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNum"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNum"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<el-dialog
title=
"申请开票"
:visible.sync=
"openApply"
width=
"
1000px
"
>
<el-dialog
title=
"申请开票"
:visible.sync=
"openApply"
width=
"
70%
"
>
<el-form
ref=
"formApply"
:model=
"formApply"
:rules=
"rulesApply"
label-width=
"130px"
>
<el-form
ref=
"formApply"
:model=
"formApply"
:rules=
"rulesApply"
label-width=
"130px"
>
<el-row>
<el-col
:span=
"10"
>
<el-descriptions
title=
"购买方信息"
:column=
"1"
size=
"medium"
>
<el-descriptions-item
label=
"名称"
:contentStyle=
"{'font-size': '14px'}"
>
{{formApply.applyCompanyInvoice.invoiceTitle}}
</el-descriptions-item>
<el-descriptions-item
label=
"纳税人识别号"
:contentStyle=
"{'font-size': '14px'}"
>
{{formApply.applyCompanyInvoice.taxRegistrationNumber}}
</el-descriptions-item>
</el-descriptions>
</el-col>
<el-col
:span=
"10"
>
<el-descriptions
title=
"销售方信息"
:column=
"1"
size=
"medium"
>
<el-descriptions-item
label=
"名称"
:contentStyle=
"{'font-size': '14px'}"
>
{{formApply.taxCompanyInvoice.invoiceTitle}}
</el-descriptions-item>
<el-descriptions-item
label=
"纳税人识别号"
:contentStyle=
"{'font-size': '14px'}"
>
{{formApply.taxCompanyInvoice.taxRegistrationNumber}}
</el-descriptions-item>
</el-descriptions>
</el-col>
</el-row>
<el-divider
content-position=
"left"
>
开票类目
</el-divider>
<el-row
style=
"text-align: right; margin-bottom: 5px"
>
<el-button
type=
"primary"
size=
"mini"
@
click=
"addItemClick"
>
新增类目
</el-button>
</el-row>
<el-row
style=
"margin-bottom: 10px"
>
<el-form-item
prop=
"items"
label-width=
"0px"
>
<el-table
:data=
"formApply.items"
style=
"width: 100%"
>
<el-table-column
prop=
"goodsName"
label=
"项目名称"
width=
"180"
/>
<el-table-column
prop=
"goodsSize"
label=
"规格型号"
/>
<el-table-column
prop=
"goodsUnit"
label=
"单位"
/>
<el-table-column
prop=
"taxClassifyRate"
label=
"税率"
width=
"80"
/>
<el-table-column
label=
"免税类型"
prop=
"freeType"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.tax_free_type"
:value=
"scope.row.freeType"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"goodsCount"
label=
"数量"
/>
<el-table-column
prop=
"goodsPrice"
label=
"单价"
width=
"180"
/>
<el-table-column
prop=
"amount"
label=
"金额(不含税)"
/>
<el-table-column
prop=
"taxAmount"
label=
"税额"
/>
<el-table-column
prop=
"id"
label=
"操作"
width=
"80"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
style=
"float: right; margin-bottom: 5px"
@
click=
"removeItem(scope.$index)"
>
移除
</el-button>
</
template
>
</el-table-column>
</el-table>
</el-form-item>
</el-row>
<el-card
shadow=
"hover"
class=
"invoice-info-card"
>
<el-card
shadow=
"hover"
class=
"invoice-info-card"
>
<div>
<div>
<h3
class=
"title-bold"
strong
>
开票金额
</h3>
<h3
class=
"title-bold"
>
开票金额
</h3>
<el-divider></el-divider>
<el-divider></el-divider>
<el-row>
<el-row>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
...
@@ -89,117 +141,73 @@
...
@@ -89,117 +141,73 @@
</el-row>
</el-row>
</div>
</div>
</el-card>
</el-card>
<el-card
shadow=
"hover"
class=
"invoice-info-card"
>
<div>
<h3
class=
"title-bold"
strong
>
采购方信息
</h3>
<el-divider></el-divider>
<!-- 采购企业选择 -->
<el-row>
<el-col
:span=
"24"
>
<el-form-item
label=
"采购方"
prop=
"applyCompanyId"
>
<el-select
v-model=
"formApply.applyCompanyId"
placeholder=
"请选择采购方"
clearable
@
change=
"applyCompanyChange"
>
<el-option
v-for=
"item in applyCompanyList"
:key=
"item.id"
:label=
"item.companyName"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
>
<p>
名称:{{formApply.applyCompanyInvoice.invoiceTitle}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
纳税人识别号:{{formApply.applyCompanyInvoice.taxRegistrationNumber}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
开户银行:{{formApply.applyCompanyInvoice.bankName}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
开户账号:{{formApply.applyCompanyInvoice.bankAccount}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
地址:{{formApply.applyCompanyInvoice.address}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
电话:{{formApply.applyCompanyInvoice.phone}}
</p>
</el-col>
</el-row>
</div>
</el-card>
<el-card
shadow=
"hover"
class=
"invoice-info-card"
>
<div>
<h3
class=
"title-bold"
strong
>
销售方信息
</h3>
<el-divider></el-divider>
<el-form-item
label=
"销售方"
prop=
"taxCompanyId"
>
<el-select
v-model=
"formApply.taxCompanyId"
placeholder=
"请选择销售方"
clearable
@
change=
"taxCompanyChange"
>
<el-option
v-for=
"item in taxCompanyList"
:key=
"item.id"
:label=
"item.taxUnitName"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-row>
<el-col
:span=
"8"
>
<p>
名称:{{formApply.taxCompanyInvoice.invoiceTitle}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
纳税人识别号:{{formApply.taxCompanyInvoice.taxRegistrationNumber}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
开户银行:{{formApply.taxCompanyInvoice.bankName}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
开户账号:{{formApply.taxCompanyInvoice.bankAccount}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
地址:{{formApply.taxCompanyInvoice.address}}
</p>
</el-col>
<el-col
:span=
"8"
>
<p>
电话:{{formApply.taxCompanyInvoice.phone}}
</p>
</el-col>
</el-row>
</div>
</el-card>
<!-- <el-card shadow="hover" class="invoice-info-card">
<div>
<h3 class="title-bold" strong >开票信息</h3>
<el-divider></el-divider>
<el-form-item label="价税合计金额/元" prop="invoiceTitle">
<el-input v-model="formApply.totalAmountTax" placeholder="请输入价税合计金额/元" disabled/>
</el-form-item>
<el-form-item label="发票类型">
<el-radio-group v-model="formApply.invoieType">
<el-radio v-for="dict in dict.type.tax_invoice_type" :key="dict.value" :label="dict.value" >{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="开票类目" prop="invoiceTitle">
<el-input v-model="formApply.invoiceTitle" placeholder="请输入发票抬头"/>
</el-form-item>
<el-form-item label="税率" prop="invoiceTitle">
<el-input v-model="formApply.invoiceTitle" placeholder="请输入税率"/>
</el-form-item>
<el-form-item label="税额" prop="invoiceTitle">
<el-input v-model="formApply.invoiceTitle" placeholder="请输入税额"/>
</el-form-item>
<el-form-item label="票面名称" prop="bankName">
<el-input v-model="formApply.bankName" placeholder="请输入票面名称" />
</el-form-item>
<el-form-item label="票面规格型号" prop="bankName">
<el-input v-model="formApply.bankName" placeholder="请输入票面规格型号" />
</el-form-item>
<el-form-item label="票面单位" prop="bankAccount">
<el-input v-model="formApply.bankAccount" placeholder="请输入票面单位" />
</el-form-item>
<el-form-item label="票面数量" prop="address">
<el-input v-model="formApply.address" placeholder="请输入票面数量"/>
</el-form-item>
<el-form-item label="票面备注" prop="phone">
<el-input v-model="formApply.phone" placeholder="请输入电话" />
</el-form-item>
</div>
</el-card>-->
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitApply"
>
确认申请开票
</el-button>
<el-button
type=
"primary"
@
click=
"submitApply"
>
确认申请开票
</el-button>
<el-button
@
click=
"openApply = false"
>
取消
</el-button>
<el-button
@
click=
"openApply = false"
>
取消
</el-button>
</div>
</div>
</el-dialog>
</el-dialog>
<el-dialog
:title=
"taxCategoryPanel.title"
:visible.sync=
"taxCategoryPanel.open"
width=
"600px"
append-to-body
>
<el-table
:data=
"taxCategoryPanel.data"
stripe
style=
"width: 100%"
>
<el-table-column
prop=
"goodsName"
label=
"类目名称"
width=
"180"
/>
<el-table-column
prop=
"code"
label=
"类目编码"
width=
"180"
/>
<el-table-column
prop=
"vatRate"
label=
"税率"
/>
<el-table-column
prop=
"vatRate"
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"mini"
@
click=
"addItem(scope.row)"
>
选择
</el-button>
</
template
>
</el-table-column>
</el-table>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"taxCategoryPanel.open = false"
>
关 闭
</el-button>
</div>
</el-dialog>
<el-dialog
title=
"添加商品"
:visible.sync=
"classifyRateFormPanel"
width=
"600px"
append-to-body
>
<el-form
:model=
"classifyRateForm"
label-width=
"130px"
>
<el-form-item
label=
"类目名称"
>
<el-input
v-model=
"classifyRateForm.goodsName"
disabled
></el-input>
</el-form-item>
<el-form-item
label=
"规格"
>
<el-input
v-model=
"classifyRateForm.goodsSize"
placeholder=
"规格/型号"
></el-input>
</el-form-item>
<el-form-item
label=
"单位"
>
<el-input
v-model=
"classifyRateForm.goodsUnit"
placeholder=
"单位"
></el-input>
</el-form-item>
<el-form-item
label=
"费率"
>
<el-select
v-model=
"classifyRateForm.taxClassifyRate"
placeholder=
"请选择费率"
>
<el-option
v-for=
"(item, index) in classifyRates"
:label=
"item"
:value=
"item"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"免税类型"
>
<el-select
:disabled=
"!classifyRateForm.taxClassifyRate || classifyRateForm.taxClassifyRate > 0"
v-model.trim=
"classifyRateForm.freeType"
size=
"small"
placeholder=
"请选择免税类型"
>
<el-option
v-for=
"dict in dict.type.tax_free_type"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"数量"
>
<el-input-number
v-model=
"classifyRateForm.goodsCount"
:precision=
"0"
:step=
"1"
:min=
"1"
style=
"width: 100%"
></el-input-number>
</el-form-item>
<el-form-item
label=
"单价(含税)"
>
<el-input-number
v-model=
"classifyRateForm.goodsPrice"
:precision=
"2"
:step=
"0.1"
:min=
"0.1"
style=
"width: 150px"
></el-input-number>
</el-form-item>
<el-form-item
label=
"单价(不含税)"
>
<el-input-number
v-model=
"classifyRateForm.goodsPrice"
:precision=
"2"
:step=
"0.1"
:min=
"0.1"
style=
"width: 150px"
></el-input-number>
</el-form-item>
<el-form-item
label=
"金额(不含税)"
>
<el-input-number
disabled
v-model=
"classifyRateForm.amount"
:precision=
"0"
:step=
"1"
:min=
"1"
style=
"width: 100%"
></el-input-number>
</el-form-item>
<el-form-item
label=
"税额"
>
<el-input-number
disabled
v-model=
"classifyRateForm.taxAmount"
:precision=
"0"
:step=
"1"
:min=
"1"
style=
"width: 100%"
></el-input-number>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitItem"
>
确认
</el-button>
<el-button
@
click=
"classifyRateFormPanel = false"
>
取消
</el-button>
</div>
</el-dialog>
</div>
</div>
</template>
</template>
...
@@ -213,12 +221,12 @@ import {
...
@@ -213,12 +221,12 @@ import {
getInvoiceInfo
,
getInvoiceInfo
,
getInvoiceInfoByCompanyId
getInvoiceInfoByCompanyId
}
from
'
@/api/business/invoiceInfo
'
}
from
'
@/api/business/invoiceInfo
'
import
{
addApplyInvoice
}
from
'
@/api/business/invoiceApply
'
import
{
addApplyInvoice
,
getSellerInvoiceInfo
}
from
'
@/api/business/invoiceApply
'
import
{
laborSign
,
querySignList
}
from
'
@/api/business/unitInfo
'
import
{
getUnitTaxCategories
,
laborSign
,
querySignList
}
from
'
@/api/business/unitInfo
'
export
default
{
export
default
{
name
:
"
PayOrder
"
,
name
:
"
PayOrder
"
,
components
:
{
RePay
},
components
:
{
RePay
},
dicts
:
[
'
pay_status
'
,
'
batch_pay_order_invoice_status
'
,
'
pay_type_title
'
,
'
tax_invoice_type
'
],
dicts
:
[
'
pay_status
'
,
'
batch_pay_order_invoice_status
'
,
'
pay_type_title
'
,
'
tax_invoice_type
'
,
'
tax_free_type
'
],
data
()
{
data
()
{
return
{
return
{
//人力公司list
//人力公司list
...
@@ -280,8 +288,15 @@ export default {
...
@@ -280,8 +288,15 @@ export default {
// 表单参数
// 表单参数
formApply
:
{
formApply
:
{
invoieType
:
'
NORMAL_TAX
'
,
invoieType
:
'
NORMAL_TAX
'
,
applyCompanyInvoice
:
{},
applyCompanyInvoice
:
{
taxCompanyInvoice
:
{},
invoiceTitle
:
''
,
taxRegistrationNumber
:
''
},
taxCompanyInvoice
:
{
invoiceTitle
:
''
,
taxRegistrationNumber
:
''
},
items
:
[]
},
},
// 表单校验
// 表单校验
rulesApply
:
{
rulesApply
:
{
...
@@ -297,6 +312,25 @@ export default {
...
@@ -297,6 +312,25 @@ export default {
invoieType
:
[
invoieType
:
[
{
required
:
true
,
message
:
"
请选择发票类型
"
,
trigger
:
"
change
"
}
{
required
:
true
,
message
:
"
请选择发票类型
"
,
trigger
:
"
change
"
}
]
]
},
taxCategoryPanel
:
{
title
:
'
支持的税收分类编码列表
'
,
open
:
false
,
data
:
[]
},
classifyRates
:
[],
classifyRateFormPanel
:
false
,
classifyRateForm
:
{
freeType
:
''
,
taxClassifyCode
:
''
,
goodsName
:
''
,
taxClassifyRate
:
''
,
goodsPrice
:
''
,
goodsSize
:
''
,
goodsUnit
:
''
,
goodsCount
:
''
,
amount
:
''
,
taxAmount
:
''
}
}
};
};
},
},
...
@@ -395,11 +429,30 @@ export default {
...
@@ -395,11 +429,30 @@ export default {
},
},
// 申请开票
// 申请开票
applyInvoice
(
row
)
{
applyInvoice
(
row
)
{
this
.
openApply
=
true
;
this
.
openApply
=
true
this
.
formApply
.
totalAmountTax
=
row
.
successAmount
;
this
.
formApply
.
totalAmountTax
=
row
.
successAmount
this
.
formApply
.
batchPayIds
=
[
row
.
id
];
this
.
formApply
.
batchPayIds
=
[
row
.
id
]
this
.
formApply
.
batchPayOrderIds
=
row
.
id
;
this
.
formApply
.
batchPayOrderIds
=
row
.
id
console
.
log
(
this
.
formApply
);
getSellerInvoiceInfo
(
row
.
payerAccNo
).
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
formApply
.
taxCompanyId
=
resp
.
data
.
taxUnitId
this
.
formApply
.
taxCompanyInvoice
.
companyId
=
resp
.
data
.
taxUnitId
this
.
formApply
.
taxCompanyInvoice
.
invoiceTitle
=
resp
.
data
.
taxUnitName
this
.
formApply
.
taxCompanyInvoice
.
companyName
=
resp
.
data
.
taxUnitName
this
.
formApply
.
taxCompanyInvoice
.
taxRegistrationNumber
=
resp
.
data
.
taxUnitCode
this
.
formApply
.
applyCompanyId
=
resp
.
data
.
inviterId
this
.
formApply
.
applyCompanyInvoice
.
companyId
=
resp
.
data
.
inviterId
this
.
formApply
.
applyCompanyInvoice
.
companyName
=
resp
.
data
.
inviterName
this
.
formApply
.
applyCompanyInvoice
.
invoiceTitle
=
resp
.
data
.
inviterName
this
.
formApply
.
applyCompanyInvoice
.
taxRegistrationNumber
=
resp
.
data
.
inviterCode
// 不需要额外的开票信息
// getInvoiceInfoByCompanyId(resp.data.inviterId).then(response => {
// this.formApply.applyCompanyInvoice = response.data;
// }).finally(() => {
// this.loading = false;
// });
}
})
return
;
return
;
},
},
//采购方选择
//采购方选择
...
@@ -445,6 +498,7 @@ export default {
...
@@ -445,6 +498,7 @@ export default {
cancelButtonText
:
'
取消
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
type
:
'
warning
'
}).
then
(()
=>
{
}).
then
(()
=>
{
console
.
log
(
this
.
formApply
)
addApplyInvoice
(
this
.
formApply
).
then
(
response
=>
{
addApplyInvoice
(
this
.
formApply
).
then
(
response
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
if
(
response
.
code
==
200
)
{
if
(
response
.
code
==
200
)
{
...
@@ -482,6 +536,52 @@ export default {
...
@@ -482,6 +536,52 @@ export default {
this
.
formApply
.
totalAmountTax
=
Number
.
parseFloat
(
sumSuccessAmount
).
toFixed
(
2
);
this
.
formApply
.
totalAmountTax
=
Number
.
parseFloat
(
sumSuccessAmount
).
toFixed
(
2
);
})
})
},
},
addItemClick
()
{
/** 查看企业可开票类目 **/
getUnitTaxCategories
(
this
.
formApply
.
taxCompanyId
).
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
taxCategoryPanel
.
data
=
resp
.
data
this
.
taxCategoryPanel
.
open
=
true
this
.
taxCategoryPanel
.
title
=
`[
${
this
.
formApply
.
taxCompanyInvoice
.
invoiceTitle
}
]支持的税收分类编码列表`
}
})
},
addItem
(
classify
)
{
this
.
taxCategoryPanel
.
open
=
false
let
rate
=
classify
.
vatRate
.
split
(
"
,
"
)
if
(
rate
.
length
>
1
)
{
this
.
classifyRateFormPanel
=
true
this
.
classifyRateForm
=
{
goodsName
:
classify
.
goodsName
,
taxClassifyCode
:
classify
.
code
,
taxClassifyRate
:
''
}
this
.
classifyRates
=
rate
}
else
{
this
.
formApply
.
items
.
push
({
taxClassifyCode
:
classify
.
code
,
goodsName
:
classify
.
goodsName
,
taxClassifyRate
:
rate
[
0
]
})
}
},
removeItem
(
index
)
{
this
.
formApply
.
items
.
splice
(
index
,
1
)
},
submitItem
()
{
this
.
classifyRateFormPanel
=
false
this
.
formApply
.
items
.
push
({
taxClassifyCode
:
this
.
classifyRateForm
.
taxClassifyCode
,
goodsName
:
this
.
classifyRateForm
.
goodsName
,
taxClassifyRate
:
this
.
classifyRateForm
.
taxClassifyRate
,
freeType
:
this
.
classifyRateForm
.
freeType
,
goodsSize
:
this
.
classifyRateForm
.
goodsSize
,
goodsCount
:
this
.
classifyRateForm
.
goodsCount
,
goodsUnit
:
this
.
classifyRateForm
.
goodsUnit
,
amount
:
this
.
classifyRateForm
.
amount
,
taxAmount
:
this
.
classifyRateForm
.
taxAmount
})
}
}
}
};
};
</
script
>
</
script
>
...
...
src/views/business/taxUnit/index.vue
View file @
c2e447c1
...
@@ -61,7 +61,11 @@
...
@@ -61,7 +61,11 @@
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"企业名称"
align=
"center"
prop=
"unitName"
fixed
/>
<el-table-column
label=
"企业名称"
align=
"center"
prop=
"unitName"
fixed
/>
<el-table-column
label=
"信用代码"
align=
"center"
prop=
"unitCode"
fixed
/>
<el-table-column
label=
"信用代码"
align=
"center"
prop=
"unitCode"
fixed
/>
<el-table-column
label=
"所属行业"
align=
"center"
prop=
"sectorDictDataVal"
/>
<el-table-column
label=
"所属行业"
align=
"center"
prop=
"sectorDictDataVal"
>
<template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.unit_business_type"
:value=
"scope.row.sectorDictDataVal"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"法人姓名"
align=
"center"
prop=
"legalPersonName"
/>
<el-table-column
label=
"法人姓名"
align=
"center"
prop=
"legalPersonName"
/>
<el-table-column
label=
"法人联系电话"
align=
"center"
prop=
"legalPersonMobile"
/>
<el-table-column
label=
"法人联系电话"
align=
"center"
prop=
"legalPersonMobile"
/>
<el-table-column
label=
"所属地址"
align=
"center"
prop=
"address"
/>
<el-table-column
label=
"所属地址"
align=
"center"
prop=
"address"
/>
...
@@ -162,7 +166,7 @@ import { listUnitInfo, delUnitInfo, getUnitTaxCategories, updateUnitInfo } from
...
@@ -162,7 +166,7 @@ import { listUnitInfo, delUnitInfo, getUnitTaxCategories, updateUnitInfo } from
export
default
{
export
default
{
name
:
'
UnitInfo
'
,
name
:
'
UnitInfo
'
,
dicts
:
[
'
tax_invoice_status
'
,
'
tax_invoice_type
'
],
dicts
:
[
'
tax_invoice_status
'
,
'
tax_invoice_type
'
,
'
unit_business_type
'
],
data
()
{
data
()
{
return
{
return
{
taxCategoryPanel
:
{
taxCategoryPanel
:
{
...
...
src/views/business/taxUser/index.vue
0 → 100644
View file @
c2e447c1
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"80px"
>
<el-form-item
label=
"企业名称"
prop=
"taxpayerName"
>
<el-input
v-model=
"queryParams.taxpayerName"
placeholder=
"请输入企业名称"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"税务账号"
prop=
"loginAccount"
>
<el-input
v-model=
"queryParams.loginAccount"
placeholder=
"请输入登录账号"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"办税人姓名"
prop=
"loginName"
label-width=
"120px"
>
<el-input
v-model=
"queryParams.loginName"
placeholder=
"请输入办税人姓名"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
>
新增
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"danger"
icon=
"el-icon-delete"
size=
"mini"
:disabled=
"multiple"
@
click=
"handleDelete"
>
删除
</el-button>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<el-table
v-loading=
"loading"
:data=
"loginUserList"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"办税地区"
align=
"center"
prop=
"areaCode"
>
<template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.area_code_taxes"
:value=
"scope.row.areaCode"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"企业名称"
align=
"center"
prop=
"taxpayerName"
/>
<el-table-column
label=
"企业信用代码"
align=
"center"
prop=
"taxpayerNumber"
/>
<el-table-column
label=
"办税人姓名"
align=
"center"
prop=
"loginName"
/>
<el-table-column
label=
"角色"
align=
"center"
prop=
"loginIdentity"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.taxpayer_role"
:value=
"scope.row.loginIdentity"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"登录账号"
align=
"center"
prop=
"loginAccount"
/>
<el-table-column
label=
"身份证号"
align=
"center"
prop=
"loginUserIdCard"
/>
<el-table-column
label=
"联系方式"
align=
"center"
prop=
"loginUserMobile"
/>
<el-table-column
label=
"状态"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.taxpayer_status"
:value=
"scope.row.status"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
>
修改
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-s-check"
@
click=
"doAuth(scope.row)"
v-if=
"scope.row.status === 'saved'"
>
认证
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total>0"
:total=
"total"
:page.sync=
"queryParams.pageNum"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<!-- 添加或修改办税人信息对话框 -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"800px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-form-item
label=
"所属企业"
prop=
"companyId"
>
<el-select
v-model=
"form.companyId"
placeholder=
"请选择所属企业"
>
<el-option
v-for=
"item in unitList"
:key=
"item.unitCode"
:label=
"item.unitName"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"所属地区"
prop=
"areaCode"
>
<el-select
v-model=
"form.areaCode"
placeholder=
"请选择办税地区"
>
<el-option
v-for=
"dict in dict.type.area_code_taxes"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"办税人姓名"
prop=
"loginName"
>
<el-input
v-model=
"form.loginName"
placeholder=
"请输入办税人姓名"
/>
</el-form-item>
<el-form-item
label=
"身份证号"
prop=
"loginUserIdCard"
>
<el-input
v-model=
"form.loginUserIdCard"
placeholder=
"请输入办税人身份证号"
/>
</el-form-item>
<el-form-item
label=
"联系方式"
prop=
"loginUserMobile"
>
<el-input
v-model=
"form.loginUserMobile"
placeholder=
"请输入办税人联系方式"
/>
</el-form-item>
<el-form-item
label=
"办税人角色"
prop=
"loginIdentity"
>
<el-select
v-model=
"form.loginIdentity"
placeholder=
"请选择办税人角色"
>
<el-option
v-for=
"dict in dict.type.taxpayer_role"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"登录账号"
prop=
"loginAccount"
>
<el-input
v-model=
"form.loginAccount"
placeholder=
"请输入登录账号"
/>
</el-form-item>
<el-form-item
label=
"登录密码"
prop=
"loginPwd"
>
<el-input
type=
"password"
v-model=
"form.loginPwd"
placeholder=
"请输入登录密码"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
{
listLoginUser
,
getLoginUser
,
delLoginUser
,
addLoginUser
,
updateLoginUser
}
from
"
@/api/business/taxUser
"
;
import
{
listAllUnitInfo
}
from
'
@/api/business/unitInfo
'
export
default
{
name
:
"
LoginUser
"
,
dicts
:
[
'
taxpayer_role
'
,
'
area_code_taxes
'
,
'
taxpayer_status
'
],
data
()
{
return
{
// 根路径
baseURL
:
process
.
env
.
VUE_APP_BASE_API
,
// 遮罩层
loading
:
true
,
// 选中数组
ids
:
[],
// 非单个禁用
single
:
true
,
// 非多个禁用
multiple
:
true
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
total
:
0
,
// 办税人信息表格数据
loginUserList
:
[],
// 弹出层标题
title
:
""
,
// 是否显示弹出层
open
:
false
,
// 查询参数
queryParams
:
{
pageNum
:
1
,
pageSize
:
10
,
areaCode
:
null
,
taxpayerName
:
null
,
taxpayerNumber
:
null
,
loginName
:
null
,
loginIdentity
:
null
,
loginAccount
:
null
,
loginPwd
:
null
,
loginType
:
null
,
loginUserIdCard
:
null
,
loginUserMobile
:
null
,
companyType
:
null
,
companyId
:
null
,
isDefault
:
null
,
status
:
null
,
deptId
:
null
,
},
unitList
:
[],
// 表单参数
form
:
{},
// 表单校验
rules
:
{
loginName
:
[
{
required
:
true
,
message
:
"
办税人姓名不能为空
"
,
trigger
:
"
blur
"
}
],
loginIdentity
:
[
{
required
:
true
,
message
:
"
登录身份不能为空
"
,
trigger
:
"
blur
"
}
],
loginAccount
:
[
{
required
:
true
,
message
:
"
登录账号不能为空
"
,
trigger
:
"
blur
"
}
],
loginPwd
:
[
{
required
:
true
,
message
:
"
登录密码不能为空
"
,
trigger
:
"
blur
"
}
],
loginUserIdCard
:
[
{
required
:
true
,
message
:
"
登录人身份证号不能为空
"
,
trigger
:
"
blur
"
}
],
loginUserMobile
:
[
{
required
:
true
,
message
:
"
登录人联系方式不能为空
"
,
trigger
:
"
blur
"
}
],
}
};
},
created
()
{
this
.
getList
();
},
methods
:
{
/** 查询办税人信息列表 */
getList
()
{
this
.
loading
=
true
;
listLoginUser
(
this
.
queryParams
).
then
(
response
=>
{
this
.
loginUserList
=
response
.
rows
;
this
.
total
=
response
.
total
;
this
.
loading
=
false
;
});
},
// 取消按钮
cancel
()
{
this
.
open
=
false
;
this
.
reset
();
},
// 表单重置
reset
()
{
this
.
form
=
{
id
:
null
,
areaCode
:
null
,
taxpayerName
:
null
,
taxpayerNumber
:
null
,
loginName
:
null
,
loginIdentity
:
null
,
loginAccount
:
null
,
loginPwd
:
null
,
loginType
:
null
,
loginUserIdCard
:
null
,
loginUserMobile
:
null
,
companyType
:
null
,
companyId
:
null
,
isDefault
:
null
,
status
:
"
0
"
,
deptId
:
null
,
};
this
.
resetForm
(
"
form
"
);
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNum
=
1
;
this
.
getList
();
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
resetForm
(
"
queryForm
"
);
this
.
handleQuery
();
},
// 多选框选中数据
handleSelectionChange
(
selection
)
{
this
.
ids
=
selection
.
map
(
item
=>
item
.
id
)
this
.
single
=
selection
.
length
!==
1
this
.
multiple
=
!
selection
.
length
},
/** 新增按钮操作 */
handleAdd
()
{
this
.
reset
();
this
.
getAllUnit
()
this
.
open
=
true
;
this
.
title
=
"
添加办税人信息
"
;
},
getAllUnit
()
{
console
.
log
(
this
.
unitList
)
if
(
!
this
.
unitList
||
this
.
unitList
.
length
<
1
)
{
listAllUnitInfo
().
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
unitList
=
resp
.
data
}
})
}
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
this
.
reset
();
this
.
getAllUnit
()
const
id
=
row
.
id
||
this
.
ids
getLoginUser
(
id
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
form
.
loginPwd
=
atob
(
response
.
data
.
loginPwd
)
console
.
log
(
this
.
form
.
loginPwd
)
this
.
open
=
true
;
this
.
title
=
"
修改办税人信息
"
;
});
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
(
valid
=>
{
if
(
valid
)
{
if
(
this
.
form
.
id
!=
null
)
{
updateLoginUser
(
this
.
form
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
"
修改成功
"
);
this
.
open
=
false
;
this
.
getList
();
});
}
else
{
addLoginUser
(
this
.
form
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
"
新增成功
"
);
this
.
open
=
false
;
this
.
getList
();
});
}
}
});
},
/** 开票员登录认证 **/
doAuth
(
row
)
{
},
/** 删除按钮操作 */
handleDelete
(
row
)
{
const
ids
=
row
.
id
||
this
.
ids
;
this
.
$modal
.
confirm
(
'
是否确认删除办税人信息编号为"
'
+
ids
+
'
"的数据项?
'
).
then
(
function
()
{
return
delLoginUser
(
ids
);
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
"
删除成功
"
);
}).
catch
(()
=>
{});
},
/** 导出按钮操作 */
handleExport
()
{
this
.
download
(
'
business/loginUser/export
'
,
{
...
this
.
queryParams
},
`loginUser_
${
new
Date
().
getTime
()}
.xlsx`
)
}
}
};
</
script
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment