提交 cb4d61a7 authored 作者: 宋雄's avatar 宋雄

二期功能提交

上级 1997d542
NODE_ENV=development
VUE_APP_API_BASE_URL='http://192.168.0.100:9999'
# VUE_APP_API_BASE_URL='http://192.168.0.104:9999'
# VUE_APP_API_BASE_URL='http://192.168.0.100:9999'
VUE_APP_API_BASE_URL='http://220.203.25.212:9998'
# VUE_APP_API_BASE_URL='http://220.203.25.212:9999'
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
......
......@@ -6550,6 +6550,11 @@
"resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
},
"comutils": {
"version": "1.1.19",
"resolved": "https://registry.npmjs.org/comutils/-/comutils-1.1.19.tgz",
"integrity": "sha512-JxXB67juILiwhdLwOsYyjUqwWEhHdObI0EClOPk+JDtEuTbac59s0pxGpfCBnNNQ5JommifmcMGneW/4Cg7YWw=="
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
......@@ -17920,6 +17925,14 @@
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz",
"integrity": "sha512-SdKRBeoXUjaZ9R/8AyxsdTqkOfMcI5tWxPZOUX5Ie1BTL5rPSZ0O++pbiZCeYeythiZIdLEfkDiQPKIaWk5hDg=="
},
"vue-seamless-scroll": {
"version": "1.1.23",
"resolved": "https://registry.npmjs.org/vue-seamless-scroll/-/vue-seamless-scroll-1.1.23.tgz",
"integrity": "sha512-HBjUub8WwsKJzbFCrwKPDrZn4e+SSbkKgwWtjKtfLwesiFGwSsVxP44/Z6d3kpXy94qIFOiflJH6l0/9pj7SGA==",
"requires": {
"comutils": "^1.1.9"
}
},
"vue-splitpane": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/vue-splitpane/-/vue-splitpane-1.0.6.tgz",
......
......@@ -45,6 +45,7 @@
"vue-photo-preview": "^1.1.3",
"vue-print-nb-jeecg": "^1.0.12",
"vue-router": "^3.0.1",
"vue-seamless-scroll": "^1.1.23",
"vue-splitpane": "^1.0.4",
"vuedraggable": "^2.20.0",
"vuex": "^3.1.0",
......
......@@ -6,6 +6,7 @@ export const loginUrlCheck = (params)=>postAction("/sys/loginUrlCheck",params);
// 首页统计
const homeDataStatistics = (params)=>getAction("/community/homepage/dataStatistics",params);
const companyNoticeList = (params)=>getAction("/property-company/notice/companyNotice/list",params);
const shareBoardApi = (params)=>getAction("/property-community/order/paymentOrder/shareBoard",params);
// 报表统计
const propertyFeeStatistics = (params)=>getAction("/property-community/payment/communityPayment/propertyFeeStatistics",params);
......@@ -115,7 +116,14 @@ const getDetailReconciliationApi = (params)=>getAction("/property-community/prop
const getAccountListByIdApi = (params)=>getAction("/property-community/property/communityReconciliation/getAccountListById",params);
const communityAuditAccountPageApi = (params)=>postAction("/property-community/property/communityReconciliation/communityAudit",params);
const getCommunityRecordListApi = (params)=>getAction("/property-central/property/auditRecord/getRecordList",params);
const communitySubCompanyApi = (params)=>postAction("/property-community/property/communityReconciliation/communitySubCompany",params);
const communitySubCompanyApi = (params)=>getAction("/property-community/property/communityReconciliation/communitySubCompany",params);
// 分利规则管理
const getRuleDayDetailApi = (params)=>getAction("/property-central/sharerule/settlementSet/queryById?id=1",params);
// 分利对账管理
const getshareBenefitApi = (params)=>getAction("/property-central/partners/shareBenefit/queryById",params);
// 分利对账结算
const getshareBalanceApi = (params)=>getAction("/property-central/partners/shareBalance/queryById",params);
//数据字典
const addDict = (params)=>postAction("/sys/dict/add",params);
......@@ -164,6 +172,7 @@ export const transitRESTful = {
export {
homeDataStatistics,
companyNoticeList,
shareBoardApi,
propertyFeeStatistics,
paymentStatistics,
repairStatistics,
......@@ -260,7 +269,10 @@ export {
editOwnerLabelApi,
setCommunityOwnerLabelApi,
geQueryByOwnerIdApi,
geCommunityDeleteApi
geCommunityDeleteApi,
getRuleDayDetailApi,
getshareBenefitApi,
getshareBalanceApi
}
......
......@@ -100,6 +100,21 @@ export const COMPANY_AUDIT_STATUS = [
{label: '物业审核驳回', value: 'companyRefuse'}
]
// 分利对账审核状态
export const FENLICENTRAL_AUDIT_STATUS = [
{label: '未对账', value: '1'},
{label: '对账待审核', value: '2'},
{label: '对账完成', value: '3'},
{label: '对账拒绝', value: '4'}
]
// 分利对账結算状态
export const BALANCE_STATUS = [
{label: '结算待审核', value: '2'},
{label: '已结算', value: '3'},
{label: '结算驳回', value: '4'}
]
/**
* 翻译字段值对应的文本
* @param children
......@@ -109,6 +124,6 @@ export function filterDictTextByStatic(dictList, value) {
if(!dictList || dictList.length === 0){
return;
}
let row = dictList.find(item=>item.value === value)
let row = dictList.find(item=>item.value == value)
return row ? row.label : ''
}
\ No newline at end of file
<template>
<div class="page-header-index-wide">
<div class="query-box">
<a-month-picker placeholder="选择日期" @change="onChange" />
<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;">{{data.bindShops || 0}}</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;">{{data.bindCommunity || 0}}</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;">{{data.bindOwner || 0}}</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;">¥{{data.partnerShare || 0}}</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;">{{data.newOrderAmount || 0}}</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;">¥{{data.totalMoney || 0}}</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;">¥{{data.monthMoney || 0}}</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;">¥{{data.todayMoney || 0}}</p>
</div>
</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 class="order">
<div class="order-title">
<span style="width: 30%;">订单编号</span>
<span>提交时间</span><span>买家名称</span>
<span>订单金额</span>
</div>
<vue-seamless-scroll :data="data.shareOrder" class="seamless-warp" :class-option="defineScroll">
<div v-for="(item, index) in data.shareOrder" :key="index" class="item">
<span style="width: 30%;">{{ item.order_num }}</span>
<span>{{ item.create_time }}</span>
<span>{{ item.buyer_name }}</span>
<span>¥{{ item.total_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="dataList1" :fields="dayFields1" 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="dataList2" :fields="dayFields2" 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>
<bar :dataSource="dataList3" 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="dataList4" :fields="dayFields4" 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="dataList5" :fields="dayFields5" style="padding: 0;" />
</div>
</a-col>
</a-row>
</div>
</template>
<script>
import Bar from '@/components/chart/Bar'
import LineChartMultid from '@/components/chart/LineChartMultid'
import vueSeamlessScroll from 'vue-seamless-scroll'
import { shareBoardApi } from '@/api/api'
export default {
name: 'statistical',
components: {
Bar,
LineChartMultid,
vueSeamlessScroll
},
data() {
return {
loading: true,
time: '',
data: {},
dayFields1: ['月成交金额'],
dataList1: [],
dayFields2: ['月成交订单数量'],
dataList2: [],
dataList3: [],
dayFields4: ['巡报订单数量'],
dataList4: [],
dayFields5: ['巡报订单金额'],
dataList5: [],
}
},
created() {
setTimeout(() => {
this.loading = !this.loading
}, 1000)
this.getDataStatistics()
},
computed: {
defineScroll() {
return {
data: {},
step: 0.5, // 数值越大速度滚动越快
limitMoveNum: 5, // 开始无缝滚动的数据量 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)
}
},
},
methods: {
async getDataStatistics() {
let { result } = await shareBoardApi({ platformType: 'community', date: this.time })
if (result) {
this.data = result
this.dataList1 =
result.shareByMonth.map((item) => {
return {
type: item.MONTH,
月成交金额: item.shareMoney,
}
}) || []
this.dataList2 =
result.orderCountByMonth.map((item) => {
return {
type: item.MONTH,
月成交订单数量: item.orderCount,
}
}) || []
this.dataList3 =
result.shopCountByMonth.map((item) => {
return {
x: item.MONTH,
y: item.shopCount,
}
}) || []
this.dataList4 =
result.shareList.map((item) => {
return {
type: item.st_date_day,
巡报订单数量: item.order_num,
}
}) || []
this.dataList5 =
result.shareList.map((item) => {
return {
type: item.st_date_day,
巡报订单金额: item.share_money,
}
}) || []
}
},
onChange(date, dateString) {
if (dateString) {
this.time = dateString.replace('-', '')
}else{
this.time = ''
this.getDataStatistics()
}
},
searchQuery() {
this.getDataStatistics()
},
},
}
</script>
<style lang="less" scoped>
.page-header-index-wide {
padding-left: 10px;
.query-box {
background: #fff;
padding: 20px;
margin-bottom: 15px;
display: flex;
justify-content: flex-end;
}
.data-box {
display: flex;
margin-bottom: 15px;
justify-content: space-between;
}
.statistics {
background: #fff;
width: 16%;
box-sizing: border-box;
border: 1px solid #e0dfdf;
padding: 25px 10px;
max-height: 100px;
text-align: center;
}
}
.t-box {
background: #fff;
padding: 15px;
border: 1px solid #e0dfdf;
height: 340px;
}
.box-title {
font-weight: bold;
margin-bottom: 15px;
display: inline-block;
padding-left: 10px;
border-left: 3px solid #1890ff;
height: 20px;
line-height: 20px;
}
.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 {
height: 40px;
line-height: 40px;
display: flex;
span {
width: 25%;
border-right: 1px solid #e8e8e8;
//border-top: 1px solid #e8e8e8;
border-bottom: 1px solid #e8e8e8;
text-align: center;
overflow: hidden;
}
}
}
}
.seamless-warp {
height: 220px;
overflow: hidden;
}
</style>
<template>
<a-spin :spinning="confirmLoading">
<div class="title-top">
<h3>详情</h3>
<div class="button">
<a-button @click="onCancel">返回</a-button>
<!-- <a-button type="danger" @click="onExamine(2)" v-if="pageType == '2'">审核驳回</a-button>
<a-button type="primary" @click="onExamine(1)" v-if="pageType == '2'">审核通过</a-button> -->
</div>
</div>
<j-form-container :disabled="true">
<a-form-model ref="form" :model="model" slot="detail">
<a-card title="基本信息">
<a-row>
<a-col :span="12">
<a-form-model-item label="订单编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="id">
<a-input v-model="model.id" placeholder="请输入订单编号"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.createTime" placeholder="请输入提交时间"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="账户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="buyerName">
<a-input v-model="model.buyerName" placeholder="请输入账户"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="提交人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createBy">
<a-input v-model="model.createBy" placeholder="请输入提交人"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalMoney">
<a-input-number v-model="model.totalMoney" :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="payWay">
<a-input v-model="model.payWay" placeholder="请输入支付方式"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单来源" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderSourceName">
<a-input v-model="model.orderSourceName" placeholder="请输入订单来源"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="订单状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reconciliationStatusName">
<a-input v-model="model.reconciliationStatusName" placeholder="请输入订单状态"></a-input>
</a-form-model-item>
</a-col>
<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="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="shopName">
<a-input v-model="model.shopName" placeholder="请输入商铺"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="合作伙伴" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partnersName">
<a-input v-model="model.partnersName" placeholder="请输入所属小区"></a-input>
</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="remarks">
<a-input v-model="model.remarks" placeholder="请输入备注"></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-card>
<a-card title="操作信息">
<a-row>
<div>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="false" class="j-table-force-nowrap">
<span slot="balanceStatus">已付款</span>
</a-table>
</div>
</a-row>
</a-card>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { getshareBenefitApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage'
import { filterDictTextByStatic, FENLICENTRAL_AUDIT_STATUS } from '@/assets/static.js'
const columns = [
{
title: '操作者',
dataIndex: 'createBy',
key: 'createBy',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, text)
}
},
{
title: '付款状态',
dataIndex: 'balanceStatus',
key: 'balanceStatus',
align: 'center',
scopedSlots: { customRender: 'balanceStatus' }
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
}
]
export default {
name: 'PropertySettledForm',
inject: ['closeCurrent'],
data() {
return {
// title: '',
// pageType: '',
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
columns: columns,
dataSource: []
}
},
methods: {
async getPageDetail() {
let { result } = await getshareBenefitApi({ id: this.$route.query.id })
result.shareBenefit['orderSourceName'] = result.shareBenefit.orderSource === 'miniapp' ? '小程序' : 'pc'
result.shareBenefit['reconciliationStatusName'] = filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, result.shareBenefit.reconciliationStatus)
this.model = {...result.shareBenefit}
this.dataSource = [...result.list]
},
onCancel() {
this.closeCurrent()
}
},
mounted() {
// this.pageType = this.$route.query.type
// if (this.$route.query.type == '1') {
// this.title = '详情'
// } else {
// this.title = '审核'
// }
if (this.$route.query.id) {
this.getPageDetail()
}
}
}
</script>
<style lang="less" scoped>
.title-top {
background: #fff;
padding: 0 25px;
line-height: 50px;
height: 50px;
margin-bottom: 5px;
h3 {
font-weight: bold;
display: inline-block;
}
.button {
float: right;
.ant-btn {
margin-left: 15px;
}
}
}
</style>
<style>
.area-select {
width: 100% !important;
}
</style>
\ No newline at end of file
<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.orderNum"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="状态">
<a-select style="width: 100%" v-model="queryParam.chargeTypeId" placeholder="请选择状态">
<a-select-option v-for="item in auditList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="提交开始时间">
<a-date-picker placeholder="提交开始时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_begin"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="提交结束时间">
<a-date-picker placeholder="提交结束时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_end"></a-date-picker>
</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>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<!-- <i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a> -->
以下账单,展示 <span style="color:red">{{showDay}}</span> 天前的账单金额
</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"
>
<span slot="orderSource">小程序</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(record.id)">详情</a>
<template v-if="record.isShow === '1' && record.reconciliationStatus === 1 || record.reconciliationStatus === 4">
<a-divider type="vertical" />
<a href="javascript:;" @click="handleEdit(record, '申请对账')">申请对账</a>
</template>
</span>
</a-table>
</div>
<!-- table区域-end -->
<property-adv-modal ref="modalForm" @ok="modalFormOk"></property-adv-modal>
</a-card>
</template>
<script>
import { getRuleDayDetailApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByStatic, FENLICENTRAL_AUDIT_STATUS } from '@/assets/static.js'
import PropertyAdvModal from './modules/PropertyAdvModal'
const columns = [
{
title: '结算单号',
dataIndex: 'balanceNum',
key: 'balanceNum',
align: 'center',
},
{
title: '订单编号',
dataIndex: 'orderNum',
key: 'orderNum',
align: 'center',
},
{
title: '提交时间',
dataIndex: 'createTime',
key: 'createTime',
align: 'center',
},
{
title: '用户账号',
dataIndex: 'buyerName',
key: 'buyerName',
align: 'center',
},
{
title: '订单金额',
dataIndex: 'totalMoney',
key: 'totalMoney',
align: 'center',
},
{
title: '支付方式',
dataIndex: 'payWay',
key: 'payWay',
align: 'center'
},
{
title: '订单来源',
dataIndex: 'orderSource',
key: 'orderSource',
align: 'center',
scopedSlots: { customRender: 'orderSource' },
},
{
title: '订单状态',
dataIndex: 'reconciliationStatus',
key: 'reconciliationStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(FENLICENTRAL_AUDIT_STATUS, text)
}
},
{
title: '备注',
dataIndex: 'remarks',
key: 'remarks',
align: 'center',
},
{
title: '所属平台',
dataIndex: 'propertyName',
key: 'propertyName',
align: 'center',
},
{
title: '所属小区',
dataIndex: 'communityName',
key: 'communityName',
align: 'center',
},
{
title: '合作伙伴',
dataIndex: 'partnersName',
key: 'partnersName',
align: 'center',
},
{
title: '商铺',
dataIndex: 'shopName',
key: 'shopName',
align: 'center',
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150
},
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
components: {
PropertyAdvModal,
},
data() {
return {
showDay: 7,
auditList: FENLICENTRAL_AUDIT_STATUS,
columns: columns,
url: {
list: '/property-central/partners/shareBenefit/list?platformType=company'
}
}
},
methods: {
propertyDetails(id) {
this.$router.push({
path: '/benefits/ReconciliationDetails?id=' + id
})
}
},
created() {
getRuleDayDetailApi().then(res=> {
this.showDay = res.result.days
})
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="对账总金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalMoneyName">
<a-input v-model="model.totalMoneyName" placeholder="请输入对账总金额" disabled></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="对账日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
<a-input v-model="model.createTime" placeholder="请输入对账日期" disabled></a-input>
</a-form-model-item>
</a-col>
<!-- <a-col :span="24">
<a-form-model-item label="广告有效期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="advDate">
<a-range-picker valueFormat="YYYY-MM-DD" :placeholder="['广告有效开始时间', '请选择广告有效结束时间']" v-model="model.advDate" style="width: 100%" />
</a-form-model-item>
</a-col> -->
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remarks">
<a-textarea placeholder="请输入备注" v-model="model.remarks" />
</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'
export default {
name: 'PropertyAdvForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {},
url: {
add: "/property-central/partners/shareBenefit/reconciliation"
},
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({}, record, {totalMoneyName: ${record.totalMoney}`, remarks: ''});
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let obj = {
id: this.model.id,
remarks: this.model.remarks
}
httpAction(this.url.add, obj, 'post').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
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-adv-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-adv-form>
</j-modal>
</template>
<script>
import PropertyAdvForm from './PropertyAdvForm'
export default {
name: 'PropertyAdvModal',
components: {
PropertyAdvForm
},
data () {
return {
title:'',
width:800,
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
<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="6" :sm="8">
<a-form-item label="状态">
<a-select style="width: 100%" v-model="queryParam.chargeTypeId" placeholder="请选择状态">
<a-select-option v-for="item in auditList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="缴费开始时间">
<a-date-picker placeholder="缴费开始时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_begin"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="缴费结束时间">
<a-date-picker placeholder="缴费结束时间" valueFormat="YYYY-MM-DD" v-model="queryParam.createTime_end"></a-date-picker>
</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="propertyDetails(3)" 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>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp;
<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="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange">
<span slot="empowerEndDate" slot-scope="text, record">
<span v-if="record.empowerEndDate">{{record.empowerBeginDate}}{{record.empowerEndDate}} </span>
</span>
<span slot="propertyStatus" slot-scope="text, record">
<span>{{record.propertyStatus === 'normal' ? '正常' : '冻结'}}</span>
</span>
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="propertyDetails(1, record.id)">详情</a>
<template v-if="record.balanceStatus === 1">
<a-divider type="vertical" />
<a href="javascript:;" @click="propertyDetails(2, record.id)">审核结算</a>
</template>
</span>
</a-table>
</div>
<!-- table区域-end -->
</a-card>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByStatic, BALANCE_STATUS } from '@/assets/static.js'
const columns = [
{
title: '结算单号',
dataIndex: 'balanceNum',
key: 'balanceNum',
align: 'center',
},
{
title: '提交时间',
dataIndex: 'balanceDate',
key: 'balanceDate',
align: 'center',
},
{
title: '身份',
dataIndex: 'platformName',
key: 'platformName',
align: 'center',
},
{
title: '提交人',
dataIndex: 'createBy',
key: 'createBy',
align: 'center',
},
{
title: '结算总金额',
dataIndex: 'balanceMoney',
key: 'balanceMoney',
align: 'center',
},
{
title: '账单数量',
dataIndex: 'balanceCount',
key: 'balanceCount',
align: 'center',
},
{
title: '结算方式',
dataIndex: 'balanceWay',
key: 'balanceWay',
align: 'center',
},
{
title: '结算状态',
dataIndex: 'balanceStatus',
key: 'balanceStatus',
align: 'center',
customRender: function (text) {
return filterDictTextByStatic(BALANCE_STATUS, text)
}
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150,
},
]
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
data() {
return {
auditList: BALANCE_STATUS,
columns: columns,
url: {
list: '/property-central/partners/shareBalance/list?platformType=company',
}
}
},
methods: {
propertyDetails(type, id) {
let params = id ? `?type=${type}&id=${id}` : `?type=${type}`
this.$router.push({
path: '/benefits/SettlementDetails' + params
})
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="结算总金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="totalMoneyName">
<a-input v-model="model.totalMoneyName" placeholder="请输入结算总金额" disabled></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="结算日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceDate">
<a-date-picker
v-model="model.balanceDate"
placeholder="请输入结算日期"
format="YYYY-MM-DD HH:mm:ss"
valueFormat="YYYY-MM-DD HH:mm:ss"
:showTime="true"
/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="结算方式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="balanceWay">
<a-select v-model="model.balanceWay" placeholder="请选择结算方式" style="width: 100%">
<a-select-option value="转账">转账</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="银行卡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bankCard">
<a-input v-model="model.bankCard" placeholder="请输入银行卡"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remarks">
<a-textarea placeholder="请输入备注" v-model="model.remarks" />
</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'
export default {
name: 'PropertyAdvForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
totalMoneyName: [{ required: true, message: '请输入结算总金额', trigger: 'blur' }],
balanceDate: [{ required: true, message: '请输入结算日期', trigger: 'change' }],
balanceWay: [{ required: true, message: '请选择结算方式', trigger: 'change' }],
bankCard: [{ required: true, message: '请输入银行卡', trigger: 'blur' }]
},
url: {
add: "/property-central/partners/shareBalance/add"
},
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({
balanceDate: '',
balanceWay: '转账',
bankCard: '',
remarks: ''
}, record, {totalMoneyName: ${record.balanceMoney}`});
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
httpAction(this.url.add, {...this.model, balanceStatus: '2'}, 'post').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
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-adv-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></property-adv-form>
</j-modal>
</template>
<script>
import PropertyAdvForm from './PropertyAdvForm'
export default {
name: 'PropertyAdvModal',
components: {
PropertyAdvForm
},
data () {
return {
title:'',
width:800,
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
......@@ -84,6 +84,13 @@
<a-divider type="vertical" />
<a @click="onIssueReceipt(record)">开收据</a>
</template>
<template v-if="record.receiptStatus !== '1'">
<a-divider type="vertical" />
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
:action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">上传正式收据</a-button>
</a-upload>
</template>
</span>
</a-table>
......@@ -174,7 +181,8 @@
url: {
list: "/property-community/payment/communityPayment/queryReceiptList",
delete: '/property-community/property/communityReceipt/delete',
deleteBatch: '/property-community/property/communityReceipt/deleteBatch'
deleteBatch: '/property-community/property/communityReceipt/deleteBatch',
importExcelUrl: 'property-community/info/communityOwner/importExcel',
},
templateColumns: [
......@@ -189,6 +197,11 @@
}
}
},
computed: {
importExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
},
},
methods: {
onIssueReceipt(row) {
this.$refs.templateModal.onLoadTemplate(row)
......
......@@ -10,13 +10,13 @@
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="缴费开始时间">
<a-date-picker placeholder="缴费开始时间" valueFormat="YYYY-MM-DD 00:00:00" v-model="queryParam.reconciliationBeginDate"></a-date-picker>
<a-form-item label="对账开始时间">
<a-date-picker placeholder="对账开始时间" valueFormat="YYYY-MM-DD 00:00:00" v-model="queryParam.beginDate"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-item label="缴费结束时间">
<a-date-picker placeholder="缴费结束时间" valueFormat="YYYY-MM-DD 00:00:00" v-model="queryParam.reconciliationEndDate"></a-date-picker>
<a-form-item label="对账结束时间">
<a-date-picker placeholder="对账结束时间" valueFormat="YYYY-MM-DD 23:59:59" v-model="queryParam.endDate"></a-date-picker>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
......@@ -191,7 +191,7 @@ export default {
okText: '确认',
onOk() {
return communitySubCompanyApi({
id: ids
ids
}).then((res) => {
that.$message.success('申请对账成功!')
that.searchQuery()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论