Explorar el Código

满意度调查问卷改版

lighter hace 11 meses
padre
commit
3c754ecb2a

+ 6 - 21
src/api/assessments.js

@@ -16,40 +16,25 @@ export function submitCovidAssessment(data) {
   })
 }
 
-export function getRegionProvince() {
-  return request({
-    url: '/covid19Assessment/getRegionProvince',
-    method: 'get',
-  })
-}
-
-export function getChildRegion(parentCode) {
-  return request({
-    url: '/covid19Assessment/getChildRegion',
-    method: 'get',
-    params: { parentCode },
-  })
-}
-
 export function submitDepressionAssessment(data) {
   return request({
-    url: '/assessment/submitDepressionAssessment',
+    url: '/questionnaire/submitDepressionAssessment',
     method: 'post',
     data,
   })
 }
 
-export function submitClinicSatisfiedAssessment(data) {
+export function submitOutpatientQuestionnaire(data) {
   return request({
-    url: 'assessment/submitClinicSatisfiedAssessment',
+    url: '/questionnaire/submitOutpatientQuestionnaire',
     method: 'post',
     data,
   })
 }
 
-export function submitInpatientSatisfiedAssessment(data) {
+export function submitInpatientQuestionnaire(data) {
   return request({
-    url: 'assessment/submitInpatientSatisfiedAssessment',
+    url: '/questionnaire/submitInpatientQuestionnaire',
     method: 'post',
     data,
   })
@@ -57,7 +42,7 @@ export function submitInpatientSatisfiedAssessment(data) {
 
 export function submitComplaintsAndSuggestions(data) {
   return request({
-    url: 'assessment/submitComplaintsAndSuggestions',
+    url: '/questionnaire/submitComplaintsAndSuggestions',
     method: 'post',
     data,
   })

+ 68 - 63
src/utils/request.js

@@ -4,80 +4,85 @@ import store from '../store/index'
 
 const baseURL = import.meta.env.VITE_BASE_URL
 const service = axios.create({
-    baseURL: baseURL,
-    withCredentials: true,
-    timeout: 0,
+  baseURL: baseURL,
+  withCredentials: true,
+  timeout: 0,
 })
 
 service.interceptors.request.use(
-    (config) => {
-        config.headers['token'] = localStorage.getItem('token')
-        store.commit('SET_LOADING', true);
-        return config
-    },
-    (error) => {
-        store.commit('SET_LOADING', false)
-        return Promise.reject(error)
-    }
+  (config) => {
+    config.headers['token'] = localStorage.getItem('token')
+    store.commit('SET_LOADING', true);
+    return config
+  },
+  (error) => {
+    store.commit('SET_LOADING', false)
+    return Promise.reject(error)
+  }
 )
 
 service.interceptors.response.use(
-    (response) => {
-        store.commit('SET_LOADING', false)
-        if (response.data.code === 200) {
-            return response.data.data
-        }
-        if (response.data.code === 0) {
-            return response.data
-        }
-        if (response.data.code > 1000 && response.data.code < 2000) {
-            showToast({
-                message: response.data.message,
-                position: 'top',
-            });
-        } else if (response.data.code > 2000 && response.data.code < 3000) {
-            showDialog({
-                title: '提示',
-                message: response.data.message,
-            }).then(() => {})
-        } else if (response.data.code > 3000 && response.data.code < 4000) {
-            showDialog({
-                title: '提示',
-                message: response.data.message,
-            }).then(() => {
-                WeixinJSBridge.call('closeWindow')
-            })
-        }
-        return Promise.reject(new Error(response.data.message || '服务器内部错误'));
-    },
-    (error) => {
-        store.commit('SET_LOADING', false)
-        return Promise.reject(error)
+  (response) => {
+    store.commit('SET_LOADING', false)
+    if (response.data.code === 200) {
+      return response.data.data
+    }
+    if (response.data.code === 0) {
+      return response.data
     }
+    if (response.data.code > 1000 && response.data.code < 2000) {
+      showToast({
+        message: response.data.message,
+        position: 'top',
+      });
+    } else if (response.data.code > 2000 && response.data.code < 3000) {
+      showDialog({
+        title: '提示',
+        message: response.data.message,
+      }).then(() => {
+      })
+    } else if (response.data.code > 3000 && response.data.code < 4000) {
+      showDialog({
+        title: '提示',
+        message: response.data.message,
+      }).then(() => {
+        WeixinJSBridge.call('closeWindow')
+      })
+    }
+    return Promise.reject(new Error(response.data.message || '服务器内部错误'));
+  },
+  (error) => {
+    store.commit('SET_LOADING', false)
+    showToast({
+      message: error.toString(),
+      position: 'top',
+    });
+    return Promise.reject(error)
+  }
 )
 
 export default service
 
 export function fetchInspectionReportImage(data) {
-    store.commit('SET_LOADING', true);
-    return new Promise((resolve, reject) => {
-        axios({
-            url: baseURL + '/inspections/fetchReportImage',
-            method: 'post',
-            data: data,
-            headers: {'token': localStorage.getItem('token')},
-            contentType: 'image/JPEG',
-            responseType: 'blob',
-        }).then(response => {
-            const blob = new Blob(
-                [response.data],
-                {type: response.headers['content-type']}
-            );
-            resolve(URL.createObjectURL(blob))
-        }).catch(() => {
-            reject("请求失败,请稍后再试。");
-        }).finally(() => {
-            store.commit('SET_LOADING', false);
-        })
+  store.commit('SET_LOADING', true);
+  return new Promise((resolve, reject) => {
+    axios({
+      url: baseURL + '/inspections/fetchReportImage',
+      method: 'post',
+      data: data,
+      headers: {'token': localStorage.getItem('token')},
+      contentType: 'image/JPEG',
+      responseType: 'blob',
+    }).then(response => {
+      const blob = new Blob(
+        [response.data],
+        {type: response.headers['content-type']}
+      );
+      resolve(URL.createObjectURL(blob))
+    }).catch(() => {
+      reject("请求失败,请稍后再试。");
+    }).finally(() => {
+      store.commit('SET_LOADING', false);
     })
+  })
 }

+ 87 - 119
src/views/hospital-service/assessments/ClinicSatisfiedAssessment.vue

@@ -1,61 +1,61 @@
 <template>
   <window-size>
-    <div v-for="(item, index) in headQuestions" :key="item.key"
+    <div v-for="(item, index) in headQuestions" :key="item.code"
          style="padding: 6px 0 12px 6px; border-bottom: 1px dashed rgb(128,128,128)">
-      <p>{{ item.label }}</p>
+      <p>{{ item.prefix }}{{ item.label }}</p>
       <div style="margin-top: 4px">
-        <van-radio-group v-model="answer['item' + item.key]" direction="horizontal">
-          <van-radio name="A">满意</van-radio>
-          <van-radio name="B">不满意</van-radio>
-          <van-radio name="C">未接触</van-radio>
+        <van-radio-group v-model="answer[item.code]" direction="horizontal">
+          <van-radio name="满意">满意</van-radio>
+          <van-radio name="不满意">不满意</van-radio>
+          <van-radio v-if="item.hasWjc" name="未接触">未接触</van-radio>
         </van-radio-group>
       </div>
-      <div v-show="answer['item' + item.key] === 'B'">
-        <p style="margin-top: 6px">{{ tailQuestions[index].label }}</p>
-        <van-checkbox-group v-model="answer['item' + (item.key + 1) + 'Arr']" direction="horizontal">
+      <div v-show="answer[item.code] === '不满意'">
+        <p style="margin-top: 6px">{{ tailQuestions[index].prefix }}{{ tailQuestions[index].label }}</p>
+        <van-checkbox-group v-model="answer[item.code + 'BmyyyList']" direction="horizontal">
           <van-checkbox
               shape="square"
-              v-for="child in getOptions(item.key)"
-              :key="child.key"
-              :name="child.key"
+              v-for="child in getOptions(item.code)"
+              :key="child"
+              :name="child"
               style="margin-top: 5px"
-          >{{ child.label }}
+          >{{ child }}
           </van-checkbox>
         </van-checkbox-group>
-        <div class="m-input">其他:<input type="text" v-model="answer['item' + (item.key + 1) + 'Input']"></div>
+        <div class="m-input">其他:<input type="text" v-model="answer[item.code + 'Input']"></div>
       </div>
     </div>
 
     <div style="padding: 6px 6px 12px 6px; border-bottom: 1px dashed rgb(128,128,128)">
-      <p>9-1、您选择我院的主要原因是什么?</p>
-      <van-checkbox-group v-model="answer['item1002Arr']" direction="horizontal">
+      <p>10-1、您选择我院的主要原因是什么?</p>
+      <van-checkbox-group v-model="answer.xzwyyyList" direction="horizontal">
         <van-checkbox
             shape="square"
-            v-for="child in checkboxOptions4"
-            :key="child.key"
-            :name="child.key"
+            v-for="child in lwyyyXx"
+            :key="child"
+            :name="child"
             style="margin-top: 5px"
-        >{{ child.label }}
+        >{{ child }}
         </van-checkbox>
       </van-checkbox-group>
-      <div class="m-input">其他:<input type="text" v-model="answer['item1002Input']"></div>
+      <div class="m-input">其他:<input type="text" v-model="answer['xzwyyyInput']"></div>
     </div>
     <div style="padding: 6px 6px 12px 6px; border-bottom: 1px dashed rgb(128,128,128)">
-      <p>10-1、如果您或亲朋好友需要医疗保健、治疗服务时,您会选择再来或推荐来吗?</p>
-      <van-radio-group v-model="answer['item1004']" direction="horizontal">
+      <p>11-1、如果您或亲朋好友需要医疗保健、治疗服务时,您会选择再来或推荐来吗?</p>
+      <van-radio-group v-model="answer.sfhxzzl" direction="horizontal">
         <van-radio
             shape="square"
-            v-for="child in checkboxOptions5"
-            :name="child.key"
+            v-for="child in hbhXx"
+            :name="child"
             style="margin-top: 5px"
-        >{{ child.label }}
+        >{{ child }}
         </van-radio>
       </van-radio-group>
     </div>
 
     <div style="padding: 6px 6px 12px 6px; border-bottom: 1px dashed rgb(128,128,128)">
-      <p>11-1、请您对本次就诊的医疗服务全过程给予整体评价(1-10分)</p>
-      <van-radio-group v-model="answer['item1006']" direction="horizontal">
+      <p>12-1、请您对本次就诊的医疗服务全过程给予整体评价(1-10分)</p>
+      <van-radio-group v-model="answer.ztpj" direction="horizontal">
         <van-radio
             shape="square"
             v-for="n in 10"
@@ -69,20 +69,20 @@
     <div style="padding: 6px 6px 12px 6px; border-bottom: 1px dashed rgb(128,128,128)">
       <p>您最满意的医生、护士是:</p>
       <div class="m-input">
-        <input type="text" v-model="answer.satisfyStaff">
+        <input type="text" v-model="answer.zmydyshs">
       </div>
     </div>
 
     <div class="m-input" style="padding: 0 6px; margin-bottom: 20px">
       您对我院的建议和意见:
-      <input type="text" v-model="answer.suggestion" style="width: 100%">
+      <input type="text" v-model="answer.dwydjyhyj" style="width: 100%">
     </div>
     <van-button type="primary" block :disabled="disableSubmitButton" @click="submitAnswer">提交</van-button>
   </window-size>
 </template>
 <script setup>
 import {reactive, ref} from "vue";
-import {submitClinicSatisfiedAssessment} from '@/api/assessments'
+import {submitOutpatientQuestionnaire} from '@/api/assessments'
 import {showDialog, showToast} from "vant";
 import {useRouter} from "vue-router";
 import {receiveAssessmentGift} from "@/api/coupon";
@@ -99,89 +99,55 @@ const answer = reactive({
 
 const disableSubmitButton = ref(false)
 const headQuestions = [
-  {key: 11, label: '1-1、您对门急诊导诊及护理人员服务满意吗?'}, // checkboxOptions3
-  {key: 13, label: '2-1、您对门急诊医生服务满意吗?'},
-  {key: 1, label: '3-1、您对药剂科工作人员服务满意吗?'},
-  {key: 3, label: '4-1、您对放射科工作人员服务满意吗?'},
-  {key: 5, label: '5-1、您对超声影像科工作人员服务满意吗?'},
-  {key: 7, label: '6-1、您对检验科工作人员服务满意吗?'},
-  {key: 9, label: '7-1、您对收费窗口工作人员服务满意吗?'},
-  {key: 15, label: '8-1、您对医保科工作人员服务满意吗?'},
+  {code: 'mjzdzjhl', prefix: '1-1、', label: '您对门急诊导诊及护理人员服务满意吗?', hasWjc: true},
+  {code: 'mjzys', prefix: '2-1、', label: '您对门急诊医生服务满意吗?', hasWjc: true},
+  {code: 'yjk', prefix: '3-1、', label: '您对药剂科工作人员服务满意吗?', hasWjc: true},
+  {code: 'fsk', prefix: '4-1、', label: '您对放射科工作人员服务满意吗?', hasWjc: true},
+  {code: 'csyxk', prefix: '5-1、', label: '您对超声影像科工作人员服务满意吗?', hasWjc: true},
+  {code: 'jyk', prefix: '6-1、', label: '您对检验科工作人员服务满意吗?', hasWjc: true},
+  {code: 'sfck', prefix: '7-1、', label: '您对收费窗口工作人员服务满意吗?', hasWjc: true},
+  {code: 'ybk', prefix: '8-1、', label: '您对医保科工作人员服务满意吗?', hasWjc: true},
+  {code: 'yyhjws', prefix: '9-1、', label: '您对医院环境卫生满意吗?'}
 ]
 
 const tailQuestions = [
-  {key: 12, label: '1-2、您对门急诊导诊及护理人员哪些服务不满意?'}, // checkboxOptions3
-  {key: 14, label: '2-2、您对门急诊医生哪些服务不满意?'},
-  {key: 2, label: '3-2、您对药剂科工作人员哪些服务不满意?'},
-  {key: 4, label: '4-2、您对放射科工作人员哪些服务不满意?'},
-  {key: 6, label: '5-2、您对超声影像科工作人员哪些服务不满意?'},
-  {key: 8, label: '6-2、您对检验科工作人员哪些服务不满意?'},
-  {key: 10, label: '7-2、您对收费窗口工作人员哪些服务不满意?'},
-  {key: 16, label: '8-2、您对医保科工作人员哪些服务不满意?'},
+  {prefix: '1-2、', label: '您对门急诊导诊及护理人员哪些服务不满意?'}, // checkboxOptions3
+  {prefix: '2-2、', label: '您对门急诊医生哪些服务不满意?'},
+  {prefix: '3-2、', label: '您对药剂科工作人员哪些服务不满意?'},
+  {prefix: '4-2、', label: '您对放射科工作人员哪些服务不满意?'},
+  {prefix: '5-2、', label: '您对超声影像科工作人员哪些服务不满意?'},
+  {prefix: '6-2、', label: '您对检验科工作人员哪些服务不满意?'},
+  {prefix: '7-2、', label: '您对收费窗口工作人员哪些服务不满意?'},
+  {prefix: '8-2、', label: '您对医保科工作人员哪些服务不满意?'},
+  {prefix: '9-2、', label: '您对医院环境卫生哪些地方不满意?'},
 ]
 
-const checkboxOptions = [
-  {key: 'A', label: '叫号服务'},
-  {key: 'B', label: '等待时长'},
-  {key: 'C', label: '服务态度'},
-  {key: 'D', label: '沟通解释'},
-  {key: 'E', label: '及时响应'},
-  {key: 'F', label: '服装礼仪'},
-  {key: 'G', label: '准确率'},
-]
+// 默认选项
+const mrXx = ['叫号服务', '等待时长', '服务态度', '沟通解释', '及时响应', '服装礼仪', '准确率']
 
-const checkboxOptions2 = [
-  {key: 'A', label: '技术水平'},
-  {key: 'B', label: '隐私保护'},
-  {key: 'C', label: '服务态度'},
-  {key: 'D', label: '沟通解释'},
-  {key: 'E', label: '按时坐诊'},
-  {key: 'F', label: '服装礼仪'},
-]
+const mjzysXx = ['技术水平', '隐私保护', '服务态度', '沟通解释', '按时坐诊', '服装礼仪']
 
-const checkboxOptions3 = [
-  {key: 'A', label: '技术水平'},
-  {key: 'B', label: '隐私保护'},
-  {key: 'C', label: '服务态度'},
-  {key: 'D', label: '沟通解释'},
-  {key: 'E', label: '病情巡视'},
-  {key: 'F', label: '服装礼仪'},
-]
+const mjzjdzhlXx = ['技术水平', '隐私保护', '服务态度', '沟通解释', '病情巡视', '服装礼仪']
 
-const checkboxOptions4 = [
-  {key: 'A', label: '慕名而来'},
-  {key: 'B', label: '就近选择'},
-  {key: 'C', label: '朋友推荐'},
-  {key: 'D', label: '网络查询'},
-  {key: 'E', label: '服务水平'},
-  {key: 'F', label: '环境设备'},
-  {key: 'G', label: '医疗价格'},
-]
+const lwyyyXx = ['慕名而来', '就近选择', '朋友推荐', '网络查询', '服务水平', '环境设备', '医疗价格']
 
-const checkboxOptions41 = [
-  {key: 'A', label: '专业能力'},
-  {key: 'B', label: '等待时长'},
-  {key: 'C', label: '服务态度'},
-  {key: 'D', label: '沟通解释'},
-  {key: 'E', label: '及时响应'},
-  {key: 'F', label: '服装礼仪'},
-  {key: 'G', label: '服务流程'},
-]
+const ybkXx = ['专业能力', '等待时长', '服务态度', '沟通解释', '及时响应', '服装礼仪', '服务流程']
 
-const checkboxOptions5 = [
-  {key: 'A', label: '会'},
-  {key: 'B', label: '不会'},
-]
+const hjwxXx = ['食堂卫生', '门诊大厅卫生', '诊间卫生', '病房卫生', '卫生间卫生', '电梯卫生', '楼道卫生', '座椅卫生', '公共区域']
+
+const hbhXx = ['会', '不会']
 
-function getOptions(key) {
-  if (key === 11) {
-    return checkboxOptions3
-  } else if (key === 13) {
-    return checkboxOptions2;
-  } else if (key === 15) {
-    return checkboxOptions41;
+function getOptions(code) {
+  if (code === 'mjzdzjhl') {
+    return mjzjdzhlXx
+  } else if (code === 'mjzys') {
+    return mjzysXx
+  } else if (code === 'ybk') {
+    return ybkXx
+  } else if (code === 'yyhjws') {
+    return hjwxXx
   } else {
-    return checkboxOptions
+    return mrXx
   }
 }
 
@@ -189,7 +155,8 @@ const submitAnswer = () => {
   if (!validAnswer()) {
     return
   }
-  submitClinicSatisfiedAssessment(answer).then(() => {
+  console.log(answer)
+  submitOutpatientQuestionnaire(answer).then(() => {
     disableSubmitButton.value = true
     if (couponGift) {
       receiveAssessmentGift(routerParams).then((res) => {
@@ -221,19 +188,20 @@ const gotoResult = () => {
 }
 
 const keyList = [
-  {key1: 'item11', key2: 'item12Arr', key3: 'item12Input'},
-  {key1: 'item13', key2: 'item14Arr', key3: 'item14Input'},
-  {key1: 'item1', key2: 'item2Arr', key3: 'item2Input'},
-  {key1: 'item3', key2: 'item4Arr', key3: 'item4Input'},
-  {key1: 'item5', key2: 'item6Arr', key3: 'item6Input'},
-  {key1: 'item7', key2: 'item8Arr', key3: 'item8Input'},
-  {key1: 'item9', key2: 'item10Arr', key3: 'item10Input'},
-  {key1: 'item15', key2: 'item16Arr', key3: 'item16Input'},
+  {key1: 'mjzdzjhl', key2: 'mjzdzjhlBmyyyList', key3: 'mjzdzjhlInput'},
+  {key1: 'mjzys', key2: 'mjzysBmyyyList', key3: 'mjzysInput'},
+  {key1: 'yjk', key2: 'yjkBmyyyList', key3: 'yjkInput'},
+  {key1: 'fsk', key2: 'fskBmyyyList', key3: 'fskInput'},
+  {key1: 'csyxk', key2: 'csyxkBmyyyList', key3: 'csyxkInput'},
+  {key1: 'jyk', key2: 'jykBmyyyList', key3: 'jykInput'},
+  {key1: 'sfck', key2: 'sfckBmyyyList', key3: 'sfckInput'},
+  {key1: 'ybk', key2: 'ybkBmyyyList', key3: 'ybkInput'},
+  {key1: 'yyhjws', key2: 'yyhjwsBmyyyList', key3: 'yyhjwsInput'}
 ]
 const validAnswer = () => {
   for (let i = 0; i < keyList.length; i++) {
     let keyObj = keyList[i]
-    if (answer[keyObj.key1] === 'B'
+    if (answer[keyObj.key1] === '不满意'
         && (!answer[keyObj.key2] || answer[keyObj.key2].length === 0)
         && !answer[keyObj.key3]) {
       showToast({
@@ -245,26 +213,26 @@ const validAnswer = () => {
     }
   }
 
-  if ((!answer['item1002Arr'] || answer['item1002Arr'].length === 0)
-      && !answer['item1002Input']) {
+  if ((!answer.xzwyyyList || answer.xzwyyyList.length === 0)
+      && !answer.xzwyyyInput) {
     showToast({
-      message: `请补充或者勾选【9-1】中的选项。`,
+      message: `请补充或者勾选【10-1】中的选项。`,
       position: 'top',
       duration: 3000,
     });
     return false;
   }
-  if (!answer['item1004']) {
+  if (!answer.sfhxzzl) {
     showToast({
-      message: `请勾选【10-1】中的选项。`,
+      message: `请勾选【11-1】中的选项。`,
       position: 'top',
       duration: 3000,
     })
     return false
   }
-  if (!answer['item1006']) {
+  if (!answer.ztpj) {
     showToast({
-      message: `请勾选【11-1】中的选项。`,
+      message: `请勾选【12-1】中的选项。`,
       position: 'top',
       duration: 3000,
     })

+ 94 - 232
src/views/hospital-service/assessments/InpatientSatisfiedAssessment.vue

@@ -1,148 +1,60 @@
 <template>
   <window-size>
-    <div class="question-box">
-      <p>1-1、您对住院科室护理人员服务满意吗?</p>
+    <div v-for="(item, index) in headQuestions" :key="item.code" class="question-box">
+      <p>{{index + 1}}-1、{{ item.label }}</p>
       <div style="margin-top: 4px">
-        <van-radio-group v-model="answer.item1" direction="horizontal">
-          <van-radio name="A">满意</van-radio>
-          <van-radio name="B">不满意</van-radio>
+        <van-radio-group v-model="answer[item.code]" direction="horizontal">
+          <van-radio name="满意">满意</van-radio>
+          <van-radio name="不满意">不满意</van-radio>
+          <van-radio v-if="item.hasWjc" name="未接触">未接触</van-radio>
         </van-radio-group>
       </div>
-      <div v-show="answer.item1 === 'B'">
-        <p style="margin-top: 6px">1-2、您对住院科室护理人员哪些服务不满意?</p>
-        <van-checkbox-group v-model="answer.item2Arr" direction="horizontal">
+      <div v-show="answer[item.code] === '不满意'">
+        <p style="margin-top: 6px">{{ index + 1 }}-2、{{ tailQuestions[index] }}</p>
+        <van-checkbox-group v-model="answer[item.code + 'BmyyyList']" direction="horizontal">
           <van-checkbox
               shape="square"
-              v-for="child in checkboxOptions1"
-              :key="child.key"
-              :name="child.key"
+              v-for="child in getOptions(item.code)"
+              :key="child"
+              :name="child"
               style="margin-top: 5px"
-          >{{ child.label }}
-          </van-checkbox>
-        </van-checkbox-group>
-      </div>
-    </div>
-    <div class="question-box">
-      <p>2-1、您对住院科室医生服务满意吗?</p>
-      <div style="margin-top: 4px">
-        <van-radio-group v-model="answer.item3" direction="horizontal">
-          <van-radio name="A">满意</van-radio>
-          <van-radio name="B">不满意</van-radio>
-        </van-radio-group>
-      </div>
-      <div v-show="answer.item3 === 'B'">
-        <p style="margin-top: 6px">2-2、您对住院科室医生哪些服务不满意?</p>
-        <van-checkbox-group v-model="answer.item4Arr" direction="horizontal">
-          <van-checkbox
-              shape="square"
-              v-for="child in checkboxOptions2"
-              :key="child.key"
-              :name="child.key"
-              style="margin-top: 5px"
-          >{{ child.label }}
-          </van-checkbox>
-        </van-checkbox-group>
-      </div>
-    </div>
-    <div class="question-box">
-      <p>3-1、您对医院环境卫生满意吗?</p>
-      <div style="margin-top: 4px">
-        <van-radio-group v-model="answer.item5" direction="horizontal">
-          <van-radio name="A">满意</van-radio>
-          <van-radio name="B">不满意</van-radio>
-        </van-radio-group>
-      </div>
-      <div v-show="answer.item5 === 'B'">
-        <p style="margin-top: 6px">3-2、您对医院环境卫生哪些项目不满意?</p>
-        <van-checkbox-group v-model="answer.item6Arr" direction="horizontal">
-          <van-checkbox
-              shape="square"
-              v-for="child in checkboxOptions3"
-              :key="child.key"
-              :name="child.key"
-              style="margin-top: 5px"
-          >{{ child.label }}
-          </van-checkbox>
-        </van-checkbox-group>
-      </div>
-    </div>
-    <div class="question-box">
-      <p>4-1、您对医院食堂满意吗?</p>
-      <div style="margin-top: 4px">
-        <van-radio-group v-model="answer.item7" direction="horizontal">
-          <van-radio name="A">满意</van-radio>
-          <van-radio name="B">不满意</van-radio>
-          <van-radio name="C">未接触</van-radio>
-        </van-radio-group>
-      </div>
-      <div v-show="answer.item7 === 'B'">
-        <p style="margin-top: 6px">4-2、您对医院食堂哪些项目不满意?</p>
-        <van-checkbox-group v-model="answer.item8Arr" direction="horizontal">
-          <van-checkbox
-              shape="square"
-              v-for="child in checkboxOptions4"
-              :key="child.key"
-              :name="child.key"
-              style="margin-top: 5px"
-          >{{ child.label }}
-          </van-checkbox>
-        </van-checkbox-group>
-      </div>
-    </div>
-    <div v-for="(item, index) in headQuestions" :key="item.key" class="question-box">
-      <p>{{ item.label }}</p>
-      <div style="margin-top: 4px">
-        <van-radio-group v-model="answer['item' + item.key]" direction="horizontal">
-          <van-radio name="A">满意</van-radio>
-          <van-radio name="B">不满意</van-radio>
-          <van-radio name="C">未接触</van-radio>
-        </van-radio-group>
-      </div>
-      <div v-show="answer['item' + item.key] === 'B'">
-        <p style="margin-top: 6px">{{ tailQuestions[index].label }}</p>
-        <van-checkbox-group v-model="answer['item' + (item.key + 1) + 'Arr']" direction="horizontal">
-          <van-checkbox
-              shape="square"
-              v-for="child in getOptions(item.key)"
-              :key="child.key"
-              :name="child.key"
-              style="margin-top: 5px"
-          >{{ child.label }}
+          >{{ child }}
           </van-checkbox>
         </van-checkbox-group>
+        <div class="m-input">其他:<input type="text" v-model="answer[item.code + 'Input']"></div>
       </div>
     </div>
 
     <div style="padding: 6px 6px 12px 6px; border-bottom: 1px dashed rgb(128,128,128)">
       <p>13-1、您选择我院的主要原因是什么?</p>
-      <van-checkbox-group v-model="answer['item1002Arr']" direction="horizontal">
+      <van-checkbox-group v-model="answer.xzwyyyList" direction="horizontal">
         <van-checkbox
             shape="square"
-            v-for="child in checkboxOptions5"
-            :key="child.key"
-            :name="child.key"
+            v-for="child in xzwyyyXx"
+            :key="child"
+            :name="child"
             style="margin-top: 5px"
-        >{{ child.label }}
+        >{{ child }}
         </van-checkbox>
       </van-checkbox-group>
-      <div class="m-input">其他:<input type="text" v-model="answer['item1002Input']"></div>
+      <div class="m-input">其他:<input type="text" v-model="answer.xzwyyyInput"></div>
     </div>
     <div style="padding: 6px 6px 12px 6px; border-bottom: 1px dashed rgb(128,128,128)">
       <p>14-1、如果您或亲朋好友需要医疗保健、治疗服务时,您会选择再来或推荐来吗?</p>
-      <van-radio-group v-model="answer['item1004']" direction="horizontal">
+      <van-radio-group v-model="answer.sfhxzzl" direction="horizontal">
         <van-radio
             shape="square"
-            v-for="child in checkboxOptions6"
-            :name="child.key"
+            v-for="child in hbhXx"
+            :name="child"
             style="margin-top: 5px"
-        >{{ child.label }}
+        >{{ child }}
         </van-radio>
       </van-radio-group>
     </div>
 
     <div style="padding: 6px 6px 12px 6px; border-bottom: 1px dashed rgb(128,128,128)">
       <p>15-1、请您对本次就诊的医疗服务全过程给予整体评价(1-10分)</p>
-      <van-radio-group v-model="answer['item1006']" direction="horizontal">
+      <van-radio-group v-model="answer.ztpj" direction="horizontal">
         <van-radio
             shape="square"
             v-for="n in 10"
@@ -156,20 +68,20 @@
     <div style="padding: 6px 6px 12px 6px; border-bottom: 1px dashed rgb(128,128,128)">
       <p>您最满意的医生、护士是:</p>
       <div class="m-input">
-        <input type="text" v-model="answer.satisfyStaff">
+        <input type="text" v-model="answer.zmydyshs">
       </div>
     </div>
 
     <div class="m-input" style="padding: 0 6px; margin-bottom: 20px">
       您对我院的建议和意见:
-      <input type="text" v-model="answer.suggestion" style="width: 100%">
+      <input type="text" v-model="answer.dwydjyhyj" style="width: 100%">
     </div>
     <van-button type="primary" block :disabled="disableSubmitButton" @click="submitAnswer">提交</van-button>
   </window-size>
 </template>
 <script setup>
 import {onMounted, reactive, ref} from "vue";
-import {submitInpatientSatisfiedAssessment} from '@/api/assessments'
+import {submitInpatientQuestionnaire} from '@/api/assessments'
 import {showDialog, showToast} from "vant";
 import {useRouter} from "vue-router";
 import {receiveAssessmentGift} from "@/api/coupon";
@@ -188,107 +100,59 @@ const answer = reactive({
 })
 const disableSubmitButton = ref(false)
 
-const checkboxOptions1 = [
-  {key: 'A', label: '技术水平'},
-  {key: 'B', label: '隐私保护'},
-  {key: 'C', label: '服务态度'},
-  {key: 'D', label: '沟通解释'},
-  {key: 'E', label: '病情巡视'},
-  {key: 'F', label: '服装礼仪'},
-  {key: 'G', label: '其他'},
-]
+// 默认选项
+const mrXx = ['叫号服务', '等待时长', '服务态度', '沟通解释', '及时响应', '服装礼仪', '准确率']
 
-const checkboxOptions2 = [
-  {key: 'A', label: '技术水平'},
-  {key: 'B', label: '隐私保护'},
-  {key: 'C', label: '服务态度'},
-  {key: 'D', label: '沟通解释'},
-  {key: 'E', label: '按时查房'},
-  {key: 'F', label: '服装礼仪'},
-  {key: 'G', label: '其他'},
-]
+const zykshlXx = ['技术水平', '隐私保护', '服务态度', '沟通解释', '病情巡视', '服装礼仪', '其他']
 
-const checkboxOptions3 = [
-  {key: 'A', label: '卫生情况'},
-  {key: 'B', label: '布局不合理'},
-  {key: 'C', label: '服务态度'},
-  {key: 'D', label: '舒适度'},
-  {key: 'E', label: '按时清理'},
-  {key: 'F', label: '服装礼仪'},
-  {key: 'G', label: '其他'},
-]
+const zyksysXx = ['技术水平', '隐私保护', '服务态度', '沟通解释', '按时查房', '服装礼仪', '其他']
 
-const checkboxOptions4 = [
-  {key: 'A', label: '卫生情况'},
-  {key: 'B', label: '口味'},
-  {key: 'C', label: '菜品'},
-  {key: 'D', label: '服务态度'},
-  {key: 'F', label: '服装礼仪'},
-  {key: 'G', label: '其他'},
-]
+const yystXx = ['卫生情况', '口味', '菜品', '服务态度', '服装礼仪', '其他']
 
-const checkboxOptions41 = [
-  {key: 'A', label: '专业能力'},
-  {key: 'B', label: '等待时长'},
-  {key: 'C', label: '服务态度'},
-  {key: 'D', label: '沟通解释'},
-  {key: 'E', label: '及时响应'},
-  {key: 'F', label: '服装礼仪'},
-  {key: 'G', label: '服务流程'},
-]
+const ybkXx = ['专业能力', '等待时长', '服务态度', '沟通解释', '及时响应', '服装礼仪', '服务流程']
 
-const checkboxOptions5 = [
-  {key: 'A', label: '慕名而来'},
-  {key: 'B', label: '就近选择'},
-  {key: 'C', label: '朋友推荐'},
-  {key: 'D', label: '网络查询'},
-  {key: 'E', label: '服务水平'},
-  {key: 'F', label: '环境设备'},
-  {key: 'G', label: '医疗价格'},
-]
+const xzwyyyXx = ['慕名而来', '就近选择', '朋友推荐', '网络查询', '服务水平', '环境设备', '医疗价格']
 
-const checkboxOptions6 = [
-  {key: 'A', label: '会'},
-  {key: 'B', label: '不会'},
-]
+const hbhXx = ['会', '不会']
+
+const hjwxXx = ['食堂卫生', '门诊大厅卫生', '诊间卫生', '病房卫生', '卫生间卫生', '电梯卫生', '楼道卫生', '座椅卫生', '公共区域']
 
 const headQuestions = [
-  {key: 9, label: '5-1、您对药剂科工作人员服务满意吗?'},
-  {key: 11, label: '6-1、您对放射科工作人员服务满意吗?'},
-  {key: 13, label: '7-1、您对超声影像科工作人员服务满意吗?'},
-  {key: 15, label: '8-1、您对检验科工作人员服务满意吗?'},
-  {key: 17, label: '9-1、您对收费窗口工作人员服务满意吗?'},
-  {key: 19, label: '10-1、您对门诊医护人员服务满意吗?'},
-  {key: 21, label: '11-1、您对急诊医护人员服务满意吗?'},
-  {key: 23, label: '12-1、您对医保科工作人员服务满意吗?'}
+  {code: 'zykshl', label: '您对住院科室护理人员服务满意吗?'},
+  {code: 'zyksys', label: '您对住院科室医生服务满意吗?'},
+  {code: 'yyst', label: '您对医院食堂满意吗?', hasWjc: true},
+  {code: 'yjk', label: '您对药剂科工作人员服务满意吗?', hasWjc: true},
+  {code: 'fsk', label: '您对放射科工作人员服务满意吗?', hasWjc: true},
+  {code: 'csyxk', label: '您对超声影像科工作人员服务满意吗?', hasWjc: true},
+  {code: 'jyk', label: '您对检验科工作人员服务满意吗?', hasWjc: true},
+  {code: 'sfck', label: '您对收费窗口工作人员服务满意吗?', hasWjc: true},
+  {code: 'mzyh', label: '您对门诊医护人员服务满意吗?', hasWjc: true},
+  {code: 'jzyh', label: '您对急诊医护人员服务满意吗?', hasWjc: true},
+  {code: 'ybk', label: '您对医保科工作人员服务满意吗?', hasWjc: true},
+  {code: 'yyhjws', label: '您对医院环境卫生满意吗?'}
 ]
 
 const tailQuestions = [
-  {key: 10, label: '5-2、您对药剂科工作人员哪些服务不满意?'},
-  {key: 12, label: '6-2、您对放射科工作人员哪些服务不满意?'},
-  {key: 14, label: '7-2、您对超声影像科工作人员哪些服务不满意?'},
-  {key: 16, label: '8-2、您对检验科工作人员哪些服务不满意?'},
-  {key: 18, label: '9-2、您对收费窗口工作人员哪些服务不满意?'},
-  {key: 20, label: '10-2、您对门诊医护人员哪些服务不满意?'},
-  {key: 22, label: '11-2、您对急诊医护人员哪些服务不满意?'},
-  {key: 24, label: '12-2、您对医保科工作人员哪些服务不满意?'},
-]
-
-const checkboxOptions = [
-  {key: 'A', label: '叫号服务'},
-  {key: 'B', label: '等待时长'},
-  {key: 'C', label: '服务态度'},
-  {key: 'D', label: '沟通解释'},
-  {key: 'E', label: '及时响应'},
-  {key: 'F', label: '服装礼仪'},
-  {key: 'G', label: '准确率'},
+  '您对住院科室护理人员哪些服务不满意?',
+  '您对住院科室医生哪些服务不满意?',
+  '您对医院食堂哪些地方不满意?',
+  '您对药剂科工作人员哪些服务不满意?',
+  '您对放射科工作人员哪些服务不满意?',
+  '您对超声影像科工作人员哪些服务不满意?',
+  '您对检验科工作人员哪些服务不满意?',
+  '您对收费窗口工作人员哪些服务不满意?',
+  '您对门诊医护人员哪些服务不满意?',
+  '您对急诊医护人员哪些服务不满意?',
+  '您对医保科工作人员哪些服务不满意?',
+  '您对医院环境卫生哪些地方不满意?'
 ]
 
 const submitAnswer = () => {
   if (!validAnswer()) {
     return
   }
-  submitInpatientSatisfiedAssessment(answer).then(() => {
+  console.log(answer)
+  submitInpatientQuestionnaire(answer).then(() => {
     disableSubmitButton.value = true
     if (couponGift) {
       receiveAssessmentGift(routerParams).then((res) => {
@@ -320,24 +184,24 @@ const gotoResult = () => {
 }
 
 const keyList = [
-  {key1: 'item1', key2: 'item2Arr'},
-  {key1: 'item3', key2: 'item4Arr'},
-  {key1: 'item5', key2: 'item6Arr'},
-  {key1: 'item7', key2: 'item8Arr'},
-  {key1: 'item9', key2: 'item10Arr'},
-  {key1: 'item11', key2: 'item12Arr'},
-  {key1: 'item13', key2: 'item14Arr'},
-  {key1: 'item15', key2: 'item16Arr'},
-  {key1: 'item17', key2: 'item18Arr'},
-  {key1: 'item19', key2: 'item20Arr'},
-  {key1: 'item21', key2: 'item22Arr'},
-  {key1: 'item23', key2: 'item24Arr'},
+  {key1: 'zykshl', key2: 'zykshlBmyyyList', key3: 'zykshlInput'},
+  {key1: 'zyksys', key2: 'zyksysBmyyyList', key3: 'zyksysInput'},
+  {key1: 'yyst', key2: 'yystBmyyyList', key3: 'yystInput'},
+  {key1: 'yjk', key2: 'yjkBmyyyList', key3: 'yjkInput'},
+  {key1: 'fsk', key2: 'yjkBmyyyList', key3: 'fskInput'},
+  {key1: 'csyxk', key2: 'csyxkBmyyyList', key3: 'csyxkInput'},
+  {key1: 'jyk', key2: 'jykBmyyyList', key3: 'jykInput'},
+  {key1: 'sfck', key2: 'sfckBmyyyList', key3: 'sfckInput'},
+  {key1: 'mzyh', key2: 'mzyhBmyyyList', key3: 'mzyhInput'},
+  {key1: 'jzyh', key2: 'jzyhBmyyyList', key3: 'jzyhInput'},
+  {key1: 'ybk', key2: 'ybkBmyyyList', key3: 'ybkInput'},
+  {key1: 'yyhjws', key2: 'yyhjwsBmyyyList', key3: 'yyhjwsInput'},
 ]
 
 const validAnswer = () => {
   for (let i = 0; i < keyList.length; i++) {
     let keyObj = keyList[i]
-    if (answer[keyObj.key1] === 'B'
+    if (answer[keyObj.key1] === '不满意'
         && (!answer[keyObj.key2] || answer[keyObj.key2].length === 0)
         && !answer[keyObj.key3]) {
       showToast({
@@ -349,17 +213,7 @@ const validAnswer = () => {
     }
   }
 
-  if (answer['item23'] === 'B' && !answer['item24Input']) {
-    showToast({
-      message: `请补充【12-2】中的原因。`,
-      position: 'top',
-      duration: 3000,
-    });
-    return false;
-  }
-
-  if ((!answer['item1002Arr'] || answer['item1002Arr'].length === 0)
-      && !answer['item1002Input']) {
+  if ((!answer.xzwyyyList || answer.xzwyyyList.length === 0) && !answer.xzwyyyInput) {
     showToast({
       message: `请补充或者勾选【13-1】中的选项。`,
       position: 'top',
@@ -367,7 +221,7 @@ const validAnswer = () => {
     })
     return false
   }
-  if (!answer['item1004']) {
+  if (!answer.sfhxzzl) {
     showToast({
       message: `请勾选【14-1】中的选项。`,
       position: 'top',
@@ -375,7 +229,7 @@ const validAnswer = () => {
     })
     return false
   }
-  if (!answer['item1006']) {
+  if (!answer.ztpj) {
     showToast({
       message: `请勾选【15-1】中的选项。`,
       position: 'top',
@@ -386,13 +240,21 @@ const validAnswer = () => {
   return true
 }
 
-function getOptions(key) {
-  if (key === 11) {
-    return checkboxOptions2
-  } else if (key === 23) {
-    return checkboxOptions41;
+function getOptions(code) {
+  if (code === 'zykshl') {
+    return zykshlXx
+  } else if (code === 'zyksys') {
+    return zyksysXx
+  } else if (code === 'yyst') {
+    return yystXx;
+  } else if (code === 'fsk') {
+    return zyksysXx;
+  } else if (code === 'ybk') {
+    return ybkXx;
+  } else if (code === 'yyhjws') {
+    return hjwxXx;
   } else {
-    return checkboxOptions
+    return mrXx;
   }
 }