预售活动开发总结

进入新公司,在培训了两天公司的规章制度后,接手了一个比较简单的推广员的需求,开发比较顺利,第二周周五开始接手拼券需求的开发,历时10个工作日左右,但是因为对应的业务线没有人开发,该需求的上线一直搁置,在第四周的周五开始进行预售活动的开发。原本就没有参与需求评审的我,在刚开始接手的时候以为就是一个表单而已,应该也不复杂,开发过程中发现了各种问题,现总结如下:

1.原型不明确,有些按照原型开发的内容显示问题,在测试那边会将所有的问题作为bug指给我这个前端开发人员
2. 未参与评审的我,开发过程中发现对接口字段的过程中,也是一个煎熬,主要是所有的活动对应的都是一个后端模型,对字段的过程中,需要一个一个与模型中对应去找,但是接口需要的字段也有可能有模型中的有出入,在来回对字段的过程中耗费了不少时间。这里面也有我自己的问题,其实前端开发过程中,我完全可以按照自己命名的字段进行处理,只要在给后端接口数据的时候,将数据转化一下即可,这个在开始开发前没有考虑到,这也导致后期的很多问题是由字段不一致,格式不一致导致。
3. 开发过程中,有很多校验的规则,这边没有考虑到。

  1. 发货的时间肯定是要在活动开始时间之后
  2. 优惠层级的时间段限制:
    一 不能间断,
    二 不能超过活动时间结束时间不能早于活动开始时间,
    三 时间虽然不能间断,但是上一个优惠层级的活动时段,肯定要间隔一秒继续增加第二个优惠时间段,否则后端判断则是时间段重复
    四 支持删除,支持修改日期修改时间,只要是前面选中的日期时间,在下一个层级优惠时间中则不可选择
    在这里插入图片描述

4.不同状态下,字段的显示与否、复制与否、编辑与否等都是要加判断的
5. 选择商品组件这块,优化了选中的项目不可继续选择,如图在这里插入图片描述
,应当显示为实心的而非对勾的选中状态,选中之后的显示,需要前端自行进行分页,页数切换,当前每一页显示几条数据等切换都需要重新渲染页面等

下面附上开发的一些核心代码
···

添加活动商品
  <el-form-item v-if="isSingleAdd" label="商品图:" class="form-item required-item">
    <div class="materialImg" v-if="goodsForm.customGoodsImgUrl">
      <img width="375px" height="180px" :src="imgOriginUrl + goodsForm.customGoodsImgUrl" alt />
    </div>
    <div class="materialImg" v-else>
      <img width="375px" height="180px" :src="goodsForm.goodsImgUrl" alt />
    </div>
    <div class="upload-btn" style="margin-left:20px" @click="openAlbumDialog(2)">
      <i class="el-icon-plus"></i>
      <p class="upload-btn-text">修改商品图</p>
    </div>
    <br style="clear:both" />
    <p class="form-tips">
      建议尺寸:750px*635px,大小不超过1M。
      <!-- <el-popover placement="right" trigger="click">
        <img src="https://images.qmai.cn/resource/20210824210616/2021/09/14/activeImg.jpg" alt />
        <el-button slot="reference" type="text" size="mini">查看示例</el-button>
      </el-popover>-->
    </p>
  </el-form-item>
  <el-form-item v-if="isSingleAdd" label="自定义分享文案" class="form-item">
    <el-input
      class="form-item-input"
      v-model="goodsForm.shareDocument"
      maxlength="20"
      minlength="1"
      show-word-limit
      size="small"
      placeholder="这家预售,真的很给力~"
    ></el-input>
    <p class="form-tips">
      活动商品默认分享文案:“这家预售,真的很给力~”
      <!-- <el-popover placement="right" trigger="click">
        <img src="   https://images.qmai.cn/resource/20210824210616/2021/09/14/detailShare.jpg" alt />
        <el-button slot="reference" type="text" size="mini">查看示例</el-button>
      </el-popover>-->
    </p>
  </el-form-item>

  <el-form-item v-if="isSingleAdd" label=" 商品价格:" class="form-item">
    <el-input
      class="form-item-input"
      v-model="goodsForm.goodsPrice"
      maxlength="20"
      minlength="1"
      show-word-limit
      :disabled="true"
      size="small"
      placeholder="请输入商品价格"
    ></el-input>
  </el-form-item>

  <!-- 批量添加的内容 -->
  <el-form-item label=" 商品信息:" v-if="!isSingleAdd" class="form-item">
    <el-table
      :data="goodsForm.moreGoodsList"
      tooltip-effect="light"
      :header-cell-style="{background:'var(--bg-5, #f9fafc)',color:'var(--color-1, #606266)',padding: '0'}"
      :cell-style="{padding: '5px'}"
      :style="'width: 742px'"
      border
      size="small"
    >
      <el-table-column prop="name" label="商品名称:"></el-table-column>
      <el-table-column label="商品图">
        <template slot-scope="scope">
          <img :src="scope.row.goodsImgUrl" alt />
        </template>
      </el-table-column>
      <el-table-column prop="goodsPrice" label="商品价格"></el-table-column>

      <el-table-column label="商品活动库存" width="180">
        <template slot-scope="scope">
          <el-input-number v-model="scope.row.activityStocks" size="mini" :min="0" :max="999999"></el-input-number>
        </template>
      </el-table-column>

      <el-table-column label="模拟销量" width="180" :render-header="renderHeaderMethods">
        <template slot-scope="scope">
          <el-input-number v-model="scope.row.imitateSale" size="mini" :min="0" :max="999999"></el-input-number>
        </template>
      </el-table-column>
      <el-table-column label="操作" width="80">
        <template slot-scope="scope">
          <el-button size="mini" type="text" @click="delMoreGoods(scope.$index)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
  </el-form-item>
  <el-form-item label=" 活动时间" class="form-item">
    <el-date-picker
      class="form-item-input"
      :disabled="true"
      v-model="goodsForm.payTime"
      range-separator="至"
      type="datetimerange"
      align="right"
      start-placeholder="开始日期"
      end-placeholder="结束日期"
    ></el-date-picker>
  </el-form-item>
  <el-form-item label="优惠设置:" class="form-item required-item">
    <el-table
      :data="goodsForm.discountLevel"
      tooltip-effect="light"
      :header-cell-style="{background:'var(--bg-5, #f9fafc)',color:'var(--color-1, #606266)',padding: '0'}"
      :cell-style="{padding: '5px'}"
      border
      :style=" 'width: 900px'"
      size="small"
    >
      <el-table-column prop="date" label="门槛条件(下单时间)">
        <template slot-scope="scope">
          <el-date-picker
            popper-class="displayBtn"
            :disabled="true"
            v-if="scope.$index == 0"
            v-model="scope.row.payStart"
            type="datetime"
            size="small"
            class="datepicker-width"
          ></el-date-picker>
          <span v-if="scope.$index == 0" style="margin:0 10px">至</span>
          <el-date-picker
            class="datepicker-width"
            popper-class="displayBtn"
            v-if="scope.$index == 0"
            @change="changeDate(scope.row.payEnd,scope.$index)"
            @focus="focusTime(scope.row.payStart,scope.$index)"
            v-model="scope.row.payEnd"
            type="datetime"
            size="small"
            :picker-options="scope.row.expireTimeOption"
            format="yyyy-MM-dd HH:mm:ss"
            value-format="timestamp"
            default-time="23:59:59"
          ></el-date-picker>

          <template v-else>
            <el-date-picker
              class="datepicker-width"
              popper-class="displayBtn"
              :disabled="true"
              v-model="scope.row.payStart"
              type="datetime"
              size="small"
            ></el-date-picker>
            <span style="margin:0 10px">至</span>
            <el-date-picker
              class="datepicker-width"
              popper-class="displayBtn"
              v-model="scope.row.payEnd"
              @change="changeDate(scope.row.payEnd,scope.$index)"
              type="datetime"
              :picker-options="scope.row.expireTimeOption"
              format="yyyy-MM-dd HH:mm:ss"
              value-format="timestamp"
              default-time="23:59:59"
              size="small"
            ></el-date-picker>
          </template>
        </template>
      </el-table-column>
      <el-table-column label="优惠力度" width="190">
        <template slot-scope="scope">
          <el-input-number v-model="scope.row.discountValue" size="mini" :min="1" :max="10" :precision="1"></el-input-number>
          <span class="ml6">折</span>
        </template>
      </el-table-column>
      <el-table-column v-if="isSingleAdd" prop="showPriceLow" label="优惠后价格(元)" width="120">
        <template slot-scope="scope">
          <span>{{( goodsForm.goodsPrice * scope.row.discountValue*0.1 ).toFixed(2)}}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" width="80">
        <template slot-scope="scope">
          <el-button
            size="mini"
            v-if="scope.$index === goodsForm.discountLevel.length-1 &&scope.$index>0"
            type="text"
            @click="delDiscountLevel(scope.$index)"
          >删除</el-button>
          <el-button size="mini" v-else disabled="true" type="text" @click="delDiscountLevel(scope.$index)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <p class="form-tips">
      活动时间内,根据下单时间,设置一级优惠或多级优惠(同一时间段内只能设置一种优惠)。
      <el-popover placement="right" trigger="click">
        <img width="800px" src="https://images.qmai.cn/resource/20210824210616/2021/09/14/youhui.jpg" alt />
        <el-button slot="reference" type="text" size="mini">查看示例</el-button>
      </el-popover>
    </p>
    <div class="discount-ladder-add" v-if="goodsForm.discountLevel.length < 5">
      <el-button size="mini" type="text" @click="addDiscountLevel()">
        <i class="el-icon-plus el-icon--right"></i>新增优惠层级
      </el-button>
    </div>
  </el-form-item>
  <el-form-item v-if="isSingleAdd" label=" 活动库存:" prop="activityStocks" class="form-item required-item">
    <el-input-number
      class="form-item-input"
      v-model="goodsForm.activityStocks"
      size="small"
      :min="activityStatus==2?this.editGoodsStocks:1"
      :max="999999"
      placeholder="请输入活动库存"
    ></el-input-number>
    <p class="form-tips">
      已售
      <span>{{ goodsForm.salesNum }} 件</span>
    </p>
  </el-form-item>
  <el-form-item v-if="isSingleAdd" label=" 模拟销量:" class="form-item">
    <el-input-number
      class="form-item-input"
      v-model="goodsForm.imitateSale"
      size="small"
      :min="0"
      :max="999999"
      placeholder="请输入模拟销量"
    ></el-input-number>
    <p class="form-tips">
      小程序端预售活动展示的销量=模拟销量+真实销量。
      <!-- <el-popover placement="right" trigger="click">
        <img src="https://images.qmai.cn/resource/20210824210616/2021/09/14/mockSale.jpg" alt />
        <el-button slot="reference" type="text" size="mini">查看示例</el-button>
      </el-popover>-->
    </p>
  </el-form-item>
  <el-form-item class="form-item">
    <div class="btn-class mt10">
      <el-button @click="cancel(2)">取消</el-button>
      <el-button type="primary" @click="createSureGoods(2)">确定添加</el-button>
    </div>
  </el-form-item>
</el-form>
<!-- 图片弹框 -->
<AlbumDialog ref="albumDialog" :options="albumOptions" @sendAlbumData="getAlbumData"></AlbumDialog>

···

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值