|
|
@ -88,10 +88,10 @@ |
|
|
|
|
|
|
|
|
<!-- 评价卡片(已评价:仅当后端返回 enterpriseEvaluateInfoVo 有数据时显示;待评价:始终显示) --> |
|
|
<!-- 评价卡片(已评价:仅当后端返回 enterpriseEvaluateInfoVo 有数据时显示;待评价:始终显示) --> |
|
|
<div class="evaluate-card" v-if="showEvaluateCard"> |
|
|
<div class="evaluate-card" v-if="showEvaluateCard"> |
|
|
<div class="card-title">评价</div> |
|
|
<div class="card-title">反馈</div> |
|
|
|
|
|
|
|
|
<!-- 表情选择 --> |
|
|
<!-- 表情选择 --> |
|
|
<div class="emoji-section"> |
|
|
<!-- <div class="emoji-section"> |
|
|
<div class="emoji-item" :class="{ active: evaluateForm.satisfactionLevel === 3, disabled: readonly }" |
|
|
<div class="emoji-item" :class="{ active: evaluateForm.satisfactionLevel === 3, disabled: readonly }" |
|
|
@click="!readonly && (evaluateForm.satisfactionLevel = 3)"> |
|
|
@click="!readonly && (evaluateForm.satisfactionLevel = 3)"> |
|
|
<img class="emoji-img" :src="evaluateForm.satisfactionLevel === 3 ? veryGoodImg : veryGoodDisImg" |
|
|
<img class="emoji-img" :src="evaluateForm.satisfactionLevel === 3 ? veryGoodImg : veryGoodDisImg" |
|
|
@ -110,10 +110,10 @@ |
|
|
alt="不满意" /> |
|
|
alt="不满意" /> |
|
|
<span class="emoji-label">不满意</span> |
|
|
<span class="emoji-label">不满意</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> --> |
|
|
|
|
|
|
|
|
<!-- 星级评分 --> |
|
|
<!-- 星级评分 --> |
|
|
<div class="rating-section"> |
|
|
<!-- <div class="rating-section"> |
|
|
<div class="rating-row"> |
|
|
<div class="rating-row"> |
|
|
<span class="rating-label">执法文明</span> |
|
|
<span class="rating-label">执法文明</span> |
|
|
<van-rate v-model="evaluateForm.civility" :size="20" color="#ffd21e" void-icon="star" |
|
|
<van-rate v-model="evaluateForm.civility" :size="20" color="#ffd21e" void-icon="star" |
|
|
@ -138,7 +138,7 @@ |
|
|
void-color="#eee" :readonly="readonly" /> |
|
|
void-color="#eee" :readonly="readonly" /> |
|
|
<span class="rating-text">{{ getRatingText(evaluateForm.legality) }}</span> |
|
|
<span class="rating-text">{{ getRatingText(evaluateForm.legality) }}</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> --> |
|
|
|
|
|
|
|
|
<!-- 其他问题开关 --> |
|
|
<!-- 其他问题开关 --> |
|
|
<div class="switch-section"> |
|
|
<div class="switch-section"> |
|
|
@ -149,16 +149,16 @@ |
|
|
|
|
|
|
|
|
<!-- 问题列表 --> |
|
|
<!-- 问题列表 --> |
|
|
<div class="question-list" v-if="evaluateForm.hasOtherIssues"> |
|
|
<div class="question-list" v-if="evaluateForm.hasOtherIssues"> |
|
|
<div class="question-item" v-for="(q, idx) in questionList" :key="idx"> |
|
|
<div class="question-item" v-for="(q, idx) in questionList" :key="idx" v-show="!q.isOther"> |
|
|
<div class="question-text">{{ idx + 1 }}、{{ q.text }}</div> |
|
|
<div class="question-text">{{ idx + 1 }}、{{ q.text }}</div> |
|
|
<div class="question-options"> |
|
|
<div class="question-options"> |
|
|
<div class="option-btn" :class="{ active: q.answer === '是', disabled: readonly }" |
|
|
<div class="option-btn" :class="{ active: q.answer === '是', disabled: readonly }" |
|
|
@click="!readonly && (q.answer = '是')"> |
|
|
@click="!readonly && setAnswer(q, '是')"> |
|
|
<img :src="q.answer === '是' ? badUnselectImg : badSelectImg" alt="是" /> |
|
|
<img :src="q.answer === '是' ? badUnselectImg : badSelectImg" alt="是" /> |
|
|
<span>是</span> |
|
|
<span>是</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="option-btn" :class="{ active: q.answer === '否', disabled: readonly }" |
|
|
<div class="option-btn" :class="{ active: q.answer === '否', disabled: readonly }" |
|
|
@click="!readonly && (q.answer = '否')"> |
|
|
@click="!readonly && setAnswer(q, '否')"> |
|
|
<img :src="q.answer === '否' ? goodUnselectImg : goodSelectImg" alt="否" /> |
|
|
<img :src="q.answer === '否' ? goodUnselectImg : goodSelectImg" alt="否" /> |
|
|
<span>否</span> |
|
|
<span>否</span> |
|
|
</div> |
|
|
</div> |
|
|
@ -249,11 +249,12 @@ const evaluateForm = ref({ |
|
|
|
|
|
|
|
|
// ========== 问题列表(默认模板)========== |
|
|
// ========== 问题列表(默认模板)========== |
|
|
const questionList = ref([ |
|
|
const questionList = ref([ |
|
|
{ text: '是否存在和执法,接受被执法企业的馈赠、报酬、福利等?', answer: '否' }, |
|
|
{ text: '是否存在和执法,接受被执法企业的馈赠、报酬、福利等?', answer: '否', inputText: '', isOther: false }, |
|
|
{ text: '是否存在要求被执法企业提供宴请、娱乐、旅游等活动?', answer: '否' }, |
|
|
{ text: '是否存在要求被执法企业提供宴请、娱乐、旅游等活动?', answer: '否', inputText: '', isOther: false }, |
|
|
{ text: '是否存在干扰企业正常生产经营、刻意要求企业法人到场的行为?', answer: '否' }, |
|
|
{ text: '是否存在干扰企业正常生产经营、刻意要求企业法人到场的行为?', answer: '否', inputText: '', isOther: false }, |
|
|
{ text: '是否存在任性处罚企业、乱查封、乱扣押、乱冻结、违规责令停产停业的行为?', answer: '否' }, |
|
|
{ text: '是否存在任性处罚企业、乱查封、乱扣押、乱冻结、违规责令停产停业的行为?', answer: '否', inputText: '', isOther: false }, |
|
|
{ text: '是否存在变相执法,以咨询、培训、考核等名义行执法之实?', answer: '否' }, |
|
|
{ text: '是否存在变相执法,以咨询、培训、考核等名义行执法之实?', answer: '否', inputText: '', isOther: false }, |
|
|
|
|
|
{ text: '其他', answer: '否', inputText: '', isOther: true }, |
|
|
]); |
|
|
]); |
|
|
|
|
|
|
|
|
// ========== 字段映射工具:对后端多种字段名容错 ========== |
|
|
// ========== 字段映射工具:对后端多种字段名容错 ========== |
|
|
@ -313,6 +314,7 @@ const fillEvaluateFormFromInfo = (info) => { |
|
|
questionList.value = questionList.value.map((q, idx) => ({ |
|
|
questionList.value = questionList.value.map((q, idx) => ({ |
|
|
...q, |
|
|
...q, |
|
|
answer: String(info['problem' + (idx + 1)]) === '1' ? '是' : '否', |
|
|
answer: String(info['problem' + (idx + 1)]) === '1' ? '是' : '否', |
|
|
|
|
|
inputText: q.isOther ? (info.otherProblemText || '') : '', |
|
|
})); |
|
|
})); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
@ -326,6 +328,14 @@ const getRatingText = (score) => { |
|
|
return map[score] || ''; |
|
|
return map[score] || ''; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// ========== 设置问题答案 ========== |
|
|
|
|
|
const setAnswer = (q, answer) => { |
|
|
|
|
|
q.answer = answer; |
|
|
|
|
|
if (q.isOther && answer === '否') { |
|
|
|
|
|
q.inputText = ''; |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
// ========== 返回上一页 ========== |
|
|
// ========== 返回上一页 ========== |
|
|
const onClickLeft = () => { |
|
|
const onClickLeft = () => { |
|
|
router.back(); |
|
|
router.back(); |
|
|
@ -339,6 +349,11 @@ const onViewCaseDetail = () => { |
|
|
// ========== 提交评价 ========== |
|
|
// ========== 提交评价 ========== |
|
|
const onSubmit = () => { |
|
|
const onSubmit = () => { |
|
|
if (readonly.value) return; |
|
|
if (readonly.value) return; |
|
|
|
|
|
const otherQuestion = questionList.value.find(q => q.isOther); |
|
|
|
|
|
if (otherQuestion && otherQuestion.answer === '是' && !otherQuestion.inputText.trim()) { |
|
|
|
|
|
showToast('请输入其他问题的具体内容'); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
showConfirmDialog({ |
|
|
showConfirmDialog({ |
|
|
title: '确认提交', |
|
|
title: '确认提交', |
|
|
message: '确认提交本次评价吗?提交后将无法修改。', |
|
|
message: '确认提交本次评价吗?提交后将无法修改。', |
|
|
@ -356,6 +371,9 @@ const onSubmit = () => { |
|
|
questionList.value.forEach((q, idx) => { |
|
|
questionList.value.forEach((q, idx) => { |
|
|
const val = evaluateForm.value.hasOtherIssues ? (q.answer === '是' ? 1 : 0) : 0; |
|
|
const val = evaluateForm.value.hasOtherIssues ? (q.answer === '是' ? 1 : 0) : 0; |
|
|
params['problem' + (idx + 1)] = val; |
|
|
params['problem' + (idx + 1)] = val; |
|
|
|
|
|
if (q.isOther) { |
|
|
|
|
|
params.otherProblemText = q.inputText; |
|
|
|
|
|
} |
|
|
}); |
|
|
}); |
|
|
submitEvaluate(params, () => { |
|
|
submitEvaluate(params, () => { |
|
|
showToast('评价提交成功'); |
|
|
showToast('评价提交成功'); |
|
|
@ -420,7 +438,7 @@ const onSubmit = () => { |
|
|
color: #333; |
|
|
color: #333; |
|
|
margin-bottom: 0.25rem; |
|
|
margin-bottom: 0.25rem; |
|
|
padding-bottom: 0.15rem; |
|
|
padding-bottom: 0.15rem; |
|
|
border-bottom: 1px solid #f0f0f0; |
|
|
// border-bottom: 1px solid #f0f0f0; |
|
|
display: flex; |
|
|
display: flex; |
|
|
align-items: baseline; |
|
|
align-items: baseline; |
|
|
.union-tag { |
|
|
.union-tag { |
|
|
@ -599,6 +617,7 @@ const onSubmit = () => { |
|
|
padding: 0.25rem 0; |
|
|
padding: 0.25rem 0; |
|
|
padding-right: 2.2rem; |
|
|
padding-right: 2.2rem; |
|
|
border-bottom: 1px solid #f5f5f5; |
|
|
border-bottom: 1px solid #f5f5f5; |
|
|
|
|
|
min-height: 0.8rem; |
|
|
|
|
|
|
|
|
&:last-child { |
|
|
&:last-child { |
|
|
border-bottom: none; |
|
|
border-bottom: none; |
|
|
@ -615,10 +634,10 @@ const onSubmit = () => { |
|
|
.question-options { |
|
|
.question-options { |
|
|
position: absolute; |
|
|
position: absolute; |
|
|
right: 0; |
|
|
right: 0; |
|
|
top: 50%; |
|
|
top: 0.25rem; |
|
|
transform: translateY(-50%); |
|
|
|
|
|
display: flex; |
|
|
display: flex; |
|
|
gap: 0.2rem; |
|
|
gap: 0.2rem; |
|
|
|
|
|
z-index: 10; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.option-btn { |
|
|
.option-btn { |
|
|
@ -645,6 +664,19 @@ const onSubmit = () => { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.question-input-wrap { |
|
|
|
|
|
margin-top: 0.15rem; |
|
|
|
|
|
padding-left: 0.6rem; |
|
|
|
|
|
|
|
|
|
|
|
:deep(.van-field__control) { |
|
|
|
|
|
font-size: 0.3rem; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
:deep(.van-field) { |
|
|
|
|
|
margin: 0; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/* ===== 底部提交栏 ===== */ |
|
|
/* ===== 底部提交栏 ===== */ |
|
|
|