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
a76aab3c
Commit
a76aab3c
authored
Apr 14, 2025
by
许珑标
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
安全发签约及合作机构账号分配
parent
c75b12c6
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
901 additions
and
19 deletions
+901
-19
src/api/business/accInfo.js
src/api/business/accInfo.js
+11
-0
src/api/business/companyInfo.js
src/api/business/companyInfo.js
+20
-0
src/api/business/laborSign.js
src/api/business/laborSign.js
+8
-0
src/api/business/unitInfo.js
src/api/business/unitInfo.js
+28
-0
src/views/business/salaryAccount/index.vue
src/views/business/salaryAccount/index.vue
+55
-2
src/views/business/taxUnit/index.vue
src/views/business/taxUnit/index.vue
+3
-0
src/views/business/taxUnit/payAcc.vue
src/views/business/taxUnit/payAcc.vue
+744
-0
src/views/business/taxUnit/signList.vue
src/views/business/taxUnit/signList.vue
+24
-9
src/views/index.vue
src/views/index.vue
+8
-8
No files found.
src/api/business/accInfo.js
View file @
a76aab3c
...
...
@@ -62,3 +62,14 @@ export function getAccAliInfo(cardNo) {
}
})
}
// 查询阿里账本详细信息
export
function
getTaxAccAliInfo
(
cardNo
)
{
return
request
({
url
:
'
/business/unitAccInfo/detail
'
,
method
:
'
get
'
,
params
:
{
cardNo
:
cardNo
}
})
}
src/api/business/companyInfo.js
View file @
a76aab3c
...
...
@@ -9,6 +9,15 @@ export function listCompanyInfo(query) {
})
}
// 查询没有开发信息的全部自有付款主体
export
function
allHasNoOpenInfoCompany
(
query
)
{
return
request
({
url
:
'
/business/companyInfo/hasNoOpenInfo/listAll
'
,
method
:
'
get
'
,
params
:
query
})
}
// 查询付款主体信息所有列表
export
function
listAllCompanyInfo
(
query
)
{
return
request
({
...
...
@@ -51,3 +60,14 @@ export function delCompanyInfo(id) {
method
:
'
get
'
})
}
// 绑定发薪账户
export
function
bindCompanyAcc
(
companyId
)
{
return
request
({
url
:
'
/business/companyInfo/acc/bind
'
,
method
:
'
post
'
,
data
:
{
id
:
companyId
}
})
}
src/api/business/laborSign.js
View file @
a76aab3c
...
...
@@ -59,3 +59,11 @@ export function agreeSign(id) {
method
:
'
post
'
})
}
// 删除代发合约签订
export
function
giveAccToLabor
(
laborId
)
{
return
request
({
url
:
'
/business/unitInfo/acc/give/
'
+
laborId
,
method
:
'
post
'
})
}
src/api/business/unitInfo.js
View file @
a76aab3c
...
...
@@ -27,6 +27,14 @@ export function listAllUnitInfo(query) {
})
}
// 查询所有没有签约安全发的税地单位信息列表
export
function
listAllHasNoOpenInfo
()
{
return
request
({
url
:
'
/business/unitInfo/hasNoOpenInfo/listAll
'
,
method
:
'
get
'
,
})
}
// 查询税地单位信息详细
export
function
getUnitInfo
(
id
)
{
return
request
({
...
...
@@ -86,3 +94,23 @@ export function listToSignUnit(query) {
params
:
query
})
}
// 绑定发薪账户
export
function
bindUnitAcc
(
unitId
)
{
return
request
({
url
:
'
/business/unitInfo/acc/bind
'
,
method
:
'
post
'
,
data
:
{
id
:
unitId
}
})
}
// 查询税地单位信息所有列表
export
function
listAllUnitAccInfo
(
query
)
{
return
request
({
url
:
'
/business/unitAccInfo/listAll
'
,
method
:
'
get
'
,
params
:
query
})
}
src/views/business/salaryAccount/index.vue
View file @
a76aab3c
...
...
@@ -389,13 +389,39 @@
</div>
</el-dialog>
<!-- 绑定账户 -- 外部-->
<el-dialog
title=
"绑定账户"
:visible.sync=
"bindAcc.panel"
width=
"80%"
>
<tax-sign-component></tax-sign-component>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"bindAcc.panel = false"
>
关 闭
</el-button>
</div>
</el-dialog>
<!-- 绑定账户 - 自有账户-->
<el-dialog
title=
"绑定账户"
:visible.sync=
"openSign.panel"
width=
"300"
>
<el-form
label-width=
"80px"
>
<el-form-item
label=
"账户主体"
>
<el-select
v-model=
"openSign.companyId"
placeholder=
"请选择账户对应的企业主体"
>
<el-option
v-for=
"item in openSign.companyList"
:label=
"item.companyName"
:value=
"item.id"
/>
</el-select>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitBind"
>
确定
</el-button>
<el-button
@
click=
"openSign.panel = false"
>
关 闭
</el-button>
</div>
</el-dialog>
<el-dialog
title=
"扫码签约"
:visible.sync=
"openSign.codePanel"
width=
"300px"
style=
"text-align: center"
>
<h3>
1、请打开对应企业的支付宝
</h3>
<h3>
2、扫描下方二维码
</h3>
<qr-code-component
:text=
"openSign.codeUrl"
/>
<h3>
操作完成后大约5-10分钟
</h3>
<h3>
可刷新页面查看结果
</h3>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"openSign.codePanel = false"
>
关 闭
</el-button>
</div>
</el-dialog>
</div>
</template>
...
...
@@ -407,11 +433,20 @@ import { addDateRange } from '@/utils/ruoyi'
import
{
formatDate
}
from
'
@/utils
'
import
QrCodeComponent
from
'
@/components/QrCode.vue
'
import
TaxSignComponent
from
'
@/views/business/salaryAccount/taxSignComponent.vue
'
import
{
bindUnitAcc
,
listAllHasNoOpenInfo
}
from
'
@/api/business/unitInfo
'
import
{
allHasNoOpenInfoCompany
,
bindCompanyAcc
}
from
'
@/api/business/companyInfo
'
export
default
{
name
:
'
SalaryAccount
'
,
components
:
{
TaxSignComponent
,
QrCodeComponent
,
AccSelect
},
data
()
{
return
{
openSign
:
{
panel
:
false
,
companyId
:
null
,
companyList
:
[],
codePanel
:
false
,
codeUrl
:
''
,
},
bindAcc
:
{
panel
:
false
,
...
...
@@ -666,8 +701,26 @@ export default {
})
},
goRegister
()
{
window
.
open
(
'
https://admins.openbanks.cn/#/register?parameters=MPf%2Flhts8VrGmGDCjFNey4AqyYOJk1pQAc0KS6cZqp2QcvSNrm9LqLlqELVUfoVT
'
,
'
_blank
'
)
allHasNoOpenInfoCompany
().
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
openSign
.
companyList
=
resp
.
data
}
}).
finally
(()
=>
{
this
.
openSign
.
panel
=
true
})
},
submitBind
()
{
this
.
$modal
.
loading
()
bindCompanyAcc
(
this
.
openSign
.
companyId
).
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
openSign
.
codePanel
=
true
;
this
.
openSign
.
codeUrl
=
resp
.
data
}
}).
finally
(()
=>
{
this
.
$modal
.
closeLoading
()
this
.
openSign
.
panel
=
false
;
})
}
}
}
</
script
>
...
...
src/views/business/taxUnit/index.vue
View file @
a76aab3c
...
...
@@ -197,6 +197,9 @@ export default {
}
},
created
()
{
},
mounted
()
{
this
.
getList
()
},
methods
:
{
...
...
src/views/business/taxUnit/payAcc.vue
0 → 100644
View file @
a76aab3c
<
template
>
<div
class=
"app-container"
>
<!-- 发薪账户管理页面 -->
<el-tabs
v-model=
"payType"
@
tab-click=
"handleClick"
type=
"card"
>
<el-tab-pane
label=
"自有发薪账号"
name=
"first"
>
<el-form
label-width=
"120px"
label-position=
"left"
class=
"formMain"
>
<el-row
:gutter=
"30"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"支付宝外卡卡号"
>
<el-input
v-model=
"params.payAccNo"
placeholder=
"请输入支付宝外卡卡号"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"getListAllAccInfoFN"
>
查询
</el-button>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"buttonOperate"
>
<el-button
type=
"primary"
@
click=
"goRegister"
>
绑定发薪账户
</el-button>
</div>
</el-col>
</el-row>
</el-form>
<el-card
class=
"box-card"
v-for=
"ele in ownList"
:key=
"ele.id"
>
<el-row>
<el-col
:span=
"16"
>
<div
class=
"companyConterMain"
>
<div
class=
"enterpriseImageMain"
>
<img
class=
"enterpriseImage"
src=
"@/assets/images/enterprise.png"
alt=
""
>
</div>
<div
class=
"companyConterInformation"
>
<div
style=
"width:90%;"
>
<el-row>
<el-col
:span=
"14"
>
账户:(
{{
ele
.
accName
}}
)
</el-col>
<el-col
:span=
"8"
>
<el-button
type=
"info"
@
click=
"viewDetail(ele)"
plain
>
账户详情
</el-button>
</el-col>
</el-row>
</div>
<el-row>
<el-col
:span=
"16"
>
卡号:
{{
ele
.
accNo
}}
</el-col>
</el-row>
<!--
<div
style=
"width:90%;"
>
<el-row>
<el-col
:span=
"8"
>
可转帐余额:
<span
style=
"color:#4aa3ff;"
>
1111
</span>
</el-col>
<el-col
:span=
"8"
>
可用服务费:
<span
style=
"color:#4aa3ff;"
>
1111
</span>
</el-col>
<el-col
:span=
"8"
>
服务费率:
<span
style=
"color:#4aa3ff;"
>
11111
</span>
</el-col>
</el-row>
</div>
-->
</div>
</div>
</el-col>
<el-col
:span=
"6"
:offset=
"2"
>
<div
class=
"operateConterMain"
>
<div
style=
"width: 90%;"
>
<el-row>
<el-col
:span=
"12"
><el-button
style=
"width:120px;"
type=
"primary"
@
click=
"ownBalanceRecharge(ele)"
>
余额充值
</el-button></el-col>
<el-col
:span=
"12"
><el-button
style=
"width:120px;"
type=
"primary"
@
click=
"ownServiceChargeRecharge(ele)"
>
服务费充值
</el-button></el-col>
</el-row>
</div>
<div
style=
"width: 90%;"
>
<el-row>
<el-col
:span=
"12"
><el-button
style=
"width:120px;"
type=
"primary"
plain
@
click=
"showBill(ele.payAccNo)"
>
充值记录
</el-button></el-col>
<el-col
:span=
"12"
><el-button
style=
"width:120px;"
type=
"primary"
plain
@
click=
"salarySelection(ele.payAccNo)"
>
去发薪
</el-button></el-col>
</el-row>
</div>
</div>
</el-col>
</el-row>
</el-card>
<el-empty
v-if=
"ownList.length == 0"
description=
"暂无账号"
></el-empty>
</el-tab-pane>
</el-tabs>
<!-- 去发薪对话框 -->
<el-dialog
title=
"发薪选择"
:visible.sync=
"payVisible"
width=
"38%"
center
>
<div
class=
"salarySelectionStyle"
>
<div
class=
"salarySelectionMain"
@
click=
"toLinkBankCard"
>
<div
class=
"salarySelectionImageDiv"
>
<img
class=
"salarySelectionImage"
src=
"../../../assets/images/yhk.png"
alt=
""
>
</div>
<p
class=
"salarySelectionText"
>
批量到银行卡
</p>
</div>
<div
class=
"salarySelectionMain"
@
click=
"toLinkAlipay"
>
<div
class=
"salarySelectionImageDiv"
>
<img
class=
"salarySelectionImage"
src=
"../../../assets/images/zfb.png"
alt=
""
>
</div>
<p
class=
"salarySelectionText"
>
批量到支付宝
</p>
</div>
</div>
</el-dialog>
<!-- 充值弹窗 -->
<el-dialog
title=
"支付宝充值"
:visible.sync=
"aliQRCodeRechargeOpen"
width=
"500px"
style=
"text-align: center"
>
<!--
<h3>
转账完成后,工作时间最晚2小时到账,最快1分钟充值到您的支付宝账户
</h3>
-->
<el-form
:model=
"aliQRCodeRechargeForm"
ref=
"signNewForm"
size=
"small"
label-width=
"120px"
:rules=
"aliQRCodeRechargeRules"
>
<el-form-item
label=
"收款账户"
prop=
"payeeAccNo"
>
<el-input
v-model=
"aliQRCodeRechargeForm.payeeAccNo"
placeholder=
"请输入收款账号"
disabled
/>
</el-form-item>
<el-form-item
label=
"付款账户"
prop=
"payerAccNo"
v-if=
"aliQRCodeRechargeForm.bindType && 2 === aliQRCodeRechargeForm.bindType"
>
<accSelect
:bindType=
"1"
v-model=
"aliQRCodeRechargeForm.payerAccNo"
></accSelect>
</el-form-item>
<el-form-item
label=
"余额/服务费"
prop=
"rechargeType"
>
<template>
<el-select
v-model=
"aliQRCodeRechargeForm.rechargeType"
style=
"width: 100%"
disabled
>
<el-option
label=
"余额"
:value=
"2"
>
余额
</el-option>
<el-option
label=
"服务费"
:value=
"1"
>
服务费
</el-option>
</el-select>
</
template
>
</el-form-item>
<el-form-item
label=
"充值金额"
prop=
"amount"
>
<el-input-number
v-model=
"aliQRCodeRechargeForm.amount"
placeholder=
"请输入充值金额"
:precision=
"2"
style=
"width: 100%"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"getAliPayUrl"
>
确认支付
</el-button>
<el-button
@
click=
"aliQRCodeRechargeOpen = false"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- 账户详情弹窗 -->
<el-dialog
title=
"账号信息查询"
:visible.sync=
"accDetail.panel"
width=
"30%"
center
>
<el-descriptions
:title=
"accDetail.companyName"
:column=
"1"
:label-style=
"accDetail.label_style"
:contentStyle=
"accDetail.content_style"
>
<el-descriptions-item
label=
"账号"
>
{{ accDetail.info.cardNo }}
</el-descriptions-item>
<el-descriptions-item
label=
"户名"
>
{{ accDetail.info.bankAccName }}
</el-descriptions-item>
<el-descriptions-item
label=
"银行"
>
{{ accDetail.info.cardBank }}
</el-descriptions-item>
<el-descriptions-item
label=
"支行"
>
{{ accDetail.info.cardBranch }}
</el-descriptions-item>
<el-descriptions-item
label=
"开户地"
>
{{ accDetail.info.cardLocation }}
</el-descriptions-item>
<el-descriptions-item
label=
"联行号"
>
{{ accDetail.info.cardDeposit }}
</el-descriptions-item>
<!-- <el-descriptions-item label="备付金余额">{{ offlineRecharge.availableAmount }}</el-descriptions-item>-->
<el-descriptions-item
label=
"可转账金额"
>
{{ accDetail.info.availableTransferAmount }}
</el-descriptions-item>
<el-descriptions-item
label=
"可用服务费"
>
{{ accDetail.info.availableFeeAmount }}
</el-descriptions-item>
</el-descriptions>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"accDetail.panel = false"
>
确 定
</el-button>
</div>
</el-dialog>
<!-- 自有账户充值 -->
<el-dialog
:title=
"ownRechargeTitle"
:visible.sync=
"ownAliQRCodeRechargeOpen"
width=
"42%"
center
>
<el-row
:gutter=
"64"
>
<el-col
:span=
"12"
>
<p
style=
"text-align: center;"
>
通过与账本同主体的企业支付宝进行充值,可在手机端和电脑端充值
</p>
</el-col>
<el-col
:span=
"12"
>
<p
style=
"text-align: center;"
>
通过银行系统进行打款充值
</p>
</el-col>
</el-row>
<el-row
:gutter=
"64"
>
<el-col
:span=
"12"
>
<div
class=
"ownRechargeMain"
>
<img
class=
"ownRechargeImage"
src=
"@/assets/images/zfb.png"
alt=
""
>
<el-button
class=
"ownRechargeButton"
@
click=
"ownAliQRCodeRechargeOpen = false; aliQRCodeRechargeOpen = true"
>
支付宝充值
</el-button>
</div>
</el-col>
<el-col
:span=
"12"
>
<div
class=
"ownRechargeMain"
>
<img
class=
"ownRechargeImage"
src=
"@/assets/images/xianxia.png"
alt=
""
>
<el-button
class=
"ownRechargeButton"
@
click=
"offlineRecharge"
>
线下充值
</el-button>
</div>
</el-col>
</el-row>
</el-dialog>
<!-- 线下充值 -->
<el-dialog
title=
"汇款充值"
:visible.sync=
"rechargeCoursePanel"
width=
"50%"
>
<h2
style=
"font-weight: bold;font-size: 22px;margin-top: -15px;color: #1a1a1a"
>
什么是汇款充值
</h2>
<el-row>
<el-col
:span=
"24"
>
商户可通过银行转账方式完成对应支付宝专属收款账户的充值。支付宝会为商户的每个支付宝账户提供独立的"专属收款账户",商户从任一同名银行账户向其对应的"专属收款账户"转账,即可完成充值。
</el-col>
</el-row>
<el-row
style=
"margin-top: 15px;"
>
<el-col
:span=
"24"
>
<span
style=
"font-weight: bold;font-size: 22px;color: #1a1a1a"
>
三步完成充值
</span>
<a
style=
"color: #69b1ff"
href=
"https://render.alipay.com/p/yuyan/180020040000423002/de59b"
target=
"_blank"
>
(查看教程)
</a>
</el-col>
</el-row>
<el-row
style=
"margin-top: 15px;"
>
<el-col
:span=
"24"
>
<el-timeline>
<el-timeline-item>
<span
style=
"font-weight: bold;font-size: 18px"
>
登录你的网上银行
</span>
<span
style=
"color: gray;font-size: 14px"
>
(支持任意银行)
</span>
<div
style=
"font-size: 14px;margin-top: 5px"
>
必须使用本公司同名的银行账户进行汇款转账,首次使用建议小金额转入测试
</div>
</el-timeline-item>
<el-timeline-item>
<span
style=
"font-weight: bold;font-size: 18px"
>
转账时填写以下专属账户
</span>
<div
style=
"font-size: 14px;margin-top: 5px"
>
请注意收款账户支行选择:
<span
style=
"color: red"
>
支付宝-备付金账户
</span>
<span>
、开户地选择:
</span>
<span
style=
"color: red"
>
上海市-上海市
</span>
<span>
,否则支付宝无法收到资金
</span>
</div>
<el-descriptions
title=
"你的企业备付金余额账户"
:column=
"1"
:border=
"true"
style=
"margin-top: 15px"
:label-style=
"accDetail.label_style"
:contentStyle=
"accDetail.content_style"
>
<el-descriptions-item
label=
"账号"
>
{{ offlineRechargeData.cardNo }}
</el-descriptions-item>
<el-descriptions-item
label=
"户名"
>
{{ offlineRechargeData.bankAccName
}}
</el-descriptions-item>
<el-descriptions-item
label=
"银行"
>
{{ offlineRechargeData.cardBank
}}
</el-descriptions-item>
<el-descriptions-item
label=
"支行"
>
{{ offlineRechargeData.cardBranch
}}
</el-descriptions-item>
<el-descriptions-item
label=
"开户地"
>
{{ offlineRechargeData.cardLocation
}}
</el-descriptions-item>
<el-descriptions-item
label=
"联行号"
>
{{ offlineRechargeData.cardDeposit
}}
</el-descriptions-item>
</el-descriptions>
</el-timeline-item>
<el-timeline-item>
<span
style=
"font-weight: bold;font-size: 18px"
>
转账完成后,工作时间最晚2小时到账,最快1分钟充值到您的支付宝账户
</span>
<div
style=
"font-size: 14px;margin-top: 5px"
>
非工作时间预计最晚下个工作日到账(具体以银行为准)
</div>
</el-timeline-item>
</el-timeline>
<div
style=
"margin-top: 15px;"
>
<span
style=
"font-weight: bold;font-size: 18px"
>
温馨提示:
</span>
<span
style=
"color: gray;font-size: 14px"
>
充值金额
<span
style=
"color: red;"
><strong>
分数位为1
</strong></span>
的(如:10.01,119.31,1235.81等)会
<span
style=
"color: red;"
><strong>
充值到服务费
</strong></span>
;其它金额会充值到余额;
</span>
</div>
</el-col>
</el-row>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"rechargeCoursePanel = false"
>
确 定
</el-button>
</div>
</el-dialog>
<el-dialog
title=
"确认支付"
:visible.sync=
"qrPayPanel.open"
width=
"20%"
>
<div>
<span
style=
"font-size: 18px;"
>
1、使用手机支付宝扫码支付;
</span>
<qr-code-component
:text=
"qrPayPanel.payUrl"
/>
</div>
<div
style=
"margin-top: 12px;"
>
<span
style=
"font-size: 18px;"
>
2、通过支付宝官网支付,
<a
:href=
"qrPayPanel.payUrl"
target=
"_blank"
style=
"font-size: 20px;color: #409EFF;"
><strong>
去支付
</strong></a>
;
</span>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"qrPayPanel.open = false"
>
取 消
</el-button>
</div>
</el-dialog>
<el-dialog
title=
"充值记录"
:visible.sync=
"billPanel"
width=
"80%"
>
<el-form
:model=
"billQuery"
size=
"small"
:inline=
"true"
label-width=
"100px"
>
<el-form-item
label=
"账单类型"
prop=
"tranType"
>
<el-select
v-model=
"billQuery.capitalPurpose"
clearable
placeholder=
"请选择"
>
<el-option
label=
"全部"
:value=
"''"
/>
<el-option
label=
"服务费"
:value=
"1"
/>
<el-option
label=
"余额"
:value=
"2"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"时间"
>
<el-date-picker
v-model=
"dateRange"
style=
"width: 240px"
value-format=
"yyyy-MM-dd HH:mm:ss"
type=
"daterange"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"getBillList"
>
搜索
</el-button>
</el-form-item>
</el-form>
<el-tabs
value=
"first"
@
tab-click=
"billTypeTabClick"
>
<el-tab-pane
label=
"账单列表"
name=
"first"
></el-tab-pane>
</el-tabs>
<el-table
v-loading=
"loading"
:data=
"billDataList"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"账单类型"
align=
"center"
prop=
"capitalPurpose"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.capitalPurpose == 1"
>
服务费
</span>
<span
v-if=
"scope.row.capitalPurpose == 2"
>
余额
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"收支类型"
align=
"center"
prop=
"tranType"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"success"
size=
"mini"
>
收入
</el-button>
</
template
>
</el-table-column>
<el-table-column
label=
"金额"
align=
"center"
prop=
"tranAmount"
>
<
template
slot-scope=
"scope"
>
<span
style=
"color: rgb(255, 208, 75)"
>
+
{{
scope
.
row
.
tranAmount
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"时间"
align=
"center"
prop=
"createTime"
width=
"180"
/>
</el-table>
<el-pagination
small
layout=
"prev, pager, next"
:total=
"billTotal"
:page.sync=
"billQuery.pageNum"
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:limit.sync=
"billQuery.pageSize"
@
pagination=
"getBillList()"
>
</el-pagination>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"billPanel = false"
>
关 闭
</el-button>
</div>
</el-dialog>
<el-dialog
title=
"绑定账户"
:visible.sync=
"bindAcc.panel"
width=
"300"
>
<el-form
label-width=
"80px"
>
<el-form-item
label=
"账户主体"
>
<el-select
v-model=
"bindAcc.companyId"
placeholder=
"请选择账户对应的企业主体"
>
<el-option
v-for=
"item in bindAcc.taxUnitList"
:label=
"item.unitName"
:value=
"item.id"
/>
</el-select>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitBind"
>
确定
</el-button>
<el-button
@
click=
"bindAcc.panel = false"
>
关 闭
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
AccSelect
from
'
@/views/business/accInfo/accSelect.vue
'
import
{
listAllAccInfo
,
getAccAliInfo
,
getTaxAccAliInfo
}
from
'
@/api/business/accInfo
'
import
{
addAccRecharge
,
listBill
}
from
'
@/api/business/accRecharge.js
'
import
{
addDateRange
}
from
'
@/utils/ruoyi
'
import
{
formatDate
}
from
'
@/utils
'
import
QrCodeComponent
from
'
@/components/QrCode.vue
'
import
TaxSignComponent
from
'
@/views/business/salaryAccount/taxSignComponent.vue
'
import
{
bindUnitAcc
,
listAllHasNoOpenInfo
,
listAllUnitAccInfo
,
listAllUnitInfo
}
from
'
@/api/business/unitInfo
'
export
default
{
name
:
'
SalaryAccount
'
,
components
:
{
TaxSignComponent
,
QrCodeComponent
,
AccSelect
},
data
()
{
return
{
bindAcc
:
{
panel
:
false
,
companyId
:
null
,
taxUnitList
:
[]
},
billPanel
:
false
,
qrPayPanel
:
{
open
:
false
,
payUrl
:
''
},
// 账户详情
accDetail
:
{
content_style
:
{
'
font-size
'
:
'
16px
'
,
},
label_style
:
{
'
font-size
'
:
'
16px
'
,
},
panel
:
false
,
info
:
{}
},
// tab选择参数
payType
:
'
first
'
,
// 发薪选择对话框参数
payVisible
:
false
,
params
:
{
bindType
:
1
,
payAccNo
:
null
,
},
// 自有发薪数据
ownList
:
[],
// 第三方发薪数据
thirdParty
:
[],
// 去发薪-当前选中的卡号
cardNo
:
null
,
// 充值参数-第三方
aliQRCodeRechargeOpen
:
false
,
aliQRCodeRechargeForm
:
{
payeeAccNo
:
''
,
rechargeType
:
1
,
amount
:
''
,
payerAccNo
:
''
},
aliQRCodeRechargeRules
:
{
payerAccNo
:
[
{
required
:
true
,
message
:
'
请选择付款账号
'
,
trigger
:
'
change
'
}
],
amount
:
[
{
validator
:
(
rule
,
value
,
callback
)
=>
{
if
(
value
<=
0
)
{
callback
(
new
Error
(
'
充值金额必须大于零
'
));
}
else
{
callback
()
}
},
trigger
:
'
blur
'
}
]
},
// 充值参数-自有
ownAliQRCodeRechargeOpen
:
false
,
ownRechargeTitle
:
null
,
ownAliQRCodeRechargeForm
:
{},
// 线下充值
rechargeCoursePanel
:
false
,
offlineRechargeData
:
{},
// 充值记录相关参数
billQuery
:
{
pageNum
:
1
,
pageSize
:
10
,
capitalPurpose
:
1
,
//账单类型:1-服务费;2-余额
tranType
:
''
,
//收支类型:1-收入;2-支出
startTime
:
''
,
endTime
:
''
,
},
dateRange
:
[
formatDate
(
new
Date
()),
formatDate
(
new
Date
())],
billDataList
:
[],
billTotal
:
0
,
userInfoName
:
null
,
accountCollection
:
[],
loading
:
false
}
},
created
()
{
},
mounted
()
{
if
(
this
.
payType
==
'
first
'
)
{
this
.
params
.
bindType
=
1
this
.
getListAllAccInfoFN
()
}
else
if
(
this
.
payType
==
'
second
'
)
{
this
.
params
.
bindType
=
2
this
.
getListAllAccInfoFN
()
}
},
methods
:
{
getListAllAccInfoFN
()
{
listAllUnitAccInfo
(
this
.
params
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
this
.
params
.
bindType
==
1
)
{
this
.
ownList
=
res
.
data
}
else
if
(
this
.
params
.
bindType
==
2
)
{
this
.
thirdParty
=
res
.
data
}
}
})
},
toSign
()
{
this
.
bindAcc
.
panel
=
true
;
},
billTypeTabClick
(
tab
)
{
// this.billQuery.capitalPurpose = tab.name === "second" ? 2 : 1 //1:服务费 2:余额
// this.getBillList();
},
showBill
(
cardNo
)
{
this
.
billQuery
.
cardNo
=
cardNo
;
this
.
billPanel
=
true
;
this
.
getBillList
();
},
handleSizeChange
(
val
)
{
this
.
billQuery
.
pageSize
=
Number
(
val
)
this
.
getBillList
()
},
handleCurrentChange
(
val
)
{
this
.
billQuery
.
pageNum
=
Number
(
val
)
this
.
getBillList
()
},
getBillList
()
{
if
(
this
.
dateRange
&&
this
.
dateRange
.
length
>
0
)
{
let
searchVal
=
addDateRange
(
this
.
billQuery
,
this
.
dateRange
)
this
.
billQuery
.
startTime
=
searchVal
.
params
.
beginTime
.
split
(
"
"
)[
0
]
+
"
00:00:00
"
this
.
billQuery
.
endTime
=
searchVal
.
params
.
endTime
.
split
(
"
"
)[
0
]
+
"
23:59:59
"
}
else
{
this
.
billQuery
.
startTime
=
''
this
.
billQuery
.
endTime
=
''
}
this
.
loading
=
true
listBill
(
this
.
billQuery
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
billDataList
=
res
.
rows
this
.
billTotal
=
res
.
total
}
}).
finally
(()
=>
{
this
.
loading
=
false
})
},
// 选择线下充值方法
offlineRecharge
()
{
this
.
ownAliQRCodeRechargeOpen
=
false
this
.
$modal
.
loading
(
'
...加载中
'
)
getAccAliInfo
(
this
.
aliQRCodeRechargeForm
.
payeeAccNo
).
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
offlineRechargeData
=
resp
.
data
this
.
rechargeCoursePanel
=
true
// this.accDetail.companyName = card.companyName
// this.accDetail.info = resp.data
// this.accDetail.panel = true
}
}).
finally
(()
=>
{
this
.
$modal
.
closeLoading
()
})
},
// 点击服务分充值方法-自有
ownServiceChargeRecharge
(
val
)
{
this
.
aliQRCodeRechargeForm
.
rechargeType
=
1
this
.
aliQRCodeRechargeForm
.
payeeAccNo
=
val
.
payAccNo
this
.
aliQRCodeRechargeForm
.
bindType
=
val
.
bindType
this
.
ownRechargeTitle
=
'
自有服务费充值
'
this
.
ownAliQRCodeRechargeOpen
=
true
},
// 点击余额充值方法-自有
ownBalanceRecharge
(
val
)
{
this
.
aliQRCodeRechargeForm
.
rechargeType
=
2
this
.
aliQRCodeRechargeForm
.
payeeAccNo
=
val
.
payAccNo
this
.
aliQRCodeRechargeForm
.
bindType
=
val
.
bindType
this
.
ownRechargeTitle
=
'
自有余额充值
'
this
.
ownAliQRCodeRechargeOpen
=
true
},
// 点击余额充值方法-第三方
balanceRecharge
(
val
)
{
this
.
aliQRCodeRechargeForm
.
rechargeType
=
2
this
.
aliQRCodeRechargeForm
.
payeeAccNo
=
val
.
payAccNo
this
.
aliQRCodeRechargeForm
.
bindType
=
val
.
bindType
this
.
aliQRCodeRechargeOpen
=
true
},
// 点击服务费充值方法-第三方
serviceChargeRecharge
(
val
)
{
this
.
aliQRCodeRechargeForm
.
rechargeType
=
1
this
.
aliQRCodeRechargeForm
.
payeeAccNo
=
val
.
payAccNo
this
.
aliQRCodeRechargeForm
.
bindType
=
val
.
bindType
this
.
aliQRCodeRechargeOpen
=
true
},
// 确认支付按钮
getAliPayUrl
()
{
this
.
$refs
.
signNewForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
this
.
$modal
.
loading
(
'
充值中....
'
)
addAccRecharge
(
this
.
aliQRCodeRechargeForm
).
then
(
res
=>
{
this
.
aliQRCodeRechargeOpen
=
false
if
(
200
===
res
.
code
)
{
if
(
1
===
this
.
aliQRCodeRechargeForm
.
bindType
)
{
this
.
qrPayPanel
.
payUrl
=
res
.
data
.
msg
this
.
qrPayPanel
.
open
=
true
this
.
$forceUpdate
()
}
else
{
this
.
$modal
.
msgSuccess
(
"
充值成功!
"
);
}
}
}).
finally
(()
=>
{
this
.
$modal
.
closeLoading
()
})
}
})
},
// 跳转到批量到支付宝
toLinkAlipay
()
{
this
.
$router
.
push
({
path
:
"
/transfer/batchToAli
"
,
query
:
{
number
:
this
.
cardNo
}
});
this
.
payVisible
=
false
},
// 跳转到批量到银行卡
toLinkBankCard
()
{
this
.
$router
.
push
({
path
:
"
/transfer/batchToBank
"
,
query
:
{
number
:
this
.
cardNo
}
});
this
.
payVisible
=
false
},
// 点击去发薪按钮执行
salarySelection
(
number
)
{
this
.
cardNo
=
number
this
.
payVisible
=
true
},
// tab发生变化时执行
handleClick
(
tab
,
event
)
{
if
(
this
.
payType
==
'
first
'
)
{
this
.
params
.
bindType
=
1
this
.
getListAllAccInfoFN
()
}
else
if
(
this
.
payType
==
'
second
'
)
{
this
.
params
.
bindType
=
2
this
.
getListAllAccInfoFN
()
}
// console.log(tab, event);
// console.log('payType', this.payType);
},
viewDetail
(
card
)
{
this
.
$modal
.
loading
(
"
...
"
)
getTaxAccAliInfo
(
card
.
accNo
).
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
accDetail
.
companyName
=
card
.
companyName
this
.
accDetail
.
info
=
resp
.
data
this
.
accDetail
.
panel
=
true
}
}).
finally
(()
=>
{
this
.
$modal
.
closeLoading
()
})
},
goRegister
()
{
listAllHasNoOpenInfo
().
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
bindAcc
.
taxUnitList
=
resp
.
data
}
}).
finally
(()
=>
{
this
.
bindAcc
.
panel
=
true
})
},
submitBind
()
{
this
.
$modal
.
loading
()
bindUnitAcc
(
this
.
bindAcc
.
companyId
).
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
$modal
.
msgSuccess
(
"
操作成功
"
)
}
}).
finally
(()
=>
{
this
.
$modal
.
closeLoading
()
this
.
bindAcc
.
panel
=
false
;
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.
app-container
:
:
v-deep
{
// 表单部分样式
.formMain
{
padding-left
:
12px
;
// 操作按钮样式
.buttonOperate
{
text-align
:
right
;
padding-right
:
20px
;
}
}
// 卡片样式
.box-card
{
margin-top
:
12px
;
// 公司信息部分样式
.companyConterMain
{
width
:
100%
;
height
:
140px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
// 公司图标样式
.enterpriseImageMain
{
width
:
200px
;
height
:
100%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
.enterpriseImage
{
width
:
120px
;
height
:
68px
;
}
}
// 公司信息内容部分样式
.companyConterInformation
{
width
:
calc
(
100%
-
180px
);
height
:
90%
;
display
:
flex
;
flex-direction
:
column
;
flex-wrap
:
wrap
;
align-content
:
center
;
justify-content
:
space-evenly
;
}
}
// 操作按钮部分样式
.operateConterMain
{
width
:
90%
;
height
:
120px
;
display
:
flex
;
flex-direction
:
column
;
flex-wrap
:
wrap
;
align-content
:
center
;
justify-content
:
space-evenly
;
}
}
// 去发薪-发薪选择对话框样式
.salarySelectionStyle
{
width
:
90%
;
margin
:
0
auto
;
height
:
200px
;
display
:
flex
;
justify-content
:
space-evenly
;
align-items
:
center
;
.salarySelectionMain
{
width
:
40%
;
height
:
90%
;
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
center
;
align-items
:
center
;
background-color
:
rgba
(
117
,
190
,
245
,
.1
);
border-radius
:
12px
;
padding
:
12px
;
.salarySelectionImageDiv
{
width
:
100%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
.salarySelectionImage
{
width
:
120px
;
height
:
120px
;
z-index
:
9999
;
}
}
.salarySelectionText
{
text-align
:
center
;
width
:
100%
;
font-size
:
18px
;
font-weight
:
bold
;
}
}
}
// 自有充值选中对话框样式-选择充值方式
.ownRechargeMain
{
height
:
160px
;
display
:
flex
;
flex-direction
:
column
;
flex-wrap
:
wrap
;
justify-content
:
space-around
;
align-content
:
center
;
.ownRechargeImage
{
width
:
100px
;
height
:
100px
;
}
.ownRechargeButton
{
width
:
32%
;
border-radius
:
16px
;
}
}
}
</
style
>
src/views/business/taxUnit/signList.vue
View file @
a76aab3c
...
...
@@ -57,14 +57,15 @@
v-hasPermi=
"['business:laborSign:add']"
>
签约合约
</el-button>
<!--
<el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['business:unitInfo:remove']"-->
<!-- >删除-->
<!--
</el-button>
-->
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-lollipop"
@
click=
"givePayAcc(scope.row)"
v-if=
"scope.row.signStatus && 2 === scope.row.signStatus && !scope.row.payAccNo"
v-hasPermi=
"['business:unitInfo:add']"
>
分配账户
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -81,7 +82,7 @@
<
script
>
import
{
querySignList
}
from
'
@/api/business/unitInfo
'
import
{
agreeSign
}
from
'
@/api/business/laborSign
'
import
{
agreeSign
,
giveAccToLabor
}
from
'
@/api/business/laborSign
'
export
default
{
name
:
'
signList
'
,
...
...
@@ -147,6 +148,20 @@ export default {
}
})
}).
catch
(()
=>
{});
},
givePayAcc
(
row
)
{
this
.
$confirm
(
`确认给
${
row
.
inviterName
}
的分配付款专户吗?`
,
'
操作提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
}).
then
(()
=>
{
giveAccToLabor
(
row
.
id
).
then
(
resp
=>
{
if
(
200
===
resp
.
code
)
{
this
.
$modal
.
msgSuccess
(
"
操作成功
"
)
this
.
getList
()
}
})
}).
catch
(()
=>
{});
}
}
}
...
...
src/views/index.vue
View file @
a76aab3c
...
...
@@ -34,14 +34,14 @@
</el-col>
<el-col
:span=
"12"
><div
class=
"grid-content bg-purple-light"
></div></el-col>
</el-row>
<!-- <div class="home">--
>
<!-- <el-card class="margin-bottom-small">--
>
<!-- <div>--
>
<!-- <!– <img src="@/assets/images/welcome.png" alt="welcome" />–>
-->
<!-- <img src="@/assets/images/index-barder.png" alt="welcome" />--
>
<!-- </div>--
>
<!-- </el-card>--
>
<!-- </div>--
>
<div
class=
"home"
>
<el-card
class=
"margin-bottom-small"
>
<div
>
<!-- <img src="@/assets/images/welcome.png" alt="welcome" />
-->
<img
src=
"@/assets/images/index-barder.png"
alt=
"welcome"
/
>
</div
>
</el-card
>
</div
>
</div>
</template>
...
...
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