From 2ad20e8ccb16a42d13d501215706cdd9439b5449 Mon Sep 17 00:00:00 2001 From: dev_ljl <2590379346@qq.com> Date: Tue, 22 Jul 2025 20:52:22 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=84=8F=E8=A7=81=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customerService/feedbacks/index.ts | 61 +++++++ .../customerService/feedbacks/model.d.ts | 159 ++++++++++++++++ .../customerService/feedbacks/data.ts | 168 +++++++++++++++++ .../feedbacks/feedbacks-modal.vue | 101 +++++++++++ .../customerService/feedbacks/index.vue | 169 ++++++++++++++++++ 5 files changed, 658 insertions(+) create mode 100644 apps/web-antd/src/api/property/customerService/feedbacks/index.ts create mode 100644 apps/web-antd/src/api/property/customerService/feedbacks/model.d.ts create mode 100644 apps/web-antd/src/views/property/customerService/feedbacks/data.ts create mode 100644 apps/web-antd/src/views/property/customerService/feedbacks/feedbacks-modal.vue create mode 100644 apps/web-antd/src/views/property/customerService/feedbacks/index.vue diff --git a/apps/web-antd/src/api/property/customerService/feedbacks/index.ts b/apps/web-antd/src/api/property/customerService/feedbacks/index.ts new file mode 100644 index 00000000..5989ef68 --- /dev/null +++ b/apps/web-antd/src/api/property/customerService/feedbacks/index.ts @@ -0,0 +1,61 @@ +import type { FeedbacksVO, FeedbacksForm, FeedbacksQuery } from './model'; + +import type { ID, IDS } from '#/api/common'; +import type { PageResult } from '#/api/common'; + +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; + +/** +* 查询意见反馈列表 +* @param params +* @returns 意见反馈列表 +*/ +export function feedbacksList(params?: FeedbacksQuery) { + return requestClient.get>('/system/feedbacks/list', { params }); +} + +/** + * 导出意见反馈列表 + * @param params + * @returns 意见反馈列表 + */ +export function feedbacksExport(params?: FeedbacksQuery) { + return commonExport('/system/feedbacks/export', params ?? {}); +} + +/** + * 查询意见反馈详情 + * @param id id + * @returns 意见反馈详情 + */ +export function feedbacksInfo(id: ID) { + return requestClient.get(`/system/feedbacks/${id}`); +} + +/** + * 新增意见反馈 + * @param data + * @returns void + */ +export function feedbacksAdd(data: FeedbacksForm) { + return requestClient.postWithMsg('/system/feedbacks', data); +} + +/** + * 更新意见反馈 + * @param data + * @returns void + */ +export function feedbacksUpdate(data: FeedbacksForm) { + return requestClient.putWithMsg('/system/feedbacks', data); +} + +/** + * 删除意见反馈 + * @param id id + * @returns void + */ +export function feedbacksRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/system/feedbacks/${id}`); +} diff --git a/apps/web-antd/src/api/property/customerService/feedbacks/model.d.ts b/apps/web-antd/src/api/property/customerService/feedbacks/model.d.ts new file mode 100644 index 00000000..bab69c5a --- /dev/null +++ b/apps/web-antd/src/api/property/customerService/feedbacks/model.d.ts @@ -0,0 +1,159 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; + +export interface FeedbacksVO { + /** + * 主键 + */ + id: string | number; + + /** + * 反馈类型(0保修1保洁2会议) + */ + feedbackType: string; + + /** + * 反馈人 + */ + feedbackPersion: number; + + /** + * 反馈人电话 + */ + feedbackPersionPhone: string; + + /** + * 反馈内容 + */ + feedbackContent: string; + + /** + * 反馈位置 + */ + feedbackLocation: string; + + /** + * 反馈图片 + */ + feedbackImg: string; + + /** + * 是否转至工单 + */ + isWorkOrder: string; + + /** + * 状态(1待处理2处理中3处理完成) + */ + status: string; + + /** + * 客服电话 + */ + serviceName: string; + +} + +export interface FeedbacksForm extends BaseEntity { + /** + * 主键 + */ + id?: string | number; + + /** + * 反馈类型(0保修1保洁2会议) + */ + feedbackType?: string; + + /** + * 反馈人 + */ + feedbackPersion?: number; + + /** + * 反馈人电话 + */ + feedbackPersionPhone?: string; + + /** + * 反馈内容 + */ + feedbackContent?: string; + + /** + * 反馈位置 + */ + feedbackLocation?: string; + + /** + * 反馈图片 + */ + feedbackImg?: string; + + /** + * 是否转至工单 + */ + isWorkOrder?: string; + + /** + * 状态(1待处理2处理中3处理完成) + */ + status?: string; + + /** + * 客服电话 + */ + serviceName?: string; + +} + +export interface FeedbacksQuery extends PageQuery { + /** + * 反馈类型(0保修1保洁2会议) + */ + feedbackType?: string; + + /** + * 反馈人 + */ + feedbackPersion?: number; + + /** + * 反馈人电话 + */ + feedbackPersionPhone?: string; + + /** + * 反馈内容 + */ + feedbackContent?: string; + + /** + * 反馈位置 + */ + feedbackLocation?: string; + + /** + * 反馈图片 + */ + feedbackImg?: string; + + /** + * 是否转至工单 + */ + isWorkOrder?: string; + + /** + * 状态(1待处理2处理中3处理完成) + */ + status?: string; + + /** + * 客服电话 + */ + serviceName?: string; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/views/property/customerService/feedbacks/data.ts b/apps/web-antd/src/views/property/customerService/feedbacks/data.ts new file mode 100644 index 00000000..04e73671 --- /dev/null +++ b/apps/web-antd/src/views/property/customerService/feedbacks/data.ts @@ -0,0 +1,168 @@ +import type { FormSchemaGetter } from '#/adapter/form'; +import type { VxeGridProps } from '#/adapter/vxe-table'; +import {getDictOptions} from "#/utils/dict"; +import {renderDict} from "#/utils/render"; + + +export const querySchema: FormSchemaGetter = () => [ + { + component: 'Select', + componentProps: { + options:getDictOptions('wy_yjfklx') + }, + fieldName: 'feedbackType', + label: '反馈类型', + }, + { + component: 'Select', + componentProps: { + options:getDictOptions('wy_yjclzt') + }, + fieldName: 'status', + label: '处理状态', + }, +]; + + +export const columns: VxeGridProps['columns'] = [ + { type: 'checkbox', width: 60 }, + { + title: '反馈类型', + field: 'feedbackType', + slots:{ + default: ({row})=>{ + return renderDict(row.feedbackType,'wy_yjfklx') + } + } + }, + { + title: '反馈人', + field: 'feedbackPersion', + }, + { + title: '反馈人电话', + field: 'feedbackPersionPhone', + }, + { + title: '反馈内容', + field: 'feedbackContent', + }, + { + title: '反馈位置', + field: 'feedbackLocation', + }, + { + title: '反馈图片', + field: 'feedbackImg', + }, + { + title: '是否转至工单', + field: 'isWorkOrder', + slots:{ + default: ({row})=>{ + return renderDict(row.isWorkOrder,'wy_sf') + } + } + }, + { + title: '处理状态', + field: 'status', + slots:{ + default: ({row})=>{ + return renderDict(row.status,'wy_yjclzt') + } + } + }, + { + title: '客服电话', + field: 'serviceName', + }, + { + field: 'action', + fixed: 'right', + slots: { default: 'action' }, + title: '操作', + width: 180, + }, +]; + +export const modalSchema: FormSchemaGetter = () => [ + { + label: '主键', + fieldName: 'id', + component: 'Input', + dependencies: { + show: () => false, + triggerFields: [''], + }, + }, + { + label: '反馈类型', + fieldName: 'feedbackType', + component: 'Select', + componentProps: { + options:getDictOptions('wy_yjfklx') + }, + rules: 'selectRequired', + }, + { + label: '反馈人', + fieldName: 'feedbackPersion', + component: 'Input', + rules: 'required', + }, + { + label: '反馈人电话', + fieldName: 'feedbackPersionPhone', + component: 'Input', + rules: 'required', + }, + { + label: '反馈内容', + fieldName: 'feedbackContent', + component: 'Textarea', + rules: 'required', + formItemClass:'col-span-2' + }, + { + label: '反馈位置', + fieldName: 'feedbackLocation', + component: 'Input', + rules: 'required', + formItemClass:'col-span-2' + }, + { + label: '反馈图片', + fieldName: 'feedbackImg', + component: 'ImageUpload', + componentProps: { + // accept: 'image/*', // 可选拓展名或者mime类型 ,拼接 + // maxCount: 1, // 最大上传文件数 默认为1 为1会绑定为string而非string[]类型 + }, + rules: 'required', + formItemClass:'col-span-2' + }, + { + label: '转至工单', + fieldName: 'isWorkOrder', + component: 'RadioGroup', + componentProps: { + buttonStyle: 'solid', + options: getDictOptions('wy_sf'), + }, + defaultValue:'0' + }, + { + label: '处理状态', + fieldName: 'status', + component: 'Select', + componentProps: { + options: getDictOptions('wy_yjclzt') + }, + }, + { + label: '客服电话', + fieldName: 'serviceName', + component: 'Input', + }, +]; diff --git a/apps/web-antd/src/views/property/customerService/feedbacks/feedbacks-modal.vue b/apps/web-antd/src/views/property/customerService/feedbacks/feedbacks-modal.vue new file mode 100644 index 00000000..ead082ef --- /dev/null +++ b/apps/web-antd/src/views/property/customerService/feedbacks/feedbacks-modal.vue @@ -0,0 +1,101 @@ + + + + diff --git a/apps/web-antd/src/views/property/customerService/feedbacks/index.vue b/apps/web-antd/src/views/property/customerService/feedbacks/index.vue new file mode 100644 index 00000000..ad9d0cb7 --- /dev/null +++ b/apps/web-antd/src/views/property/customerService/feedbacks/index.vue @@ -0,0 +1,169 @@ + + +