From 0a06b2d19c364a091819054e1e044dbf07848536 Mon Sep 17 00:00:00 2001 From: wuxw <928255095@qq.com> Date: Tue, 24 Jun 2025 00:24:30 +0800 Subject: [PATCH] 开发完成投诉建议 --- src/api/oa/addComplaintApi.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/oa/addComplaintTypeApi.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/oa/complaintApi.js | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/oa/complaintTypeApi.js | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/oa/editComplaintTypeApi.js | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/oa/complaintDetail.vue | 145 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/oa/deleteComplaint.vue | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/oa/deleteComplaintType.vue | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/oa/editComplaint.vue | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/staff/selectStaffsDiv.vue | 285 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------------- src/i18n/oaI18n.js | 16 ++++++++++++++++ src/router/oaRouter.js | 25 +++++++++++++++++++++++++ src/views/oa/addComplaintLang.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/addComplaintList.vue | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/addComplaintTypeLang.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/addComplaintTypeList.vue | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/complaintLang.js | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/complaintList.vue | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/complaintTypeLang.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/complaintTypeList.vue | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/editComplaintTypeLang.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/editComplaintTypeList.vue | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 22 files changed, 2246 insertions(+), 141 deletions(-) create mode 100644 src/api/oa/addComplaintApi.js create mode 100644 src/api/oa/addComplaintTypeApi.js create mode 100644 src/api/oa/complaintApi.js create mode 100644 src/api/oa/complaintTypeApi.js create mode 100644 src/api/oa/editComplaintTypeApi.js create mode 100644 src/components/oa/complaintDetail.vue create mode 100644 src/components/oa/deleteComplaint.vue create mode 100644 src/components/oa/deleteComplaintType.vue create mode 100644 src/components/oa/editComplaint.vue create mode 100644 src/views/oa/addComplaintLang.js create mode 100644 src/views/oa/addComplaintList.vue create mode 100644 src/views/oa/addComplaintTypeLang.js create mode 100644 src/views/oa/addComplaintTypeList.vue create mode 100644 src/views/oa/complaintLang.js create mode 100644 src/views/oa/complaintList.vue create mode 100644 src/views/oa/complaintTypeLang.js create mode 100644 src/views/oa/complaintTypeList.vue create mode 100644 src/views/oa/editComplaintTypeLang.js create mode 100644 src/views/oa/editComplaintTypeList.vue diff --git a/src/api/oa/addComplaintApi.js b/src/api/oa/addComplaintApi.js new file mode 100644 index 0000000..428ba2b --- /dev/null +++ b/src/api/oa/addComplaintApi.js @@ -0,0 +1,66 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取投诉类型列表 +export function listComplaintTypes(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/complaintType.listComplaintType', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存投诉信息 +export function saveComplaint(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/complaint.saveComplaint', + method: 'post', + data: { + ...data, + communityId + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 查询房间信息 +export function queryRooms(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/room.queryRooms', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/oa/addComplaintTypeApi.js b/src/api/oa/addComplaintTypeApi.js new file mode 100644 index 0000000..1120e33 --- /dev/null +++ b/src/api/oa/addComplaintTypeApi.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +/** + * 获取组织树 + * @param {Object} params + * @returns {Promise} + */ +export function listOrgTree(params) { + return new Promise((resolve, reject) => { + request({ + url: '/org.listOrgTree', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 查询员工信息 + * @param {Object} params + * @returns {Promise} + */ +export function getStaffInfos(params) { + return new Promise((resolve, reject) => { + request({ + url: '/query.staff.infos', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 保存投诉类型 + * @param {Object} data + * @returns {Promise} + */ +export function saveComplaintType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/complaintType.saveComplaintType', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/oa/complaintApi.js b/src/api/oa/complaintApi.js new file mode 100644 index 0000000..53dde41 --- /dev/null +++ b/src/api/oa/complaintApi.js @@ -0,0 +1,97 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取投诉列表 +export function listComplaints(params) { + return new Promise((resolve, reject) => { + request({ + url: '/complaint.listComplaints', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取投诉类型列表 +export function listComplaintTypes(params) { + return new Promise((resolve, reject) => { + request({ + url: '/complaintType.listComplaintType', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新投诉信息 +export function updateComplaint(data) { + return new Promise((resolve, reject) => { + request({ + url: '/complaint.updateComplaint', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除投诉 +export function deleteComplaint(data) { + return new Promise((resolve, reject) => { + request({ + url: '/complaint.deleteComplaint', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取工作流审核信息 +export function listWorkflowAuditInfo(params) { + return new Promise((resolve, reject) => { + request({ + url: '/workflow.listWorkflowAuditInfo', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/oa/complaintTypeApi.js b/src/api/oa/complaintTypeApi.js new file mode 100644 index 0000000..67ed5ba --- /dev/null +++ b/src/api/oa/complaintTypeApi.js @@ -0,0 +1,97 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取投诉类型列表 +export function listComplaintType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/complaintType.listComplaintType', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除投诉类型 +export function deleteComplaintType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/complaintType.deleteComplaintType', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加投诉类型 +export function addComplaintType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/complaintType.saveComplaintType', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新投诉类型 +export function updateComplaintType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/complaintType.updateComplaintType', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取单个投诉类型详情 +export function getComplaintTypeDetail(typeCd) { + return new Promise((resolve, reject) => { + request({ + url: '/complaintType.getComplaintType', + method: 'get', + params: { + typeCd, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/oa/editComplaintTypeApi.js b/src/api/oa/editComplaintTypeApi.js new file mode 100644 index 0000000..ef12b9a --- /dev/null +++ b/src/api/oa/editComplaintTypeApi.js @@ -0,0 +1,78 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取投诉类型详情 +export function getComplaintTypeDetail(params) { + return new Promise((resolve, reject) => { + request({ + url: '/complaintType.listComplaintType', + method: 'get', + params: { + ...params, + communityId: params.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新投诉类型 +export function updateComplaintType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/complaintType.updateComplaintType', + method: 'post', + data: { + ...data, + communityId: data.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取组织树 +export function listOrgTree(params) { + return new Promise((resolve, reject) => { + request({ + url: '/org.listOrgTree', + method: 'get', + params: { + ...params, + communityId: params.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取员工信息 +export function getStaffInfos(params) { + return new Promise((resolve, reject) => { + request({ + url: '/query.staff.infos', + method: 'get', + params: { + ...params, + communityId: params.communityId || getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/oa/complaintDetail.vue b/src/components/oa/complaintDetail.vue new file mode 100644 index 0000000..a7a2171 --- /dev/null +++ b/src/components/oa/complaintDetail.vue @@ -0,0 +1,145 @@ + + + \ No newline at end of file diff --git a/src/components/oa/deleteComplaint.vue b/src/components/oa/deleteComplaint.vue new file mode 100644 index 0000000..025229f --- /dev/null +++ b/src/components/oa/deleteComplaint.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/src/components/oa/deleteComplaintType.vue b/src/components/oa/deleteComplaintType.vue new file mode 100644 index 0000000..c07999c --- /dev/null +++ b/src/components/oa/deleteComplaintType.vue @@ -0,0 +1,54 @@ + + + \ No newline at end of file diff --git a/src/components/oa/editComplaint.vue b/src/components/oa/editComplaint.vue new file mode 100644 index 0000000..2029ab9 --- /dev/null +++ b/src/components/oa/editComplaint.vue @@ -0,0 +1,149 @@ + + + \ No newline at end of file diff --git a/src/components/staff/selectStaffsDiv.vue b/src/components/staff/selectStaffsDiv.vue index 9c4dd83..cfdf68d 100644 --- a/src/components/staff/selectStaffsDiv.vue +++ b/src/components/staff/selectStaffsDiv.vue @@ -1,152 +1,155 @@ - - +} + - \ No newline at end of file + \ No newline at end of file diff --git a/src/i18n/oaI18n.js b/src/i18n/oaI18n.js index f79efd9..c2ec8bb 100644 --- a/src/i18n/oaI18n.js +++ b/src/i18n/oaI18n.js @@ -4,6 +4,12 @@ import { messages as noticeManageMessages } from '../views/oa/noticeManageLang' import { messages as addNoticeViewMessages } from '../views/oa/addNoticeViewLang' import { messages as editNoticeViewMessages } from '../views/oa/editNoticeViewLang' import { messages as noticeDetailMessages } from '../views/oa/noticeDetailLang' +import { messages as complaintTypeMessages } from '../views/oa/complaintTypeLang' +import { messages as addComplaintTypeMessages } from '../views/oa/addComplaintTypeLang' +import { messages as editComplaintTypeMessages } from '../views/oa/editComplaintTypeLang' +import { messages as addComplaintMessages } from '../views/oa/addComplaintLang' +import { messages as complaintMessages } from '../views/oa/complaintLang' + export const messages ={ en:{ ...activitiesTypeManageMessages.en, @@ -12,6 +18,11 @@ export const messages ={ ...addNoticeViewMessages.en, ...editNoticeViewMessages.en, ...noticeDetailMessages.en, + ...complaintTypeMessages.en, + ...addComplaintTypeMessages.en, + ...editComplaintTypeMessages.en, + ...addComplaintMessages.en, + ...complaintMessages.en, }, zh:{ ...activitiesTypeManageMessages.zh, @@ -20,5 +31,10 @@ export const messages ={ ...addNoticeViewMessages.zh, ...editNoticeViewMessages.zh, ...noticeDetailMessages.zh, + ...complaintTypeMessages.zh, + ...addComplaintTypeMessages.zh, + ...editComplaintTypeMessages.zh, + ...addComplaintMessages.zh, + ...complaintMessages.zh, } } \ No newline at end of file diff --git a/src/router/oaRouter.js b/src/router/oaRouter.js index 1777b6a..26b3edd 100644 --- a/src/router/oaRouter.js +++ b/src/router/oaRouter.js @@ -29,4 +29,29 @@ export default [ name: '/views/oa/noticeDetail', component: () => import('@/views/oa/noticeDetailList.vue') }, + { + path: '/pages/complaint/complaintType', + name: '/pages/complaint/complaintType', + component: () => import('@/views/oa/complaintTypeList.vue') + }, + { + path: '/views/oa/addComplaintType', + name: '/views/oa/addComplaintType', + component: () => import('@/views/oa/addComplaintTypeList.vue') + }, + { + path: '/views/oa/editComplaintType', + name: '/views/oa/editComplaintType', + component: () => import('@/views/oa/editComplaintTypeList.vue') + }, + { + path: '/views/oa/addComplaint', + name: '/views/oa/addComplaint', + component: () => import('@/views/oa/addComplaintList.vue') + }, + { + path: '/pages/complaint/complaint', + name: '/pages/complaint/complaint', + component: () => import('@/views/oa/complaintList.vue') + }, ] \ No newline at end of file diff --git a/src/views/oa/addComplaintLang.js b/src/views/oa/addComplaintLang.js new file mode 100644 index 0000000..04268cb --- /dev/null +++ b/src/views/oa/addComplaintLang.js @@ -0,0 +1,54 @@ +export const messages = { + en: { + addComplaint: { + title: 'Register Complaint', + type: 'Type', + typePlaceholder: 'Required, please select type', + room: 'Room', + roomPlaceholder: 'Required, please select room', + contact: 'Contact Person', + contactPlaceholder: 'Required, please enter contact person', + phone: 'Phone Number', + phonePlaceholder: 'Required, please enter phone number', + content: 'Content', + contentPlaceholder: 'Required, please enter content', + register: 'Register', + typeRequired: 'Complaint type is required', + contactRequired: 'Contact person is required', + contactMaxLength: 'Contact person cannot exceed 200 characters', + phoneRequired: 'Phone number is required', + phoneFormat: 'Invalid phone number format', + contentRequired: 'Content is required', + contentMaxLength: 'Content cannot exceed 4000 characters', + saveSuccess: 'Complaint registered successfully', + saveError: 'Failed to register complaint', + fetchTypesError: 'Failed to fetch complaint types' + } + }, + zh: { + addComplaint: { + title: '登记投诉', + type: '类型', + typePlaceholder: '必填,请选择类型', + room: '房屋', + roomPlaceholder: '必填,请选择房屋', + contact: '联系人', + contactPlaceholder: '必填,请填写联系人', + phone: '联系电话', + phonePlaceholder: '必填,请填写联系电话', + content: '内容', + contentPlaceholder: '必填,请填写内容', + register: '登记', + typeRequired: '投诉类型不能为空', + contactRequired: '联系人不能为空', + contactMaxLength: '联系人不能大于200位', + phoneRequired: '联系电话不能为空', + phoneFormat: '联系电话格式错误', + contentRequired: '内容不能为空', + contentMaxLength: '内容超过4000位', + saveSuccess: '添加成功', + saveError: '添加失败', + fetchTypesError: '获取投诉类型失败' + } + } +} \ No newline at end of file diff --git a/src/views/oa/addComplaintList.vue b/src/views/oa/addComplaintList.vue new file mode 100644 index 0000000..4f7f8ca --- /dev/null +++ b/src/views/oa/addComplaintList.vue @@ -0,0 +1,149 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/addComplaintTypeLang.js b/src/views/oa/addComplaintTypeLang.js new file mode 100644 index 0000000..f553580 --- /dev/null +++ b/src/views/oa/addComplaintTypeLang.js @@ -0,0 +1,52 @@ +export const messages = { + en: { + addComplaintType: { + title: 'Add Complaint Type', + typeName: 'Type Name', + typeNamePlaceholder: 'Required, please enter type name', + notifyWay: 'Notification Method', + notifyWayPlaceholder: 'Required, please select notification method', + appraiseReply: 'Evaluation Reply', + appraiseReplyPlaceholder: 'Required, please select evaluation reply', + remark: 'Remark', + remarkPlaceholder: 'Optional, please enter remark', + selectStaff: 'Select Staff', + sms: 'SMS', + wechat: 'WeChat', + workLicense: 'WeChat + Work License', + autoReply: 'Auto Reply', + manualReply: 'Manual Reply' + }, + selectStaff: { + orgInfo: 'Organization Info', + staffInfo: 'Staff Info', + selectedStaff: 'Selected Staff', + noRepeatSelect: 'Do not select repeatedly' + } + }, + zh: { + addComplaintType: { + title: '添加投诉类型', + typeName: '类型名称', + typeNamePlaceholder: '必填,请填写类型名称', + notifyWay: '通知方式', + notifyWayPlaceholder: '必填,请选择通知方式', + appraiseReply: '评价回复', + appraiseReplyPlaceholder: '必填,请选择评价回复', + remark: '备注', + remarkPlaceholder: '选填,请填写备注', + selectStaff: '选择员工', + sms: '短信', + wechat: '微信', + workLicense: '微信+员工工牌', + autoReply: '自动回复', + manualReply: '人工回复' + }, + selectStaff: { + orgInfo: '组织信息', + staffInfo: '员工信息', + selectedStaff: '已选员工', + noRepeatSelect: '请勿重复选择' + } + } +} \ No newline at end of file diff --git a/src/views/oa/addComplaintTypeList.vue b/src/views/oa/addComplaintTypeList.vue new file mode 100644 index 0000000..ff0cfc2 --- /dev/null +++ b/src/views/oa/addComplaintTypeList.vue @@ -0,0 +1,156 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/complaintLang.js b/src/views/oa/complaintLang.js new file mode 100644 index 0000000..e806bfd --- /dev/null +++ b/src/views/oa/complaintLang.js @@ -0,0 +1,158 @@ +export const messages = { + en: { + complaint: { + search: { + title: 'Search Conditions', + type: 'Select Type', + room: 'Building-Unit-Room e.g. 1-1-1', + contact: 'Contact Person', + phone: 'Contact Phone', + id: 'Complaint ID', + startTime: 'Start Time', + endTime: 'End Time' + }, + list: { + title: 'Complaints & Suggestions', + add: 'Add Complaint' + }, + status: { + all: 'All', + processing: 'Processing', + completed: 'Completed' + }, + table: { + id: 'ID', + type: 'Type', + room: 'Room', + contact: 'Contact', + phone: 'Phone', + status: 'Status', + handler: 'Handler', + createTime: 'Create Time' + }, + edit: { + title: 'Edit Information', + type: 'Type', + contact: 'Contact', + phone: 'Phone', + content: 'Content', + typePlaceholder: 'Required, please select type', + contactPlaceholder: 'Required, please enter contact', + phonePlaceholder: 'Required, please enter phone', + contentPlaceholder: 'Required, please enter content', + success: 'Edit successful' + }, + delete: { + title: 'Confirm Operation', + confirm: 'Are you sure to delete this complaint?', + success: 'Delete successful' + }, + detail: { + title: 'Details', + room: 'Room', + id: 'ID', + type: 'Type', + contact: 'Contact', + phone: 'Phone', + status: 'Status', + handler: 'Handler', + handlerPhone: 'Handler Phone', + handlerId: 'Handler ID', + content: 'Content', + photos: 'Photos', + serial: 'No.', + handleTime: 'Handle Time', + duration: 'Duration', + comment: 'Comment' + }, + validate: { + type: 'Type is required', + contact: 'Contact is required', + contactMax: 'Contact cannot exceed 200 characters', + phone: 'Phone is required', + phoneFormat: 'Invalid phone format', + content: 'Content is required', + contentMax: 'Content cannot exceed 4000 characters' + }, + fetchError: 'Failed to fetch complaints data' + } + }, + zh: { + complaint: { + search: { + title: '查询条件', + type: '请选择类型', + room: '楼栋-单元-房屋 如1-1-1', + contact: '请输入联系人', + phone: '请输入联系电话', + id: '请输入工单编号', + startTime: '请选择开始时间', + endTime: '请选择结束时间' + }, + list: { + title: '投诉建议', + add: '投诉' + }, + status: { + all: '全部', + processing: '处理中', + completed: '处理完成' + }, + table: { + id: '订单编号', + type: '类型', + room: '房屋', + contact: '联系人', + phone: '联系电话', + status: '状态', + handler: '处理人', + createTime: '创建时间' + }, + edit: { + title: '修改信息', + type: '类型', + contact: '联系人', + phone: '联系电话', + content: '内容', + typePlaceholder: '必填,请选择类型', + contactPlaceholder: '必填,请填写联系人', + phonePlaceholder: '必填,请填写联系电话', + contentPlaceholder: '必填,请填写内容', + success: '修改成功' + }, + delete: { + title: '请确认您的操作', + confirm: '确定删除投诉建议吗?', + success: '删除成功' + }, + detail: { + title: '详情', + room: '房屋', + id: 'ID', + type: '类型', + contact: '联系人', + phone: '联系电话', + status: '状态', + handler: '处理人', + handlerPhone: '处理人电话', + handlerId: '处理人编号', + content: '内容', + photos: '图片', + serial: '序号', + handleTime: '处理时间', + duration: '耗时', + comment: '意见' + }, + validate: { + type: '投诉类型不能为空', + contact: '投诉人不能为空', + contactMax: '投诉人不能大于200位', + phone: '投诉电话不能为空', + phoneFormat: '投诉电话格式错误', + content: '投诉内容不能为空', + contentMax: '投诉状态超过4000位' + }, + fetchError: '获取投诉数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/oa/complaintList.vue b/src/views/oa/complaintList.vue new file mode 100644 index 0000000..9dbea57 --- /dev/null +++ b/src/views/oa/complaintList.vue @@ -0,0 +1,260 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/complaintTypeLang.js b/src/views/oa/complaintTypeLang.js new file mode 100644 index 0000000..040a46c --- /dev/null +++ b/src/views/oa/complaintTypeLang.js @@ -0,0 +1,52 @@ +export const messages = { + en: { + complaintType: { + title: 'Complaint Type', + add: 'Add', + typeName: 'Type Name', + notifyWay: 'Notification Method', + sms: 'SMS', + wechat: 'WeChat', + wechatWorkLicense: 'WeChat + Work License', + appraiseReply: 'Evaluation Reply', + autoReply: 'Auto Reply', + manualReply: 'Manual Reply', + handler: 'Handler', + createTime: 'Create Time', + fetchError: 'Failed to fetch complaint types' + }, + deleteComplaintType: { + confirmTitle: 'Confirm Operation', + confirmText: 'Are you sure to delete this complaint type?', + confirm: 'Confirm Delete', + cancel: 'Cancel', + success: 'Delete successfully', + error: 'Delete failed' + } + }, + zh: { + complaintType: { + title: '投诉类型', + add: '添加', + typeName: '类型名称', + notifyWay: '通知方式', + sms: '短信', + wechat: '微信', + wechatWorkLicense: '微信+员工工牌', + appraiseReply: '评价回复', + autoReply: '自动回复', + manualReply: '人工回复', + handler: '处理人', + createTime: '创建时间', + fetchError: '获取投诉类型失败' + }, + deleteComplaintType: { + confirmTitle: '请确认您的操作', + confirmText: '确定删除投诉类型', + confirm: '确认删除', + cancel: '点错了', + success: '删除成功', + error: '删除失败' + } + } +} \ No newline at end of file diff --git a/src/views/oa/complaintTypeList.vue b/src/views/oa/complaintTypeList.vue new file mode 100644 index 0000000..f068b3a --- /dev/null +++ b/src/views/oa/complaintTypeList.vue @@ -0,0 +1,148 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/editComplaintTypeLang.js b/src/views/oa/editComplaintTypeLang.js new file mode 100644 index 0000000..55fa180 --- /dev/null +++ b/src/views/oa/editComplaintTypeLang.js @@ -0,0 +1,66 @@ +export const messages = { + en: { + editComplaintType: { + title: 'Edit Complaint Type', + typeName: 'Type Name', + typeNamePlaceholder: 'Required, please enter type name', + notifyWay: 'Notification Method', + notifyWayPlaceholder: 'Required, please select notification method', + sms: 'SMS', + wechat: 'WeChat', + workLicense: 'WeChat + Work License', + appraiseReply: 'Evaluation Reply', + appraiseReplyPlaceholder: 'Required, please select evaluation reply', + autoReply: 'Auto Reply', + manualReply: 'Manual Reply', + remark: 'Remark', + remarkPlaceholder: 'Optional, please enter remark', + selectStaff: 'Select Staff', + saveSuccess: 'Save successfully', + saveError: 'Save failed', + loadError: 'Failed to load complaint type details' + }, + selectStaff: { + orgInfo: 'Organization Information', + staffInfo: 'Staff Information', + selectedStaff: 'Selected Staff', + staffAlreadySelected: 'Staff already selected', + loadStaffError: 'Failed to load staff information' + }, + orgTree: { + loadError: 'Failed to load organization tree' + } + }, + zh: { + editComplaintType: { + title: '修改投诉类型', + typeName: '类型名称', + typeNamePlaceholder: '必填,请填写类型名称', + notifyWay: '通知方式', + notifyWayPlaceholder: '必填,请选择通知方式', + sms: '短信', + wechat: '微信', + workLicense: '微信+员工工牌', + appraiseReply: '评价回复', + appraiseReplyPlaceholder: '必填,请选择评价回复', + autoReply: '自动回复', + manualReply: '人工回复', + remark: '备注', + remarkPlaceholder: '选填,请填写备注', + selectStaff: '选择员工', + saveSuccess: '保存成功', + saveError: '保存失败', + loadError: '加载投诉类型详情失败' + }, + selectStaff: { + orgInfo: '组织信息', + staffInfo: '员工信息', + selectedStaff: '已选员工', + staffAlreadySelected: '请勿重复选择', + loadStaffError: '加载员工信息失败' + }, + orgTree: { + loadError: '加载组织树失败' + } + } +} \ No newline at end of file diff --git a/src/views/oa/editComplaintTypeList.vue b/src/views/oa/editComplaintTypeList.vue new file mode 100644 index 0000000..02d79a2 --- /dev/null +++ b/src/views/oa/editComplaintTypeList.vue @@ -0,0 +1,163 @@ + + + + + \ No newline at end of file -- libgit2 0.21.4