Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
housing-estate
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
物业总平台
housing-estate
Commits
107189c3
提交
107189c3
authored
6月 25, 2023
作者:
宋雄
浏览文件
操作
浏览文件
下载
差异文件
完善流程
上级
31ca531e
94cd6ba0
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
380 行增加
和
326 行删除
+380
-326
Analysis.vue
src/views/dashboard/Analysis.vue
+10
-1
complaint-detail.vue
src/views/property/complaint/complaint-detail.vue
+75
-70
living.vue
src/views/property/living/living.vue
+266
-222
maintenance.vue
src/views/property/maintenance/maintenance.vue
+1
-1
NoticeForm.vue
src/views/property/receipt/modules/NoticeForm.vue
+13
-18
receipt.vue
src/views/property/receipt/receipt.vue
+15
-14
没有找到文件。
src/views/dashboard/Analysis.vue
浏览文件 @
107189c3
...
@@ -166,7 +166,9 @@
...
@@ -166,7 +166,9 @@
</a-col>
</a-col>
</a-row>
</a-row>
<a-modal
:title=
"noticeTitle"
:visible=
"visible"
@
cancel=
"handleCancel"
:footer=
"null"
width=
"40%"
>
<a-modal
:title=
"noticeTitle"
:visible=
"visible"
@
cancel=
"handleCancel"
:footer=
"null"
width=
"40%"
>
<p
v-html=
"noticeContent "
></p>
<div
class=
"notice-content"
>
<p
v-html=
"noticeContent "
></p>
</div>
</a-modal>
</a-modal>
</div>
</div>
</
template
>
</
template
>
...
@@ -452,4 +454,10 @@ export default {
...
@@ -452,4 +454,10 @@ export default {
}
}
}
}
}
}
.notice-content{
img{
width: 100%;
height: auto;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/property/complaint/complaint-detail.vue
浏览文件 @
107189c3
...
@@ -30,28 +30,38 @@
...
@@ -30,28 +30,38 @@
<a-input
v-model=
"model.createTime"
placeholder=
"请输入"
></a-input>
<a-input
v-model=
"model.createTime"
placeholder=
"请输入"
></a-input>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"图片"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"complaintImg"
>
<j-image-upload
bizPath=
"scott/pic"
accept=
"image/png, image/jpeg"
v-model=
"model.complaintImg"
></j-image-upload>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"问题描述"
:labelCol=
"
{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol" prop="problemDesc">
<a-form-model-item
label=
"问题描述"
:labelCol=
"
{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol"
prop="problemDesc">
<a-textarea
v-model=
"model.problemDesc"
placeholder=
"请输入"
style=
"width:80%"
/>
<a-textarea
v-model=
"model.problemDesc"
placeholder=
"请输入"
style=
"width:80%"
/>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
</a-form-model>
</a-form-model>
</j-form-container>
</j-form-container>
<j-form-container
v-if=
"!formDisabled"
>
<j-form-container
v-if=
"!formDisabled || model.handleStatus == 'finish'"
<a-form-model
ref=
"form"
:model=
"form"
:rules=
"validatorRules"
slot=
"detail"
>
:disabled=
"model.handleStatus == 'finish'"
>
<a-form-model
ref=
"form"
:model=
"form"
slot=
"detail"
>
<a-row>
<a-row>
<a-col
:span=
"24"
>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"处理状态"
:labelCol=
"
{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol" prop="handleStatus">
<a-form-model-item
label=
"处理状态"
:labelCol=
"
{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol"
<a-select
v-model=
"form.handleStatus"
placeholder=
"请选择与业主关系"
style=
"width:50%"
>
prop="handleStatus">
<a-select-option
value=
"pending"
v-if=
"model.handleStatus !== 'pending'"
>
处理中
</a-select-option>
<a-select
v-model=
"form.handleStatus"
placeholder=
"请选择处理状态"
style=
"width:50%"
>
<a-select-option
value=
"pending"
>
处理中
</a-select-option>
<a-select-option
value=
"finish"
>
处理完成
</a-select-option>
<a-select-option
value=
"finish"
>
处理完成
</a-select-option>
</a-select>
</a-select>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"24"
v-if=
"model.handleStatus === 'pending'"
>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"处理结果"
:labelCol=
"
{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol" prop="handleResult">
<a-form-model-item
label=
"处理结果"
:labelCol=
"
{ xs: { span: 24 }, sm: { span: 2 } }" :wrapperCol="wrapperCol"
<a-textarea
v-model=
"model.handleResult"
placeholder=
"请输入"
style=
"width:80%"
/>
prop="handleResult">
<a-textarea
v-model=
"form.handleResult"
placeholder=
"请输入"
style=
"width:80%"
/>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
...
@@ -60,77 +70,72 @@
...
@@ -60,77 +70,72 @@
<div
style=
"text-align:center"
>
<div
style=
"text-align:center"
>
<a-button
@
click=
"onReturn"
>
返回
</a-button>
<a-button
@
click=
"onReturn"
>
返回
</a-button>
<a-button
style=
"margin-left: 16px"
type=
"primary"
v-if=
"!formDisabled"
@
click=
"onSubmit"
>
提交
</a-button>
<a-button
style=
"margin-left: 16px"
type=
"primary"
v-if=
"!formDisabled"
@
click=
"onSubmit"
>
提交
</a-button>
</div>
</div>
</a-spin>
</a-spin>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
querycommunityComplaintApi
,
auditCommunityComplaintApi
}
from
'@/api/api'
import
{
querycommunityComplaintApi
,
auditCommunityComplaintApi
}
from
'@/api/api'
export
default
{
export
default
{
name
:
'PropertyChargruleForm'
,
name
:
'PropertyChargruleForm'
,
inject
:[
'closeCurrent'
],
inject
:
[
'closeCurrent'
],
data
()
{
data
()
{
return
{
return
{
currentStep
:
1
,
currentStep
:
1
,
model
:{},
model
:
{},
form
:
{
form
:
{
handleStatus
:
'pending'
,
handleStatus
:
'pending'
,
auditOpinion
:
''
handleResult
:
''
,
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
4
},
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
20
},
},
validatorRules
:
{
handleStatus
:
[{
required
:
true
,
message
:
'请选择处理状态'
,
trigger
:
'change'
}],
handleResult
:
[{
required
:
true
,
message
:
'请输入处理结果'
,
trigger
:
'blur'
}]
},
confirmLoading
:
false
,
}
},
computed
:
{
formDisabled
(){
return
this
.
$route
.
query
.
type
===
'1'
},
},
},
labelCol
:
{
created
()
{
xs
:
{
span
:
24
},
//备份model原始值
sm
:
{
span
:
4
},
this
.
getDetail
()
},
methods
:
{
async
getDetail
()
{
this
.
confirmLoading
=
true
let
{
result
}
=
await
querycommunityComplaintApi
({
id
:
this
.
$route
.
query
.
id
})
if
(
result
.
handleStatus
===
'pending'
)
{
this
.
form
.
handleStatus
=
'finish'
}
this
.
model
=
{...
result
}
this
.
confirmLoading
=
false
},
},
onReturn
()
{
wrapperCol
:
{
this
.
closeCurrent
()
xs
:
{
span
:
24
},
sm
:
{
span
:
20
},
},
},
onSubmit
()
{
confirmLoading
:
false
,
this
.
$refs
.
form
.
validate
(
async
valid
=>
{
if
(
valid
)
{
let
res
=
await
auditCommunityComplaintApi
({
...
this
.
model
,
id
:
this
.
$route
.
query
.
id
,
handleStatus
:
this
.
form
.
handleStatus
})
this
.
$message
.
success
(
res
.
message
);
this
.
closeCurrent
()
}
})
}
}
}
}
},
computed
:
{
formDisabled
()
{
return
this
.
$route
.
query
.
type
===
'1'
},
},
created
()
{
//备份model原始值
this
.
getDetail
()
},
methods
:
{
async
getDetail
()
{
this
.
confirmLoading
=
true
let
{
result
}
=
await
querycommunityComplaintApi
({
id
:
this
.
$route
.
query
.
id
})
this
.
model
=
{
...
result
}
if
(
this
.
model
.
handleStatus
==
'finish'
)
{
this
.
form
.
handleStatus
=
this
.
model
.
handleStatus
this
.
form
.
handleResult
=
this
.
model
.
handleResult
}
this
.
confirmLoading
=
false
},
onReturn
()
{
this
.
$store
.
dispatch
(
'tags/delView'
,
this
.
$route
.
path
)
this
.
$router
.
go
(
-
1
)
},
async
onSubmit
()
{
let
res
=
await
auditCommunityComplaintApi
({
id
:
this
.
$route
.
query
.
id
,
handleStatus
:
this
.
form
.
handleStatus
,
handleResult
:
this
.
form
.
handleResult
,
})
this
.
$message
.
success
(
res
.
message
)
this
.
$store
.
dispatch
(
'tags/delView'
,
this
.
$route
.
path
)
this
.
$router
.
go
(
-
1
)
},
},
}
</
script
>
</
script
>
<
style
scoped
lang=
"less"
>
<
style
scoped
lang=
"less"
>
...
...
src/views/property/living/living.vue
浏览文件 @
107189c3
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<a-row
:gutter=
"24"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"业主姓名"
>
<a-form-item
label=
"业主姓名"
>
<a-input
placeholder=
"请输入业主姓名"
v-model=
"queryParam.
employee
Name"
></a-input>
<a-input
placeholder=
"请输入业主姓名"
v-model=
"queryParam.
owner
Name"
></a-input>
</a-form-item>
</a-form-item>
</a-col>
</a-col>
...
@@ -29,11 +29,16 @@
...
@@ -29,11 +29,16 @@
<!-- 操作按钮区域 -->
<!-- 操作按钮区域 -->
<div
class=
"table-operator"
>
<div
class=
"table-operator"
>
<a-button
@
click=
"onMeterReading"
type=
"primary"
icon=
"plus"
>
抄表
</a-button>
<a-button
@
click=
"onMeterReading"
type=
"primary"
icon=
"plus"
>
抄表
</a-button>
<a-button
type=
"primary"
icon=
"download"
@
click=
"handleExportXls('t_property_settled')"
>
导出
</a-button>
<a-button
icon=
"download"
@
click=
"downloadExportXls()"
>
模板下载
</a-button>
<a-upload
name=
"file"
:showUploadList=
"false"
:multiple=
"false"
:headers=
"tokenHeader"
:action=
"importExcelUrl"
@
change=
"handleImportExcel"
>
<a-button
type=
"primary"
icon=
"import"
>
导入
</a-button>
</a-upload>
<a-button
type=
"primary"
icon=
"download"
@
click=
"handleExportXls('生活缴费')"
>
导出
</a-button>
<a-dropdown
v-if=
"selectedRowKeys.length > 0"
>
<a-dropdown
v-if=
"selectedRowKeys.length > 0"
>
<a-menu
slot=
"overlay"
>
<a-menu
slot=
"overlay"
>
<a-menu-item
key=
"1"
@
click=
"onBatchCallpay"
><a-icon
type=
"message"
/>
催缴
</a-menu-item>
<a-menu-item
key=
"1"
@
click=
"onBatchCallpay"
><a-icon
type=
"message"
/>
催缴
</a-menu-item>
<a-menu-item
key=
"2"
@
click=
"batchDel"
><a-icon
type=
"delete"
/>
删除
</a-menu-item>
<a-menu-item
key=
"2"
@
click=
"batchDel"
><a-icon
type=
"delete"
/>
删除
</a-menu-item>
</a-menu>
</a-menu>
<a-button
style=
"margin-left: 8px"
>
批量操作
<a-icon
type=
"down"
/></a-button>
<a-button
style=
"margin-left: 8px"
>
批量操作
<a-icon
type=
"down"
/></a-button>
</a-dropdown>
</a-dropdown>
...
@@ -47,24 +52,12 @@
...
@@ -47,24 +52,12 @@
<a
style=
"margin-left: 24px"
v-if=
"selectedRowKeys.length > 0"
@
click=
"onClearSelected"
>
清空
</a>
<a
style=
"margin-left: 24px"
v-if=
"selectedRowKeys.length > 0"
@
click=
"onClearSelected"
>
清空
</a>
</div>
</div>
<a-table
<a-table
ref=
"table"
size=
"middle"
:scroll=
"
{ x: 1500}" bordered rowKey="id" :columns="columns"
ref=
"table"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" :rowSelection="{
size=
"middle"
:scroll=
"
{ x: 1500, y: 300 }"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{
selectedRowKeys: selectedRowKeys,
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
onChange: onSelectChange,
getCheckboxProps: onCheckboxProps
getCheckboxProps: onCheckboxProps
}"
}" class="j-table-force-nowrap" @change="handleTableChange">
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span
slot=
"ownerId"
slot-scope=
"text, record"
>
<span
slot=
"ownerId"
slot-scope=
"text, record"
>
<span>
{{
record
.
ownerName
}}
,
{{
record
.
ownerPhone
}}
</span>
<span>
{{
record
.
ownerName
}}
,
{{
record
.
ownerPhone
}}
</span>
</span>
</span>
...
@@ -77,9 +70,9 @@
...
@@ -77,9 +70,9 @@
<span
slot=
"action"
slot-scope=
"text, record"
>
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"onDetail(record.id)"
>
查看
</a>
<a
@
click=
"onDetail(record.id)"
>
查看
</a>
<template
v-if=
"record.paymentStatus === 'unPaid'"
>
<template
v-if=
"record.paymentStatus === 'unPaid'"
>
<a-divider
type=
"vertical"
/>
<a-divider
type=
"vertical"
/>
<a
@
click=
"onCallPay(record.id)"
>
催缴
</a>
<a
@
click=
"onCallPay(record.id)"
>
催缴
</a>
<a-divider
type=
"vertical"
/>
<a-divider
type=
"vertical"
/>
<a
@
click=
"handleDelete(record)"
>
删除
</a>
<a
@
click=
"handleDelete(record)"
>
删除
</a>
</
template
>
</
template
>
</span>
</span>
...
@@ -95,225 +88,275 @@
...
@@ -95,225 +88,275 @@
</template>
</template>
<
script
>
<
script
>
import
{
getBuildingListApi
,
getUnitListApi
,
getRoomListApi
,
callPayMentApi
}
from
'@/api/api'
import
{
getBuildingListApi
,
getUnitListApi
,
getRoomListApi
,
callPayMentApi
}
from
'@/api/api'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
import
{
downFile
}
from
'@/api/manage'
import
NoticeModal
from
'./modules/NoticeModal'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
import
{
PAYMENT_STATUS
,
RELATION_SHIP
,
filterDictTextByStatic
}
from
'@/assets/static.js'
import
NoticeModal
from
'./modules/NoticeModal'
import
{
PAYMENT_STATUS
,
RELATION_SHIP
,
filterDictTextByStatic
}
from
'@/assets/static.js'
const
columns
=
[
const
columns
=
[
{
{
title
:
'收费类型'
,
title
:
'收费类型'
,
dataIndex
:
'chargeTypeName'
,
dataIndex
:
'chargeTypeName'
,
key
:
'chargeTypeName'
,
key
:
'chargeTypeName'
,
width
:
120
,
width
:
120
,
align
:
'center'
align
:
'center'
,
},
{
title
:
'收费项目'
,
dataIndex
:
'chargeItem'
,
key
:
'chargeItem'
,
width
:
120
,
align
:
'center'
,
},
{
title
:
'业主'
,
dataIndex
:
'ownerId'
,
key
:
'ownerId'
,
width
:
160
,
scopedSlots
:
{
customRender
:
'ownerId'
},
align
:
'center'
,
},
{
title
:
'与业主关系'
,
dataIndex
:
'relationShip'
,
key
:
'relationShip'
,
width
:
120
,
align
:
'center'
,
customRender
:
function
(
text
)
{
return
filterDictTextByStatic
(
RELATION_SHIP
,
text
)
},
},
{
},
title
:
'收费项目'
,
{
dataIndex
:
'chargeItem'
,
title
:
'住户'
,
key
:
'chargeItem'
,
dataIndex
:
'residentPhone'
,
width
:
120
,
key
:
'residentPhone'
,
align
:
'center'
width
:
160
,
scopedSlots
:
{
customRender
:
'residentPhone'
},
align
:
'center'
,
},
{
title
:
'房屋编号'
,
dataIndex
:
'roomId'
,
scopedSlots
:
{
customRender
:
'roomId'
},
key
:
'roomId'
,
width
:
140
,
align
:
'center'
,
},
{
title
:
'金额(元)'
,
dataIndex
:
'totalAmount'
,
key
:
'totalAmount'
,
width
:
120
,
align
:
'center'
,
},
{
title
:
'本期读表时间'
,
dataIndex
:
'meterReadingTime'
,
key
:
'meterReadingTime'
,
width
:
150
,
align
:
'center'
,
},
{
title
:
'缴费状态'
,
dataIndex
:
'paymentStatus'
,
key
:
'paymentStatus'
,
width
:
120
,
align
:
'center'
,
customRender
:
function
(
text
)
{
return
filterDictTextByStatic
(
PAYMENT_STATUS
,
text
)
},
},
{
},
title
:
'业主'
,
{
dataIndex
:
'ownerId'
,
title
:
'缴费单号'
,
key
:
'ownerId'
,
dataIndex
:
'paymentNum'
,
width
:
160
,
key
:
'paymentNum'
,
scopedSlots
:
{
customRender
:
'ownerId'
},
width
:
120
,
align
:
'center'
align
:
'center'
,
},
{
title
:
'缴费日期'
,
dataIndex
:
'paymentTime'
,
key
:
'paymentTime'
,
width
:
150
,
align
:
'center'
,
},
{
title
:
'创建日期'
,
dataIndex
:
'createTime'
,
key
:
'createTime'
,
width
:
150
,
align
:
'center'
,
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
scopedSlots
:
{
customRender
:
'action'
},
align
:
'center'
,
width
:
150
,
fixed
:
'right'
,
},
]
export
default
{
name
:
'PermissionListAsync'
,
mixins
:
[
JeecgListMixin
],
components
:
{
NoticeModal
},
data
()
{
return
{
// 表头
columns
:
columns
,
url
:
{
list
:
'/property-community/payment/communityPayment/list'
,
delete
:
'/property-community/payment/communityPayment/delete'
,
deleteBatch
:
'/property-community/payment/communityPayment/deleteBatch'
,
exportXlsUrl
:
'/property-community/payment/communityPayment/exportXls'
,
importExcelUrl
:
'property-community/payment/communityPayment/importExcel'
,
downloadExcelUrl
:
'/property-community/payment/communityPayment/downloadPaymentTemplate'
,
},
treeData
:
[],
}
},
created
()
{
this
.
getBuildingList
()
// this.initDictData()
},
computed
:
{
importExcelUrl
:
function
()
{
return
`
${
window
.
_CONFIG
[
'domianURL'
]}
/
${
this
.
url
.
importExcelUrl
}
`
},
},
{
},
title
:
'与业主关系'
,
methods
:
{
dataIndex
:
'relationShip'
,
onCheckboxProps
(
record
)
{
key
:
'relationShip'
,
let
props
=
{
width
:
120
,
disabled
:
record
.
paymentStatus
===
'paid'
,
align
:
'center'
,
name
:
record
.
chargeTypeName
,
customRender
:
function
(
text
)
{
return
filterDictTextByStatic
(
RELATION_SHIP
,
text
);
}
}
return
props
},
},
{
async
getBuildingList
()
{
title
:
'住户'
,
let
{
result
}
=
await
getBuildingListApi
()
dataIndex
:
'residentPhone'
,
this
.
treeData
=
result
.
map
((
item
)
=>
{
key
:
'residentPhone'
,
return
{
width
:
160
,
title
:
item
.
buildingName
,
scopedSlots
:
{
customRender
:
'residentPhone'
},
key
:
item
.
id
,
align
:
'center'
}
},
})
{
title
:
'房屋编号'
,
dataIndex
:
'roomId'
,
scopedSlots
:
{
customRender
:
'roomId'
},
key
:
'roomId'
,
width
:
140
,
align
:
'center'
},
{
title
:
'金额(元)'
,
dataIndex
:
'totalAmount'
,
key
:
'totalAmount'
,
width
:
120
,
align
:
'center'
},
{
title
:
'本期读表时间'
,
dataIndex
:
'meterReadingTime'
,
key
:
'meterReadingTime'
,
width
:
150
,
align
:
'center'
},
},
{
onClickTree
(
value
,
option
)
{
title
:
'缴费状态'
,
console
.
log
(
value
,
option
)
dataIndex
:
'paymentStatus'
,
let
level
=
option
.
node
.
pos
.
split
(
'-'
).
length
key
:
'paymentStatus'
,
if
(
level
===
2
)
{
width
:
120
,
this
.
queryParam
[
'buildingId'
]
=
value
[
0
]
align
:
'center'
,
this
.
queryParam
[
'unitId'
]
=
undefined
customRender
:
function
(
text
)
{
this
.
queryParam
[
'roomId'
]
=
undefined
return
filterDictTextByStatic
(
PAYMENT_STATUS
,
text
);
}
}
if
(
level
===
3
)
{
this
.
queryParam
[
'buildingId'
]
=
undefined
this
.
queryParam
[
'unitId'
]
=
value
[
0
]
this
.
queryParam
[
'roomId'
]
=
undefined
}
if
(
level
===
4
)
{
this
.
queryParam
[
'buildingId'
]
=
undefined
this
.
queryParam
[
'unitId'
]
=
undefined
this
.
queryParam
[
'roomId'
]
=
value
[
0
]
}
this
.
searchQuery
()
},
},
{
onLoadData
(
treeNode
)
{
title
:
'缴费单号'
,
return
new
Promise
(
async
(
resolve
)
=>
{
dataIndex
:
'paymentNum'
,
if
(
treeNode
.
dataRef
.
children
)
{
key
:
'paymentNum'
,
resolve
()
width
:
120
,
return
align
:
'center'
}
},
if
(
treeNode
.
pos
.
split
(
'-'
).
length
===
2
)
{
{
let
{
result
}
=
await
getUnitListApi
({
id
:
treeNode
.
eventKey
})
title
:
'缴费日期'
,
treeNode
.
dataRef
.
children
=
result
.
map
((
item
)
=>
{
dataIndex
:
'paymentTime'
,
return
{
key
:
'paymentTime'
,
title
:
item
.
unitName
,
width
:
150
,
key
:
item
.
id
,
align
:
'center'
}
})
this
.
treeData
=
[...
this
.
treeData
]
resolve
()
}
else
{
let
{
result
}
=
await
getRoomListApi
({
id
:
treeNode
.
eventKey
})
treeNode
.
dataRef
.
children
=
result
.
map
((
item
)
=>
{
return
{
title
:
item
.
roomNum
,
key
:
item
.
id
,
isLeaf
:
true
,
}
})
this
.
treeData
=
[...
this
.
treeData
]
resolve
()
}
})
},
},
{
onMeterReading
()
{
title
:
'创建日期'
,
this
.
$refs
.
modalForm
.
add
()
dataIndex
:
'createTime'
,
this
.
$refs
.
modalForm
.
title
=
'抄表'
key
:
'createTime'
,
this
.
$refs
.
modalForm
.
disableSubmit
=
false
width
:
150
,
align
:
'center'
},
},
{
onBatchCallpay
()
{
title
:
'操作'
,
// console.log(this.selectionRows)
dataIndex
:
'action'
,
let
chooseIds
=
this
.
selectedRowKeys
.
join
(
','
)
scopedSlots
:
{
customRender
:
'action'
},
this
.
onCallPay
(
chooseIds
)
align
:
'center'
,
width
:
150
,
fixed
:
'right'
}
]
export
default
{
name
:
'PermissionListAsync'
,
mixins
:
[
JeecgListMixin
],
components
:
{
NoticeModal
},
data
()
{
return
{
// 表头
columns
:
columns
,
url
:
{
list
:
"/property-community/payment/communityPayment/list"
,
delete
:
'/property-community/payment/communityPayment/delete'
,
deleteBatch
:
'/property-community/payment/communityPayment/deleteBatch'
},
treeData
:
[]
}
},
},
created
()
{
onDetail
(
id
)
{
this
.
getBuildingList
()
this
.
$router
.
push
({
// this.initDictData()
path
:
'/property/living-detail?id='
+
id
,
})
},
},
methods
:
{
onCallPay
(
chooseIds
)
{
onCheckboxProps
(
record
)
{
let
that
=
this
let
props
=
{
this
.
$confirm
({
disabled
:
record
.
paymentStatus
===
'paid'
,
title
:
'催缴账单'
,
name
:
record
.
chargeTypeName
content
:
'是否催缴当前选择的账单发送给对应业主?'
,
}
onOk
:
function
()
{
return
props
that
.
loading
=
true
},
callPayMentApi
({
chooseIds
})
async
getBuildingList
()
{
.
then
((
res
)
=>
{
let
{
result
}
=
await
getBuildingListApi
()
this
.
treeData
=
result
.
map
(
item
=>
{
return
{
title
:
item
.
buildingName
,
key
:
item
.
id
}
})
},
onClickTree
(
value
,
optios
)
{
console
.
log
(
value
,
optios
)
},
onLoadData
(
treeNode
)
{
return
new
Promise
(
async
resolve
=>
{
if
(
treeNode
.
dataRef
.
children
)
{
resolve
();
return
;
}
if
(
treeNode
.
pos
.
split
(
'-'
).
length
===
2
)
{
let
{
result
}
=
await
getUnitListApi
({
id
:
treeNode
.
eventKey
})
treeNode
.
dataRef
.
children
=
result
.
map
(
item
=>
{
return
{
title
:
item
.
unitName
,
key
:
item
.
id
}
})
this
.
treeData
=
[...
this
.
treeData
];
resolve
();
}
else
{
let
{
result
}
=
await
getRoomListApi
({
id
:
treeNode
.
eventKey
})
treeNode
.
dataRef
.
children
=
result
.
map
(
item
=>
{
return
{
title
:
item
.
roomNum
,
key
:
item
.
id
,
isLeaf
:
true
}
})
this
.
treeData
=
[...
this
.
treeData
];
resolve
();
}
});
},
onMeterReading
()
{
this
.
$refs
.
modalForm
.
add
();
this
.
$refs
.
modalForm
.
title
=
"抄表"
;
this
.
$refs
.
modalForm
.
disableSubmit
=
false
;
},
onBatchCallpay
()
{
// console.log(this.selectionRows)
let
chooseIds
=
this
.
selectedRowKeys
.
join
(
','
)
this
.
onCallPay
(
chooseIds
)
},
onDetail
(
id
)
{
this
.
$router
.
push
({
path
:
'/property/living-detail?id='
+
id
});
},
onCallPay
(
chooseIds
)
{
let
that
=
this
this
.
$confirm
({
title
:
"催缴账单"
,
content
:
"是否催缴当前选择的账单发送给对应业主?"
,
onOk
:
function
()
{
that
.
loading
=
true
;
callPayMentApi
({
chooseIds
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
if
(
res
.
success
)
{
//重新计算分页问题
//重新计算分页问题
that
.
$message
.
success
(
res
.
message
)
;
that
.
$message
.
success
(
res
.
message
)
// that.searchQuery();
// that.searchQuery();
that
.
onClearSelected
()
;
that
.
onClearSelected
()
}
else
{
}
else
{
that
.
$message
.
warning
(
res
.
message
)
;
that
.
$message
.
warning
(
res
.
message
)
}
}
}).
finally
(()
=>
{
})
that
.
loading
=
false
;
.
finally
(()
=>
{
});
that
.
loading
=
false
}
})
});
},
}
})
}
},
}
downloadExportXls
()
{
let
fileName
=
'生活缴费模板'
downFile
(
this
.
url
.
downloadExcelUrl
,
''
).
then
((
data
)
=>
{
if
(
!
data
)
{
this
.
$message
.
warning
(
'文件下载失败'
)
return
}
if
(
typeof
window
.
navigator
.
msSaveBlob
!==
'undefined'
)
{
window
.
navigator
.
msSaveBlob
(
new
Blob
([
data
],
{
type
:
'application/vnd.ms-excel'
}),
fileName
+
'.xls'
)
}
else
{
let
url
=
window
.
URL
.
createObjectURL
(
new
Blob
([
data
],
{
type
:
'application/vnd.ms-excel'
}))
let
link
=
document
.
createElement
(
'a'
)
link
.
style
.
display
=
'none'
link
.
href
=
url
link
.
setAttribute
(
'download'
,
fileName
+
'.xls'
)
document
.
body
.
appendChild
(
link
)
link
.
click
()
document
.
body
.
removeChild
(
link
)
//下载完成移除元素
window
.
URL
.
revokeObjectURL
(
url
)
//释放掉blob对象
}
})
},
},
}
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
@import
'~@assets/less/common.less'
;
@import
'~@assets/less/common.less'
;
</
style
>
</
style
>
\ No newline at end of file
src/views/property/maintenance/maintenance.vue
浏览文件 @
107189c3
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
</a-col>
</a-col>
<a-col
:md=
"6"
:sm=
"8"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-model-item
label=
"工单状态"
>
<a-form-model-item
label=
"工单状态"
>
<a-select
style=
"width: 100%"
v-model=
"queryParam.
useTo
"
placeholder=
"请选择工单状态"
>
<a-select
style=
"width: 100%"
v-model=
"queryParam.
repairStatus
"
placeholder=
"请选择工单状态"
>
<a-select-option
v-for=
"item in repairStatus"
:key=
"item.value"
:value=
"item.value"
>
{{
item
.
label
}}
</a-select-option>
<a-select-option
v-for=
"item in repairStatus"
:key=
"item.value"
:value=
"item.value"
>
{{
item
.
label
}}
</a-select-option>
</a-select>
</a-select>
</a-form-model-item>
</a-form-model-item>
...
...
src/views/property/receipt/modules/NoticeForm.vue
浏览文件 @
107189c3
...
@@ -4,15 +4,15 @@
...
@@ -4,15 +4,15 @@
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
slot=
"detail"
>
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
slot=
"detail"
>
<a-row>
<a-row>
<a-col
:span=
"12"
>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"支付订单号"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"
orderNo
"
>
<a-form-model-item
label=
"支付订单号"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"
paymentNum
"
>
<a-input
v-model=
"model.
orderNo
"
placeholder=
"请输入支付订单号"
></a-input>
<a-input
v-model=
"model.
paymentNum
"
placeholder=
"请输入支付订单号"
></a-input>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"12"
>
<
!--
<
a-col
:span=
"12"
>
<a-form-model-item
label=
"支付金额"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"
chargeMoney
"
>
<a-form-model-item
label=
"支付金额"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"
totalAmount
"
>
<a-input
v-model=
"model.
chargeMoney
"
placeholder=
"请输入支付金额"
></a-input>
<a-input
v-model=
"model.
totalAmount
"
placeholder=
"请输入支付金额"
></a-input>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
-->
<a-col
:span=
"12"
>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"业主"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ownerName"
>
<a-form-model-item
label=
"业主"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ownerName"
>
<a-input
v-model=
"model.ownerName"
placeholder=
"请输入业主"
></a-input>
<a-input
v-model=
"model.ownerName"
placeholder=
"请输入业主"
></a-input>
...
@@ -24,15 +24,13 @@
...
@@ -24,15 +24,13 @@
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"12"
>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"缴费类型"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"chargeType"
>
<a-form-model-item
label=
"缴费类型"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"chargeItem"
>
<a-select
style=
"width: 100%"
v-model=
"model.chargeType"
placeholder=
"请选择缴费类型"
>
<a-input
v-model=
"model.chargeItem"
placeholder=
"请输入房屋编号"
></a-input>
<a-select-option
v-for=
"item in dictOptions"
:key=
"item.value"
:value=
"item.value"
>
{{
item
.
label
}}
</a-select-option>
</a-select>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"12"
>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"缴费金额"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"
chargeMoney
"
>
<a-form-model-item
label=
"缴费金额"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"
totalAmount
"
>
<a-input
v-model=
"model.
chargeMoney
"
placeholder=
"请输入缴费金额"
></a-input>
<a-input
v-model=
"model.
totalAmount
"
placeholder=
"请输入缴费金额"
></a-input>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"12"
>
<a-col
:span=
"12"
>
...
@@ -41,16 +39,13 @@
...
@@ -41,16 +39,13 @@
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"12"
>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"缴费时间"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"
update
Time"
>
<a-form-model-item
label=
"缴费时间"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"
payment
Time"
>
<a-input
v-model=
"model.
update
Time"
placeholder=
"请输入缴费时间"
></a-input>
<a-input
v-model=
"model.
payment
Time"
placeholder=
"请输入缴费时间"
></a-input>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
<a-col
:span=
"12"
>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"收据状态"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"receiptStatus"
>
<a-form-model-item
label=
"收据状态"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"receiptStatus"
>
<a-select
style=
"width: 100%"
v-model=
"model.receiptStatus"
placeholder=
"请选择收据状态"
>
<span
:style=
"
{'color': model.receiptStatus === '1' ? 'green' : 'red'}">
{{
model
.
receiptStatus
===
'1'
?
'是'
:
'否'
}}
</span>
<a-select-option
value=
"1"
>
在职
</a-select-option>
<a-select-option
value=
"0"
>
离职
</a-select-option>
</a-select>
</a-form-model-item>
</a-form-model-item>
</a-col>
</a-col>
</a-row>
</a-row>
...
...
src/views/property/receipt/receipt.vue
浏览文件 @
107189c3
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<a-row
:gutter=
"24"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"订单编号"
>
<a-form-item
label=
"订单编号"
>
<a-input
placeholder=
"请输入订单编号"
v-model=
"queryParam.
orderNo
"
></a-input>
<a-input
placeholder=
"请输入订单编号"
v-model=
"queryParam.
paymentNum
"
></a-input>
</a-form-item>
</a-form-item>
</a-col>
</a-col>
<!--
<a-col
:md=
"6"
:sm=
"8"
>
<!--
<a-col
:md=
"6"
:sm=
"8"
>
...
@@ -68,13 +68,13 @@
...
@@ -68,13 +68,13 @@
class="j-table-force-nowrap"
class="j-table-force-nowrap"
@change="handleTableChange"
@change="handleTableChange"
>
>
<span
slot=
"
employee
Status"
slot-scope=
"text, record"
>
<span
slot=
"
receipt
Status"
slot-scope=
"text, record"
>
<span
:style=
"
{'color': record.
employeeStatus === '1' ? 'green' : 'red'}">
{{
record
.
employeeStatus
===
'1'
?
'在职'
:
'离职
'
}}
</span>
<span
:style=
"
{'color': record.
receiptStatus === '1' ? 'green' : 'red'}">
{{
record
.
receiptStatus
===
'1'
?
'是'
:
'否
'
}}
</span>
</span>
</span>
<span
slot=
"action"
slot-scope=
"text, record"
>
<span
slot=
"action"
slot-scope=
"text, record"
>
<!--
<a
@
click=
"handleEdit(record)"
>
编辑
</a>
-->
<!--
<a
@
click=
"handleEdit(record)"
>
编辑
</a>
-->
<a
@
click=
"handleDetail(record)"
>
查看
</a>
<a
@
click=
"handleDetail(record)"
>
查看
</a>
<a
@
click=
"onIssueReceipt(record)"
>
开收据
</a>
<a
@
click=
"onIssueReceipt(record)"
style=
"margin-left: 10px;"
>
开收据
</a>
<!--
<a-divider
type=
"vertical"
/>
<!--
<a-divider
type=
"vertical"
/>
<a-dropdown>
<a-dropdown>
...
@@ -117,14 +117,14 @@
...
@@ -117,14 +117,14 @@
},
},
{
{
title
:
'业主'
,
title
:
'业主'
,
dataIndex
:
'owner
Id
'
,
dataIndex
:
'owner
Name
'
,
key
:
'owner
Id
'
,
key
:
'owner
Name
'
,
align
:
'center'
align
:
'center'
},
},
{
{
title
:
'订单编号'
,
title
:
'订单编号'
,
dataIndex
:
'
orderNo
'
,
dataIndex
:
'
paymentNum
'
,
key
:
'
orderNo
'
,
key
:
'
paymentNum
'
,
align
:
'center'
,
align
:
'center'
,
// customRender: function(text) {
// customRender: function(text) {
// return filterDictTextByCache('duties', text);
// return filterDictTextByCache('duties', text);
...
@@ -132,8 +132,8 @@
...
@@ -132,8 +132,8 @@
},
},
{
{
title
:
'缴费类型'
,
title
:
'缴费类型'
,
dataIndex
:
'charge
Type
'
,
dataIndex
:
'charge
Item
'
,
key
:
'charge
Type
'
,
key
:
'charge
Item
'
,
// scopedSlots: { customRender: 'employeeStatus' },
// scopedSlots: { customRender: 'employeeStatus' },
align
:
'center'
align
:
'center'
},
},
...
@@ -145,19 +145,20 @@
...
@@ -145,19 +145,20 @@
},
},
{
{
title
:
'缴费金额'
,
title
:
'缴费金额'
,
dataIndex
:
'
chargeMoney
'
,
dataIndex
:
'
totalAmount
'
,
key
:
'
chargeMoney
'
,
key
:
'
totalAmount
'
,
align
:
'center'
align
:
'center'
},
},
{
{
title
:
'缴费时间'
,
title
:
'缴费时间'
,
dataIndex
:
'
create
Time'
,
dataIndex
:
'
payment
Time'
,
key
:
'
create
Time'
,
key
:
'
payment
Time'
,
align
:
'center'
align
:
'center'
},
},
{
{
title
:
'收据状态'
,
title
:
'收据状态'
,
dataIndex
:
'receiptStatus'
,
dataIndex
:
'receiptStatus'
,
scopedSlots
:
{
customRender
:
'receiptStatus'
},
key
:
'receiptStatus'
,
key
:
'receiptStatus'
,
align
:
'center'
align
:
'center'
},
},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论