uniapp调查问卷评价功能

 我本来用的是uniapp官方提供的组件uni-rate组件,但修改成我想要的样式有点麻烦,于是我就自己手写一个,比用组件简单一点;

 

dom结构 

<text class="formTit must">请您对本次活动进行评价</text>
<view class="evaluate mb-40rpx">
    <view class="row" v-for="(val, index) in starName" :key="index">
      <view class="progress" :class="star > index ? 'selected' : ''" @click="setStar(index + 1)"> </view>
      <text class="tit" :class="star == index + 1 ? 'active' : ''">{{ val }}</text>
    </view>
</view>

 js部分

// 评价
const star = ref(2); //评价,默认2星
const starName = ["差", "一般", "较好", "好"];
const setStar = (val: any) => {
  star.value = val;
};

 css部分(我用的是scss + tailwindcss,不懂的可以去看看,很方便,写入类名就可以改变样式)

.formTit {
    @apply block text-#363A44 text-32rpx font-bold mb-20rpx mt-40rpx;
  }

  .must {
    &::after {
      font-size: 32rpx;
      color: #f00;
      content: "*";
    }
}
.evaluate {
    @apply w-full flex justify-between items-center;

    .row {
      @apply w-full flex flex-col justify-center items-center;

      width: calc((100% - 6rpx) / 4);

      &:nth-of-type(1) {
        .progress {
          border-radius: 12rpx 0 0 12rpx;
        }
      }

      &:nth-of-type(4) {
        .progress {
          border-radius: 0 12rpx 12rpx 0;
        }
      }
    }

    .progress {
      @apply w-full bg-#eef5ff h-40rpx;
    }

    .selected {
      background-color: #428ffc;
    }

    .tit {
      @apply w-full text-32rpx text-#9B9B9B text-center pt-20rpx;
    }

    .active {
      @apply text-#363a44 font-bold;

      color: #363a44;
    }
  }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,uniapp可以用来生成问卷。具体的实现方式如下: 1. 创建一个uniapp项目,并安装uni-ui插件。 2. 在项目中创建一个问卷页面,包括大标题、题目和选项等元素。 3. 使用uni-ui提供的组件,如radio、checkbox等,来实现选项的选择。 4. 使用uniapp提供的数据绑定功能,将用户选择的答案与数据进行绑定。 5. 在提交问卷时,将用户选择的答案发送到后端服务器进行保存。 以下是一个示例代码,用于生成一个简单的问卷页面: ```html <template> <view> <text class="title">{{ questionnaire.title }}</text> <view v-for="(question, index) in questionnaire.questions" :key="index"> <text class="question">{{ question.title }}</text> <view v-for="(option, optionIndex) in question.options" :key="optionIndex"> <checkbox-group v-if="question.type === 'multiple'"> <checkbox :value="option.value" @change="handleCheckboxChange(question.id, option.value)">{{ option.label }}</checkbox> </checkbox-group> <radio-group v-else> <radio :value="option.value" @change="handleRadioChange(question.id, option.value)">{{ option.label }}</radio> </radio-group> </view> </view> <button @click="submitQuestionnaire">提交问卷</button> </view> </template> <script> export default { data() { return { questionnaire: { title: '这是一个问卷标题', questions: [ { id: 1, title: '问题1', type: 'single', options: [ { label: '选项1', value: 'option1' }, { label: '选项2', value: 'option2' }, { label: '选项3', value: 'option3' } ] }, { id: 2, title: '问题2', type: 'multiple', options: [ { label: '选项A', value: 'optionA' }, { label: '选项B', value: 'optionB' }, { label: '选项C', value: 'optionC' } ] } ] }, answers: {} } }, methods: { handleRadioChange(questionId, value) { this.answers[questionId] = value; }, handleCheckboxChange(questionId, value) { if (!this.answers[questionId]) { this.answers[questionId] = []; } const index = this.answers[questionId].indexOf(value); if (index > -1) { this.answers[questionId].splice(index, 1); } else { this.answers[questionId].push(value); } }, submitQuestionnaire() { // 将答案发送到后端服务器进行保存 console.log(this.answers); } } } </script> <style> .title { font-size: 20px; font-weight: bold; margin-bottom: 10px; } .question { font-size: 16px; margin-bottom: 5px; } </style> ``` 请注意,上述代码仅为示例,实际的问卷页面可能需要根据具体需求进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值