Procházet zdrojové kódy

优化发送记录满意度查看

张田田 před 3 měsíci
rodič
revize
a94793c6d6

+ 0 - 1
src/components/EditNotify.vue

@@ -20,7 +20,6 @@ const emits = defineEmits<{
 }>();
 
 const formRef = ref<FormInstance>();
-const loading = ref<boolean>(false);
 
 // 表单数据
 const form = reactive<Partial<Omit<NotifyModel, 'sendTime'>> & { sendTime: Dayjs | undefined }>({

+ 5 - 0
src/request/api/satisfaction.api.ts

@@ -40,6 +40,11 @@ export function satisfactionStatisticsMethod(query?: SatisfactionStatisticsQuery
 //根据满意度调研问卷ID获取满意度调研问卷详情
 export function getSatisfactionDetailMethod(id: string) {
   return request.Post(`/fdhb-pc/satisfiesyManage/detail/${id}`, { name: 'get-satisfaction-detail' });
+  // return request.Post(`/fdhb-pc/satisfiesyManage/getContentBySendRecordId/${id}`, { name: 'get-satisfaction-detail' });
+}
+// 查看个人的满意度调研问卷详情
+export function getSatisfactionContentBySendRecordIdMethod(id: string) {
+  return request.Post(`/fdhb-pc/satisfiesyManage/getContentBySendRecordId/${id}`, { name: 'get-personal-satisfaction-detail' });
 }
 
 // 设置触发条件

+ 22 - 6
src/satisfaction/SeeQuestionnaire.vue

@@ -1,8 +1,7 @@
 <script setup lang="ts">
 import { reactive, onMounted } from 'vue';
 import type { SatisfactionModel } from '@/model/satisfaction.model';
-import { getSatisfactionDetailMethod } from '@/request/api/satisfaction.api';
-import { notification } from 'ant-design-vue';
+import { getSatisfactionDetailMethod,getSatisfactionContentBySendRecordIdMethod } from '@/request/api/satisfaction.api';
 const props = defineProps<{
   data?: any;
 }>();
@@ -59,7 +58,10 @@ const initAnswers = () => {
   form.satisfiesyContent.groups.forEach((group, groupIndex) => {
     group.items.forEach((question, questionIndex) => {
       const key = `group-${groupIndex}-question-${questionIndex}`;
-      if (!(key in answers)) {
+      // 如果问题已有分数,则填充;否则默认为0
+      if (question.score) {
+        answers[key] = parseInt(question.score, 10) || 0;
+      } else if (!(key in answers)) {
         answers[key] = 0;
       }
     });
@@ -68,17 +70,31 @@ const initAnswers = () => {
 
 // 初始化数据
 onMounted(async () => {
+console.log(props.data.type,"传过来的参数");
+  if (props?.data?.type === 1) {
+    if (props.data.id) {
+    const res = await getSatisfactionContentBySendRecordIdMethod(props.data.id);
+    // console.log(res,"res======发送记录");
+      if (res && typeof res === 'object') {
+        Object.assign(form.satisfiesyContent, res);
+        initAnswers();
+      }
+    }
+  }else{
   if (props.data && props.data.id) {
     try {
       const res = await getSatisfactionDetailMethod(props.data.id);
+      // console.log(res,"res======满意度问卷");
       if (res && typeof res === 'object') {
         Object.assign(form, res);
         initAnswers();
       }
     } catch (error) {
-      notification.error({ message: '获取满意度问卷详情失败', description: (error as Error).message });
+      console.log(error);
+      // notification.error({ message: '获取满意度问卷详情失败', description: (error as Error).message });
     }
   }
+}
 });
 </script>
 
@@ -89,7 +105,7 @@ onMounted(async () => {
       <a-form ref="formRef" :model="form" layout="vertical">
         <!-- 问卷标题 -->
         <h1 class="questionnaire-title-section">
-          {{ form.name }}
+          {{ form.satisfiesyContent.name }}
         </h1>
 
         <!-- 介绍文字 -->
@@ -122,7 +138,7 @@ onMounted(async () => {
                 </div>
                 <!-- 评分选项(1-5分) -->
                 <div class="score-options">
-                  <a-radio-group>
+                  <a-radio-group :value="answers[`group-${groupIndex}-question-${questionIndex}`]">
                     <a-radio :value="1">1分</a-radio>
                     <a-radio :value="2">2分</a-radio>
                     <a-radio :value="3">3分</a-radio>

+ 4 - 2
src/satisfaction/SendRecord.vue

@@ -3,7 +3,7 @@ import { ref, reactive, shallowRef, onMounted } from 'vue';
 import SeeSatisfaction from '@/satisfaction/SeeQuestionnaire.vue';
 import type { SatisfactionSendRecordModel, SatisfactionSendRecordQuery } from '@/model/satisfaction.model';
 // 接口数据
-import { satisfactionSendRecordMethod } from '@/request/api/satisfaction.api';
+import { satisfactionSendRecordMethod, getSatisfactionContentBySendRecordIdMethod } from '@/request/api/satisfaction.api';
 import { usePagination } from 'alova/client';
 import dayjs from 'dayjs';
 import { type VxeFormListeners, type VxeFormProps, type VxeGridInstance, type VxeGridListeners, type VxeGridProps, VxeUI } from 'vxe-pc-ui';
@@ -163,6 +163,7 @@ onMounted(() => {
 });
 
 function seeDetail(model?: SatisfactionSendRecordModel, index?: number) {
+const type=1;
   VxeUI.modal.open({
     title: model?.name,
     fullscreen: true,
@@ -174,7 +175,8 @@ function seeDetail(model?: SatisfactionSendRecordModel, index?: number) {
     slots: {
       default() {
         return h(SeeSatisfaction, <any>{
-          data: model,
+          data:{...model, type},
+
         });
       },
     },

+ 11 - 7
src/satisfaction/SetQuestionnaire.vue

@@ -64,10 +64,6 @@ onMounted(() => {
       triggerIntervalHours: null as any,
     };
   }
-  // 如果 triggerIntervalHours 为 0,设置为 null 以显示占位符
-  if (form.satisfiesyPmr.triggerIntervalHours === 0) {
-    form.satisfiesyPmr.triggerIntervalHours = null as any;
-  }
 });
 
 // 保存
@@ -82,7 +78,7 @@ const handleSave = async () => {
       pushType: Array.isArray(form.pushType) ? form.pushType[0] || '0' : form.pushType || '0',
       satisfiesyPmr: {
         ...form.satisfiesyPmr,
-        triggerIntervalHours: form.satisfiesyPmr.triggerIntervalHours === null ? 0 : form.satisfiesyPmr.triggerIntervalHours,
+        triggerIntervalHours: form.satisfiesyPmr.triggerIntervalHours,
       },
     };
     onSetting(submitData).then(() => {
@@ -135,8 +131,16 @@ const handleBack = () => {
               style="width: 160px" 
               class="condition-input"
               type="number"
-              :value="form.satisfiesyPmr.triggerIntervalHours === 0 || form.satisfiesyPmr.triggerIntervalHours === null ? undefined : form.satisfiesyPmr.triggerIntervalHours"
-              @input="(e: any) => { form.satisfiesyPmr.triggerIntervalHours = e.target.value === '' || e.target.value === null ? null : (Number(e.target.value) || null) }"
+              :value="form.satisfiesyPmr.triggerIntervalHours === null ? undefined : form.satisfiesyPmr.triggerIntervalHours"
+              @input="(e: any) => { 
+                const value = e.target.value;
+                if (value === '' || value === null || value === undefined) {
+                  form.satisfiesyPmr.triggerIntervalHours = null;
+                } else {
+                  const num = Number(value);
+                  form.satisfiesyPmr.triggerIntervalHours = isNaN(num) ? null : num;
+                }
+              }"
             />
             <span class="condition-unit">小时</span>
           </div>

+ 1 - 1
src/satisfaction/SurveyList.vue

@@ -74,7 +74,7 @@ const searchFormEmits: VxeFormListeners<SystemIteQuery> = {
   },
 };
 function onSearch(data: SystemIteQuery) {
-  const status: string = (data as any).status ?? '0';
+  const status: string = (data as any).status ?? '';
   model.value = { ...data, status: status as any };
   nextTick(() => {
     (searchFormProps.data as any)!.status = status;