Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
J
jft-vue-platform
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
王梦龙
jft-vue-platform
Commits
4e81094e
提交
4e81094e
authored
8月 06, 2024
作者:
赵世杰
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
账单开发
上级
f2f45377
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
265 行增加
和
3 行删除
+265
-3
bill.js
src/api/bill.js
+34
-0
index.js
src/router/index.js
+8
-1
index.vue
src/views/bill/salaryStatement/index.vue
+202
-0
index.vue
src/views/dispatch/index.vue
+1
-1
salary_advance_interval.vue
src/views/dispatch/salary_advance_interval.vue
+20
-1
没有找到文件。
src/api/bill.js
浏览文件 @
4e81094e
...
...
@@ -54,4 +54,37 @@ export function billCollect(query) {
method
:
'post'
,
data
:
query
,
})
}
// 查询发薪账单列表
export
function
payBillList
(
query
)
{
return
request
({
url
:
"/djl-salary/salary/pay/bill/l"
,
method
:
'get'
,
params
:
query
,
})
}
// 查询发薪账单明细
export
function
payBillBatchList
(
query
)
{
return
request
({
url
:
"/djl-salary/salary/pay/bill/batch/l"
,
method
:
'get'
,
params
:
query
,
})
}
// 发薪账单结算
export
function
payBillSettle
(
query
)
{
return
request
({
url
:
"/djl-salary/salary/pay/bill/settle"
,
method
:
'post'
,
data
:
query
,
})
}
// 发薪账单收款
export
function
payBillPayment
(
query
)
{
return
request
({
url
:
"/djl-salary/salary/pay/bill/collect"
,
method
:
'post'
,
data
:
query
,
})
}
\ No newline at end of file
src/router/index.js
浏览文件 @
4e81094e
...
...
@@ -64,7 +64,7 @@ export const constantRoutes = [
"hidden"
:
true
,
"component"
:
()
=>
import
(
'@/views/dispatch/salary_advance_interval'
),
"meta"
:
{
"title"
:
"
预支工资
设置"
,
"title"
:
"
费用
设置"
,
"icon"
:
"online"
,
"preTitle"
:
"客户(派遣公司)管理"
,
"activeMenu"
:
"/dispatch"
...
...
@@ -154,6 +154,7 @@ export const constantRoutes = [
path
:
'/'
,
component
:
Layout
,
redirect
:
'/bill'
,
meta
:
{
title
:
'账单管理'
,
icon
:
'redis'
},
children
:
[
{
path
:
'bill'
,
...
...
@@ -172,6 +173,12 @@ export const constantRoutes = [
"activeMenu"
:
"/bill"
}
},
{
path
:
'salaryStatement'
,
component
:
()
=>
import
(
'@/views/bill/salaryStatement/index'
),
name
:
'salaryStatement'
,
meta
:
{
title
:
'发薪账单'
,
icon
:
'form'
}
},
]
}
// {
...
...
src/views/bill/salaryStatement/index.vue
0 → 100644
浏览文件 @
4e81094e
<
template
>
<div
class=
"electronicContractBill"
>
<el-form
:model=
"queryParams"
ref=
"queryRef"
:inline=
"true"
>
<el-form-item
label=
"账单年月"
prop=
"billDate"
>
<el-date-picker
v-model=
"queryParams.billDate"
type=
"month"
placeholder=
"账单年月"
value-format=
"YYYY-MM"
/>
</el-form-item>
<el-form-item
label=
"派遣"
prop=
"baseCode"
>
<el-select
v-model=
"queryParams.baseCode"
placeholder=
"请选择"
style=
"width: 240px"
filterable
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"Search"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"Refresh"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
"账单年月"
prop=
"billYM"
/>
<el-table-column
label=
"累计发放人次"
prop=
"totalPerson"
/>
<el-table-column
label=
"服务费总额"
prop=
"totalFee"
/>
<el-table-column
label=
"状态"
align=
"center"
>
<template
#
default=
"
{ row }">
<el-tag
type=
"warning"
v-if=
"row.state == 'none'"
>
未结算
</el-tag>
<el-tag
v-if=
"row.state == 'settle'"
>
已结算
</el-tag>
<el-tag
type=
"success"
v-if=
"row.state == 'payment'"
>
已付款
</el-tag>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"240"
align=
"center"
>
<
template
#
default=
"{ row }"
>
<el-button
v-if=
"row.state == 'none'"
link
type=
"primary"
icon=
"Memo"
@
click=
"handleSettle(row)"
>
结算
</el-button>
<el-button
v-if=
"row.state == 'settle'"
link
type=
"primary"
icon=
"Tickets"
@
click=
"handlePayment(row)"
>
收款
</el-button>
<el-button
link
type=
"primary"
icon=
"Edit"
@
click=
"handleDetails(row)"
>
明细
</el-button>
<el-button
link
type=
"primary"
icon=
"Download"
@
click=
"exportData(row)"
>
导出
</el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
v-model:page=
"queryParams.page"
v-model:limit=
"queryParams.limit"
@
pagination=
"getList"
/>
<el-dialog
v-model=
"dialogFormVisible"
title=
"明细"
width=
"1000"
>
<el-form
:inline=
"true"
>
<el-form-item
label=
"批次号"
prop=
"batch"
>
<el-input
v-model=
"detailQueryParams.batch"
placeholder=
"请输入批次号"
style=
"width: 220px"
@
keyup
.
enter=
"getDetailList"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"Search"
@
click=
"getDetailList"
>
搜索
</el-button>
<el-button
icon=
"Refresh"
@
click=
"resetDetailQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-table
v-loading=
"detailLoading"
:data=
"detailList"
>
<el-table-column
label=
"账单年月"
align=
"center"
prop=
"billYM"
/>
<el-table-column
label=
"批次号"
align=
"center"
prop=
"batch"
/>
<el-table-column
label=
"发薪人数"
align=
"center"
prop=
"totalPerson"
/>
<el-table-column
label=
"服务费"
align=
"center"
prop=
"totalFee"
/>
</el-table>
<div
style=
"position: relative;"
>
<pagination
v-show=
"detailTotal > 0"
:total=
"detailTotal"
v-model:page=
"detailQueryParams.page"
v-model:limit=
"detailQueryParams.limit"
@
pagination=
"getDetailList"
/>
</div>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"dialogFormVisible = false"
>
确定
</el-button>
</div>
</
template
>
</el-dialog>
</div>
</template>
<
script
setup
>
import
{
ref
}
from
"vue"
;
import
{
payBillList
,
payBillBatchList
,
payBillPayment
,
payBillSettle
,
queryAllDispatch
}
from
"@/api/bill"
const
{
proxy
}
=
getCurrentInstance
();
const
options
=
ref
([]);
// 派遣下拉
const
list
=
ref
([{}]);
const
loading
=
ref
(
false
);
const
total
=
ref
(
0
);
// 分页
const
queryParams
=
ref
({
billDate
:
''
,
baseCode
:
''
,
page
:
1
,
limit
:
10
});
// 查询参数
const
detailList
=
ref
([]);
const
detailLoading
=
ref
(
false
);
const
dialogFormVisible
=
ref
(
false
);
// 弹窗
const
detailTotal
=
ref
(
0
);
const
detailQueryParams
=
ref
({
page
:
1
,
limit
:
10
,
baseCode
:
''
,
billDate
:
''
,
batch
:
''
,
})
// 弹窗列表查询条件
/** 查询明细 */
function
handleDetails
(
row
)
{
dialogFormVisible
.
value
=
true
;
detailLoading
.
value
=
true
;
detailTotal
.
value
=
0
;
detailList
.
value
=
[];
detailQueryParams
.
value
.
page
=
1
;
detailQueryParams
.
value
.
limit
=
10
;
detailQueryParams
.
value
.
baseCode
=
row
.
baseCode
;
detailQueryParams
.
value
.
billDate
=
row
.
billYM
;
detailQueryParams
.
value
.
batch
=
''
;
getDetailList
()
}
/** 查询明细 */
function
getDetailList
()
{
payBillBatchList
(
detailQueryParams
.
value
).
then
(
res
=>
{
detailLoading
.
value
=
false
;
detailTotal
.
value
=
res
.
count
;
detailList
.
value
=
res
.
data
;
})
}
// 重置弹窗明细查询条件
function
resetDetailQuery
()
{
detailQueryParams
.
value
.
name
=
''
;
detailQueryParams
.
value
.
idNo
=
''
;
getDetailList
()
}
// 导出
function
exportData
(
row
)
{
proxy
.
download
(
"/djl-salary/advance/salary/bill/export"
,
{
billDate
:
row
.
billYM
},
`发薪账单导出结果.xlsx`
);
}
// 结算
function
handleSettle
(
row
)
{
proxy
.
$modal
.
confirm
(
'是否确认结算当前账单?'
).
then
(
function
()
{
return
payBillSettle
({
id
:
row
.
id
,
});
}).
then
((
res
)
=>
{
getList
();
proxy
.
$modal
.
msgSuccess
(
res
.
code
);
}).
catch
(()
=>
{
});
}
// 收款
function
handlePayment
(
row
)
{
proxy
.
$modal
.
confirm
(
'是否确认收款?'
).
then
(
function
()
{
return
payBillPayment
({
id
:
row
.
id
,
});
}).
then
((
res
)
=>
{
getList
();
proxy
.
$modal
.
msgSuccess
(
res
.
code
);
}).
catch
(()
=>
{
});
}
/** 搜索按钮操作 */
function
handleQuery
()
{
queryParams
.
value
.
page
=
1
;
queryParams
.
value
.
limit
=
10
;
getList
();
}
/** 重置按钮操作 */
function
resetQuery
()
{
queryParams
.
value
=
{
billDate
:
''
,
page
:
1
,
limit
:
10
}
handleQuery
();
}
/** 查询预支工资账单列表 */
function
getList
()
{
loading
.
value
=
true
;
payBillList
(
queryParams
.
value
).
then
(
response
=>
{
list
.
value
=
response
.
data
;
total
.
value
=
response
.
count
;
loading
.
value
=
false
;
});
}
function
getqueryAllDispatch
()
{
queryAllDispatch
().
then
(
res
=>
{
res
.
data
=
res
.
data
||
[]
options
.
value
=
res
.
data
.
map
(
item
=>
{
return
{
value
:
item
.
baseCode
,
label
:
item
.
name
}
});
})
}
getqueryAllDispatch
();
getList
();
</
script
>
<
style
lang=
"scss"
>
.electronicContractBill
{
padding
:
20px
;
}
</
style
>
\ No newline at end of file
src/views/dispatch/index.vue
浏览文件 @
4e81094e
...
...
@@ -76,7 +76,7 @@
<el-button
link
type=
"primary"
@
click=
"handleEdit(row)"
icon=
"EditPen"
>
编辑
</el-button>
<el-button
v-if=
"row.line_contract==1"
link
type=
"primary"
@
click=
"handleContract(row,'stop')"
icon=
"TurnOff"
>
停用电子合同
</el-button>
<el-button
v-else
link
type=
"primary"
@
click=
"handleContract(row,'start')"
icon=
"Open"
>
启用电子合同
</el-button>
<el-button
link
type=
"primary"
@
click=
"handleSalaryAdvance(row)"
icon=
"Setting"
>
预支工资
设置
</el-button>
<el-button
link
type=
"primary"
@
click=
"handleSalaryAdvance(row)"
icon=
"Setting"
>
费用
设置
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
src/views/dispatch/salary_advance_interval.vue
浏览文件 @
4e81094e
...
...
@@ -33,7 +33,16 @@
</el-form-item>
<div
style=
"height: 10px;"
></div>
</div>
<div
class=
"box"
>
<el-form-item
label=
"发薪账单手续费"
prop=
"salaryBillFee"
>
<el-input
v-model=
"formLabelAlign.salaryBillFee"
type=
"number"
style=
"width: 300px;"
/>
</el-form-item>
<br/>
<el-form-item
label=
"合同账单手续费"
prop=
"contractBillFee"
>
<el-input
v-model=
"formLabelAlign.contractBillFee"
type=
"number"
style=
"width: 300px;"
/>
</el-form-item>
<div
style=
"height: 10px;"
></div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
平台与客户分成比例
</div>
<el-form-item
label=
"比例"
style=
"width: 1080px;"
prop=
"ratio"
>
...
...
@@ -142,6 +151,14 @@ const data = reactive({
settle_day
:
[{
required
:
true
,
message
:
"请输入系统结算日"
,
trigger
:
[
'blur'
,
'change'
]},
{
pattern
:
/^
\d
+$/
,
message
:
"请输入正整数"
,
trigger
:
[
'blur'
,
'change'
]},
{
validator
:
validateNumber
,
trigger
:
[
'blur'
,
'change'
]}],
salaryBillFee
:
[
{
required
:
true
,
message
:
"请输入发薪账单手续费"
,
trigger
:
[
'blur'
,
'change'
]},
{
pattern
:
/^
\d
+$/
,
message
:
"请输入正整数"
,
trigger
:
[
'blur'
,
'change'
]}
],
contractBillFee
:
[
{
required
:
true
,
message
:
"请输入合同账单手续费"
,
trigger
:
[
'blur'
,
'change'
]},
{
pattern
:
/^
\d
+$/
,
message
:
"请输入正整数"
,
trigger
:
[
'blur'
,
'change'
]}
],
},
feeRules
:{
minAmount
:
[{
required
:
true
,
message
:
"请输入最小次数"
,
trigger
:
"blur"
}],
...
...
@@ -438,6 +455,8 @@ function getSalaryAdvanceInterval(){
formLabelAlign
.
value
.
ratio
=
res
.
data
.
salaryAdvanceIntervalList
;
formLabelAlign
.
value
.
bill_day
=
res
.
data
.
billDay
;
formLabelAlign
.
value
.
settle_day
=
res
.
data
.
settleDay
;
formLabelAlign
.
value
.
contractBillFee
=
res
.
data
.
contractBillFee
;
formLabelAlign
.
value
.
salaryBillFee
=
res
.
data
.
salaryBillFee
;
if
(
res
.
data
.
salaryAdvanceIntervalList
.
length
>
0
){
action
.
value
=
"update"
;
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论