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

修复bug

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