提交 dc46cbaa authored 作者: 何忠建's avatar 何忠建

修复bug

上级 0499b196
......@@ -117,6 +117,8 @@ const AddUpdateCostApi = (params)=>postAction("/property-central/property/proper
const AuditUpdateCostApi = (params)=>postAction("/property-central/property/propertyChargrule/audit",params);
const getPropertyChargruleListApi = (params)=>getAction("/property-central/property/propertyChargrule/propertyChargruleList",params);
const getPropertyAdvEditApi = (params)=>postAction("/property-central/property/propertyAdv/edit",params);
const proPertyChargruleApi = (params)=>getAction(`/property-central/property/propertyChargrule/freezeOrThaw/${params.id}/${params.status}`,{});
export {
getDataStatisticsApi,
addRole,
......@@ -180,12 +182,13 @@ export {
AddUpdatePropertyApi,
auditPropertyApi,
freezeOrPropertyApi,
getCostListApi,
getCostDetailApi,
AddUpdateCostApi,
AuditUpdateCostApi,
getPropertyChargruleListApi
getPropertyChargruleListApi,
getPropertyAdvEditApi,
proPertyChargruleApi
}
......
......@@ -184,8 +184,8 @@
onOk() {
return that.Logout({}).then(() => {
// update-begin author:scott date:20211223 for:【JTC-198】退出登录体验不好
//that.$router.push({ path: '/user/login' });
// window.location.reload()
that.$router.push({ path: '/user/login' });
window.location.reload()
// update-end author:scott date:20211223 for:【JTC-198】退出登录体验不好
}).catch(err => {
that.$message.error({
......
......@@ -29,3 +29,8 @@ export function isPhone (s) {
export function isURL (s) {
return /^http[s]?:\/\/.*/.test(s)
}
/* 校验社会统一证信号*/
export function validateCreditCode(s) {
return /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/.test(s)
}
......@@ -17,7 +17,12 @@
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="广告有效时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="advDate">
<a-form-model-item label="广告链接" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="advUrl">
<a-input v-model="model.advUrl" placeholder="请输入广告链接"></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>
......@@ -26,11 +31,7 @@
<j-date placeholder="请选择广告有效结束时间" v-model="model.advEndDate" style="width: 100%" />
</a-form-model-item>
</a-col> -->
<a-col :span="24">
<a-form-model-item label="广告链接" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="advUrl">
<a-input v-model="model.advUrl" placeholder="请输入广告链接"></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<!-- <a-form-model-item label="banner图" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="advImageUrl">
<j-upload v-model="model.advImageUrl"></j-upload>
......@@ -51,7 +52,7 @@
</a-col>
<a-col :span="24" v-if="model.isScheduledRelease === 1">
<a-form-model-item label="发布日期" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="releaseTime">
<j-date placeholder="请选择发布日期" v-model="model.releaseTime" style="width: 100%" />
<j-date placeholder="请选择发布日期" v-model="model.releaseTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
</a-form-model-item>
</a-col>
</a-row>
......@@ -100,6 +101,7 @@
validatorRules: {
advName: [{ required: true, message: '请输入广告名称', trigger: 'blur' }],
advImageUrl: [{ required: true, message: '请上传banner图', trigger: 'change' }],
advDate: [{ required: true, message: '请选择广告有效期', trigger: 'change' }],
releaseTime: [{ required: true, message: '请选择发布日期', trigger: 'change' }]
},
url: {
......
......@@ -29,7 +29,7 @@
<a-button type="primary" icon="download" @click="handleExportXls('t_property_chargrule')">导出</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-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>
......@@ -38,28 +38,27 @@
<!-- 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>
<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"
>
<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="auditStatus" slot-scope="text, record">
<span v-if="record.auditStatus === 'waitAudit'">待审核</span>
<span v-if="record.auditStatus === 'auditPass'">审核通过</span>
<span v-if="record.auditStatus === 'refuse'">审核拒绝</span>
</span>
<span slot="chargingStatus" slot-scope="text, record">
<span v-if="record.chargingStatus === 'normal'">正常</span>
<span v-if="record.chargingStatus === 'freeze'">冻结</span>
</span>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a @click="handleEdit(record)" v-if="record.auditStatus != 'waitAudit'">编辑</a>
<a-divider type="vertical"/>
<a-divider type="vertical" />
<a-dropdown>
<a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
<a-menu slot="overlay">
......@@ -67,15 +66,21 @@
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
<a href="javascript:;"
@click="onChargingStatus(record)">{{record.chargingStatus === 'normal' ? '冻结' : '解冻'}}</a>
</a-menu-item>
<a-menu-item v-if="record.auditStatus === 'waitAudit'">
<a-popconfirm title="确定审核吗?" ok-text="通过" cancel-text="驳回" @cancel="() => handleVerify(record.id, 'notPass')" @confirm="() => handleVerify(record.id, 'auditPass')">
<a-popconfirm title="确定审核吗?" ok-text="通过" cancel-text="驳回"
@cancel="() => handleVerify(record.id, 'refuse')"
@confirm="() => handleVerify(record.id, 'auditPass')">
<a>审核</a>
</a-popconfirm>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
......@@ -88,97 +93,129 @@
</template>
<script>
import {AuditUpdateCostApi} from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil'
import PropertyChargruleModal from './modules/PropertyChargruleModal'
import { AuditUpdateCostApi, proPertyChargruleApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { filterDictTextByCache } from '@/components/dict/JDictSelectUtil'
import PropertyChargruleModal from './modules/PropertyChargruleModal'
const columns = [
{
title: '收费名称',
dataIndex: 'chargingName',
key: 'chargingName'
}, {
title: '收费方式',
dataIndex: 'chargingCycle',
key: 'chargingCycle',
customRender: function(text) {
return filterDictTextByCache('chargingCycle', text);
}
},{
title: '授权物业数量',
dataIndex: 'empowerNum',
key: 'empowerNum'
},{
title: '添加人',
dataIndex: 'createBy',
key: 'createBy'
},{
title: '收费金额(元)',
dataIndex: 'chargingMoney',
key: 'chargingMoney'
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTime'
},
{
title: '审核状态',
dataIndex: 'auditStatus',
key: 'auditStatus',
customRender: function(text) {
return filterDictTextByCache('auditStatus', text);
}
const columns = [
{
title: '收费名称',
dataIndex: 'chargingName',
key: 'chargingName',
},
{
title: '收费方式',
dataIndex: 'chargingCycle',
key: 'chargingCycle',
customRender: function (text) {
return filterDictTextByCache('chargingCycle', text)
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
width: 150
}
]
},
{
title: '授权物业数量',
dataIndex: 'empowerNum',
key: 'empowerNum',
},
{
title: '授权天数',
dataIndex: 'empowerDays',
key: 'empowerDays',
},
{
title: '添加人',
dataIndex: 'createBy',
key: 'createBy',
},
{
title: '收费金额(元)',
dataIndex: 'chargingMoney',
key: 'chargingMoney',
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTime',
},
{
title: '审核状态',
dataIndex: 'auditStatus',
scopedSlots: { customRender: 'auditStatus' },
key: 'auditStatus',
align: 'center',
},
{
title: '冻结状态',
dataIndex: 'chargingStatus',
scopedSlots: { customRender: 'chargingStatus' },
key: 'chargingStatus',
align: 'center',
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
width: 150,
},
]
export default {
name: 'costListAsync',
components: {
PropertyChargruleModal
export default {
name: 'costListAsync',
components: {
PropertyChargruleModal,
},
mixins: [JeecgListMixin],
data() {
return {
// 表头
columns: columns,
loading: false,
pagination: {
total: 0,
current: 1,
pageSize: 10,
showSizeChanger: true,
},
url: {
list: '/property-central/property/propertyChargrule/list',
delete: '/property-central/property/propertyChargrule/delete',
deleteBatch: '/property-central/property/propertyChargrule/deleteBatch',
exportXlsUrl: '/property-central/property/propertyChargrule/exportXls',
},
dictOptions: [],
}
},
methods: {
handleVerify(id, auditStatus) {
AuditUpdateCostApi({
id,
auditStatus,
}).then(() => {
this.$message.success(`${auditStatus === 'auditPass' ? '审核成功' : '驳回成功'}`)
this.loadData()
})
},
mixins: [JeecgListMixin],
data() {
return {
// 表头
columns: columns,
loading: false,
pagination: {
total: 0,
current: 1,
pageSize: 10,
showSizeChanger: true
onChargingStatus(record) {
let that = this
this.$confirm({
title: `确认${record.chargingStatus === 'normal' ? '冻结' : '解冻'}?`,
closable: true,
okText: `${record.chargingStatus === 'normal' ? '冻结' : '解冻'}`,
onOk() {
return proPertyChargruleApi({
id: record.id,
status: `${record.chargingStatus === 'normal' ? 'freeze' : 'normal'}`,
}).then((res) => {
that.searchQuery()
})
},
url: {
list: "/property-central/property/propertyChargrule/list",
delete: '/property-central/property/propertyChargrule/delete',
deleteBatch: '/property-central/property/propertyChargrule/deleteBatch',
exportXlsUrl: "/property-central/property/propertyChargrule/exportXls"
},
dictOptions: [],
}
onCancel() {},
})
},
methods: {
handleVerify(id, auditStatus) {
AuditUpdateCostApi({
id,
auditStatus
}).then(()=> {
this.$message.success(`${auditStatus === 'auditPass' ? '审核成功' : '驳回成功'}`);
this.loadData();
})
}
}
}
},
}
</script>
<style scoped>
@import '~@assets/less/common.less';
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
......@@ -17,7 +17,7 @@
</a-col>
<a-col :span="24">
<a-form-model-item label="授权天数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="empowerDays">
<a-input :disabled="model.chargingCycle !== '4'" v-model="model.empowerDays" @blur="ruleNumberInput" placeholder="请输入授权天数">
<a-input :disabled="model.chargingCycle !== '4' && model.chargingCycle !== '5'" v-model="model.empowerDays" @blur="ruleNumberInput" placeholder="请输入授权天数">
<div slot="addonAfter"></div>
</a-input>
</a-form-model-item>
......
......@@ -35,7 +35,7 @@
<div class="statistics">
<div class="icon" style="color:#52c41a;"><a-icon type="line-chart" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">累计物业社区数量</p>
<p style="color:#666;margin-bottom:5px;">累计业主数量</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">{{statistical.ownerNum}}
<span v-if="statistical.monthOwnerNum > 0"><a-icon type="arrow-up"
color="#1890ff" />{{ statistical.monthOwnerNum }}</span>
......@@ -46,7 +46,7 @@
</a-row>
<div class="wait-box" style="margin-bottom: 25px;">
<h3 class="box-title">待处理事务(入驻待审核)</h3>
<div class="content">
<div class="content" v-if="waitAuditList.length > 0">
<div class="item" v-for="(item, index) in waitAuditList" :key="index">
<p>入驻物业集团名称:{{ item.propertyName }}</p>
<p>申请入驻小区数量:{{ item.ontrialCommunityNum }}</p>
......@@ -55,6 +55,9 @@
<a-button type="primary" size="small" @click="toOperation(item)">审核</a-button>
</div>
</div>
<div class="content" v-else>
<a-empty />
</div>
</div>
<div class="map-box">
......
......@@ -94,9 +94,9 @@
</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 label="授权小区数量" :labelCol="labelCol" :wrapperCol="wrapperCol"
prop="empowerCommunityNum">
<a-input-number v-model="model.empowerCommunityNum" placeholder="请输入试用小区数量" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="12">
......@@ -139,7 +139,7 @@ const mapZoom = [5, 8, 10, 12]
let timer = null
import { getPropertyChargruleListApi, getPropertyDetailApi, auditPropertyApi } from '@/api/api'
import { httpAction, getAction } from '@/api/manage'
import { isMobile } from '@/utils/validate'
import { isMobile, validateCreditCode } from '@/utils/validate'
export default {
name: 'PropertySettledForm',
......@@ -152,6 +152,14 @@ export default {
callback('请输入正确的联系人电话!')
}
}
const validateCode = (rule, value, callback) => {
if (value && validateCreditCode(value)) {
callback()
} else {
callback('社会统一信用代码输入错误')
}
}
return {
title: '',
pageType: '',
......@@ -175,7 +183,7 @@ export default {
groupInfo: '',
empowerBeginDate: '',
empowerEndDate: '',
ontrialCommunityNum: undefined,
empowerCommunityNum: undefined,
chargingStandardId: '',
contractUrl: '',
adminLoginName: '',
......@@ -194,7 +202,7 @@ export default {
confirmLoading: false,
validatorRules: {
propertyName: [{ required: true, message: '请输入物业集团名称', trigger: 'blur' }],
creditCode: [{ required: true, message: '请输入统一信用代码', trigger: 'blur' }],
creditCode: [{ required: true, message: '请输入统一信用代码', trigger: 'blur' }, { validator: validateCode }],
legalName: [{ required: true, message: '请输入法人代表', trigger: 'blur' }],
registCapital: [{ required: true, message: '请输入注册资本', trigger: 'blur' }],
contactName: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
......@@ -205,6 +213,9 @@ export default {
registAdress: [{ required: true, message: '请选择注册地址', trigger: 'change' }],
addressInfo: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
logoUrl: [{ required: true, message: '请上传集团LOGO', trigger: 'change' }],
empowerBeginDate: [{ required: true, message: '请选择授权开始日期', trigger: 'change' }],
empowerEndDate: [{ required: true, message: '请选择权结束日期', trigger: 'change' }],
empowerCommunityNum: [{ required: true, message: '请输入授权小区数量', trigger: 'blur' }],
chargingStandardId: [{ required: true, message: '请选择收费标准', trigger: 'change' }],
adminLoginName: [{ required: true, message: '请输入管理员账号', trigger: 'blur' }],
adminPassword: [{ required: true, message: '请输入管理员密码', trigger: 'blur' }],
......
......@@ -9,12 +9,11 @@
<a-input placeholder="请输入物业名称" v-model="queryParam.propertyName"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<a-col :md="8" :sm="10">
<a-form-item label="入驻时间">
<a-input placeholder="请选择入驻时间" v-model="queryParam.createTime"></a-input>
<a-range-picker @change="onChange" />
</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>
......@@ -28,7 +27,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="propertyDetails(1)" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</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>
......@@ -49,11 +48,17 @@
:dataSource="dataSource" :pagination="pagination" :loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" 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="expirationStatus" slot-scope="text, record">
<a-tag>{{record.expirationStatus === 'notStarted' ? '未开始' :record.expirationStatus === 'normal' ? '正常' :record.expirationStatus === 'soonExpired' ? '即将到期' :record.expirationStatus === 'expire' ? '已过期' : ''}}</a-tag>
</span>
<span slot="action" slot-scope="text, record">
<a @click="propertyDetails(2, record.id)">编辑</a>
<a @click="propertyDetails(2, record.id)" v-if="record.auditStatus != 'waitAudit'">编辑</a>
<a-divider type="vertical" />
<a-dropdown>
......@@ -61,7 +66,7 @@
更多 <a-icon type="down" />
</a>
<a-menu slot="overlay">
<a-menu-item v-if="record.auditStatus !== 'waitAudit'">
<a-menu-item v-if="record.auditStatus === 'auditPass'">
<a @click="handlePerssion(record.roleId)">授权</a>
</a-menu-item>
<a-menu-item>
......@@ -70,7 +75,7 @@
<a-menu-item v-if="record.auditStatus === 'waitAudit'">
<a href="javascript:;" @click="propertyDetails(3, record.id)">审核</a>
</a-menu-item>
<a-menu-item>
<a-menu-item v-if="record.auditStatus === 'auditPass'">
<a href="javascript:;"
@click="onStatus(record)">{{record.propertyStatus === 'normal' ? '冻结' : '解冻'}}</a>
</a-menu-item>
......@@ -106,31 +111,37 @@ const columns = [
title: '物业名称',
dataIndex: 'propertyName',
key: 'propertyName',
align: 'center',
},
{
title: '统一社会信用代码',
dataIndex: 'creditCode',
key: 'creditCode',
align: 'center',
},
{
title: '联系人',
dataIndex: 'contactName',
key: 'contactName',
align: 'center',
},
{
title: '电话',
dataIndex: 'contactPhone',
key: 'contactPhone',
align: 'center',
},
{
title: '授权时间',
dataIndex: 'empowerDate',
key: 'empowerDate',
dataIndex: 'empowerEndDate',
scopedSlots: { customRender: 'empowerEndDate' },
align: 'center',
},
{
title: '授权物业数量',
dataIndex: 'ontrialCommunityNum',
key: 'ontrialCommunityNum',
title: '授权小区数量',
dataIndex: 'empowerCommunityNum',
key: 'empowerCommunityNum',
align: 'center',
},
{
title: '审核状态',
......@@ -142,20 +153,24 @@ const columns = [
},
{
title: '到期提示',
dataIndex: 'ontrialEndDate',
key: 'ontrialEndDate',
dataIndex: 'expirationStatus',
scopedSlots: { customRender: 'expirationStatus' },
key: 'expirationStatus',
align: 'center',
},
{
title: '状态',
title: '冻结状态',
dataIndex: 'propertyStatus',
scopedSlots: { customRender: 'propertyStatus' },
key: 'propertyStatus',
align: 'center',
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
fixed: 'right',
width: 150,
},
]
......@@ -213,6 +228,15 @@ export default {
this.handleDetail(record)
}
},
onChange(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 = ''
}
},
onExamine(record) {
let that = this
this.$confirm({
......
......@@ -72,7 +72,7 @@
expandedKeysss:[],
allTreeKeys:[],
autoExpandParent: true,
checkStrictly: true,
checkStrictly: false,
title:"物业权限配置",
visible: false,
loading: false,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论