Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
shops
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
物业总平台
shops
Commits
ec807fc5
提交
ec807fc5
authored
9月 01, 2023
作者:
赵明
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
联调更新
上级
88901a12
显示空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
429 行增加
和
2123 行删除
+429
-2123
package.json
package.json
+1
-1
api.js
src/api/api.js
+4
-3
static.js
src/assets/static.js
+13
-7
cellList.vue
src/views/cell/cellList.vue
+0
-237
NoticeForm.vue
src/views/cell/modules/NoticeForm.vue
+0
-255
NoticeModal.vue
src/views/cell/modules/NoticeModal.vue
+0
-84
CommunityLlist.vue
src/views/community/CommunityLlist.vue
+106
-0
Analysis.vue
src/views/dashboard/Analysis.vue
+9
-9
IndexChart.vue
src/views/dashboard/IndexChart.vue
+121
-227
payment.vue
src/views/paymentorder/payment/payment.vue
+22
-44
paymentDetail.vue
src/views/paymentorder/payment/paymentDetail.vue
+89
-45
PropertyDetail.vue
src/views/settled/PropertyDetail.vue
+0
-218
PropertyList.vue
src/views/settled/PropertyList.vue
+0
-426
PropertySettledForm.vue
src/views/settled/modules/PropertySettledForm.vue
+0
-365
PropertySettledModal.vue
src/views/settled/modules/PropertySettledModal.vue
+0
-61
reconciliationList.vue
src/views/settlement/reconciliation/reconciliationList.vue
+5
-2
settlementList.vue
src/views/settlement/settlements/settlementList.vue
+4
-2
IndexChart.vue
src/views/statistical/IndexChart.vue
+54
-137
vue.config.js
vue.config.js
+1
-0
没有找到文件。
package.json
浏览文件 @
ec807fc5
{
{
"name"
:
"
vue-antd-jeecg
"
,
"version"
:
"3.4.3"
,
"private"
:
true
,
...
...
src/api/api.js
浏览文件 @
ec807fc5
...
...
@@ -4,7 +4,7 @@ import {UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"
export
const
loginUrlCheck
=
(
params
)
=>
postAction
(
"/sys/loginUrlCheck"
,
params
);
// 首页统计
const
homeDataStatistics
=
(
params
)
=>
getAction
(
"/
community/homepage/dataStatistics
"
,
params
);
const
homeDataStatistics
=
(
params
)
=>
getAction
(
"/
property-central/shop/shopInfo/getIndexSta
"
,
params
);
const
companyNoticeList
=
(
params
)
=>
getAction
(
"/property-company/notice/companyNotice/list"
,
params
);
// 报表统计
...
...
@@ -116,7 +116,7 @@ function getDictItemsFromCache(dictCode) {
return
dictItems
;
}
}
const
getPropertyDetailApi
=
(
params
)
=>
getAction
(
"/property-community/order/paymentOrder/queryById"
,
params
);
//分利-申请对账
const
settlementApi
=
(
params
)
=>
postAction
(
"/property-central/partners/shareBenefit/reconciliation"
,
params
);
//分利-对账详情
...
...
@@ -234,7 +234,8 @@ export {
auditCommunityComplaintApi
,
settlementApi
,
settlementDetailApi
,
shareBalanceByDepId
shareBalanceByDepId
,
getPropertyDetailApi
}
...
...
src/assets/static.js
浏览文件 @
ec807fc5
...
...
@@ -58,16 +58,22 @@ export const COMPLAINT_STATUS = [
]
// 订单状态
export
const
ORDER_STATUS
=
[
{
label
:
'已付款'
,
value
:
1
},
{
label
:
'退款驳回'
,
value
:
2
},
{
label
:
'退款待审核'
,
value
:
3
},
{
label
:
'已退款'
,
value
:
4
},
{
label
:
'已完成'
,
value
:
5
}
{
label
:
'已付款'
,
value
:
'paid'
},
{
label
:
'退款待审核'
,
value
:
'refundWaitAudit'
},
{
label
:
'退款驳回'
,
value
:
'refundReject'
},
{
label
:
'退款中'
,
value
:
'refundRunning'
},
{
label
:
'已退款'
,
value
:
'refunded'
}
]
// 订单来源
export
const
PAYTYPE
=
[
{
label
:
'业主支付'
,
value
:
'owner'
},
{
label
:
'游客'
,
value
:
'noowner'
},
]
// 支付方式
export
const
PAYMENT_METOD
=
[
{
label
:
'未支付'
,
value
:
1
},
{
label
:
'微信'
,
value
:
2
},
{
label
:
'未支付'
,
value
:
null
},
{
label
:
'微信'
,
value
:
'wechat'
},
{
label
:
'小程序'
,
value
:
'miniapp'
},
]
//对账状态
export
const
RECONCILIATION_STATUS
=
[
...
...
src/views/cell/cellList.vue
deleted
100644 → 0
浏览文件 @
88901a12
<
template
>
<a-card
:bordered=
"false"
>
<!-- 查询区域 -->
<div
class=
"table-page-search-wrapper"
>
<a-form
layout=
"inline"
@
keyup
.
enter
.
native=
"searchQuery"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"小区名称"
>
<j-input
placeholder=
"请输入小区名称"
v-model=
"queryParam.communityName"
></j-input>
</a-form-item>
</a-col>
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"6"
:sm=
"24"
>
<a-button
type=
"primary"
@
click=
"searchQuery"
>
查询
</a-button>
<a-button
style=
"margin-left: 8px"
@
click=
"searchReset"
>
重置
</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div
class=
"table-operator"
>
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
新增
</a-button>
<!--
<a-button
type=
"primary"
icon=
"download"
@
click=
"handleExportXls('t_property_settled')"
>
导出
</a-button>
-->
<a-dropdown
v-if=
"selectedRowKeys.length > 0"
>
<a-menu
slot=
"overlay"
>
<a-menu-item
key=
"1"
@
click=
"batchDels"
>
<a-icon
type=
"delete"
/>
删除关联
</a-menu-item>
</a-menu>
<a-button
style=
"margin-left: 8px"
>
批量操作
<a-icon
type=
"down"
/>
</a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div
class=
"ant-alert ant-alert-info"
style=
"margin-bottom: 16px;"
>
<i
class=
"anticon anticon-info-circle ant-alert-icon"
></i>
已选择
<a
style=
"font-weight: 600"
>
{{
selectedRowKeys
.
length
}}
</a>
项
<a
style=
"margin-left: 24px"
v-if=
"selectedRowKeys.length > 0"
@
click=
"onClearSelected"
>
清空
</a>
</div>
<a-table
ref=
"table"
size=
"middle"
:scroll=
"
{x:true}"
bordered
rowKey="communityCode"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span
slot=
"empowerDate"
slot-scope=
"text, record"
>
<span>
{{
record
.
empowerBeginDate
}}
至
{{
record
.
empowerEndDate
}}
</span>
</span>
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"showDeleteConfirm(record)"
>
删除关联
</a>
</span>
<!-- 字符串超长截取省略号显示 -->
<span
slot=
"url"
slot-scope=
"text"
>
<j-ellipsis
:value=
"text"
:length=
"25"
/>
</span>
<!-- 字符串超长截取省略号显示-->
<span
slot=
"component"
slot-scope=
"text"
>
<j-ellipsis
:value=
"text"
/>
</span>
</a-table>
</div>
<!-- table区域-end -->
<notice-modal
ref=
"modalForm"
@
ok=
"modalFormOk"
></notice-modal>
<!-- 删除关联 -->
</a-card>
</
template
>
<
script
>
// import { getPropertyListApi, getSystemSubmenu, getSystemSubmenuBatch } from '@/api/api'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
import
NoticeModal
from
'./modules/NoticeModal'
import
{
deleteAction
}
from
'@/api/manage'
import
{
filterDictTextByCache
}
from
'@/components/dict/JDictSelectUtil'
const
columns
=
[
{
title
:
'小区名称'
,
dataIndex
:
'communityName'
,
key
:
'communityName'
,
align
:
'center'
},
{
title
:
'所属区域'
,
dataIndex
:
'communityArea'
,
key
:
'communityArea'
,
align
:
'center'
},
{
title
:
'占地面积(㎡)'
,
dataIndex
:
'coverArea'
,
key
:
'coverArea'
,
align
:
'center'
},
{
title
:
'总栋数'
,
dataIndex
:
'buildingNum'
,
key
:
'buildingNum'
,
align
:
'center'
},
{
title
:
'房屋数量'
,
dataIndex
:
'houseNum'
,
key
:
'houseNum'
,
align
:
'center'
},
{
title
:
'联系人'
,
dataIndex
:
'adminName'
,
key
:
'adminName'
,
align
:
'center'
},
{
title
:
'联系方式'
,
dataIndex
:
'adminPhone'
,
key
:
'adminPhone'
,
align
:
'center'
},
{
title
:
'创建时间'
,
dataIndex
:
'updateTime'
,
key
:
'updateTime'
,
align
:
'center'
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
scopedSlots
:
{
customRender
:
'action'
},
align
:
'center'
,
width
:
150
}
]
export
default
{
name
:
'PermissionListAsync'
,
mixins
:
[
JeecgListMixin
],
components
:
{
NoticeModal
},
data
()
{
return
{
// 表头
columns
:
columns
,
deteleId
:
''
,
url
:
{
list
:
"/property-central/shop/shopCommunity/getShopCommunity"
,
delete
:
'/property-central/shop/shopCommunity/deleteByCommunityCode'
,
deleteBatch
:
'/property-central/shop/shopCommunity/deleteBatch'
},
}
},
methods
:
{
handlePerssion
(
roleId
)
{
this
.
$refs
.
modalUserRole
.
show
(
roleId
);
},
showDeleteConfirm
(
record
)
{
var
that
=
this
;
this
.
$confirm
({
title
:
'确定是否删除关联小区?'
,
okText
:
'删除'
,
okType
:
'danger'
,
cancelText
:
'否'
,
onOk
()
{
return
deleteAction
(
that
.
url
.
delete
,
{
communityCode
:
record
.
communityCode
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
that
.
$message
.
success
(
res
.
message
)
that
.
searchQuery
()
}
})
},
onCancel
()
{
console
.
log
(
'Cancel'
);
},
});
},
batchDels
()
{
if
(
this
.
selectedRowKeys
.
length
<=
0
)
{
this
.
$message
.
warning
(
'请选择一条记录!'
);
return
;
}
else
{
var
ids
=
""
;
for
(
var
a
=
0
;
a
<
this
.
selectedRowKeys
.
length
;
a
++
)
{
ids
+=
this
.
selectedRowKeys
[
a
]
+
","
;
}
var
that
=
this
;
this
.
$confirm
({
title
:
"确认删除"
,
content
:
"是否删除选中数据?"
,
onOk
:
function
()
{
that
.
loading
=
true
;
deleteAction
(
that
.
url
.
deleteBatch
,
{
communityCodes
:
ids
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
//重新计算分页问题
that
.
reCalculatePage
(
that
.
selectedRowKeys
.
length
)
that
.
$message
.
success
(
res
.
message
);
that
.
loadData
();
that
.
onClearSelected
();
}
else
{
that
.
$message
.
warning
(
res
.
message
);
}
}).
finally
(()
=>
{
that
.
loading
=
false
;
});
}
});
}
}
}
}
</
script
>
<
style
scoped
>
@import
'~@assets/less/common.less'
;
</
style
>
src/views/cell/modules/NoticeForm.vue
deleted
100644 → 0
浏览文件 @
88901a12
<
template
>
<a-spin
:spinning=
"confirmLoading"
>
<j-form-container
:disabled=
"true"
>
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
slot=
"detail"
>
<a-row>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"小区名称"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"communityName"
>
<a-input
v-model=
"model.communityName"
placeholder=
"请输入小区名称"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"用途"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"useTo"
>
<a-select
style=
"width: 100%"
v-model=
"model.useTo"
placeholder=
"请选择用途"
>
<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-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"所属地区"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"communityArea"
>
<a-input
v-model=
"model.communityArea"
placeholder=
"请输入所属地区"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"详细地址"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"addressInfo"
>
<a-input
v-model=
"model.addressInfo"
placeholder=
"请输入详细地址"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"建成日期"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"completedDate"
>
<j-date
placeholder=
"请选择建成日期"
v-model=
"model.completedDate"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"占地面积"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"coverArea"
>
<a-input
v-model=
"model.coverArea"
placeholder=
"请输入占地面积"
addon-after=
"㎡"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"楼栋数量"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"buildingNum"
>
<a-input
v-model=
"model.buildingNum"
placeholder=
"请输入楼栋数量"
addon-after=
"栋"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"房屋数量"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"houseNum"
>
<a-input
v-model=
"model.houseNum"
placeholder=
"请输入房屋数量"
addon-after=
"间"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"停车位"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"parkingSpace"
>
<a-input
v-model=
"model.parkingSpace"
placeholder=
"请输入停车位"
addon-after=
"个"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"充电桩"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"chargingStation"
>
<a-input
type=
"number"
v-model=
"model.chargingStation"
placeholder=
"请输入充电桩"
addon-after=
"个"
></a-input>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"小区图片"
:labelCol=
"
{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="communityImage">
<j-image-upload
:isMultiple=
"true"
text=
"点击上传"
bizPath=
"scott/pic"
v-model=
"model.communityImage"
></j-image-upload>
<p
style=
"line-height:1;margin:0"
>
建议尺寸640*320,小于10M的JPG、PNG格式图片,可上传多张
</p>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"小区简介"
:labelCol=
"
{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="communityIntro">
<a-textarea
placeholder=
"小区简介"
v-model=
"model.communityIntro"
allow-clear
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"小区管理员"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"adminName"
>
<a-input
v-model=
"model.adminName"
placeholder=
"请输入小区管理员"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"管理员联系电话"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"adminPhone"
>
<a-input
v-model=
"model.adminPhone"
placeholder=
"请输入管理员联系电话"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"管理员登录密码"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"adminPassword"
>
<a-input
v-model=
"model.adminPassword"
placeholder=
"请输入管理员登录密码"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"访问域名前缀"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"accessAddress"
>
<a-input
v-model=
"model.accessAddress"
placeholder=
"请输入访问域名前缀"
addon-after=
".group.hjxbc.cn"
></a-input>
<p
v-if=
"model.accessAddress"
>
访问域名:
{{
model
.
accessAddress
}}
.group.hjxbc.cn
</p>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"管理员头像"
:labelCol=
"
{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="adminAvatar">
<j-image-upload
:isMultiple=
"false"
text=
"点击上传"
bizPath=
"scott/pic"
v-model=
"model.adminAvatar"
></j-image-upload>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</
template
>
<
script
>
import
{
httpAction
,
getAction
}
from
'@/api/manage'
import
{
validateDuplicateValue
}
from
'@/utils/util'
import
{
ajaxGetDictItems
,
getDictItemsFromCache
}
from
'@/api/api'
import
{
isMobile
,
alphanumeric
}
from
'@/utils/validate'
export
default
{
name
:
'PropertyChargruleForm'
,
components
:
{
},
props
:
{
//表单禁用
disabled
:
{
type
:
Boolean
,
default
:
false
,
required
:
false
}
},
data
()
{
const
validateToNextPhone
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
&&
isMobile
(
value
))
{
callback
();
}
else
{
callback
(
'请输入正确的联系人电话!'
);
}
}
const
isAlphanumeric
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
&&
alphanumeric
(
value
))
{
callback
()
}
else
{
callback
(
'请输入带字母的域名前缀'
)
}
}
return
{
model
:{
communityName
:
''
,
useTo
:
''
,
communityArea
:
''
,
addressInfo
:
''
,
completedDate
:
''
,
coverArea
:
''
,
buildingNum
:
''
,
houseNum
:
''
,
parkingSpace
:
''
,
chargingStation
:
''
,
communityImage
:
''
,
communityIntro
:
''
,
adminName
:
''
,
adminPhone
:
''
,
adminPassword
:
''
,
adminAvatar
:
''
,
accessAddress
:
''
,
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
6
},
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
validatorRules
:
{
communityName
:
[{
required
:
true
,
message
:
'请输入小区名称'
,
trigger
:
'blur'
}],
useTo
:
[{
required
:
true
,
message
:
'请选择用途'
,
trigger
:
'change'
}],
communityArea
:
[{
required
:
true
,
message
:
'请输入所属地区'
,
trigger
:
'blur'
}],
coverArea
:
[{
required
:
true
,
message
:
'请输入占地面积'
,
trigger
:
'blur'
}],
buildingNum
:
[{
required
:
true
,
message
:
'请输入楼栋数量'
,
trigger
:
'blur'
}],
houseNum
:
[{
required
:
true
,
message
:
'请输入房屋数量'
,
trigger
:
'blur'
}],
communityImage
:
[{
required
:
true
,
message
:
'请至少上传一张小区图片'
,
trigger
:
'change'
}],
adminName
:
[{
required
:
true
,
message
:
'请输入小区管理员'
,
trigger
:
'blur'
}],
adminPhone
:
[
{
required
:
true
,
message
:
'请输入管理员联系电话'
,
trigger
:
'blur'
},
{
validator
:
validateToNextPhone
}
],
adminPassword
:
[{
required
:
true
,
message
:
'请输入管理员登录密码'
,
trigger
:
'blur'
}],
accessAddress
:
[
{
required
:
true
,
message
:
'请输入访问域名前缀'
,
trigger
:
'blur'
},
{
validator
:
isAlphanumeric
},
],
adminAvatar
:
[{
required
:
true
,
message
:
'请上传管理员头像'
,
trigger
:
'blur'
}]
},
url
:
{
add
:
"/property-central/shop/shopCommunity/add"
},
dictOptions
:
[
{
label
:
'商用'
,
value
:
1
},
{
label
:
'普通住宅'
,
value
:
2
},
{
label
:
'商住合一'
,
value
:
3
}
]
}
},
computed
:
{
formDisabled
(){
return
this
.
disabled
},
},
created
()
{
//备份model原始值
this
.
modelDefault
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
model
));
},
methods
:
{
ruleNumberInput
(
event
)
{
let
rateValue
=
event
.
target
.
value
.
replace
(
/
[^\d]
/g
,
""
);
//清除"数字"和"."和"-"以外的字符
this
.
model
[
'empowerDays'
]
=
rateValue
},
add
()
{
this
.
edit
(
this
.
modelDefault
);
},
edit
(
record
)
{
console
.
log
(
record
)
this
.
model
=
Object
.
assign
({},
record
);
this
.
visible
=
true
;
},
submitForm
()
{
const
that
=
this
;
// 触发表单验证
this
.
$refs
.
form
.
validate
(
valid
=>
{
console
.
log
(
this
.
model
)
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
httpurl
+=
this
.
url
.
add
;
method
=
'post'
;
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'ok'
);
}
else
{
that
.
$message
.
warning
(
res
.
message
);
}
}).
finally
(()
=>
{
that
.
confirmLoading
=
false
;
})
}
})
},
}
}
</
script
>
\ No newline at end of file
src/views/cell/modules/NoticeModal.vue
deleted
100644 → 0
浏览文件 @
88901a12
<
template
>
<j-modal
:title=
"title"
:width=
"width"
:visible=
"visible"
switchFullscreen
@
ok=
"handleOk"
:okButtonProps=
"
{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<a-button
class=
"bbtn"
@
click=
"updateCurrentDepart"
>
小区查找
</a-button>
<property-settled-form
ref=
"realForm"
@
ok=
"submitCallback"
:disabled=
"disableSubmit"
></property-settled-form>
<login-switch-house
ref=
"loginSelect"
:closable=
"true"
title=
"小区查找"
@
success=
"loginSelectOk"
></login-switch-house>
</j-modal>
</
template
>
<
script
>
import
PropertySettledForm
from
'./NoticeForm'
import
{
httpAction
,
getAction
}
from
'@/api/manage'
import
LoginSwitchHouse
from
'@/components/tools/LoginSwitchHouse'
export
default
{
name
:
'PropertySettledModal'
,
components
:
{
PropertySettledForm
,
LoginSwitchHouse
},
data
()
{
return
{
title
:
''
,
width
:
'70%'
,
visible
:
false
,
disableSubmit
:
true
}
},
methods
:
{
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
})
},
async
updateCurrentDepart
(){
let
{
result
}
=
await
getAction
(
'/property-company/community/companyCommunity/getList'
,{
})
this
.
$refs
.
loginSelect
.
show
(
result
)
},
loginSelectOk
(
res
)
{
this
.
$refs
.
realForm
.
edit
(
res
);
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
})
},
close
()
{
this
.
$emit
(
'close'
);
this
.
visible
=
false
;
},
handleOk
()
{
this
.
$refs
.
realForm
.
submitForm
();
},
submitCallback
(){
this
.
$emit
(
'ok'
);
this
.
visible
=
false
;
},
handleCancel
()
{
this
.
close
()
}
}
}
</
script
>
<
style
lang=
"less"
>
.bbtn{
position: absolute;
right: 120px;
top: 12px;
z-index: 333;
}
</
style
>
\ No newline at end of file
src/views/community/CommunityLlist.vue
0 → 100644
浏览文件 @
ec807fc5
<!--
* @Author: zm
* @Date: 2023-08-20 10:54:31
* @Descripttion:
-->
<
template
>
<a-card
:bordered=
"false"
>
<!-- 查询区域 -->
<div
class=
"table-page-search-wrapper"
>
<a-form
layout=
"inline"
@
keyup
.
enter
.
native=
"searchQuery"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"输入搜索"
>
<j-input
placeholder=
"请输入单号"
v-model=
"queryParam.balanceNum"
></j-input>
</a-form-item>
</a-col>
<a-col
:md=
"4"
:sm=
"8"
>
<a-form-item
label=
"订单时间:"
>
<a-date-picker
placeholder=
"订单时间"
valueFormat=
"YYYY-MM-DD 00:00:00"
v-model=
"queryParam.balanceDate"
></a-date-picker>
</a-form-item>
<span
slot=
"balanceStatus"
slot-scope=
"text, record"
>
<a-tag
v-if=
"record.balanceStatus === 1"
>
未对账
</a-tag>
<a-tag
v-else-if=
"record.balanceStatus === 2"
>
对账待审核
</a-tag>
<a-tag
v-else-if=
"record.balanceStatus === 3"
>
已对账
</a-tag>
<a-tag
v-else-if=
"record.balanceStatus === 4"
>
对账驳回
</a-tag>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- table区域-begin -->
<div>
<a-table
ref=
"table"
size=
"middle"
:scroll=
"
{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap"
@change="handleTableChange">
</a-table>
</div>
</a-card>
</
template
>
<
script
>
import
{
mixinDevice
}
from
'@/utils/mixin'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
export
default
{
name
:
'CommunityLlist'
,
mixins
:
[
JeecgListMixin
,
mixinDevice
],
data
()
{
return
{
columns
:
[
{
title
:
'序号'
,
align
:
'center'
,
dataIndex
:
'num'
,
},
{
title
:
'结算单号'
,
align
:
'center'
,
dataIndex
:
'balanceNum'
,
},
{
title
:
'提交时间'
,
align
:
'center'
,
dataIndex
:
'balanceDate'
,
},
{
title
:
'提交人'
,
align
:
'center'
,
dataIndex
:
'createBy'
,
},
{
title
:
'结算总金额'
,
align
:
'center'
,
dataIndex
:
'balanceMoney'
,
},
{
title
:
'结算方式'
,
align
:
'center'
,
dataIndex
:
'balanceWay'
,
},
{
title
:
'结算状态'
,
align
:
'center'
,
dataIndex
:
'balanceStatus'
,
scopedSlots
:
{
customRender
:
'balanceStatus'
},
key
:
'balanceStatus'
,
},
{
title
:
'备注'
,
dataIndex
:
'remarks'
,
align
:
'center'
,
},
],
dataSource
:
[],
url
:
{
list
:
'/property-central/partners/shareBalance/list?balanceStatus=3'
,
},
}
},
methods
:
{},
}
</
script
>
<
style
scoped
>
@import
'~@assets/less/common.less'
;
</
style
>
src/views/dashboard/Analysis.vue
浏览文件 @
ec807fc5
...
...
@@ -7,9 +7,9 @@
<!--
<img
class=
"icon"
src=
"~@/assets/guaz.png"
alt=
""
>
-->
<div>
<p
style=
"color:#666;margin-bottom:5px;"
>
关联小区数量
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:28px;line-height:1;"
>
{{
pageForm
.
roomNu
m
}}
</p>
<span
v-if=
"pageForm.
roomNu
m > 0"
><a-icon
type=
"arrow-up"
color=
"#1890ff"
/>
{{
pageForm
.
pageFor
m
}}
</span>
<p
style=
"margin-bottom:0;color:#333;font-size:28px;line-height:1;"
>
{{
pageForm
.
bindCo
m
}}
</p>
<span
v-if=
"pageForm.
bindCo
m > 0"
><a-icon
type=
"arrow-up"
color=
"#1890ff"
/>
{{
pageForm
.
bindCo
m
}}
</span>
</div>
</div>
</a-col>
...
...
@@ -18,7 +18,7 @@
<div
class=
"icon"
style=
"background-color:#7262fd;"
><a-icon
type=
"bar-chart"
/></div>
<div>
<p
style=
"color:#666;margin-bottom:5px;"
>
累积交易金额
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:28px;line-height:1;"
>
¥
{{
pageForm
.
roomNum
}}
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:28px;line-height:1;"
>
¥
{{
pageForm
.
totalMoney
}}
</p>
</div>
</div>
</a-col>
...
...
@@ -27,7 +27,7 @@
<div
class=
"icon"
style=
"background-color:#ffaa00;"
><a-icon
type=
"bar-chart"
/></div>
<div>
<p
style=
"color:#666;margin-bottom:5px;"
>
待对账金额
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:28px;line-height:1;"
>
¥
{{
pageForm
.
buildingNum
}}
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:28px;line-height:1;"
>
¥
{{
pageForm
.
notBalance
}}
</p>
</div>
</div>
</a-col>
...
...
@@ -36,7 +36,7 @@
<div
class=
"icon"
style=
"background-color:#52c41a;"
><a-icon
type=
"pay-circle"
/></div>
<div>
<p
style=
"color:#666;margin-bottom:5px;"
>
待结算金额
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:28px;line-height:1;"
>
¥
{{
pageForm
.
propertyYearFee
}}
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:28px;line-height:1;"
>
¥
{{
pageForm
.
notBenefit
}}
</p>
</div>
</div>
</a-col>
...
...
@@ -113,7 +113,7 @@ export default {
},
methods
:
{
async
onDetail
(
typeCode
)
{
let
{
result
}
=
await
homeDataStatistics
({
typeCode
:
typeCode
})
let
{
result
}
=
await
homeDataStatistics
({
})
this
.
pageForm
=
{
...
result
}
this
.
loading
=
!
this
.
loading
},
...
...
@@ -128,11 +128,11 @@ export default {
this
.
clickQRcode
()
}
else
if
(
type
==
2
)
{
this
.
$router
.
push
({
path
:
'/
information/owner
'
,
path
:
'/
paymentorder/payment
'
,
})
}
else
if
(
type
==
3
)
{
this
.
$router
.
push
({
path
:
'/
information/house
'
,
path
:
'/
settlement/SettlementDetails?type=add
'
,
})
}
else
if
(
type
==
4
)
{
this
.
$router
.
push
({
...
...
src/views/dashboard/IndexChart.vue
浏览文件 @
ec807fc5
<
template
>
<div
class=
""
>
<div
class=
"map-box"
>
<h3
class=
"box-title"
>
社区分布数量图
</h3>
<div
ref=
"mapEcharts"
class=
"map-echart"
style=
"height: 500px"
></div>
<a-row
:gutter=
"24"
>
<a-col
:sm=
"24"
:md=
"12"
:xl=
"12"
:style=
"
{ marginBottom: '20px' }">
<div
class=
"t-box"
>
<h3
class=
"box-title"
>
月成交订单数量
</h3>
<div>
<line-chart-multid
:dataSource=
"dayData"
:fields=
"dayFields"
style=
"padding: 0;"
/>
</div>
</div>
</a-col>
<a-col
:sm=
"24"
:md=
"12"
:xl=
"12"
:style=
"
{ marginBottom: '20px' }">
<div
class=
"t-box"
>
<h3
class=
"box-title"
>
月成交金额
</h3>
<line-chart-multid
:dataSource=
"dayData1"
:fields=
"dayFields1"
style=
"padding: 0;"
/>
</div>
</a-col>
</a-row>
</div>
</
template
>
<
script
>
import
*
as
echarts
from
'echarts'
import
chinaData
from
'@/assets/china.json'
//地图包
import
ChartCard
from
'@/components/ChartCard'
import
ACol
from
'ant-design-vue/es/grid/Col'
import
ATooltip
from
'ant-design-vue/es/tooltip/Tooltip'
import
MiniArea
from
'@/components/chart/MiniArea'
import
MiniBar
from
'@/components/chart/MiniBar'
import
MiniProgress
from
'@/components/chart/MiniProgress'
import
RankList
from
'@/components/chart/RankList'
import
Bar
from
'@/components/chart/Bar'
import
LineChartMultid
from
'@/components/chart/LineChartMultid'
import
HeadInfo
from
'@/components/tools/HeadInfo.vue'
import
vueSeamlessScroll
from
'vue-seamless-scroll'
import
{
getAction
}
from
'@api/manage'
import
Trend
from
'@/components/Trend'
// import { getDataStatisticsApi, getLoginfo, getVisitInfo, auditPropertyApi } from '@/api/api'
const
rankList
=
[]
for
(
let
i
=
0
;
i
<
7
;
i
++
)
{
rankList
.
push
({
name
:
'白鹭岛 '
+
(
i
+
1
)
+
' 号店'
,
total
:
1234.56
-
i
*
100
,
})
}
const
barData
=
[]
for
(
let
i
=
0
;
i
<
12
;
i
+=
1
)
{
barData
.
push
({
x
:
`
${
i
+
1
}
月`
,
y
:
Math
.
floor
(
Math
.
random
()
*
1000
)
+
200
,
})
}
export
default
{
name
:
'
IndexChart
'
,
name
:
'
statistical
'
,
components
:
{
ATooltip
,
ACol
,
ChartCard
,
MiniArea
,
MiniBar
,
MiniProgress
,
RankList
,
Bar
,
Trend
,
LineChartMultid
,
HeadInfo
,
vueSeamlessScroll
,
},
data
()
{
return
{
mapData
:
[],
waitAuditList
:
[],
detail
:{},
time
:
''
,
loading
:
true
,
center
:
null
,
rankList
,
barData
,
loginfo
:
{},
visitFields
:
[
'ip'
,
'visit'
],
visitInfo
:
[],
indicator
:
<
a
-
icon
type
=
"loading"
style
=
"font-size: 24px"
spin
/>
,
dayFields
:
[
'月成交订单数量'
],
dayData
:
[],
dayFields1
:
[
'月成订单交金额'
],
dayData1
:
[],
}
},
created
()
{
this
.
searchQuery
()
setTimeout
(()
=>
{
this
.
loading
=
!
this
.
loading
},
1000
)
// this.initLogInfo()
this
.
getDataStatistics
()
},
methods
:
{
initLogInfo
()
{
getLoginfo
(
null
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
Object
.
keys
(
res
.
result
).
forEach
((
key
)
=>
{
res
.
result
[
key
]
=
res
.
result
[
key
]
+
''
})
this
.
loginfo
=
res
.
result
}
})
getVisitInfo
().
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
visitInfo
=
res
.
result
}
})
},
async
getDataStatistics
()
{
// let { result } = await getDataStatisticsApi()
let
result
=
{
propertySettledList
:
[
{
accessAddress
:
"hanxingkeji"
,
addressInfo
:
"湖北省十堰市郧阳区茶店镇天马大道385号"
,
adminLoginName
:
"18165711227"
,
adminPassword
:
"123456"
,
auditStatus
:
"auditPass"
,
chargingStandardId
:
"1674008710072737794"
,
cityCode
:
"420300"
,
cityName
:
"十堰市"
,
contactName
:
"王国学"
,
contactPhone
:
"13812345678"
,
contractUrl
:
"temp/4081686986887_.pic_1687950032469.jpg"
,
countyCode
:
"420304"
,
countyName
:
"郧阳区"
,
createBy
:
"管理员"
,
createTime
:
"2023-06-28 00:00:00"
,
creditCode
:
"91420304MA49KXW724"
,
}
]
}
this
.
waitAuditList
=
result
.
waitAuditList
this
.
mapData
=
result
.
propertySettledList
.
map
((
item
)
=>
{
computed
:
{
defineScroll
()
{
return
{
name
:
item
.
propertyName
,
value
:
[
item
.
longitude
,
item
.
latitude
],
text
:
{
...
item
},
step
:
0.5
,
// 数值越大速度滚动越快
limitMoveNum
:
2
,
// 开始无缝滚动的数据量 this.dataList.length
hoverStop
:
true
,
// 是否开启鼠标悬停stop
direction
:
1
,
// 0向下 1向上 2向左 3向右
openWatch
:
true
,
// 开启数据实时监控刷新dom
singleHeight
:
0
,
// 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth
:
0
,
// 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime
:
1000
,
// 单步运动停止的时间(默认值1000ms)
}
})
||
[]
this
.
mapEcharts
()
},
toOperation
(
record
)
{
this
.
$router
.
push
({
path
:
'/settled/propertyDetails?type=audit&id='
+
record
.
id
,
})
},
//地图
mapEcharts
()
{
// 获取地图数据
// 使用数据注册地图
echarts
.
registerMap
(
'china'
,
chinaData
)
this
.
$nextTick
(()
=>
{
// 初始化地图
this
.
map
=
echarts
.
init
(
this
.
$refs
[
'mapEcharts'
])
// 设置基础配置项
const
option
=
{
areaColor
:
'#97bff7'
,
// 悬浮窗
tooltip
:
{
trigger
:
'item'
,
formatter
:
function
(
params
)
{
return
`物业名称:
${
params
.
data
.
name
}
</br>统一社会信用代码:
${
params
.
data
.
text
.
creditCode
}
</br>注册地址:
${
params
.
data
.
text
.
cityName
}${
params
.
data
.
text
.
countyName
}
</br>详细地址:
${
params
.
data
.
text
.
addressInfo
}
</br>联系人:
${
params
.
data
.
text
.
contactName
}
</br>联系电话:
${
params
.
data
.
text
.
contactPhone
}
</br>授权物业数量:
${
params
.
data
.
text
.
ontrialCommunityNum
||
0
}
`
},
borderColor
:
'#fff'
,
textStyle
:
{
//color: "#fff",
fontSize
:
'13'
,
},
},
geo
:
{
type
:
'map'
,
map
:
'china'
,
//height: "100%",
top
:
0
,
width
:
'50%'
,
roam
:
true
,
zoom
:
1
,
scaleLimit
:
{
//滚轮缩放的极限控制
min
:
0.6
,
//最小的缩放值
max
:
20
,
},
// 地图区域的样式设置
itemStyle
:
{
borderColor
:
'#fff'
,
borderWidth
:
1
,
areaColor
:
'#c1dbff'
,
},
},
// 要显示的散点数据
series
:
[
{
name
:
'社区分布数量图'
,
type
:
'scatter'
,
coordinateSystem
:
'geo'
,
//设置坐标系为 geo
data
:
this
.
mapData
,
itemStyle
:
{
color
:
function
(
params
)
{
//根据不同数据显示不同颜色的标记
if
(
params
.
data
.
text
.
customerAccount
>=
100
)
{
return
'#67c23a'
}
else
{
return
'#409eff'
methods
:
{
onChangeData
(
date
,
dateString
)
{
if
(
dateString
){
this
.
time
=
dateString
.
slice
(
0
,
4
)
+
dateString
.
slice
(
5
,
7
)
}
else
{
this
.
time
=
''
}
},
insertStr
(
soure
,
start
,
newStr
){
return
soure
.
slice
(
0
,
start
)
+
newStr
+
soure
.
slice
(
start
);
},
},
],
searchQuery
()
{
getAction
(
'/property-community/order/paymentOrder/shareBoard?platformType=shop&date='
+
this
.
time
,
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
detail
=
res
.
result
this
.
dayData
=
[]
this
.
dayData1
=
[]
res
.
result
.
shareByMonth
.
map
((
item
)
=>
{
this
.
dayData1
.
push
({
type
:
this
.
insertStr
(
item
.
MONTH
,
4
,
'-'
),
月成订单交金额
:
'¥'
+
item
.
shareMoney
})
})
res
.
result
.
orderCountByMonth
.
map
((
item
)
=>
{
this
.
dayData
.
push
({
type
:
this
.
insertStr
(
item
.
MONTH
,
4
,
'-'
),
月成交订单数量
:
item
.
orderCount
})
})
}
// 将配置应用到地图上
this
.
map
.
setOption
(
option
)
})
},
},
...
...
@@ -210,76 +104,76 @@ export default {
<
style
lang=
"less"
scoped
>
.page-header-index-wide {
padding: 16px;
.query-box {
background: #fff;
padding: 20px;
margin-bottom: 20px;
}
.data-box {
display: flex;
margin-bottom: 20px;
justify-content: space-between;
}
.statistics {
// flex: none;
background: #fff;
width: 100%;
height: 90px;
width: 13.5%;
box-sizing: border-box;
border: 1px solid #e0dfdf;
display: flex;
align-items: center;
padding-left: 20px;
.icon {
width: 60px;
height: 60px;
border-radius: 60px;
margin-right: 12px;
display: flex;
padding: 25px 10px;
max-height: 100px;
text-align: center;
align-items: center;
justify-content: center;
.anticon {
font-size: 50px;
}
}
span {
font-size: 14px;
color: #1890ff;
}
}
}
.map-box {
background-color: #fff;
padding: 20px;
.dealt-with {
width: 100%;
max-width: 100%;
overflow-x: auto;
display: flex;
.box {
border: 1px solid #f5f5f5;
}
}
.t-box {
background: #fff;
padding: 15px;
border: 1px solid #e0dfdf;
height: 340px;
}
.box-title {
font-weight: bold;
padding-bottom: 10px;
margin-bottom: 10px;
border-bottom: 1px solid #f1f1f1;
margin-bottom: 15px;
display: inline-block;
padding-left: 10px;
border-left: 3px solid #1890ff;
height: 20px;
line-height: 20px;
}
.wait-box {
background-color: #fff;
padding: 20px;
.content {
width: 100%;
//height: 400px;
max-height: 400px;
overflow-y: auto;
.order {
margin: 0 10px;
.order-title {
background: #fafafa;
height: 40px;
line-height: 40px;
display: flex;
border-left: 1px solid #e8e8e8;
span {
width: 25%;
border-right: 1px solid #e8e8e8;
border-top: 1px solid #e8e8e8;
text-align: center;
font-weight: bold;
}
}
.seamless-warp {
border: 1px solid #e8e8e8;
border-right: none;
.item {
padding: 10px 15px;
box-sizing: border-box;
border-radius: 5px;
border: 1px solid #f1f1f1;
width: 31.33%;
margin: 1%;
float: left;
p {
margin-bottom: 0.4em;
height: 40px;
line-height: 40px;
display: flex;
span {
width: 25%;
border-right: 1px solid #e8e8e8;
border-top: 1px solid #e8e8e8;
text-align: center;
}
}
}
}
.seamless-warp {
height: 220px;
overflow: hidden;
}
</
style
>
src/views/paymentorder/payment/payment.vue
浏览文件 @
ec807fc5
...
...
@@ -6,12 +6,12 @@
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"输入搜索"
>
<j-input
placeholder=
"订单编号/商品货号"
v-model=
"queryParam.
id
"
></j-input>
<j-input
placeholder=
"订单编号/商品货号"
v-model=
"queryParam.
orderNo
"
></j-input>
</a-form-item>
</a-col>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"收货人"
>
<j-input
placeholder=
"收货人"
v-model=
"queryParam.
userAccount
"
></j-input>
<j-input
placeholder=
"收货人"
v-model=
"queryParam.
ownerName
"
></j-input>
</a-form-item>
</a-col>
<a-col
:md=
"7"
:sm=
"10"
>
...
...
@@ -34,10 +34,9 @@
<a-table
ref=
"table"
size=
"middle"
:scroll=
"
{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading" class="j-table-force-nowrap"
@change="handleTableChange">
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"onDetail(record.id, 'detail')"
>
详情
</a>
<template
v-if=
"
record.orderStatus === 1
"
>
<template
v-if=
"
(record.orderStatus === 'paid'|| record.orderStatus === 'refundReject')&& record.canRefund === 'can'
"
>
<a-divider
type=
"vertical"
/>
<a
@
click=
"onDetail(record.id, 'audit')"
>
申请退款
</a>
</
template
>
...
...
@@ -50,15 +49,15 @@
<
script
>
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
import
{
ORDER_STATUS
,
PAYMENT_METOD
,
filterDictTextByStatic
}
from
'@/assets/static.js'
import
{
PAYTYPE
,
ORDER_STATUS
,
PAYMENT_METOD
,
filterDictTextByStatic
}
from
'@/assets/static.js'
// import NoticeModal from "@views/property/property/modules/NoticeModal.vue";
// import CPopupOnlReport from "@comp/custom/modal/JPopupOnlReport.vue";
const
columns
=
[
{
title
:
'订单编号'
,
dataIndex
:
'
id
'
,
key
:
'
id
'
,
dataIndex
:
'
orderNo
'
,
key
:
'
orderNo
'
,
align
:
'center'
,
},
{
...
...
@@ -69,8 +68,8 @@ const columns = [
},
{
title
:
'用户账号'
,
dataIndex
:
'
userAccount
'
,
key
:
'
userAccount
'
,
dataIndex
:
'
ownerName
'
,
key
:
'
ownerName
'
,
align
:
'center'
,
},
{
...
...
@@ -81,8 +80,8 @@ const columns = [
},
{
title
:
'支付方式'
,
dataIndex
:
'pay
mentMethod
'
,
key
:
'pay
mentMethod
'
,
dataIndex
:
'pay
Source
'
,
key
:
'pay
Source
'
,
align
:
'center'
,
customRender
:
function
(
text
)
{
return
filterDictTextByStatic
(
PAYMENT_METOD
,
text
);
...
...
@@ -90,9 +89,12 @@ const columns = [
},
{
title
:
'订单来源'
,
dataIndex
:
'
orderSourc
e'
,
key
:
'
orderSourc
e'
,
dataIndex
:
'
payTyp
e'
,
key
:
'
payTyp
e'
,
align
:
'center'
,
customRender
:
function
(
text
)
{
return
filterDictTextByStatic
(
PAYTYPE
,
text
);
}
},
{
title
:
'订单状态'
,
...
...
@@ -105,20 +107,20 @@ const columns = [
},
{
title
:
'退款说明'
,
dataIndex
:
'refund
Instruction
s'
,
key
:
'refund
Instruction
s'
,
dataIndex
:
'refund
De
s'
,
key
:
'refund
De
s'
,
align
:
'center'
,
},
{
title
:
'所属平台'
,
dataIndex
:
'
ownPlatform
'
,
key
:
'
ownPlatform
'
,
dataIndex
:
'
propertyName
'
,
key
:
'
propertyName
'
,
align
:
'center'
,
},
{
title
:
'所属小区'
,
dataIndex
:
'
proper
tyName'
,
key
:
'
proper
tyName'
,
dataIndex
:
'
communi
tyName'
,
key
:
'
communi
tyName'
,
align
:
'center'
,
},
{
...
...
@@ -143,33 +145,9 @@ export default {
showSizeChanger
:
true
,
},
url
:
{
list
:
'/property-c
entral/property/communityReconciliation/list
'
,
list
:
'/property-c
ommunity/order/paymentOrder/list?platformType=shop
'
,
},
dataSource
:[
{
id
:
1
,
userAccount
:
'admin'
,
orderAmount
:
100
,
orderSource
:
'微信'
,
paymentMethod
:
1
,
orderStatus
:
1
,
refundInstructions
:
'退款说明'
,
ownPlatform
:
'微信'
,
propertyName
:
'小区名称'
,
createTime
:
'2018-01-01'
},
{
id
:
2
,
userAccount
:
'admin'
,
orderAmount
:
100
,
orderSource
:
'微信'
,
paymentMethod
:
1
,
orderStatus
:
1
,
refundInstructions
:
'退款说明'
,
ownPlatform
:
'微信'
,
propertyName
:
'小区名称'
,
createTime
:
'2018-01-01'
},
]
}
},
...
...
src/views/paymentorder/payment/paymentDetail.vue
浏览文件 @
ec807fc5
<
template
>
<a-spin
:spinning=
"confirmLoading"
>
<div
class=
"title-top"
>
<h3>
当前订单状态:
{{
status
(
dataSource
[
0
].
orderStatus
)
}}
</h3>
<div
class=
"title-top"
v-if=
"dataSource.length > 0"
>
<h3>
当前订单状态:
{{
status
(
dataSource
)
}}
</h3>
<div
class=
"button"
>
<a-button
@
click=
"onCancel"
>
返回
</a-button>
<a-button
type=
"danger"
@
click=
"onExamine(2)"
v-if=
"pageType == 'audit'"
>
退款
</a-button>
...
...
@@ -21,17 +21,33 @@
<a-card
title=
"操作信息"
>
<a-row>
<div>
<a-table
ref=
"table"
size=
"middle"
bordered
:columns=
"columns2"
:pagination=
"false"
<a-table
ref=
"table"
size=
"middle"
bordered
:columns=
"columns2"
:pagination=
"false"
rowKey=
"id"
:dataSource=
"dataSource"
:loading=
"loading"
class=
"j-table-force-nowrap"
>
<span
slot=
"paymentStatus"
slot-scope=
"text, record"
>
<template
v-if=
"record.paymentStatus === 'success'"
>
成功
</
template
>
</span>
</a-table>
</div>
</a-row>
</a-card>
<!-- table区域-end -->
<a-modal
centered
title=
"退款确认"
:visible=
"visible"
:confirm-loading=
"confirmLoadings"
@
ok=
"handleOk"
@
cancel=
"handleCancel"
width=
"60%"
>
<a-form>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"退款备注"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
style=
"width: 100%;"
>
<a-textarea
v-model=
"model.refundDes"
:auto-size=
"{ minRows: 4, maxRows: 6 }"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</a-spin>
</template>
<
script
>
import
{
filterDictTextByStatic
,
ORDER_STATUS
,
PAYMENT_METOD
}
from
"@assets/static"
;
import
{
PAYTYPE
,
ORDER_STATUS
,
PAYMENT_METOD
,
filterDictTextByStatic
}
from
'@/assets/static.js'
const
mapZoom
=
[
5
,
8
,
10
,
12
]
let
timer
=
null
...
...
@@ -43,32 +59,32 @@ import { isMobile, validateCreditCode } from '@/utils/validate'
const
columns
=
[
{
title
:
'订单编号'
,
dataIndex
:
'
id
'
,
key
:
'
id
'
,
dataIndex
:
'
orderNo
'
,
key
:
'
orderNo
'
,
align
:
'center'
,
},
{
title
:
'所属小区'
,
dataIndex
:
'
proper
tyName'
,
key
:
'
proper
tyName'
,
dataIndex
:
'
communi
tyName'
,
key
:
'
communi
tyName'
,
align
:
'center'
,
},
{
title
:
'业主名称'
,
dataIndex
:
'
user
Name'
,
key
:
'
user
Name'
,
dataIndex
:
'
partners
Name'
,
key
:
'
partners
Name'
,
align
:
'center'
,
},
{
title
:
'用户账号'
,
dataIndex
:
'
userAccount
'
,
key
:
'
userAccount
'
,
dataIndex
:
'
ownerName
'
,
key
:
'
ownerName
'
,
align
:
'center'
,
},
{
title
:
'支付方式'
,
dataIndex
:
'pay
mentMethod
'
,
key
:
'pay
mentMethod
'
,
dataIndex
:
'pay
Source
'
,
key
:
'pay
Source
'
,
align
:
'center'
,
customRender
:
function
(
text
)
{
return
filterDictTextByStatic
(
PAYMENT_METOD
,
text
);
...
...
@@ -76,9 +92,12 @@ const columns = [
},
{
title
:
'订单来源'
,
dataIndex
:
'
orderSourc
e'
,
key
:
'
orderSourc
e'
,
dataIndex
:
'
payTyp
e'
,
key
:
'
payTyp
e'
,
align
:
'center'
,
customRender
:
function
(
text
)
{
return
filterDictTextByStatic
(
PAYTYPE
,
text
);
}
}
]
const
columns2
=
[
...
...
@@ -90,8 +109,8 @@ const columns2 = [
},
{
title
:
'操作时间'
,
dataIndex
:
'cre
ditCod
e'
,
key
:
'cre
ditCod
e'
,
dataIndex
:
'cre
ateTim
e'
,
key
:
'cre
ateTim
e'
,
align
:
'center'
,
},
{
...
...
@@ -106,13 +125,14 @@ const columns2 = [
{
title
:
'付款状态'
,
dataIndex
:
'paymentStatus'
,
scopedSlots
:
{
customRender
:
'paymentStatus'
},
key
:
'paymentStatus'
,
align
:
'center'
,
},
{
title
:
'备注'
,
dataIndex
:
'refund
Instruction
s'
,
key
:
'refund
Instruction
s'
,
dataIndex
:
'refund
De
s'
,
key
:
'refund
De
s'
,
align
:
'center'
,
}
]
...
...
@@ -125,31 +145,36 @@ export default {
title
:
''
,
pageType
:
''
,
confirmLoading
:
false
,
confirmLoadings
:
false
,
costList
:
[],
mapRef
:
null
,
visible
:
false
,
model
:{
refundDes
:
''
,
id
:
''
},
url
:
{
refundOrder
:
'/property-community/order/paymentOrder/refundOrder'
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
6
},
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
columns
:
columns
,
columns2
:
columns2
,
loading
:
false
,
dataSource
:
[
{
id
:
1
,
userAccount
:
'admin'
,
orderAmount
:
100
,
orderSource
:
'微信'
,
paymentMethod
:
1
,
orderStatus
:
1
,
refundInstructions
:
'退款说明'
,
ownPlatform
:
'微信'
,
propertyName
:
'小区名称'
,
createTime
:
'2018-01-01'
},
]
}
},
created
()
{
this
.
pageType
=
this
.
$route
.
query
.
type
this
.
getPageDetail
()
},
methods
:
{
async
onLoadCostList
()
{
...
...
@@ -158,25 +183,44 @@ export default {
},
async
getPageDetail
()
{
let
{
result
}
=
await
getPropertyDetailApi
({
id
:
this
.
$route
.
query
.
id
})
this
.
edit
(
result
)
if
(
result
.
provinceName
)
{
this
.
getLongitude
(
result
.
provinceName
,
result
.
provinceName
+
result
.
cityName
+
result
.
countyName
+
result
.
addressInfo
,
mapZoom
[
3
]
)
}
this
.
dataSource
.
push
(
result
)
},
status
(
text
){
return
filterDictTextByStatic
(
ORDER_STATUS
,
text
);
if
(
text
){
return
filterDictTextByStatic
(
ORDER_STATUS
,
text
[
0
].
orderStatus
);
}
},
onCancel
()
{
this
.
closeCurrent
()
},
onExamine
(
type
)
{
this
.
visible
=
true
this
.
model
.
id
=
this
.
$route
.
query
.
id
},
handleOk
(
e
)
{
const
that
=
this
this
.
confirmLoadings
=
true
let
method
=
'post'
httpAction
(
this
.
url
.
refundOrder
,
this
.
model
,
method
)
.
then
((
res
)
=>
{
if
(
res
.
success
)
{
that
.
$message
.
success
(
res
.
message
)
that
.
$emit
(
'ok'
)
}
else
{
that
.
$message
.
warning
(
res
.
message
)
}
this
.
closeCurrent
()
this
.
visible
=
false
this
.
confirmLoadings
=
false
this
.
model
=
{}
})
.
finally
(()
=>
{
that
.
confirmLoadings
=
false
})
},
handleCancel
(
e
)
{
this
.
visible
=
false
},
loadData
()
{
console
.
log
(
'不请求'
)
...
...
src/views/settled/PropertyDetail.vue
deleted
100644 → 0
浏览文件 @
88901a12
<
template
>
<a-card
:bordered=
"false"
>
<!-- 查询区域 -->
<div
class=
"table-page-search-wrapper"
>
<a-form
layout=
"inline"
@
keyup
.
enter
.
native=
"searchQuery"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"表名"
>
<a-input
placeholder=
"请输入表名"
v-model=
"queryParam.dataTable"
></a-input>
</a-form-item>
</a-col>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"数据ID"
>
<a-input
placeholder=
"请输入ID"
v-model=
"queryParam.dataId"
></a-input>
</a-form-item>
</a-col>
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"6"
:sm=
"24"
>
<a-button
type=
"primary"
@
click=
"searchQuery"
>
查询
</a-button>
<a-button
style=
"margin-left: 8px"
@
click=
"searchReset"
>
重置
</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div
class=
"table-operator"
>
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
新增
</a-button>
<a-button
@
click=
"batchDel"
v-if=
"selectedRowKeys.length > 0"
ghost
type=
"primary"
icon=
"delete"
>
批量删除
</a-button>
</div>
<!-- table区域-begin -->
<div>
<div
class=
"ant-alert ant-alert-info"
style=
"margin-bottom: 16px;"
>
<i
class=
"anticon anticon-info-circle ant-alert-icon"
></i>
已选择
<a
style=
"font-weight: 600"
>
{{
selectedRowKeys
.
length
}}
</a>
项
<a
style=
"margin-left: 24px"
@
click=
"onClearSelected"
>
清空
</a>
</div>
<a-table
:columns=
"columns"
size=
"middle"
:dataSource=
"dataSource"
:loading=
"loading"
:pagination=
"pagination"
:rowSelection=
"
{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
>
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"handleEdit(record)"
>
编辑
</a>
<a-divider
type=
"vertical"
/>
<a-dropdown>
<a
class=
"ant-dropdown-link"
>
更多
<a-icon
type=
"down"
/>
</a>
<a-menu
slot=
"overlay"
>
<a-menu-item>
<a
href=
"javascript:;"
@
click=
"handleDetail(record)"
>
详情
</a>
</a-menu-item>
<a-menu-item>
<a
href=
"javascript:;"
@
click=
"handleAddSub(record)"
>
添加下级
</a>
</a-menu-item>
<a-menu-item>
<a
href=
"javascript:;"
@
click=
"handleDataRule(record)"
>
数据规则
</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm
title=
"确定删除吗?"
@
confirm=
"() => handleDelete(record.id)"
placement=
"topLeft"
>
<a>
删除
</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
<!-- 字符串超长截取省略号显示 -->
<span
slot=
"url"
slot-scope=
"text"
>
<j-ellipsis
:value=
"text"
:length=
"25"
/>
</span>
<!-- 字符串超长截取省略号显示-->
<span
slot=
"component"
slot-scope=
"text"
>
<j-ellipsis
:value=
"text"
/>
</span>
</a-table>
</div>
<!-- table区域-end -->
<!--
<permission-modal
ref=
"modalForm"
@
ok=
"modalFormOk"
></permission-modal>
-->
<!--
<permission-data-rule-list
ref=
"PermissionDataRuleList"
@
ok=
"modalFormOk"
></permission-data-rule-list>
-->
</a-card>
</
template
>
<
script
>
// import PermissionModal from './modules/PermissionModal'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
// import PermissionDataRuleList from './PermissionDataRuleList'
import
JEllipsis
from
'@/components/jeecg/JEllipsis'
const
columns
=
[
{
title
:
'菜单名称'
,
dataIndex
:
'name'
,
key
:
'name'
},
{
title
:
'菜单类型'
,
dataIndex
:
'menuType'
,
key
:
'menuType'
,
customRender
:
function
(
text
)
{
if
(
text
==
0
)
{
return
'菜单'
}
else
if
(
text
==
1
)
{
return
'菜单'
}
else
if
(
text
==
2
)
{
return
'按钮/权限'
}
else
{
return
text
}
}
},
/*{
title: '权限编码',
dataIndex: 'perms',
key: 'permissionCode',
},*/
{
title
:
'icon'
,
dataIndex
:
'icon'
,
key
:
'icon'
},
{
title
:
'组件'
,
dataIndex
:
'component'
,
key
:
'component'
,
scopedSlots
:
{
customRender
:
'component'
}
},
{
title
:
'路径'
,
dataIndex
:
'url'
,
key
:
'url'
,
scopedSlots
:
{
customRender
:
'url'
}
},
{
title
:
'排序'
,
dataIndex
:
'sortNo'
,
key
:
'sortNo'
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
scopedSlots
:
{
customRender
:
'action'
},
align
:
'center'
,
width
:
150
}
]
export
default
{
name
:
'PermissionListAsync'
,
mixins
:
[
JeecgListMixin
],
components
:
{
// PermissionDataRuleList,
// PermissionModal,
JEllipsis
},
data
()
{
return
{
description
:
'这是菜单管理页面'
,
// 表头
columns
:
columns
,
loading
:
false
,
pagination
:
{},
url
:
{
list
:
'/property/propertySettled/list'
,
delete
:
'/sys/permission/delete'
,
deleteBatch
:
'/sys/permission/deleteBatch'
}
}
},
methods
:
{
loadData
()
{
this
.
loading
=
true
getPropertyListApi
({
pageNo
:
1
,
pageSize
:
10
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
const
pagination
=
{
...
this
.
pagination
};
pagination
.
total
=
res
.
result
.
total
this
.
dataSource
=
res
.
result
.
records
}
}).
finally
(()
=>
{
this
.
loading
=
false
})
},
// 打开数据规则编辑
handleDataRule
(
record
)
{
this
.
$refs
.
PermissionDataRuleList
.
edit
(
record
)
},
handleAddSub
(
record
)
{
this
.
$refs
.
modalForm
.
title
=
"添加子菜单"
;
this
.
$refs
.
modalForm
.
disableSubmit
=
false
;
this
.
$refs
.
modalForm
.
edit
({
status
:
'1'
,
permsType
:
'1'
,
route
:
true
,
'parentId'
:
record
.
id
,
menuType
:
1
});
}
}
}
</
script
>
<
style
scoped
>
@import
'~@assets/less/common.less'
;
</
style
>
\ No newline at end of file
src/views/settled/PropertyList.vue
deleted
100644 → 0
浏览文件 @
88901a12
<
template
>
<a-card
:bordered=
"false"
>
<!-- 查询区域 -->
<div
class=
"table-page-search-wrapper"
>
<a-form
layout=
"inline"
@
keyup
.
enter
.
native=
"searchQuery"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"物业名称"
>
<a-input
placeholder=
"请输入物业名称"
v-model=
"queryParam.propertyName"
></a-input>
</a-form-item>
</a-col>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"入驻时间"
>
<a-input
placeholder=
"请选择入驻时间"
v-model=
"queryParam.createTime"
></a-input>
</a-form-item>
</a-col>
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"6"
:sm=
"24"
>
<a-button
type=
"primary"
@
click=
"searchQuery"
>
查询
</a-button>
<a-button
style=
"margin-left: 8px"
@
click=
"searchReset"
>
重置
</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div
class=
"table-operator"
>
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
新增
</a-button>
<a-button
type=
"primary"
icon=
"download"
@
click=
"handleExportXls('t_property_settled')"
>
导出
</a-button>
<a-dropdown
v-if=
"selectedRowKeys.length > 0"
>
<a-menu
slot=
"overlay"
>
<a-menu-item
key=
"1"
@
click=
"batchDel"
><a-icon
type=
"delete"
/>
删除
</a-menu-item>
</a-menu>
<a-button
style=
"margin-left: 8px"
>
批量操作
<a-icon
type=
"down"
/></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div
class=
"ant-alert ant-alert-info"
style=
"margin-bottom: 16px;"
>
<i
class=
"anticon anticon-info-circle ant-alert-icon"
></i>
已选择
<a
style=
"font-weight: 600"
>
{{
selectedRowKeys
.
length
}}
</a>
项
<a
style=
"margin-left: 24px"
v-if=
"selectedRowKeys.length > 0"
@
click=
"onClearSelected"
>
清空
</a>
</div>
<a-table
ref=
"table"
size=
"middle"
:scroll=
"
{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="pagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span
slot=
"empowerDate"
slot-scope=
"text, record"
>
<span>
{{
record
.
empowerBeginDate
}}
至
{{
record
.
empowerEndDate
}}
</span>
</span>
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"onLoadDetail(record, 'edit')"
>
编辑
</a>
<a-divider
type=
"vertical"
/>
<a-dropdown>
<a
class=
"ant-dropdown-link"
>
更多
<a-icon
type=
"down"
/>
</a>
<a-menu
slot=
"overlay"
>
<a-menu-item>
<a
href=
"javascript:;"
@
click=
"onLoadDetail(record)"
>
详情
</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm
title=
"确定删除吗?"
@
confirm=
"() => handleDelete(record.id)"
placement=
"topLeft"
>
<a>
删除
</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
<!-- 字符串超长截取省略号显示 -->
<span
slot=
"url"
slot-scope=
"text"
>
<j-ellipsis
:value=
"text"
:length=
"25"
/>
</span>
<!-- 字符串超长截取省略号显示-->
<span
slot=
"component"
slot-scope=
"text"
>
<j-ellipsis
:value=
"text"
/>
</span>
</a-table>
</div>
<!-- table区域-end -->
<property-settled-modal
ref=
"modalForm"
@
ok=
"modalFormOk"
></property-settled-modal>
<a-modal
:title=
"modalTitle + '入驻物业集团'"
width=
"60%"
:visible=
"visible"
:closable=
"false"
:maskClosable=
"false"
>
<template
slot=
"footer"
>
<a-button
@
click=
"close"
>
关闭
</a-button>
<a-button
type=
"primary"
@
click=
"onSubmit"
>
确认
</a-button>
</
template
>
<a-form-model
ref=
"ruleForm"
:model=
"form"
:rules=
"rules"
:label-col=
"labelCol"
:wrapper-col=
"wrapperCol"
>
<a-card
title=
"物业集团基本信息"
>
<a-row>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"物业集团名称"
prop=
"propertyName"
>
<a-input
v-model=
"form.propertyName"
placeholder=
"请输入"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"统一信用代码"
prop=
"propertyCode"
>
<a-input
v-model=
"form.propertyCode"
placeholder=
"请输入"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"法人代表"
prop=
"legalName"
>
<a-input
v-model=
"form.legalName"
placeholder=
"请输入"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"注册资本"
prop=
"registCapital"
>
<a-input-number
id=
"inputNumber"
v-model=
"form.registCapital"
:min=
"1"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"联系人"
prop=
"contactName"
>
<a-input
v-model=
"form.contactName"
placeholder=
"请输入"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"联系人电话"
prop=
"contactPhone"
>
<a-input
v-model=
"form.contactPhone"
placeholder=
"请输入"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"注册地址"
prop=
"registAdress"
>
<a-input
v-model=
"form.registAdress"
placeholder=
"请输入"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"详细地址"
prop=
"adressInfo"
:labelCol=
"{ span: 3 }"
>
<a-input
v-model=
"form.adressInfo"
placeholder=
"请输入"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"21"
:offset=
"3"
>
<a-form-model-item
label=
""
:labelCol=
"{ span: 3 }"
>
<div>
<div
id=
"container"
style=
"width:100%;height:100%"
></div>
</div>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"集团LOGO"
prop=
"logoUrl"
:labelCol=
"{ span: 3 }"
>
<j-image-upload
bizPath=
"scott/pic"
v-model=
"form.logoUrl"
></j-image-upload>
<span>
只能上传jpg/png格式文件,文件不能超过50kb
</span>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"集团介绍"
prop=
"groupInfo"
:labelCol=
"{ span: 3 }"
>
<a-textarea
v-model=
"form.groupInfo"
placeholder=
"请输入"
:auto-size=
"{ minRows: 3, maxRows: 5 }"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card
title=
"授权信息"
>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"授权日期"
prop=
"empowerType"
:labelCol=
"{ span: 3 }"
>
<a-radio-group
v-model=
"form.empowerType"
>
<a-radio
value=
"1"
>
永久
</a-radio>
<a-radio
value=
"2"
>
授权日期
</a-radio>
</a-radio-group>
</a-form-model-item>
</a-col>
<a-col
:span=
"21"
:offset=
"3"
v-if=
"form.empowerType === '2'"
>
<a-form-model-item
label=
""
prop=
"empowerDate"
>
<a-range-picker
v-model=
"form.empowerDate"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"授权物业数量"
prop=
"empowerPropertyNum"
:labelCol=
"{ span: 3 }"
>
<a-input-number
id=
"inputNumber"
v-model=
"form.empowerPropertyNum"
:min=
"1"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"收费标准"
prop=
"chargingStandardId"
:labelCol=
"{ span: 3 }"
>
<a-select
style=
"width: 120px"
v-model=
"form.chargingStandardId"
>
<a-select-option
value=
"lucy"
>
Lucy
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card
title=
"合同附件"
>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"合同附件"
prop=
"contractUrl"
:labelCol=
"{ span: 3 }"
>
<j-upload
v-model=
"form.contractUrl"
></j-upload>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
</a-form-model>
</a-modal>
</a-card>
</template>
<
script
>
// import { getPropertyListApi, getSystemSubmenu, getSystemSubmenuBatch } from '@/api/api'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
import
PropertySettledModal
from
'./modules/PropertySettledModal'
import
JEllipsis
from
'@/components/jeecg/JEllipsis'
import
JImageUpload
from
'@/components/jeecg/JImageUpload'
import
JUpload
from
'@/components/jeecg/JUpload'
import
{
filterDictTextByCache
}
from
'@/components/dict/JDictSelectUtil'
const
columns
=
[
{
title
:
'物业名称'
,
dataIndex
:
'propertyName'
,
key
:
'propertyName'
},
{
title
:
'统一社会信用代码'
,
dataIndex
:
'creditCode'
,
key
:
'creditCode'
},
{
title
:
'联系人'
,
dataIndex
:
'contactName'
,
key
:
'contactName'
},
{
title
:
'电话'
,
dataIndex
:
'contactPhone'
,
key
:
'contactPhone'
},
{
title
:
'授权时间'
,
dataIndex
:
'empowerDate'
,
key
:
'empowerDate'
},
{
title
:
'授权物业数量'
,
dataIndex
:
'ontrialCommunityNum'
,
key
:
'ontrialCommunityNum'
},
{
title
:
'审核状态'
,
dataIndex
:
'auditStatus'
,
key
:
'auditStatus'
,
customRender
:
function
(
text
)
{
return
filterDictTextByCache
(
'auditStatus'
,
text
);
}
},
{
title
:
'到期提示'
,
dataIndex
:
'ontrialEndDate'
,
key
:
'ontrialEndDate'
},
{
title
:
'冻结/解冻'
,
dataIndex
:
'refuseDesc'
,
key
:
'refuseDesc'
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
scopedSlots
:
{
customRender
:
'action'
},
align
:
'center'
,
width
:
150
}
]
export
default
{
name
:
'PermissionListAsync'
,
mixins
:
[
JeecgListMixin
],
components
:
{
PropertySettledModal
,
JEllipsis
,
JUpload
,
JImageUpload
},
data
()
{
return
{
// 表头
columns
:
columns
,
loading
:
false
,
pagination
:
{
total
:
0
,
current
:
1
,
pageSize
:
10
,
showSizeChanger
:
true
},
url
:
{
list
:
"/property-community/property/propertySettled/list"
,
delete
:
'/property-community/sys/permission/delete'
,
deleteBatch
:
'/property-community/sys/permission/deleteBatch'
},
modalTitle
:
'新增'
,
visible
:
false
,
labelCol
:
{
span
:
6
},
wrapperCol
:
{
span
:
14
},
other
:
''
,
form
:
{
propertyName
:
''
,
propertyCode
:
''
,
legalName
:
''
,
registCapital
:
undefined
,
contactName
:
''
,
contactPhone
:
''
,
registAdress
:
''
,
adressInfo
:
''
,
logoUrl
:
[],
groupInfo
:
''
,
empowerType
:
'1'
,
empowerDate
:
[],
empowerPropertyNum
:
undefined
,
chargingStandardId
:
''
,
contractUrl
:
[]
},
rules
:
{
propertyName
:
[{
required
:
true
,
message
:
'请输入物业集团名称'
,
trigger
:
'blur'
}],
propertyCode
:
[{
required
:
true
,
message
:
'请输入统一信用代码'
,
trigger
:
'blur'
}],
legalName
:
[{
required
:
true
,
message
:
'请输入法人代表'
,
trigger
:
'blur'
}],
registCapital
:
[{
required
:
true
,
message
:
'请输入注册资本'
,
trigger
:
'blur'
}],
contactName
:
[{
required
:
true
,
message
:
'请输入联系人'
,
trigger
:
'blur'
}],
contactPhone
:
[{
required
:
true
,
message
:
'请输入联系人电话'
,
trigger
:
'blur'
}],
registAdress
:
[{
required
:
true
,
message
:
'请选择注册地址'
,
trigger
:
'change'
}],
adressInfo
:
[{
required
:
true
,
message
:
'请输入详细地址'
,
trigger
:
'blur'
}],
logoUrl
:
[{
required
:
true
,
message
:
'请上传集团LOGO'
,
trigger
:
'change'
}],
empowerPropertyNum
:
[{
required
:
true
,
message
:
'请输入授权物业数量'
,
trigger
:
'blur'
}],
chargingStandardId
:
[{
required
:
true
,
message
:
'请选择收费标准'
,
trigger
:
'change'
}],
contractUrl
:
[{
required
:
true
,
message
:
'请上传合同附件'
,
trigger
:
'change'
}]
},
uploadDisabled
:
false
}
},
methods
:
{
onLoadDetail
(
record
,
type
)
{
record
[
'registAdress'
]
=
[
record
.
provinceCode
,
record
.
cityCode
,
record
.
countyCode
]
if
(
type
===
'edit'
)
{
this
.
handleEdit
(
record
)
}
else
{
this
.
handleDetail
(
record
)
}
},
onSubmit
()
{
this
.
$refs
.
ruleForm
.
validate
(
valid
=>
{
if
(
valid
)
{
alert
(
'submit!'
);
}
else
{
console
.
log
(
'error submit!!'
);
return
false
;
}
});
},
close
()
{
this
.
visible
=
false
},
onSubmit
()
{
this
.
$refs
.
ruleForm
.
validate
(
valid
=>
{
if
(
valid
)
{
alert
(
'submit!'
);
}
else
{
console
.
log
(
'error submit!!'
);
return
false
;
}
});
},
resetForm
()
{
this
.
$refs
.
ruleForm
.
resetFields
();
},
}
}
</
script
>
<
style
scoped
>
@import
'~@assets/less/common.less'
;
</
style
>
\ No newline at end of file
src/views/settled/modules/PropertySettledForm.vue
deleted
100644 → 0
浏览文件 @
88901a12
<
template
>
<a-spin
:spinning=
"confirmLoading"
>
<j-form-container
:disabled=
"formDisabled"
>
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
slot=
"detail"
>
<a-card
title=
"物业集团基本信息"
>
<a-row>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"物业集团名称"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"propertyName"
>
<a-input
v-model=
"model.propertyName"
placeholder=
"请输入物业集团名称"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"统一信用代码"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"creditCode"
>
<a-input
v-model=
"model.creditCode"
placeholder=
"请输入统一信用代码"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"法人姓名"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"legalName"
>
<a-input
v-model=
"model.legalName"
placeholder=
"请输入法人姓名"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"注册资本"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"registCapital"
>
<a-input-number
v-model=
"model.registCapital"
:min=
"1"
placeholder=
"请输入注册资本"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"联系人"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"contactName"
>
<a-input
v-model=
"model.contactName"
placeholder=
"请输入联系人"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"联系人电话"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"contactPhone"
>
<a-input
v-model=
"model.contactPhone"
placeholder=
"请输入联系人电话"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"注册地址"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"registAdress"
>
<area-cascader
v-model=
"model.registAdress"
:data=
"pcaa"
:level=
"1"
type=
"all"
@
change=
"addressChange"
style=
"width:100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"详细地址"
:labelCol=
"
{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="addressInfo">
<a-input
v-model=
"model.addressInfo"
placeholder=
"请输入详细地址"
@
blur=
"addressBlur"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
""
:offset=
"3"
:pull=
"3"
:labelCol=
"
{ xs:{ span: 24 }, sm:{ span: 3 } }">
<div
class=
"hhh"
>
<div
id=
"container"
style=
"width:100%;height:200px"
></div>
</div>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"集团logo"
:labelCol=
"
{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="logoUrl">
<j-image-upload
bizPath=
"scott/pic"
v-model=
"model.logoUrl"
></j-image-upload>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"集团介绍"
:labelCol=
"
{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="groupInfo">
<a-textarea
v-model=
"model.groupInfo"
placeholder=
"请输入集团介绍"
:auto-size=
"
{ minRows: 3, maxRows: 5 }" />
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card
title=
"授权信息"
>
<a-row>
<!--
<a-col
:span=
"12"
>
<a-form-model-item
label=
"试用日期"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"empowerType"
>
<a-range-picker
v-model=
"model.empowerDate"
placeholder=
"请选择试用日期"
/>
</a-form-model-item>
</a-col>
-->
<a-col
:span=
"12"
>
<a-form-model-item
label=
"授权开始日期"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"empowerBeginDate"
>
<j-date
placeholder=
"请选择授权开始日期"
v-model=
"model.empowerBeginDate"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"授权结束日期"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"empowerEndDate"
>
<j-date
placeholder=
"请选择授权结束日期"
v-model=
"model.empowerEndDate"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"试用小区数量"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ontrialCommunityNum"
>
<a-input-number
v-model=
"model.ontrialCommunityNum"
placeholder=
"请输入试用小区数量"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"收费标准"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"chargingStandardId"
>
<a-select
v-model=
"model.chargingStandardId"
placeholder=
"请选择收费标准"
style=
"width: 100%"
>
<a-select-option
v-for=
"item in costList"
:key=
"item.id"
:value=
"item.id"
>
{{
item
.
chargingName
}}
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"管理员账户"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"adminLoginName"
>
<a-input
v-model=
"model.adminLoginName"
placeholder=
"请输入管理员账户"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"12"
>
<a-form-model-item
label=
"管理员密码"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"adminPassword"
>
<a-input
v-model=
"model.adminPassword"
placeholder=
"请输入管理员密码"
></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card
title=
"合同附件"
>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"合同附件"
:labelCol=
"
{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol" prop="contractUrl">
<j-upload
v-model=
"model.contractUrl"
></j-upload>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
</a-form-model>
</j-form-container>
</a-spin>
</
template
>
<
script
>
const
mapZoom
=
[
5
,
8
,
10
,
12
]
let
timer
=
null
;
import
{
httpAction
,
getAction
}
from
'@/api/manage'
import
{
validateDuplicateValue
}
from
'@/utils/util'
export
default
{
name
:
'PropertySettledForm'
,
props
:
{
//表单禁用
disabled
:
{
type
:
Boolean
,
default
:
false
,
required
:
false
}
},
data
()
{
return
{
pcaa
:
this
.
$Jpcaa
,
model
:{
propertyName
:
''
,
creditCode
:
''
,
legalName
:
''
,
registCapital
:
undefined
,
contactName
:
''
,
contactPhone
:
''
,
registAdress
:
[],
provinceName
:
''
,
provinceCode
:
''
,
cityName
:
''
,
cityCode
:
''
,
countyName
:
''
,
countyCode
:
''
,
addressInfo
:
''
,
logoUrl
:
''
,
groupInfo
:
''
,
empowerBeginDate
:
''
,
empowerEndDate
:
''
,
ontrialCommunityNum
:
undefined
,
chargingStandardId
:
''
,
contractUrl
:
''
,
adminLoginName
:
''
,
adminPassword
:
'123456'
,
longitude
:
''
,
latitude
:
''
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
6
},
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
validatorRules
:
{
propertyName
:
[{
required
:
true
,
message
:
'请输入物业集团名称'
,
trigger
:
'blur'
}],
creditCode
:
[{
required
:
true
,
message
:
'请输入统一信用代码'
,
trigger
:
'blur'
}],
legalName
:
[{
required
:
true
,
message
:
'请输入法人代表'
,
trigger
:
'blur'
}],
registCapital
:
[{
required
:
true
,
message
:
'请输入注册资本'
,
trigger
:
'blur'
}],
contactName
:
[{
required
:
true
,
message
:
'请输入联系人'
,
trigger
:
'blur'
}],
contactPhone
:
[{
required
:
true
,
message
:
'请输入联系人电话'
,
trigger
:
'blur'
}],
registAdress
:
[{
required
:
true
,
message
:
'请选择注册地址'
,
trigger
:
'change'
}],
addressInfo
:
[{
required
:
true
,
message
:
'请输入详细地址'
,
trigger
:
'blur'
}],
logoUrl
:
[{
required
:
true
,
message
:
'请上传集团LOGO'
,
trigger
:
'change'
}],
chargingStandardId
:
[{
required
:
true
,
message
:
'请选择收费标准'
,
trigger
:
'change'
}],
adminLoginName
:
[{
required
:
true
,
message
:
'请输入管理员账号'
,
trigger
:
'blur'
}],
adminPassword
:
[{
required
:
true
,
message
:
'请输入管理员密码'
,
trigger
:
'blur'
}],
contractUrl
:
[{
required
:
true
,
message
:
'请上传合同附件'
,
trigger
:
'change'
}]
},
url
:
{
add
:
"/property-community/property/propertySettled/add"
,
edit
:
"/property-community/property/propertySettled/edit"
,
queryById
:
"/property-community/property/propertySettled/queryById"
},
costList
:
[],
mapRef
:
null
,
}
},
computed
:
{
formDisabled
(){
return
this
.
disabled
},
},
watch
:
{
'model.contactPhone'
:
{
handler
(
newV
,
oldV
)
{
this
.
model
.
adminLoginName
=
newV
}
},
'model.addressInfo'
:
{
handler
(
newV
)
{
if
(
newV
)
{
clearTimeout
(
timer
)
timer
=
setTimeout
(()
=>
{
// this.getLongitude(this.model.categoryCodes[0], this.model.categoryCodes.join('') + newV, mapZoom[3])
},
1000
)
}
}
}
},
created
()
{
//备份model原始值
this
.
modelDefault
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
model
));
this
.
onLoadCostList
()
},
mounted
()
{
this
.
mapRef
=
new
BMapGL
.
Map
(
"container"
);
// 创建地图实例
var
point
=
new
BMapGL
.
Point
(
108.5525
,
34.3237
);
// 创建点坐标
this
.
mapRef
.
centerAndZoom
(
point
,
mapZoom
[
0
]);
// var zoomCtrl = new BMapGL.ZoomControl(); // 添加缩放控件
// this.mapRef.addControl(zoomCtrl);
this
.
mapRef
.
enableScrollWheelZoom
(
true
);
//开启鼠标滚轮缩放
this
.
mapRef
.
addEventListener
(
'click'
,
e
=>
this
.
getAddress
(
e
));
},
methods
:
{
async
onLoadCostList
()
{
let
data
=
await
getCostListApi
({
pageNo
:
1
,
pageSize
:
10
})
this
.
costList
=
data
.
result
.
records
},
add
()
{
this
.
edit
(
this
.
modelDefault
);
},
edit
(
record
)
{
this
.
model
=
Object
.
assign
({},
record
);
this
.
visible
=
true
;
},
addressChange
(
val
)
{
const
province
=
Object
.
keys
(
val
[
0
])[
0
]
const
city
=
Object
.
keys
(
val
[
1
])[
0
]
const
county
=
Object
.
keys
(
val
[
2
])[
0
]
this
.
model
.
provinceName
=
val
[
0
][
province
]
this
.
model
.
provinceCode
=
province
this
.
model
.
cityName
=
val
[
1
][
city
]
this
.
model
.
cityCode
=
city
this
.
model
.
countyName
=
val
[
2
][
county
]
this
.
model
.
countyCode
=
county
if
(
this
.
model
.
addressInfo
)
{
this
.
getLongitude
(
this
.
model
.
provinceName
,
(
this
.
model
.
provinceName
+
this
.
model
.
cityName
+
this
.
model
.
countyName
+
this
.
model
.
addressInfo
),
mapZoom
[
3
])
}
},
addressBlur
(
val
)
{
if
(
this
.
model
.
provinceName
)
{
this
.
getLongitude
(
this
.
model
.
provinceName
,
(
this
.
model
.
provinceName
+
this
.
model
.
cityName
+
this
.
model
.
countyName
+
val
.
target
.
value
),
mapZoom
[
3
])
}
},
getAddress
(
e
)
{
let
_this
=
this
;
// 创建地理编码实例
var
myGeo
=
new
BMapGL
.
Geocoder
();
// 根据坐标得到地址描述
myGeo
.
getLocation
(
new
BMapGL
.
Point
(
e
.
latlng
.
lng
,
e
.
latlng
.
lat
),
function
(
result
){
if
(
result
)
{
_this
.
mapRef
.
clearOverlays
();
_this
.
model
.
registAdress
=
[
result
.
addressComponents
.
province
,
result
.
addressComponents
.
city
,
result
.
addressComponents
.
district
]
_this
.
model
.
addressInfo
=
result
.
addressComponents
.
street
+
result
.
addressComponents
.
streetNumber
_this
.
model
.
longitude
=
result
.
point
.
lng
_this
.
model
.
latitude
=
result
.
point
.
lat
_this
.
positionMap
(
e
.
latlng
.
lng
,
e
.
latlng
.
lat
,
mapZoom
[
3
],
result
.
address
)
console
.
log
(
result
)
}
});
},
positionMap
(
mapCenterLng
,
mapCenterLat
,
mapzoom
,
address
)
{
var
point
=
new
BMapGL
.
Point
(
mapCenterLng
,
mapCenterLat
);
// 创建点坐标
this
.
mapRef
.
centerAndZoom
(
point
,
mapzoom
);
var
marker
=
new
BMapGL
.
Marker
(
point
,
{
title
:
address
});
// 创建标注
this
.
mapRef
.
addOverlay
(
marker
);
// 将标注添加到地图中
let
_this
=
this
;
// marker.addEventListener("click", function(){
var
label
=
new
BMapGL
.
Label
(
address
,
{
// 创建文本标注
position
:
point
,
// 设置标注的地理位置
offset
:
new
BMapGL
.
Size
(
0
,
-
55
)
// 设置标注的偏移量
})
_this
.
mapRef
.
addOverlay
(
label
);
// 将标注添加到地图中
label
.
setStyle
({
// 设置label的样式
color
:
'#333'
,
fontSize
:
'14px'
,
padding
:
'4px 10px'
,
border
:
'1px solid #1E90FF'
,
borderRadius
:
'4px'
,
transform
:
'translateX(-40%)'
})
// });
},
getLongitude
(
city
,
address
,
zoom
)
{
let
_this
=
this
var
myGeo
=
new
BMapGL
.
Geocoder
();
myGeo
.
getPoint
(
address
,
function
(
point
){
if
(
point
){
_this
.
mapRef
.
clearOverlays
();
_this
.
positionMap
(
point
.
lng
,
point
.
lat
,
zoom
,
address
)
}
else
{
console
.
log
(
'您选择的地址没有解析到结果!'
);
}
},
city
)
},
submitForm
()
{
const
that
=
this
;
// 触发表单验证
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
if
(
!
this
.
model
.
id
){
httpurl
+=
this
.
url
.
add
;
method
=
'post'
;
}
else
{
httpurl
+=
this
.
url
.
edit
;
method
=
'put'
;
}
this
.
model
.
registAdress
=
undefined
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'ok'
);
}
else
{
that
.
$message
.
warning
(
res
.
message
);
}
}).
finally
(()
=>
{
that
.
confirmLoading
=
false
;
})
}
})
},
},
beforeDestroy
()
{
clearTimeout
(
timer
)
this
.
mapRef
.
removeEventListener
(
'click'
,
e
=>
this
.
getAddress
(
e
));
}
}
</
script
>
\ No newline at end of file
src/views/settled/modules/PropertySettledModal.vue
deleted
100644 → 0
浏览文件 @
88901a12
<
template
>
<j-modal
:title=
"title"
:width=
"width"
:visible=
"visible"
switchFullscreen
@
ok=
"handleOk"
:okButtonProps=
"
{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-settled-form
ref=
"realForm"
@
ok=
"submitCallback"
:disabled=
"disableSubmit"
></property-settled-form>
</j-modal>
</
template
>
<
script
>
import
PropertySettledForm
from
'./PropertySettledForm'
export
default
{
name
:
'PropertySettledModal'
,
components
:
{
PropertySettledForm
},
data
()
{
return
{
title
:
''
,
width
:
'70%'
,
visible
:
false
,
disableSubmit
:
false
}
},
methods
:
{
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
})
},
close
()
{
this
.
$emit
(
'close'
);
this
.
visible
=
false
;
},
handleOk
()
{
this
.
$refs
.
realForm
.
submitForm
();
},
submitCallback
(){
this
.
$emit
(
'ok'
);
this
.
visible
=
false
;
},
handleCancel
()
{
this
.
close
()
}
}
}
</
script
>
\ No newline at end of file
src/views/settlement/reconciliation/reconciliationList.vue
浏览文件 @
ec807fc5
...
...
@@ -23,8 +23,11 @@
</a-form-item>
</a-col>
<a-col
:md=
"7"
:sm=
"10"
>
订单时间:
<a-range-picker
@
change=
"onChangeData"
/>
<a-form-item
label=
"订单时间:"
>
<a-date-picker
placeholder=
"订单时间"
valueFormat=
"YYYY-MM-DD 00:00:00"
v-model=
"queryParam.createTime"
></a-date-picker>
</a-form-item>
</a-col>
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"5"
:sm=
"24"
>
...
...
src/views/settlement/settlements/settlementList.vue
浏览文件 @
ec807fc5
...
...
@@ -18,8 +18,10 @@
</a-form-item>
</a-col>
<a-col
:md=
"7"
:sm=
"10"
>
订单时间:
<a-range-picker
@
change=
"onChangeData"
/>
<a-form-item
label=
"订单时间:"
>
<a-date-picker
placeholder=
"订单时间"
valueFormat=
"YYYY-MM-DD 00:00:00"
v-model=
"queryParam.createTime"
></a-date-picker>
</a-form-item>
</a-col>
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"5"
:sm=
"24"
>
...
...
src/views/statistical/IndexChart.vue
浏览文件 @
ec807fc5
<
template
>
<div
class=
"page-header-index-wide"
>
<div
class=
"query-box"
>
<a-
range
-picker
@
change=
"onChangeData"
/>
<a-
month
-picker
@
change=
"onChangeData"
/>
<a-button
type=
"primary"
@
click=
"searchQuery"
style=
"margin-left: 20px;"
>
查询
</a-button>
</div>
<div
class=
"data-box"
>
<div
class=
"statistics"
>
<p
style=
"color:#666;margin-bottom:5px;"
>
绑定
商铺
数量
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
100
</p>
<p
style=
"color:#666;margin-bottom:5px;"
>
绑定
小区
数量
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
{{
detail
.
bindComm
}}
</p>
</div>
<div
class=
"statistics"
>
<p
style=
"color:#666;margin-bottom:5px;"
>
平台总小区数量
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
100
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
{{
detail
.
bindCommunity
}}
</p>
</div>
<div
class=
"statistics"
>
<p
style=
"color:#666;margin-bottom:5px;"
>
平台总业主数量
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
100
</p>
</div>
<div
class=
"statistics"
>
<p
style=
"color:#666;margin-bottom:5px;"
>
合作伙伴分利
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
¥100.00
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
{{
detail
.
bindOwner
}}
</p>
</div>
<div
class=
"statistics"
>
<p
style=
"color:#666;margin-bottom:5px;"
>
新增订单数量
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
100
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
{{
detail
.
newOrderAmount
}}
</p>
</div>
<div
class=
"statistics"
>
<p
style=
"color:#666;margin-bottom:5px;"
>
总营收
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
¥
100.00
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
¥
{{
detail
.
totalMoney
}}
</p>
</div>
<div
class=
"statistics"
>
<p
style=
"color:#666;margin-bottom:5px;"
>
本月营收
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
¥
100.00
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
¥
{{
detail
.
monthMoney
}}
</p>
</div>
<div
class=
"statistics"
style=
"margin-right: 0;"
>
<p
style=
"color:#666;margin-bottom:5px;"
>
今日营收
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
¥
100.00
</p>
<p
style=
"margin-bottom:0;color:#333;font-size:24px;line-height:1;"
>
¥
{{
detail
.
todayMoney
}}
</p>
</div>
</div>
<a-row
:gutter=
"24"
>
<a-col
:sm=
"24"
:md=
"
12"
:xl=
"12
"
:style=
"
{ marginBottom: '20px' }">
<a-col
:sm=
"24"
:md=
"
24"
:xl=
"24
"
:style=
"
{ marginBottom: '20px' }">
<div
class=
"t-box"
>
<h3
class=
"box-title"
>
最新成交订单
</h3>
<div
class=
"order"
>
<div
class=
"order-title"
><span
style=
"width: 30%;"
>
订单编号
</span><span>
提交时间
</span><span>
用户账号
</span><span>
订单金额
</span></div>
<vue-seamless-scroll
:data=
"
listData
"
class=
"seamless-warp"
:class-option=
"defineScroll"
>
<div
v-for=
"(item, index) in
listData
"
:key=
"index"
class=
"item"
>
<vue-seamless-scroll
:data=
"
detail.shareOrder
"
class=
"seamless-warp"
:class-option=
"defineScroll"
>
<div
v-for=
"(item, index) in
detail.shareOrder
"
:key=
"index"
class=
"item"
>
<span
style=
"width: 30%;"
>
{{
item
.
num
}}
</span><span>
{{
item
.
date
}}
</span><span>
{{
item
.
account
}}
</span><span>
{{
item
.
amount
}}
</span>
style=
"width: 30%;"
>
{{
item
.
order_num
}}
</span><span>
{{
item
.
create_time
}}
</span><span>
{{
item
.
buyer_name
}}
</span><span>
{{
item
.
share_money
}}
</span>
</div>
</vue-seamless-scroll>
</div>
</div>
</a-col>
<a-col
:sm=
"24"
:md=
"12"
:xl=
"12"
:style=
"
{ marginBottom: '20px' }">
<div
class=
"t-box"
>
<h3
class=
"box-title"
>
月成交金额
</h3>
<line-chart-multid
:dataSource=
"dayData"
:fields=
"dayFields"
style=
"padding: 0;"
/>
</div>
</a-col>
</a-row>
<a-row
:gutter=
"24"
>
<a-col
:sm=
"24"
:md=
"12"
:xl=
"12"
:style=
"
{ marginBottom: '20px' }">
...
...
@@ -75,23 +65,7 @@
</a-col>
<a-col
:sm=
"24"
:md=
"12"
:xl=
"12"
:style=
"
{ marginBottom: '20px' }">
<div
class=
"t-box"
>
<h3
class=
"box-title"
>
入驻商铺新增数量
</h3>
<bar
:dataSource=
"barData"
style=
"padding: 0;"
/>
</div>
</a-col>
</a-row>
<a-row
:gutter=
"24"
>
<a-col
:sm=
"24"
:md=
"12"
:xl=
"12"
:style=
"
{ marginBottom: '20px' }">
<div
class=
"t-box"
>
<h3
class=
"box-title"
>
巡报订单数量
</h3>
<div>
<line-chart-multid
:dataSource=
"dayData1"
:fields=
"dayFields1"
style=
"padding: 0;"
/>
</div>
</div>
</a-col>
<a-col
:sm=
"24"
:md=
"12"
:xl=
"12"
:style=
"
{ marginBottom: '20px' }">
<div
class=
"t-box"
>
<h3
class=
"box-title"
>
巡报订单金额
</h3>
<h3
class=
"box-title"
>
月成交金额
</h3>
<line-chart-multid
:dataSource=
"dayData1"
:fields=
"dayFields1"
style=
"padding: 0;"
/>
</div>
</a-col>
...
...
@@ -103,7 +77,8 @@
import
Bar
from
'@/components/chart/Bar'
import
LineChartMultid
from
'@/components/chart/LineChartMultid'
import
vueSeamlessScroll
from
'vue-seamless-scroll'
import
{
getDataStatisticsApi
,
getLoginfo
,
getVisitInfo
,
auditPropertyApi
}
from
'@/api/api'
import
{
getAction
}
from
'@api/manage'
export
default
{
name
:
'statistical'
,
components
:
{
...
...
@@ -113,100 +88,20 @@ export default {
},
data
()
{
return
{
detail
:{},
time
:
''
,
loading
:
true
,
payData
:
[],
barData
:
[],
dayFields
:
[
'月成交订单数量'
],
dayData
:
[
{
type
:
'1月'
,
月成交订单数量
:
71
},
{
type
:
'2月'
,
月成交订单数量
:
61.9
},
{
type
:
'3月'
,
月成交订单数量
:
19.5
},
{
type
:
'4月'
,
月成交订单数量
:
141.5
},
{
type
:
'5月'
,
月成交订单数量
:
118.4
},
{
type
:
'6月'
,
月成交订单数量
:
211.5
},
{
type
:
'7月'
,
月成交订单数量
:
251.2
},
{
type
:
'8月'
,
月成交订单数量
:
216.5
},
{
type
:
'9月'
,
月成交订单数量
:
213.3
},
{
type
:
'10月'
,
月成交订单数量
:
181.3
},
{
type
:
'11月'
,
月成交订单数量
:
131.9
},
{
type
:
'12月'
,
月成交订单数量
:
91.6
},
],
listData
:
[
{
num
:
'201707196398345'
,
date
:
'2023-07-19'
,
account
:
'18000000000'
,
amount
:
'¥200.00'
,
},
{
num
:
'201707196398345'
,
date
:
'2023-07-19'
,
account
:
'18000000000'
,
amount
:
'¥200.00'
,
},
{
num
:
'201707196398345'
,
date
:
'2023-07-19'
,
account
:
'18000000000'
,
amount
:
'¥200.00'
,
},
{
num
:
'201707196398345'
,
date
:
'2023-07-19'
,
account
:
'18000000000'
,
amount
:
'¥200.00'
,
},
{
num
:
'201707196398345'
,
date
:
'2023-07-19'
,
account
:
'18000000000'
,
amount
:
'¥200.00'
,
},
{
num
:
'201707196398345'
,
date
:
'2023-07-19'
,
account
:
'18000000000'
,
amount
:
'¥200.00'
,
},
{
num
:
'201707196398345'
,
date
:
'2023-07-19'
,
account
:
'18000000000'
,
amount
:
'¥200.00'
,
},
{
num
:
'201707196398345'
,
date
:
'2023-07-19'
,
account
:
'18000000000'
,
amount
:
'¥200.00'
,
},
],
dayFields1
:
[
'巡报订单数量'
],
dayFields2
:
[
'巡报订单金额'
],
dayData1
:
[
{
type
:
'7月1日'
,
巡报订单数量
:
171
},
{
type
:
'7月10日'
,
巡报订单数量
:
161.9
},
{
type
:
'7月20日'
,
巡报订单数量
:
119.5
},
{
type
:
'7月30日'
,
巡报订单数量
:
141.5
},
{
type
:
'8月10日'
,
巡报订单数量
:
118.4
},
{
type
:
'8月20日'
,
巡报订单数量
:
211.5
},
{
type
:
'8月30日'
,
巡报订单数量
:
251.2
},
{
type
:
'9月10日'
,
巡报订单数量
:
216.5
},
{
type
:
'9月20日'
,
巡报订单数量
:
213.3
},
{
type
:
'9月30日'
,
巡报订单数量
:
81.3
},
],
dayData
:
[],
dayFields1
:
[
'月成订单交金额'
],
dayData1
:
[],
}
},
created
()
{
this
.
searchQuery
()
setTimeout
(()
=>
{
this
.
loading
=
!
this
.
loading
},
1000
)
for
(
let
i
=
0
;
i
<
12
;
i
+=
1
)
{
this
.
barData
.
push
({
x
:
`
${
i
+
1
}
月`
,
y
:
i
+
10
,
})
}
},
computed
:
{
defineScroll
()
{
...
...
@@ -224,15 +119,37 @@ export default {
},
methods
:
{
onChangeData
(
date
,
dateString
)
{
if
(
dateString
.
length
>
0
)
{
this
.
queryParam
.
createTime_begin
=
dateString
[
0
]
this
.
queryParam
.
createTime_end
=
dateString
[
1
]
}
else
{
this
.
queryParam
.
createTime_begin
=
''
this
.
queryParam
.
createTime_end
=
''
if
(
dateString
){
this
.
time
=
dateString
.
slice
(
0
,
4
)
+
dateString
.
slice
(
5
,
7
)
}
else
{
this
.
time
=
''
}
},
insertStr
(
soure
,
start
,
newStr
){
return
soure
.
slice
(
0
,
start
)
+
newStr
+
soure
.
slice
(
start
);
},
searchQuery
()
{
getAction
(
'/property-community/order/paymentOrder/shareBoard?platformType=shop&date='
+
this
.
time
,
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
detail
=
res
.
result
this
.
dayData
=
[]
this
.
dayData1
=
[]
res
.
result
.
shareByMonth
.
map
((
item
)
=>
{
this
.
dayData1
.
push
({
type
:
this
.
insertStr
(
item
.
MONTH
,
4
,
'-'
),
月成订单交金额
:
'¥'
+
item
.
shareMoney
})
})
res
.
result
.
orderCountByMonth
.
map
((
item
)
=>
{
this
.
dayData
.
push
({
type
:
this
.
insertStr
(
item
.
MONTH
,
4
,
'-'
),
月成交订单数量
:
item
.
orderCount
})
})
}
})
},
searchQuery
()
{},
},
}
</
script
>
...
...
@@ -253,7 +170,7 @@ export default {
}
.statistics {
background: #fff;
width: 1
1
.5%;
width: 1
3
.5%;
box-sizing: border-box;
border: 1px solid #e0dfdf;
padding: 25px 10px;
...
...
vue.config.js
浏览文件 @
ec807fc5
...
...
@@ -87,6 +87,7 @@ module.exports = {
devServer
:
{
port
:
3000
,
disableHostCheck
:
true
,
// hot: true,
// disableHostCheck: true,
// overlay: {
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论