微信小程序根据后台返回数据展示问卷

一、问卷字段类型有:1单行文本,2多行文本,3单选,4多选,5日期,11金额,8下拉选择,12上传,13时间,14数字。可暂存、发送。

根据单选答案,展现不同分支(web端发送问卷时可以设置编排分支以及顺序,小程序根据接口返回的数据展示)

二、效果图如下

 三、重点代码

1.根据单选答案自动获取下一题。

2.递归方式上传附件

 

四、详细代码

1.wxml文件

<wxs module="v1">
  var include = function (array, value) {
    if (array) {
      if (array == value) {
        return true
      }
    }
  }
  var include2 = function (array, value) {
    if (array) {
      var has = false;
      for (var i = 0; i < array.length; i++) {
        if (array[i] == value) {
          has = true;
          return has
        }
      }
      return has;
    }
  }
  module.exports.include = include;
  module.exports.include2 = include2;
</wxs>
<view class="questionnaire">
  <view class="back_image">
    <view class="fixed_exclude">
      <navBar title="{
  {ques_title}}" scrollTop="{
  {scrollTop}}"></navBar>
      <view class="all" id="all" style="margin-top: 3rem;">
        <view wx:if="{
  {questionnaireInfo.remark}}" class="ques_title_all">
          <view style="min-width:120rpx">备注:</view>
          <view style="flex:1;word-break:break-all;">{
  {questionnaireInfo.remark}}</view>
        </view>
        <view class="info_content">
          <!-- fieldType:1单行文本,2多行文本,3单选,4多选,5日期,11金额,
            8下拉选择,12上传,13时间,14数 -->
          <view wx:for="{
  {customerFieldSetList}}" wx:for-item="item" wx:for-index="index" wx:key="index" data-index="{
  {index}}" class="id_info  {
  {(index == dateId)? 'current':''}}">
            <view id="bottomView{
  {index}}" class="bottomView{
  {index}}">
              <view class="info_title" data-type="{
  {item.fieldType}}">
                <view>{
  {index+1}}.{
  {item.fieldName}}<text wx:if="{
  {item.mustFlag}}" style="color: red;">*</text></view>
                <view wx:if="{
  {item.fieldType=='12' && item.fieldValue.length>0}}">{
  { item.fieldValue.length}}份</view>
                <view class="copy_button" catchtap="copyInfo" data-index="{
  {index}}" data-item="{
  {item}}" wx:if="{
  {(item.fieldKey=='name4' || item.fieldKey=='phoneNo4' || item.fieldKey=='idNo4')&& item.fieldValue}}">复制</view>
              </view>
              <!-- show判断placeholder穿透问题 -->
              <view style="padding-left: 28rpx;" wx:if="{
  {!show}}">
                <input disabled="{
  {questionDesc=='3'||questionDesc=='4'}}" wx:if="{
  {item.fieldType == '1'||item.fieldType == '8'}}" bindinput="bindKeyInput" data-item="{
  {item}}" data-index="{
  {index}}" data-fieldkey="{
  {item.fieldKey}}" data-fieldtype="{
  {item.fieldType}}" placeholder="请输入{
  {item.fieldName}}" placeholder-style="font-size: 14px;color: #999999;" value="{
  {item.fieldValue}}" />
                <input disabled="{
  {questionDesc=='3'||questionDesc=='4'}}" wx:if="{
  {item.fieldType == '11'}}" type="number" data-index="{
  {index}}" bindinput="inputDigit" data-item="{
  {item}}" placeholder="请输入{
  {item.fieldName}}" placeholder-style="font-size: 14px;color: #999999;" value="{
  {item.fieldValue}}" />
                <input disabled="{
  {questionDesc=='3'||questionDesc=='4'}}" wx:if="{
  {item.fieldType == '14'}}" type="number" data-index="{
  {index}}" bindinput="inputDigit" data-item="{
  {item}}" placeholder="请输入{
  {item.fieldName}}" placeholder-style="font-size: 14px;color: #999999;" value="{
  {item.fieldValue}}" />
              </view>
              <view style="padding-left: 28rpx;font-size: 14px;color: #999999;">
                <view wx:if="{
  {show&&(item.fieldType == '1'||item.fieldType == '8'||item.fieldType == '11'||item.fieldType == '14')}}">
                  请输入{
  {item.fieldName}}</view>
              </view>
              <view style="padding-left: 28rpx;font-size: 14px;color: #999999;">
                <!-- show判断placeholder穿透问题 -->
                <textarea disabled="{
  {questionDesc=='3'||questionDesc=='4'}}" wx:if="{
  {item.fieldType == '2'&&!show}}" style="padding-top:20rpx" data-index="{
  {index}}" bindinput="bindKeyInput" data-item="{
  {item}}" placeholder="请输入{
  {item.fieldName}}" placeholder-style="font-size: 14px;color: #999999;" value="{
  {item.fieldValue}}" />
                <view style="min-height: 360rpx;" wx:if="{
  {show&&item.fieldType == '2'}}">
                  请输入{
  {item.fieldName}}</view>
              </view>
              <radio-group wx:if="{
  {item.fieldType == '3'}}" bindchange="radioChange" data-indexs="{
  {indexs}}" data-key="{
  {item.fieldValue}}" data-index="{
  {index}}" data-questiondesc="{
  {questionDesc}}" data-optionlist="{
  {item.optionList}}">
                <label class="checkbox_item" wx:for-item="items" wx:for="{
  {item.optionList}}" wx:key="indexs">
                  <radio disabled="{
  {questionDesc=='3'||questionDesc=='4'}}" value="{
  {items.optionKey}}" checked="{
  {v1.include(item.fieldValue,items.optionKey)}}" />
                  <view>{
  {items.optionValue}}</view>
                  <view catchtap="son" hover-stop-propagation="true" style="flex: 1;">
                    <input wx:if="{
  {items.isNote && (item.fieldValue==items.optionKey) && !show}}" style="margin-left: 10rpx;" disabled="{
  {(questionDesc=='3'||questionDesc=='4')||(item.fieldValue!=items.optionKey)}}" bindinput="bindNote" data-item="{
  {item}}" data-optionkey="{
  {items.optionKey}}" data-index="{
  {index}}" placeholder="请输入" placeholder-style="font-size: 14px;color: #999999;" value="{
  {item.note}}" />
                  </view>
                </label>
              </radio-group>
              <checkbox-group wx:if="{
  {item.fieldType == '4'}}" bindchange="checkboxChange" data-item="{
  {item}}" data-key="{
  {item.fieldValue}}" data-index="{
  {index}}">
                <label class="checkbox_item" wx:for-item="items" wx:for="{
  {item.optionList}}" wx:key="indexs">
                  <checkbox disabled="{
  {questionDesc=='3'||questionDesc=='4'}}" value="{
  {items.optionKey}}" checked="{
  {v1.include2(item.fieldValue,items.optionKey)}}" />
                  <view>{
  {items.optionValue}}</view>
                </label>
              </checkbox-group>
              <!-- 日期弹框5 -->
              <view style="padding-left: 28rpx;" wx:if="{
  {item.fieldType == '5'}}">
                <picker disabled="{
  {questionDesc=='3'||questionDesc=='4'}}" mode="date" data-index="{
  {index}}" value="{
  {item.fieldValue}}" bindchange="changeDateTime1">
                    <!-- show判断placeholder穿透问题 -->
                    <input wx:if="{
  {!item.fieldValue && !show}}" disabled style="font-size: 14px;color: #999999;" placeholder="请选择{
  {item.fieldName}}" />
                    <view wx:if="{
  {!item.fieldValue && show}}" style="font-size: 14px;color: #999999;">
                      请选择{
  {item.fieldName}}</view>
                    <view wx:if="{
  {item.fieldValue}}">
                      {
  {item.fieldValue}}
                    </view>
                </picker>
              </view>
              <!-- 时间弹框13 -->
              <view catchtouchmove='ture' style="padding-left: 28rpx;z-index: 99999" wx:if="{
  {item.fieldType == '13'}}">
                <!-- <picker  mode="time" data-index="{<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值