diff --git a/dist.zip b/dist.zip index 0c5db38..82595ba 100644 Binary files a/dist.zip and b/dist.zip differ diff --git a/src/api/business.ts b/src/api/business.ts index dac3822..3eddb55 100644 --- a/src/api/business.ts +++ b/src/api/business.ts @@ -98,3 +98,41 @@ export function getRoomOverList(params: any): Promise { export function getRoomsGraphList(params: any): Promise { return axios.post('roomsGraph/getRoomList', params); } + +// ------------- 租客管理 ------------- +//创建租客 +export function createTenant(params: any): Promise { + return axios.post('tenants/createTenant', params); +} +// 租客列表(分页) +export function getTenantList(params: PaginationParams): Promise { + return axios.post('tenants/getTenantList', params); +} +// 更新租客信息 +export function updateTenant(params: any): Promise { + return axios.post('tenants/updateTenant', params); +} +// 删除租客 +export function delTenant(id: number): Promise { + return axios.get(`tenants/delTenant?id=${id}`); +} +// 租客详情 +export function getTenantDetail(id: number): Promise { + return axios.get(`tenants/getTenant?id=${id}`); +} +// 租客归档 +export function filingTenant(params: any): Promise { + return axios.post('tenants/filingTenant', params); +} +// 租客下拉列表(不分页) +export function getTenantAllList( + params: PaginationParams +): Promise { + return axios.post('tenants/getTenantAllList', params); +} +// 租客归档列表(分页) +export function getTenantFilingList( + params: PaginationParams +): Promise { + return axios.post('tenants/getTenantFilingList', params); +} diff --git a/src/constants/index.ts b/src/constants/index.ts index 87ec08e..2c50ade 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -69,3 +69,130 @@ export const PRICE_UNIT_MAP = new Map([ [4, '元/月'], [5, '元/年'], ]); + +// 租客来源 +export const TENANT_SOURCES = [ + { value: 1, text: '中介' }, + { value: 2, text: '招商获客' }, + { value: 3, text: '线下来访' }, + { value: 4, text: '客户转介' }, + { value: 5, text: '其他转介' }, +]; +// 租客映射表 +export const TENANT_SOURCE_MAP = new Map([ + [1, '中介'], + [2, '招商获客'], + [3, '线下来访'], + [4, '客户转介'], + [5, '其他转介'], +]); +// 租客类型 +export const TENANT_TYPES = [ + { value: 1, text: '企业' }, + { value: 2, text: '个人' }, + { value: 3, text: '非营利组织' }, + { value: 4, text: '其他' }, +]; +// 租客映射表 +export const TENANT_TYPE_MAP = new Map([ + [1, '企业'], + [2, '个人'], + [3, '非营利组织'], + [4, '其他'], +]); + +// 租客状态 +// 状态:1正常 2欠费 3即将到期 4已到期 5可归档 6已归档 +export const TENANT_STATUS = [ + { value: 1, text: '正常' }, + { value: 2, text: '欠费' }, + { value: 3, text: '即将到期' }, + { value: 4, text: '已到期' }, + { value: 5, text: '可归档' }, + { value: 6, text: '已归档' }, +]; +// 租客状态映射表 +export const TENANT_STATUS_MAP = new Map([ + [1, '正常'], + [2, '欠费'], + [3, '即将到期'], + [4, '已到期'], + [5, '可归档'], + [6, '已归档'], +]); + +// 企业规模 +export const COMPANY_SCALES = [ + { value: 1, text: '小微企业' }, + { value: 2, text: '中型企业' }, + { value: 3, text: '大型企业' }, + { value: 4, text: '集团/上市公司' }, +]; +// 企业规模映射表 +export const COMPANY_SCALE_MAP = new Map([ + [1, '小微企业'], + [2, '中型企业'], + [3, '大型企业'], + [4, '集团/上市公司'], +]); + +// 行业分类 +export const INDUSTRY_CATEGORIES = [ + { value: 1, text: '科技/互联网' }, + { value: 2, text: '金融/保险' }, + { value: 3, text: '专业服务(法律/咨询/会计)' }, + { value: 4, text: '医疗/健康' }, + { value: 5, text: '教育培训' }, + { value: 6, text: '零售/消费' }, + { value: 7, text: '制造业' }, + { value: 8, text: '文化/传媒' }, + { value: 9, text: '房地产/建筑' }, + { value: 10, text: '其他' }, +]; +// 行业分类映射表 +export const INDUSTRY_CATEGORY_MAP = new Map([ + [1, '科技/互联网'], + [2, '金融/保险'], + [3, '专业服务(法律/咨询/会计)'], + [4, '医疗/健康'], + [5, '教育培训'], + [6, '零售/消费'], + [7, '制造业'], + [8, '文化/传媒'], + [9, '房地产/建筑'], + [10, '其他'], +]); + +// 发票类型 +export const INVOICE_TYPES = [ + { value: 1, text: '增值税专用发票' }, + { value: 2, text: '增值税电子专用发票' }, + { value: 3, text: '增值税普通发票' }, + { value: 4, text: '增值税电子普通发票' }, + { value: 5, text: '全面数字化电子发票' }, +]; +// 发票类型映射表 +export const INVOICE_TYPE_MAP = new Map([ + [1, '增值税专用发票'], + [2, '增值税电子专用发票'], + [3, '增值税普通发票'], + [4, '增值税电子普通发票'], + [5, '全面数字化电子发票'], +]); + +// 租客归档原因 +export const TENANT_FILING_TYPES = [ + { value: 1, text: '到期退租(自然到期)' }, + { value: 2, text: '提前退租(协商终止)' }, + { value: 3, text: '非正常终止(违约或被清退)' }, + { value: 4, text: '签约未履行(签约后未生效)' }, + { value: 5, text: '其他原因' }, +]; +// 租客归档原因映射表 +export const TENANT_FILING_TYPE_MAP = new Map([ + [1, '到期退租(自然到期)'], + [2, '提前退租(协商终止)'], + [3, '非正常终止(违约或被清退)'], + [4, '签约未履行(签约后未生效)'], + [5, '其他原因'], +]); diff --git a/src/locale/zh-CN.ts b/src/locale/zh-CN.ts index ce1b398..7cd2af2 100644 --- a/src/locale/zh-CN.ts +++ b/src/locale/zh-CN.ts @@ -50,7 +50,7 @@ export default { 'menu.business.contract-template': '合同模板', 'menu.business.tenant': '租客管理', 'menu.business.tenant-list': '租客列表', - 'menu.business.tenant.contacts': '租客联系人', + 'menu.business.tenant-file': '租客归档', 'add-project': '新建项目', 'edit-project': '编辑项目', 'menu.setting.user': '用户设置', @@ -124,6 +124,8 @@ export default { 'setting.data-dictionary': '数据字典', 'add-house': '新建房源', 'edit-house': '编辑房源', + 'add-tenant': '新建租客', + 'edit-tenant': '编辑租客', ...localeSettings, ...localeMessageBox, diff --git a/src/router/routes/modules/business.ts b/src/router/routes/modules/business.ts index 40810c2..8092f8d 100644 --- a/src/router/routes/modules/business.ts +++ b/src/router/routes/modules/business.ts @@ -182,7 +182,7 @@ const BUSINESS: AppRouteRecordRaw = { component: () => import( /* webpackChunkName: "business-tenant" */ - '@/views/business/tenant/list.vue' + '@/views/business/tenant/list/index.vue' ), meta: { locale: 'menu.business.tenant-list', @@ -194,15 +194,15 @@ const BUSINESS: AppRouteRecordRaw = { }, // 租客联系人 { - path: 'tenant-contacts', - name: 'business-tenant-contacts', + path: 'tenant-file', + name: 'business-tenant-file', component: () => import( /* webpackChunkName: "business-tenant" */ - '@/views/business/tenant/contacts.vue' + '@/views/business/tenant/file/index.vue' ), meta: { - locale: 'menu.business.tenant.contacts', + locale: 'menu.business.tenant-file', requiresAuth: true, roles: ['*'], icon: 'icon-font-colors', diff --git a/src/views/business/tenant/contacts.vue b/src/views/business/tenant/contacts.vue deleted file mode 100644 index 9b8cf69..0000000 --- a/src/views/business/tenant/contacts.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/views/business/tenant/drawer/tenant-filing-filter-drawer.vue b/src/views/business/tenant/drawer/tenant-filing-filter-drawer.vue new file mode 100644 index 0000000..7ff70b6 --- /dev/null +++ b/src/views/business/tenant/drawer/tenant-filing-filter-drawer.vue @@ -0,0 +1,300 @@ + + + + + diff --git a/src/views/business/tenant/drawer/tenant-form-drawer.vue b/src/views/business/tenant/drawer/tenant-form-drawer.vue new file mode 100644 index 0000000..76afb84 --- /dev/null +++ b/src/views/business/tenant/drawer/tenant-form-drawer.vue @@ -0,0 +1,421 @@ + + + + + diff --git a/src/views/business/tenant/drawer/tenant-info-drawer.vue b/src/views/business/tenant/drawer/tenant-info-drawer.vue new file mode 100644 index 0000000..c8194d3 --- /dev/null +++ b/src/views/business/tenant/drawer/tenant-info-drawer.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/views/business/tenant/drawer/tenant-list-filter-drawer.vue b/src/views/business/tenant/drawer/tenant-list-filter-drawer.vue new file mode 100644 index 0000000..cef809d --- /dev/null +++ b/src/views/business/tenant/drawer/tenant-list-filter-drawer.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/src/views/business/tenant/file/index.vue b/src/views/business/tenant/file/index.vue new file mode 100644 index 0000000..64f7a38 --- /dev/null +++ b/src/views/business/tenant/file/index.vue @@ -0,0 +1,343 @@ + + + diff --git a/src/views/business/tenant/list.vue b/src/views/business/tenant/list.vue deleted file mode 100644 index 7856d9e..0000000 --- a/src/views/business/tenant/list.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/views/business/tenant/list/index.vue b/src/views/business/tenant/list/index.vue new file mode 100644 index 0000000..cfb7dc7 --- /dev/null +++ b/src/views/business/tenant/list/index.vue @@ -0,0 +1,523 @@ + + +