diff --git a/src/api/owner/addOwnerCommitteeApi.js b/src/api/owner/addOwnerCommitteeApi.js new file mode 100644 index 0000000..f1d6c75 --- /dev/null +++ b/src/api/owner/addOwnerCommitteeApi.js @@ -0,0 +1,21 @@ +import request from '@/utils/request' + +// 保存业委会信息 +export function saveOwnerCommittee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/ownerCommittee.saveOwnerCommittee', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '保存业委会信息失败')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/owner/editOwnerCommitteeApi.js b/src/api/owner/editOwnerCommitteeApi.js new file mode 100644 index 0000000..ebd1dd9 --- /dev/null +++ b/src/api/owner/editOwnerCommitteeApi.js @@ -0,0 +1,83 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取业委会详情 +export function getOwnerCommitteeDetail(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/ownerCommittee.listOwnerCommittee', + method: 'get', + params: { + ...params, + communityId, + page: 1, + row: 1 + } + }).then(response => { + const res = response.data + if (res.code === 0 && res.data && res.data.length > 0) { + resolve({ data: res.data[0] }) + } else { + reject(new Error(res.msg || 'Failed to get owner committee details')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 更新业委会信息 +export function updateOwnerCommittee(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/ownerCommittee.updateOwnerCommittee', + method: 'post', + data: { + ...data, + communityId + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to update owner committee')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 获取业委会紧急联系人列表 +export function listOwnerCommitteeContract(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/ownerCommittee.listOwnerCommitteeContract', + method: 'get', + params: { + ...params, + communityId, + page: 1, + row: 100 + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve({ + data: res.data.map(item => ({ + ...item, + id: item.contractId + })) + }) + } else { + reject(new Error(res.msg || 'Failed to get emergency contacts')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/owner/ownerCommitteeDetailApi.js b/src/api/owner/ownerCommitteeDetailApi.js new file mode 100644 index 0000000..cf18329 --- /dev/null +++ b/src/api/owner/ownerCommitteeDetailApi.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取业委会成员详情 +export function getOwnerCommitteeDetail(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + const queryParams = { + ...params, + communityId + } + + request({ + url: '/ownerCommittee.listOwnerCommittee', + method: 'get', + params: queryParams + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to get owner committee details')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 获取业委会成员紧急联系人 +export function listOwnerCommitteeContracts(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + const queryParams = { + ...params, + communityId + } + + request({ + url: '/ownerCommittee.listOwnerCommitteeContract', + method: 'get', + params: queryParams + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to get emergency contacts')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/owner/ownerCommitteeManageApi.js b/src/api/owner/ownerCommitteeManageApi.js new file mode 100644 index 0000000..43b9ffa --- /dev/null +++ b/src/api/owner/ownerCommitteeManageApi.js @@ -0,0 +1,51 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取业委会列表 +export function listOwnerCommittee(params) { + return new Promise((resolve, reject) => { + request({ + url: '/ownerCommittee.listOwnerCommittee', + method: 'get', + params: { + ...params, + communityId: params.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve({ + data: res.data, + total: res.total + }) + } else { + reject(new Error(res.msg || '获取业委会列表失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 删除业委会成员 +export function deleteOwnerCommittee(data) { + return new Promise((resolve, reject) => { + request({ + url: '/ownerCommittee.deleteOwnerCommittee', + method: 'post', + data: { + ...data, + communityId: data.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '删除业委会成员失败')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/owner/AddOwnerCommittee.vue b/src/components/owner/AddOwnerCommittee.vue new file mode 100644 index 0000000..6120428 --- /dev/null +++ b/src/components/owner/AddOwnerCommittee.vue @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('addOwnerCommittee.emergencyContact') }} + + {{ $t('addOwnerCommittee.add') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('addOwnerCommittee.delete') }} + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/owner/DeleteOwnerCommittee.vue b/src/components/owner/DeleteOwnerCommittee.vue new file mode 100644 index 0000000..8b0bc91 --- /dev/null +++ b/src/components/owner/DeleteOwnerCommittee.vue @@ -0,0 +1,66 @@ + + + + {{ $t('common.deleteConfirm') }} + + + + + + + + + \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js index 2bb595d..058bad5 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -135,6 +135,10 @@ import { messages as communitySpaceManageMessages } from '../views/community/com import { messages as reportCommunitySpaceMessages } from '../views/community/reportCommunitySpaceLang' import { messages as communitySpacePersonManageMessages } from '../views/community/communitySpacePersonManageLang' import { messages as communitySpaceConfirmMessages } from '../views/community/communitySpaceConfirmLang' +import { messages as ownerCommitteeManageMessages } from '../views/owner/ownerCommitteeManageLang' +import { messages as addOwnerCommitteeMessages } from '../views/owner/addOwnerCommitteeLang' +import { messages as editOwnerCommitteeMessages } from '../views/owner/editOwnerCommitteeLang' +import { messages as ownerCommitteeDetailMessages } from '../views/owner/ownerCommitteeDetailLang' Vue.use(VueI18n) @@ -274,6 +278,10 @@ const messages = { ...reportCommunitySpaceMessages.en, ...communitySpacePersonManageMessages.en, ...communitySpaceConfirmMessages.en, + ...ownerCommitteeManageMessages.en, + ...addOwnerCommitteeMessages.en, + ...editOwnerCommitteeMessages.en, + ...ownerCommitteeDetailMessages.en, }, zh: { ...loginMessages.zh, @@ -409,6 +417,10 @@ const messages = { ...reportCommunitySpaceMessages.zh, ...communitySpacePersonManageMessages.zh, ...communitySpaceConfirmMessages.zh, + ...ownerCommitteeManageMessages.zh, + ...addOwnerCommitteeMessages.zh, + ...editOwnerCommitteeMessages.zh, + ...ownerCommitteeDetailMessages.zh, } } diff --git a/src/router/index.js b/src/router/index.js index 1cab57d..7a31965 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -657,15 +657,35 @@ const routes = [ component: () => import('@/views/community/reportCommunitySpaceList.vue') }, { - path:'/pages/property/communitySpacePersonManage', - name:'/pages/property/communitySpacePersonManage', + path: '/pages/property/communitySpacePersonManage', + name: '/pages/property/communitySpacePersonManage', component: () => import('@/views/community/communitySpacePersonManageList.vue') + }, + { + path: '/pages/property/communitySpaceConfirm', + name: '/pages/property/communitySpaceConfirm', + component: () => import('@/views/community/communitySpaceConfirmList.vue') + }, + { + path: '/pages/owner/ownerCommitteeManage', + name: '/pages/owner/ownerCommitteeManage', + component: () => import('@/views/owner/ownerCommitteeManageList.vue') + }, + { + path: '/views/owner/addOwnerCommittee', + name: '/views/owner/addOwnerCommittee', + component: () => import('@/views/owner/addOwnerCommitteeList.vue') + }, + { + path: '/views/owner/editOwnerCommittee', + name: '/views/owner/editOwnerCommittee', + component: () => import('@/views/owner/editOwnerCommitteeList.vue') + }, + { + path:'/views/owner/ownerCommitteeDetail', + name:'/views/owner/ownerCommitteeDetail', + component: () => import('@/views/owner/ownerCommitteeDetailList.vue') }, - { - path:'/pages/property/communitySpaceConfirm', - name:'/pages/property/communitySpaceConfirm', - component: () => import('@/views/community/communitySpaceConfirmList.vue') - }, // 其他子路由可以在这里添加 ] }, diff --git a/src/views/community/communitySpacePersonManageLang.js b/src/views/community/communitySpacePersonManageLang.js index 589dc16..9d6c6e8 100644 --- a/src/views/community/communitySpacePersonManageLang.js +++ b/src/views/community/communitySpacePersonManageLang.js @@ -40,9 +40,6 @@ export const messages = { cancel: 'Cancel', confirmCancel: 'Confirm Cancel' }, - common: { - total: 'Total' - } }, zh: { communitySpacePersonManage: { @@ -85,8 +82,5 @@ export const messages = { cancel: '点错了', confirmCancel: '确认取消' }, - common: { - total: '共' - } } } \ No newline at end of file diff --git a/src/views/owner/addOwnerCommitteeLang.js b/src/views/owner/addOwnerCommitteeLang.js new file mode 100644 index 0000000..5c43947 --- /dev/null +++ b/src/views/owner/addOwnerCommitteeLang.js @@ -0,0 +1,108 @@ +export const messages = { + en: { + addOwnerCommittee: { + title: 'Add Owner Committee', + name: 'Name', + sex: 'Gender', + phone: 'Phone', + idCard: 'ID Card', + address: 'Address', + position: 'Position', + post: 'Post', + postDesc: 'Post Description', + appointTime: 'Appointment Term', + curTime: 'Current Term', + state: 'Status', + remark: 'Remark', + emergencyContact: 'Emergency Contact', + contactRelationship: 'Relationship', + contactName: 'Name', + contactPhone: 'Phone', + contactAddress: 'Address', + male: 'Male', + female: 'Female', + onJob: 'On Job', + leaveJob: 'Leave Job', + requiredName: 'Required, please fill in name', + requiredSex: 'Required, please select gender', + requiredPhone: 'Required, please fill in phone', + requiredIdCard: 'Required, please fill in ID card', + requiredAddress: 'Required, please fill in address', + requiredPosition: 'Required, please fill in position', + requiredPost: 'Required, please fill in post', + optionalPostDesc: 'Optional, please fill in post description', + requiredAppointTime: 'Required, please fill in appointment term', + requiredCurTime: 'Required, please fill in current term', + requiredState: 'Required, please select status', + optionalRemark: 'Optional, please fill in remark', + requiredRelationship: 'Required, please fill in relationship', + maxName: 'Name cannot exceed {max} characters', + maxSex: 'Gender cannot exceed {max} characters', + maxPhone: 'Phone cannot exceed {max} characters', + maxIdCard: 'ID card cannot exceed {max} characters', + maxAddress: 'Address cannot exceed {max} characters', + maxPosition: 'Position cannot exceed {max} characters', + maxPost: 'Post cannot exceed {max} characters', + maxPostDesc: 'Post description cannot exceed {max} characters', + maxAppointTime: 'Appointment term cannot exceed {max} characters', + maxCurTime: 'Current term cannot exceed {max} characters', + maxState: 'Status cannot exceed {max} characters', + maxRemark: 'Remark cannot exceed {max} characters', + saveSuccess: 'Save successfully', + saveError: 'Save failed' + } + }, + zh: { + addOwnerCommittee: { + title: '添加业委会', + name: '姓名', + sex: '性别', + phone: '电话', + idCard: '身份证号码', + address: '住址', + position: '职位', + post: '岗位', + postDesc: '岗位描述', + appointTime: '届期', + curTime: '任期', + state: '状态', + remark: '备注', + emergencyContact: '紧急联系人', + contactRelationship: '成员关系', + contactName: '姓名', + contactPhone: '联系电话', + contactAddress: '住址', + male: '男', + female: '女', + onJob: '在职', + leaveJob: '离职', + requiredName: '必填,请填写姓名', + requiredSex: '必填,请选择性别', + requiredPhone: '必填,请填写电话', + requiredIdCard: '必填,请填写身份证号码', + requiredAddress: '必填,请填写住址', + requiredPosition: '必填,请填写职位', + requiredPost: '必填,请填写岗位', + optionalPostDesc: '选填,请填写岗位描述', + requiredAppointTime: '必填,请填写届期', + requiredCurTime: '必填,请填写任期', + requiredState: '必填,请选择状态', + optionalRemark: '选填,请填写备注', + requiredRelationship: '必填,请填写关系', + maxName: '姓名不能超过{max}个字符', + maxSex: '性别不能超过{max}个字符', + maxPhone: '电话不能超过{max}个字符', + maxIdCard: '身份证号码不能超过{max}个字符', + maxAddress: '住址不能超过{max}个字符', + maxPosition: '职位不能超过{max}个字符', + maxPost: '岗位不能超过{max}个字符', + maxPostDesc: '岗位描述不能超过{max}个字符', + maxAppointTime: '届期不能超过{max}个字符', + maxCurTime: '任期不能超过{max}个字符', + maxState: '状态不能超过{max}个字符', + maxRemark: '备注不能超过{max}个字符', + saveSuccess: '保存成功', + saveError: '保存失败' + } + } +} \ No newline at end of file diff --git a/src/views/owner/addOwnerCommitteeList.vue b/src/views/owner/addOwnerCommitteeList.vue new file mode 100644 index 0000000..a30c933 --- /dev/null +++ b/src/views/owner/addOwnerCommitteeList.vue @@ -0,0 +1,373 @@ + + + + + + + {{ $t('addOwnerCommittee.title') }} + + + {{ $t('common.back') }} + + + + + + + + + + + + + + {{ $t('addOwnerCommittee.requiredSex') }} + {{ $t('addOwnerCommittee.male') }} + {{ $t('addOwnerCommittee.female') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('addOwnerCommittee.requiredState') }} + {{ $t('addOwnerCommittee.onJob') }} + {{ $t('addOwnerCommittee.leaveJob') }} + + + + + + + + + + + + + + + + + + + {{ $t('addOwnerCommittee.emergencyContact') }} + + + {{ $t('common.add') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('common.delete') }} + + + + + + + + + + + + {{ $t('common.save') }} + + + {{ $t('common.back') }} + + + + + + + + \ No newline at end of file diff --git a/src/views/owner/editOwnerCommitteeLang.js b/src/views/owner/editOwnerCommitteeLang.js new file mode 100644 index 0000000..f0a3629 --- /dev/null +++ b/src/views/owner/editOwnerCommitteeLang.js @@ -0,0 +1,128 @@ +export const messages = { + en: { + editOwnerCommittee: { + title: 'Edit Owner Committee', + name: 'Name', + nameRequired: 'Name is required', + namePlaceholder: 'Please enter name', + sex: 'Gender', + sexRequired: 'Gender is required', + sexPlaceholder: 'Please select gender', + male: 'Male', + female: 'Female', + phone: 'Phone', + phoneRequired: 'Phone is required', + phoneLength: 'Phone must be 11 digits', + phonePlaceholder: 'Please enter phone number', + idCard: 'ID Card', + idCardRequired: 'ID Card is required', + idCardLength: 'ID Card must be 18 digits', + idCardPlaceholder: 'Please enter ID card number', + address: 'Address', + addressRequired: 'Address is required', + addressMaxLength: 'Address cannot exceed 256 characters', + addressPlaceholder: 'Please enter address', + position: 'Position', + positionRequired: 'Position is required', + positionMaxLength: 'Position cannot exceed 64 characters', + positionPlaceholder: 'Please enter position', + post: 'Post', + postRequired: 'Post is required', + postMaxLength: 'Post cannot exceed 64 characters', + postPlaceholder: 'Please enter post', + postDesc: 'Post Description', + postDescMaxLength: 'Description cannot exceed 64 characters', + postDescPlaceholder: 'Optional, enter description', + appointTime: 'Term', + appointTimeRequired: 'Term is required', + appointTimeMaxLength: 'Term cannot exceed 256 characters', + appointTimePlaceholder: 'Please enter term', + curTime: 'Tenure', + curTimeRequired: 'Tenure is required', + curTimeMaxLength: 'Tenure cannot exceed 256 characters', + curTimePlaceholder: 'Please enter tenure', + status: 'Status', + statusRequired: 'Status is required', + statusPlaceholder: 'Please select status', + onDuty: 'On Duty', + leave: 'Leave', + remark: 'Remark', + remarkMaxLength: 'Remark cannot exceed 200 characters', + remarkPlaceholder: 'Optional, enter remark', + emergencyContact: 'Emergency Contact', + relation: 'Relationship', + relationPlaceholder: 'Required, enter relationship', + contactName: 'Contact Name', + contactNamePlaceholder: 'Required, enter name', + contactPhone: 'Contact Phone', + contactPhonePlaceholder: 'Required, enter phone', + contactAddress: 'Contact Address', + contactAddressPlaceholder: 'Required, enter address', + updateSuccess: 'Update successful', + fetchError: 'Failed to fetch data' + } + }, + zh: { + editOwnerCommittee: { + title: '修改业委会', + name: '姓名', + nameRequired: '姓名不能为空', + namePlaceholder: '请填写姓名', + sex: '性别', + sexRequired: '性别不能为空', + sexPlaceholder: '请选择性别', + male: '男', + female: '女', + phone: '电话', + phoneRequired: '电话不能为空', + phoneLength: '电话必须为11位', + phonePlaceholder: '请填写电话', + idCard: '身份证号码', + idCardRequired: '身份证号码不能为空', + idCardLength: '身份证号码必须为18位', + idCardPlaceholder: '请填写身份证号码', + address: '住址', + addressRequired: '住址不能为空', + addressMaxLength: '住址不能超过256个字符', + addressPlaceholder: '请填写住址', + position: '职位', + positionRequired: '职位不能为空', + positionMaxLength: '职位不能超过64个字符', + positionPlaceholder: '请填写职位', + post: '岗位', + postRequired: '岗位不能为空', + postMaxLength: '岗位不能超过64个字符', + postPlaceholder: '请填写岗位', + postDesc: '岗位描述', + postDescMaxLength: '描述不能超过64个字符', + postDescPlaceholder: '选填,请填写岗位描述', + appointTime: '届期', + appointTimeRequired: '届期不能为空', + appointTimeMaxLength: '届期不能超过256个字符', + appointTimePlaceholder: '请填写届期', + curTime: '任期', + curTimeRequired: '任期不能为空', + curTimeMaxLength: '任期不能超过256个字符', + curTimePlaceholder: '请填写任期', + status: '状态', + statusRequired: '状态不能为空', + statusPlaceholder: '请选择状态', + onDuty: '在职', + leave: '离职', + remark: '备注', + remarkMaxLength: '备注不能超过200个字符', + remarkPlaceholder: '选填,请填写备注', + emergencyContact: '紧急联系人', + relation: '成员关系', + relationPlaceholder: '必填,请填写关系', + contactName: '姓名', + contactNamePlaceholder: '必填,请填写名称', + contactPhone: '联系电话', + contactPhonePlaceholder: '必填,请填写电话', + contactAddress: '住址', + contactAddressPlaceholder: '必填,请填写地址', + updateSuccess: '修改成功', + fetchError: '获取数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/owner/editOwnerCommitteeList.vue b/src/views/owner/editOwnerCommitteeList.vue new file mode 100644 index 0000000..3f5a694 --- /dev/null +++ b/src/views/owner/editOwnerCommitteeList.vue @@ -0,0 +1,318 @@ + + + + + {{ $t('editOwnerCommittee.title') }} + + + {{ $t('common.back') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('editOwnerCommittee.emergencyContact') }} + + + {{ $t('common.add') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('common.save') }} + + + {{ $t('common.back') }} + + + + + + + + \ No newline at end of file diff --git a/src/views/owner/ownerCommitteeDetailLang.js b/src/views/owner/ownerCommitteeDetailLang.js new file mode 100644 index 0000000..dfe9df7 --- /dev/null +++ b/src/views/owner/ownerCommitteeDetailLang.js @@ -0,0 +1,46 @@ +export const messages = { + en: { + ownerCommitteeDetail: { + title: 'Owner Committee Detail', + name: 'Name', + sex: 'Gender', + link: 'Phone', + idCard: 'ID Card', + address: 'Address', + position: 'Position', + post: 'Post', + postDesc: 'Post Description', + appointTime: 'Appointment Period', + curTime: 'Term of Office', + state: 'Status', + remark: 'Remark', + emergencyContacts: 'Emergency Contacts', + memberRelation: 'Member Relation', + contactPhone: 'Contact Phone', + fetchDetailError: 'Failed to fetch committee details', + fetchContactsError: 'Failed to fetch emergency contacts' + } + }, + zh: { + ownerCommitteeDetail: { + title: '业委会成员详情', + name: '姓名', + sex: '性别', + link: '电话', + idCard: '身份证号码', + address: '住址', + position: '职位', + post: '岗位', + postDesc: '岗位描述', + appointTime: '届期', + curTime: '任期', + state: '状态', + remark: '备注', + emergencyContacts: '紧急联系人', + memberRelation: '成员关系', + contactPhone: '联系电话', + fetchDetailError: '获取业委会详情失败', + fetchContactsError: '获取紧急联系人失败' + } + } +} \ No newline at end of file diff --git a/src/views/owner/ownerCommitteeDetailList.vue b/src/views/owner/ownerCommitteeDetailList.vue new file mode 100644 index 0000000..cad42fe --- /dev/null +++ b/src/views/owner/ownerCommitteeDetailList.vue @@ -0,0 +1,251 @@ + + + + + + + {{ $t('ownerCommitteeDetail.title') }} + + + {{ $t('common.back') }} + + + + + + + + + {{ $t('ownerCommitteeDetail.name') }}: + {{ ownerCommitteeDetailInfo.name }} + + + + + {{ $t('ownerCommitteeDetail.sex') }}: + {{ ownerCommitteeDetailInfo.sex == 'B' ? $t('common.male') : $t('common.female') }} + + + + + + + + {{ $t('ownerCommitteeDetail.link') }}: + {{ ownerCommitteeDetailInfo.link }} + + + + + {{ $t('ownerCommitteeDetail.idCard') }}: + {{ ownerCommitteeDetailInfo.idCard }} + + + + + + + + {{ $t('ownerCommitteeDetail.address') }}: + {{ ownerCommitteeDetailInfo.address }} + + + + + {{ $t('ownerCommitteeDetail.position') }}: + {{ ownerCommitteeDetailInfo.position }} + + + + + + + + {{ $t('ownerCommitteeDetail.post') }}: + {{ ownerCommitteeDetailInfo.post }} + + + + + {{ $t('ownerCommitteeDetail.postDesc') }}: + {{ ownerCommitteeDetailInfo.postDesc }} + + + + + + + + {{ $t('ownerCommitteeDetail.appointTime') }}: + {{ ownerCommitteeDetailInfo.appointTime }} + + + + + {{ $t('ownerCommitteeDetail.curTime') }}: + {{ ownerCommitteeDetailInfo.curTime }} + + + + + + + + {{ $t('ownerCommitteeDetail.state') }}: + {{ ownerCommitteeDetailInfo.state == '1000' ? $t('common.inService') : $t('common.leave') + }} + + + + + {{ $t('ownerCommitteeDetail.remark') }}: + {{ ownerCommitteeDetailInfo.remark }} + + + + + + + + + + + + + + {{ $t('ownerCommitteeDetail.emergencyContacts') }} + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/owner/ownerCommitteeManageLang.js b/src/views/owner/ownerCommitteeManageLang.js new file mode 100644 index 0000000..f4a140c --- /dev/null +++ b/src/views/owner/ownerCommitteeManageLang.js @@ -0,0 +1,56 @@ +export const messages = { + en: { + ownerCommitteeManage: { + searchTitle: 'Search Conditions', + namePlaceholder: 'Please enter name', + phonePlaceholder: 'Please enter phone number', + statePlaceholder: 'Please select status', + onDuty: 'On Duty', + resigned: 'Resigned', + listTitle: 'Owner Committee', + id: 'ID', + name: 'Name', + gender: 'Gender', + phone: 'Phone', + idCard: 'ID Card', + address: 'Address', + position: 'Position', + post: 'Post', + appointTime: 'Appoint Time', + term: 'Term', + status: 'Status', + deleteTitle: 'Confirm Operation', + deleteConfirm: 'Are you sure to delete this committee member?', + deleteSuccess: 'Delete successful', + fetchError: 'Failed to fetch committee list', + deleteError: 'Failed to delete committee member' + } + }, + zh: { + ownerCommitteeManage: { + searchTitle: '查询条件', + namePlaceholder: '请输入姓名', + phonePlaceholder: '请输入电话', + statePlaceholder: '请选择状态', + onDuty: '在职', + resigned: '离职', + listTitle: '业委会', + id: '编号', + name: '姓名', + gender: '性别', + phone: '电话', + idCard: '身份证', + address: '住址', + position: '职位', + post: '岗位', + appointTime: '届期', + term: '任期', + status: '状态', + deleteTitle: '确认操作', + deleteConfirm: '确定删除该业委会成员吗?', + deleteSuccess: '删除成功', + fetchError: '获取业委会列表失败', + deleteError: '删除业委会成员失败' + } + } +} \ No newline at end of file diff --git a/src/views/owner/ownerCommitteeManageList.vue b/src/views/owner/ownerCommitteeManageList.vue new file mode 100644 index 0000000..8f6ab39 --- /dev/null +++ b/src/views/owner/ownerCommitteeManageList.vue @@ -0,0 +1,205 @@ + + + + + + {{ $t('ownerCommitteeManage.searchTitle') }} + + + + + + + + + + + + + + + + + {{ $t('common.search') }} + + + {{ $t('common.reset') }} + + + + + + + + + {{ $t('ownerCommitteeManage.listTitle') }} + + {{ $t('common.add') }} + + + + + + + + + {{ scope.row.sex === 'B' ? $t('common.male') : $t('common.female') }} + + + + + + + + + + + + {{ scope.row.state === '1000' ? $t('ownerCommitteeManage.onDuty') : $t('ownerCommitteeManage.resigned') }} + + + + + + {{ $t('common.edit') }} + + + {{ $t('common.delete') }} + + + {{ $t('common.detail') }} + + + + + + + + + + + + + + + + \ No newline at end of file
{{ $t('common.deleteConfirm') }}