diff --git a/apps/web-antd/src/views/doctor/online-consultation/components/TransferPrescriptionCard.vue b/apps/web-antd/src/views/doctor/online-consultation/components/TransferPrescriptionCard.vue
index 978f78ed..a90612f6 100644
--- a/apps/web-antd/src/views/doctor/online-consultation/components/TransferPrescriptionCard.vue
+++ b/apps/web-antd/src/views/doctor/online-consultation/components/TransferPrescriptionCard.vue
@@ -297,6 +297,24 @@ const emit = defineEmits(['import-success']);
{{ transferInfo.transfer_reason }}
+
+
+
+
+
+ 咨询问题
+
+
+
+ {{ index + 1 }}.
+ {{ qa.question }}
+
+
+
+ {{ qa.answer }}
+
+
+
@@ -478,4 +496,96 @@ const emit = defineEmits(['import-success']);
background: #0f172a;
border-color: #334155;
}
+
+/* 咨询问题区域 */
+.questions-section {
+ margin-top: 16px;
+ padding: 16px;
+ background: #f8fafc;
+ border-radius: 12px;
+ border: 1px solid #e2e8f0;
+}
+
+.section-title {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ font-size: 14px;
+ font-weight: 600;
+ color: #1e293b;
+ margin-bottom: 12px;
+}
+
+.section-title i {
+ color: #0A84FF;
+ font-size: 16px;
+}
+
+.question-item {
+ background: white;
+ padding: 12px 16px;
+ border-radius: 8px;
+ margin-bottom: 12px;
+ border: 1px solid #e2e8f0;
+}
+
+.question-item:last-child {
+ margin-bottom: 0;
+}
+
+.question-text {
+ font-size: 14px;
+ color: #334155;
+ line-height: 1.6;
+ margin-bottom: 8px;
+}
+
+.question-number {
+ font-weight: 600;
+ color: #0A84FF;
+ margin-right: 4px;
+}
+
+.answer-text {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ font-size: 13px;
+ font-weight: 500;
+ padding: 6px 12px;
+ border-radius: 6px;
+ width: fit-content;
+}
+
+.answer-yes {
+ background: #dcfce7;
+ color: #16a34a;
+}
+
+.answer-yes i {
+ color: #16a34a;
+}
+
+.answer-no {
+ background: #fee2e2;
+ color: #dc2626;
+}
+
+.answer-no i {
+ color: #dc2626;
+}
+
+.dark .questions-section {
+ background: #1e293b;
+ border-color: #334155;
+}
+
+.dark .question-item {
+ background: #0f172a;
+ border-color: #334155;
+}
+
+.dark .section-title {
+ color: #e2e8f0;
+}
diff --git a/apps/web-antd/src/views/doctor/online-consultation/components/TransferPrescriptionMessageCard.vue b/apps/web-antd/src/views/doctor/online-consultation/components/TransferPrescriptionMessageCard.vue
index a0d14fe6..ee413113 100644
--- a/apps/web-antd/src/views/doctor/online-consultation/components/TransferPrescriptionMessageCard.vue
+++ b/apps/web-antd/src/views/doctor/online-consultation/components/TransferPrescriptionMessageCard.vue
@@ -273,6 +273,24 @@ const handleImportToPrescription = async () => {
转诊时间:
{{ transferInfo.transfer_time }}
+
+
+
+
+
+ 咨询问题
+
+
+
+ {{ index + 1 }}.
+ {{ qa.question }}
+
+
+
+ {{ qa.answer }}
+
+
+
@@ -439,4 +457,96 @@ const handleImportToPrescription = async () => {
.dark .transfer-prescription-message-card:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}
+
+/* 咨询问题区域 */
+.questions-section {
+ margin-top: 16px;
+ padding: 12px;
+ background: #f8fafc;
+ border-radius: 8px;
+ border: 1px solid #e2e8f0;
+}
+
+.section-title {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ font-size: 13px;
+ font-weight: 600;
+ color: #1e293b;
+ margin-bottom: 10px;
+}
+
+.section-title i {
+ color: #0A84FF;
+ font-size: 14px;
+}
+
+.question-item {
+ background: white;
+ padding: 10px 12px;
+ border-radius: 6px;
+ margin-bottom: 8px;
+ border: 1px solid #e2e8f0;
+}
+
+.question-item:last-child {
+ margin-bottom: 0;
+}
+
+.question-text {
+ font-size: 13px;
+ color: #334155;
+ line-height: 1.5;
+ margin-bottom: 6px;
+}
+
+.question-number {
+ font-weight: 600;
+ color: #0A84FF;
+ margin-right: 4px;
+}
+
+.answer-text {
+ display: flex;
+ align-items: center;
+ gap: 4px;
+ font-size: 12px;
+ font-weight: 500;
+ padding: 4px 10px;
+ border-radius: 4px;
+ width: fit-content;
+}
+
+.answer-yes {
+ background: #dcfce7;
+ color: #16a34a;
+}
+
+.answer-yes i {
+ color: #16a34a;
+}
+
+.answer-no {
+ background: #fee2e2;
+ color: #dc2626;
+}
+
+.answer-no i {
+ color: #dc2626;
+}
+
+.dark .questions-section {
+ background: #1e293b;
+ border-color: #334155;
+}
+
+.dark .question-item {
+ background: #0f172a;
+ border-color: #334155;
+}
+
+.dark .section-title {
+ color: #e2e8f0;
+}
diff --git a/apps/web-antd/src/views/system/transfer-question/api/index.ts b/apps/web-antd/src/views/system/transfer-question/api/index.ts
new file mode 100644
index 00000000..4a67ebaa
--- /dev/null
+++ b/apps/web-antd/src/views/system/transfer-question/api/index.ts
@@ -0,0 +1,43 @@
+import { requestClient } from '#/api/request';
+
+const prefix = 'transfer-question/';
+
+/**
+ * 获取转诊问题列表
+ * @param data
+ */
+export async function getTransferQuestionList(data: any) {
+ return requestClient.post(`${prefix}list`, data);
+}
+
+/**
+ * 获取转诊问题详情
+ * @param id
+ */
+export async function getTransferQuestionInfo(id: number) {
+ return requestClient.get(`${prefix}detail`, { params: { id } });
+}
+
+/**
+ * 新增转诊问题
+ * @param data
+ */
+export async function createTransferQuestion(data: Record) {
+ return requestClient.post(`${prefix}add`, data);
+}
+
+/**
+ * 更新转诊问题
+ * @param data
+ */
+export async function updateTransferQuestion(data: Record) {
+ return requestClient.post(`${prefix}update`, data);
+}
+
+/**
+ * 删除转诊问题
+ * @param data
+ */
+export async function deleteTransferQuestion(data: Record) {
+ return requestClient.post(`${prefix}delete`, data);
+}
diff --git a/apps/web-antd/src/views/system/transfer-question/components/modal.vue b/apps/web-antd/src/views/system/transfer-question/components/modal.vue
new file mode 100644
index 00000000..36537baa
--- /dev/null
+++ b/apps/web-antd/src/views/system/transfer-question/components/modal.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/system/transfer-question/config/form.ts b/apps/web-antd/src/views/system/transfer-question/config/form.ts
new file mode 100644
index 00000000..4e9221db
--- /dev/null
+++ b/apps/web-antd/src/views/system/transfer-question/config/form.ts
@@ -0,0 +1,64 @@
+import type { VbenFormProps } from '#/adapter/form';
+
+export const modalFormProps: VbenFormProps = {
+ wrapperClass: 'grid-cols-12', // 24栅格,
+ commonConfig: {
+ formItemClass: 'col-span-12',
+ // 所有表单项
+ componentProps: {
+ class: 'w-full',
+ },
+ },
+ layout: 'horizontal',
+ schema: [
+ {
+ component: 'VbenInput',
+ fieldName: 'id',
+ label: 'ID',
+ dependencies: {
+ show: false,
+ triggerFields: ['id'],
+ },
+ },
+ {
+ component: 'VbenTextarea',
+ componentProps: {
+ placeholder: '请输入问题内容',
+ rows: 3,
+ },
+ fieldName: 'question',
+ label: '问题内容',
+ rules: 'required',
+ },
+ {
+ component: 'InputNumber',
+ componentProps: {
+ placeholder: '请输入排序(数字越小越靠前)',
+ min: 0,
+ },
+ defaultValue: 0,
+ fieldName: 'sort',
+ label: '排序',
+ rules: 'required',
+ },
+ {
+ component: 'RadioGroup',
+ componentProps: {
+ options: [
+ {
+ label: '启用',
+ value: 1,
+ },
+ {
+ label: '禁用',
+ value: 0,
+ },
+ ],
+ },
+ defaultValue: 1,
+ fieldName: 'status',
+ label: '状态',
+ rules: 'required',
+ },
+ ],
+};
diff --git a/apps/web-antd/src/views/system/transfer-question/config/search.ts b/apps/web-antd/src/views/system/transfer-question/config/search.ts
new file mode 100644
index 00000000..30e938ab
--- /dev/null
+++ b/apps/web-antd/src/views/system/transfer-question/config/search.ts
@@ -0,0 +1,45 @@
+import type { VbenFormProps } from '#/adapter/form';
+
+export const formOptions: VbenFormProps = {
+ // 默认展开
+ collapsed: false,
+ schema: [
+ {
+ component: 'VbenInput',
+ componentProps: {
+ placeholder: '输入问题内容',
+ },
+ defaultValue: '',
+ fieldName: 'question',
+ label: '问题内容',
+ },
+ {
+ component: 'VbenSelect',
+ componentProps: {
+ allowClear: true,
+ options: [
+ {
+ label: '启用',
+ value: 1,
+ },
+ {
+ label: '禁用',
+ value: 0,
+ },
+ ],
+ placeholder: '请选择状态',
+ },
+ fieldName: 'status',
+ label: '状态',
+ },
+ ],
+ // 控制表单是否显示折叠按钮
+ showCollapseButton: true,
+ submitButtonOptions: {
+ content: '查询',
+ },
+ // 是否在字段值改变时提交表单
+ submitOnChange: true,
+ // 按下回车时是否提交表单
+ submitOnEnter: false,
+};
diff --git a/apps/web-antd/src/views/system/transfer-question/config/table.ts b/apps/web-antd/src/views/system/transfer-question/config/table.ts
new file mode 100644
index 00000000..1ba0e79b
--- /dev/null
+++ b/apps/web-antd/src/views/system/transfer-question/config/table.ts
@@ -0,0 +1,76 @@
+import type { VxeGridProps } from '#/adapter/vxe-table';
+
+import { getTransferQuestionList } from '../api';
+
+interface RowType {
+ id: number;
+ question: string;
+ sort: number;
+ status: number;
+ created_at: string;
+ updated_at: string;
+}
+
+export const gridOptions: VxeGridProps = {
+ checkboxConfig: {
+ highlight: true,
+ labelField: '',
+ },
+ columnConfig: {
+ useKey: true,
+ },
+ rowConfig: {
+ useKey: true,
+ },
+ columns: [
+ { type: 'checkbox', width: 60 },
+ { field: 'id', align: 'left', title: 'ID', width: 100 },
+ { field: 'question', align: 'left', title: '问题内容', minWidth: 300 },
+ { field: 'sort', title: '排序', width: 100 },
+ {
+ field: 'status',
+ title: '状态',
+ width: 100,
+ slots: { default: 'status' },
+ },
+ { field: 'created_at', title: '创建时间', width: 180 },
+ { field: 'updated_at', title: '更新时间', width: 180 },
+ {
+ type: 'html',
+ align: 'right',
+ title: '操作',
+ slots: { default: 'action' },
+ width: 200,
+ },
+ ],
+ keepSource: true,
+ pagerConfig: {},
+ proxyConfig: {
+ ajax: {
+ // 请求后端接口方法
+ query: async ({ page }, formValues) => {
+ return await getTransferQuestionList({
+ page: page.currentPage,
+ pageSize: page.pageSize,
+ ...formValues,
+ });
+ },
+ },
+ },
+ height: 'auto',
+ border: false,
+ toolbarConfig: {
+ // 是否显示搜索表单控制按钮
+ // @ts-ignore 正式环境时有完整的类型声明
+ search: true,
+ refresh: true, // 刷新
+ print: false, // 打印
+ export: false, // 导出
+ // custom: true, // 自定义列
+ zoom: true, // 最大化最小化
+ slots: {
+ buttons: 'toolbar-buttons',
+ },
+ },
+ showOverflow: false,
+};
diff --git a/apps/web-antd/src/views/system/transfer-question/index.vue b/apps/web-antd/src/views/system/transfer-question/index.vue
new file mode 100644
index 00000000..b0716c77
--- /dev/null
+++ b/apps/web-antd/src/views/system/transfer-question/index.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.status === 1 ? '启用' : '禁用' }}
+
+
+
+
+
+
+
+