【实训项目】“优品果园”-线上水果商城小程序

news2025/2/27 2:59:07

1.项目背景

随着现代人对消费水平的追求以及对食物安全的需要,无污染、产地直销的有机水果受到越来越多市民的喜欢。交易过程的简洁化是现代消费者的追求,产地直销也是近期流行的一种新型的交易模式。产地直销的交易模式使得交易过程更加简便快捷,也使消费也更透明化,有助于增加消费者对商家的信任和认可。有机食物又被誉为“朝阳产业”,具有良好的市场,同时,我们对安全食物的需要日益剧烈,对透明化消费的追求日益迫切,因此我们认为国内市场远景非常豁达。

2.项目目标

主要针对上班族以及中老年等人群,可以满足他们对于有机水果的需求,同时也满足其对于透明化消费的需求,以求达到双赢。

3.项目总体描述

3.1发展成果

我们的项目名称是“优品果源”,采用的是C2C模式。我们的程序包括了水果模板、新鲜到家、购物车和会员中心四个主要界面。

我们所设计的小程序主要是为消费者提供有机水果产地直销。在这个小程序里,我们会提供一定的经营产地,并为消费者提供产地全部信息,同时用户可以在线上对自己选择的产地进行实时观测,了解水果的长势,收货等全部过程,还也可以模拟体验农耕各项流程线上体验,(播种、施肥、浇水、除草、采摘)。

3.2功能描述

(1)用户注册

用户在使用“优品果源”时需要必须进行实名注册,包括姓名、年龄、性别、手机号、身份证号

(2)用户订单 包括

用户选择直销产地、购买水果等。

(3)交易中心

用户之间可以将多余的水果信息上传进行交易,也可以与农场之间进行交易。

(4)我的产地

提供一定的经营产地,并为消费提供产地全部信息,同时用户可以在线上对自己选择的产地进行实时观测,了解水果的长势,收货等全部过程。

(5)通知信息

后台会根据用户水果产地的生长情况,定时向客户发送提示信息; 资讯类信息,会根据季节实时发送一些水果种植信息,丰富地主的农耕经验,切实体验种植生活。

(6)客服中心

用户有任何问题可以咨询客服或者投诉商家。

4.项目成果

5.核心代码展示

<view class="goods marUpTop">
  <text class="total">共{{totalNum}}条</text>
  <view class="good" wx:for="{{goods}}" wx:key="id" wx:for-item="good">
    <image class="image" src="{{good.icon}}"></image>
    <text class="name" style='width:{{windowWidth - 80}}px;'>{{good.name}}</text>
  </view>
  <text class="bottomLoad" bindtap='bottomLoad' hidden='{{initLoadDataNum < pageSize}}'>{{bottomLoadMsg}}</text>
</view>
<view class="swiper-tab">  
    <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">未开始({{notStartTotalNums}})</view>  
    <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">进行中({{progressTotalNums}})</view>  
    <view class="swiper-tab-list {{currentTab==2 ? 'on' : ''}}" data-current="2" bindtap="swichNav">已结束({{doneTotalNums}})</view>  
</view> 

<swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px;" bindchange="bindChange">  
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{notStartDatas}}" wx:for-item="notStart" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{notStart.id}}" >
            <image bindtap="toTaskDetail" src="/images/notStart.png" class="icon" data-taskId="{{notStart.id}}"></image>
            <text bindtap="toTaskDetail" style="width:{{winWidth - 140}}px;" class="name" data-taskId="{{notStart.id}}">{{notStart.name}}</text>
            <button open-type="share" data-taskId="{{notStart.id}}" data-hookName="{{notStart.userName}}" type='primary' style="background-color: #265a88;" class='btn invite'>邀请</button>
            <form bindsubmit='del' report-submit data-taskId="{{notStart.id}}">
              <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
            </form>
          </view> 
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{notStartCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{notStartCurPage}}/{{notStartTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{notStartCurPage == notStartTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
            <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
            <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
            <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
          </view>
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}">
            <image src="/images/done.png" class="icon" data-taskId="{{done.id}}" bindtap="toTaskDetail"></image>
            <text style="width:{{winWidth - 95}}px;" class="name" data-taskId="{{done.id}}" bindtap="toTaskDetail">{{done.name}}</text>
            <form bindsubmit='del' report-submit data-taskId="{{done.id}}">
              <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
            </form>
          </view> 
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
</swiper>
<template name="normal">
  <view class="content-msg">{{msg}}</view>
</template>
<template name="apv">
  <view class="content-msg apv">
    <view class="apv-title">审批提醒</view>
    <view class="apv-content">{{msg}}</view>
    <view class="apv-do" data-id="{{id}}" data-attValue="{{attValue}}" bindtap="detail">
      <text>审批</text>
      <image class="right-image" src="/images/right.png"/>
    </view>
  </view>
</template>
<template name="end">
  <view class="msg-end" style='width:{{windowWidth - 70}}px;'>
    <image class="end-image" src="/images/{{attValue.suc ? 'success.png' : 'failure.png'}}"></image>
    <view style="width:{{windowWidth - 145}}px;" class="end-msg">{{msg}}<text style="color:#5D718D;" data-id="{{attValue.id}}" bindtap='endDetail'> [详情]</text></view>
  </view>
</template>

<view wx:if="{{isRefresh}}" class="fresh">
    <image src="/images/timer.gif" class="timer"></image>
</view>
<scroll-view  style="height: {{windowHeight}}px;" scroll-y  bindscroll="scroll" scroll-into-view="msgId_{{scrollInitId}}" bindtouchstart="start" bindtouchend="end" bindscrolltolower="hiddenDownBtn">
  <view class="msg-item" wx:for="{{msgs}}" wx:for-item="msg" wx:key="id" id="msgId_{{msg.id}}">
    <view>
      <image src="{{msg.icon}}" class="msg-icon"></image>
    </view>
    <view class="msg-content">
      <text class="name-time" decode="true">{{msg.sendName}} {{msg.createTime}}</text>
      <block wx:if="{{msg.type == 1}}"><template is="apv" data="{{...msg}}"/></block>
      <block wx:elif="{{msg.type == 2}}"><template is="end" data="{{...msg, windowWidth}}"/></block>
      <block wx:else><template is="normal" data="{{...msg}}"/></block>
    </view>
  </view>
  <form bindsubmit='jumpToUpUnRead' report-submit>
    <button class="toUpUnRead" form-type='submit' hidden='{{upBtnHidden}}'>☝ <text>{{unReadNum}}</text>条未读</button>
  </form>
  <form bindsubmit='jumpToDownUnRead' report-submit>
    <button class="toDownUnRead" form-type='submit' hidden='{{downBtnHidden}}'>︾ <text>{{downUnReadNum}}</text>条未读</button>
  </form>
</scroll-view>
<view class="swiper-tab">
    <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">进行中({{progressTotalNums}})</view>  
    <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">已结束({{doneTotalNums}})</view>  
</view> 

<swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px" bindchange="bindChange">  
    <swiper-item>
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>  
        <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
            <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
            <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
            <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
          </view>
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}" bindtap="toTaskDetail">
            <image src="/images/done.png" class="icon" data-taskId="{{done.id}}"></image>
            <text class="name" style="width:{{winWidth - 55}}px;" data-taskId="{{done.id}}">{{done.name}}</text>
          </view> 
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
</swiper>
<view class="layout-column marUpTop" style="padding: 5px 15px;">
    拉钩创建成功,邀请Ta和你拉钩吧。
    <button open-type="share" type='primary' style="background-color: #265a88;width:100%;" size='default' class='marUpTop'>邀请</button>
</view>
<form bindsubmit="formSubmit" report-submit>
  <view class="layout-column marUpTop">
    <textarea class="desc border" placeholder="请描述反馈意见" name="content" maxlength="1000"/>
    <view class="marTop border">
      <button type="primary" size="default" style="background-color: #265a88;" formType="submit" disabled='{{disableBtn}}'>提交</button>
    </view>
    <modal hidden="{{formMsgHidden}}" title="提示" confirm-text="去完善" no-cancel="true" bindcancel="cancel" bindconfirm="hiddenFromMsg">
    意见不能为空
    </modal>
  </view>
</form>
<view class="goods marUpTop">
  <text class="total">共{{totalNum}}条</text>
  <view class="good" wx:for="{{goods}}" wx:key="id" wx:for-item="good">
    <image class="image" src="{{good.icon}}"></image>
    <text class="name" style='width:{{windowWidth - 80}}px;'>{{good.name}}</text>
  </view>
  <text class="bottomLoad" bindtap='bottomLoad' hidden='{{initLoadDataNum < pageSize}}'>{{bottomLoadMsg}}</text>
</view>
<view class="swiper-tab">  
    <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">未开始({{notStartTotalNums}})</view>  
    <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">进行中({{progressTotalNums}})</view>  
    <view class="swiper-tab-list {{currentTab==2 ? 'on' : ''}}" data-current="2" bindtap="swichNav">已结束({{doneTotalNums}})</view>  
</view> 

<swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px;" bindchange="bindChange">  
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{notStartDatas}}" wx:for-item="notStart" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{notStart.id}}" >
            <image bindtap="toTaskDetail" src="/images/notStart.png" class="icon" data-taskId="{{notStart.id}}"></image>
            <text bindtap="toTaskDetail" style="width:{{winWidth - 140}}px;" class="name" data-taskId="{{notStart.id}}">{{notStart.name}}</text>
            <button open-type="share" data-taskId="{{notStart.id}}" data-hookName="{{notStart.userName}}" type='primary' style="background-color: #265a88;" class='btn invite'>邀请</button>
            <form bindsubmit='del' report-submit data-taskId="{{notStart.id}}">
              <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
            </form>
          </view> 
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{notStartCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{notStartCurPage}}/{{notStartTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{notStartCurPage == notStartTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
            <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
            <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
            <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
          </view>
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}">
            <image src="/images/done.png" class="icon" data-taskId="{{done.id}}" bindtap="toTaskDetail"></image>
            <text style="width:{{winWidth - 95}}px;" class="name" data-taskId="{{done.id}}" bindtap="toTaskDetail">{{done.name}}</text>
            <form bindsubmit='del' report-submit data-taskId="{{done.id}}">
              <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
            </form>
          </view> 
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
</swiper>
<template name="normal">
  <view class="content-msg">{{msg}}</view>
</template>
<template name="apv">
  <view class="content-msg apv">
    <view class="apv-title">审批提醒</view>
    <view class="apv-content">{{msg}}</view>
    <view class="apv-do" data-id="{{id}}" data-attValue="{{attValue}}" bindtap="detail">
      <text>审批</text>
      <image class="right-image" src="/images/right.png"/>
    </view>
  </view>
</template>
<template name="end">
  <view class="msg-end" style='width:{{windowWidth - 70}}px;'>
    <image class="end-image" src="/images/{{attValue.suc ? 'success.png' : 'failure.png'}}"></image>
    <view style="width:{{windowWidth - 145}}px;" class="end-msg">{{msg}}<text style="color:#5D718D;" data-id="{{attValue.id}}" bindtap='endDetail'> [详情]</text></view>
  </view>
</template>

<view wx:if="{{isRefresh}}" class="fresh">
    <image src="/images/timer.gif" class="timer"></image>
</view>
<scroll-view  style="height: {{windowHeight}}px;" scroll-y  bindscroll="scroll" scroll-into-view="msgId_{{scrollInitId}}" bindtouchstart="start" bindtouchend="end" bindscrolltolower="hiddenDownBtn">
  <view class="msg-item" wx:for="{{msgs}}" wx:for-item="msg" wx:key="id" id="msgId_{{msg.id}}">
    <view>
      <image src="{{msg.icon}}" class="msg-icon"></image>
    </view>
    <view class="msg-content">
      <text class="name-time" decode="true">{{msg.sendName}} {{msg.createTime}}</text>
      <block wx:if="{{msg.type == 1}}"><template is="apv" data="{{...msg}}"/></block>
      <block wx:elif="{{msg.type == 2}}"><template is="end" data="{{...msg, windowWidth}}"/></block>
      <block wx:else><template is="normal" data="{{...msg}}"/></block>
    </view>
  </view>
  <form bindsubmit='jumpToUpUnRead' report-submit>
    <button class="toUpUnRead" form-type='submit' hidden='{{upBtnHidden}}'>☝ <text>{{unReadNum}}</text>条未读</button>
  </form>
  <form bindsubmit='jumpToDownUnRead' report-submit>
    <button class="toDownUnRead" form-type='submit' hidden='{{downBtnHidden}}'>︾ <text>{{downUnReadNum}}</text>条未读</button>
  </form>
</scroll-view>
<view class="swiper-tab">
    <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">进行中({{progressTotalNums}})</view>  
    <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">已结束({{doneTotalNums}})</view>  
</view> 

<swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px" bindchange="bindChange">  
    <swiper-item>
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>  
        <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
            <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
            <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
            <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
          </view>
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}" bindtap="toTaskDetail">
            <image src="/images/done.png" class="icon" data-taskId="{{done.id}}"></image>
            <text class="name" style="width:{{winWidth - 55}}px;" data-taskId="{{done.id}}">{{done.name}}</text>
          </view> 
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
</swiper>
<view class="layout-column marUpTop" style="padding: 5px 15px;">
    拉钩创建成功,邀请Ta和你拉钩吧。
    <button open-type="share" type='primary' style="background-color: #265a88;width:100%;" size='default' class='marUpTop'>邀请</button>
</view>
<form bindsubmit="formSubmit" report-submit>
  <view class="layout-column marUpTop">
    <textarea class="desc border" placeholder="请描述反馈意见" name="content" maxlength="1000"/>
    <view class="marTop border">
      <button type="primary" size="default" style="background-color: #265a88;" formType="submit" disabled='{{disableBtn}}'>提交</button>
    </view>
    <modal hidden="{{formMsgHidden}}" title="提示" confirm-text="去完善" no-cancel="true" bindcancel="cancel" bindconfirm="hiddenFromMsg">
    意见不能为空
    </modal>
  </view>
</form>
<view class="goods marUpTop">
  <text class="total">共{{totalNum}}条</text>
  <view class="good" wx:for="{{goods}}" wx:key="id" wx:for-item="good">
    <image class="image" src="{{good.icon}}"></image>
    <text class="name" style='width:{{windowWidth - 80}}px;'>{{good.name}}</text>
  </view>
  <text class="bottomLoad" bindtap='bottomLoad' hidden='{{initLoadDataNum < pageSize}}'>{{bottomLoadMsg}}</text>
</view>
<view class="swiper-tab">  
    <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">未开始({{notStartTotalNums}})</view>  
    <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">进行中({{progressTotalNums}})</view>  
    <view class="swiper-tab-list {{currentTab==2 ? 'on' : ''}}" data-current="2" bindtap="swichNav">已结束({{doneTotalNums}})</view>  
</view> 

<swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px;" bindchange="bindChange">  
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{notStartDatas}}" wx:for-item="notStart" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{notStart.id}}" >
            <image bindtap="toTaskDetail" src="/images/notStart.png" class="icon" data-taskId="{{notStart.id}}"></image>
            <text bindtap="toTaskDetail" style="width:{{winWidth - 140}}px;" class="name" data-taskId="{{notStart.id}}">{{notStart.name}}</text>
            <button open-type="share" data-taskId="{{notStart.id}}" data-hookName="{{notStart.userName}}" type='primary' style="background-color: #265a88;" class='btn invite'>邀请</button>
            <form bindsubmit='del' report-submit data-taskId="{{notStart.id}}">
              <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
            </form>
          </view> 
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{notStartCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{notStartCurPage}}/{{notStartTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{notStartCurPage == notStartTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
            <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
            <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
            <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
          </view>
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}">
            <image src="/images/done.png" class="icon" data-taskId="{{done.id}}" bindtap="toTaskDetail"></image>
            <text style="width:{{winWidth - 95}}px;" class="name" data-taskId="{{done.id}}" bindtap="toTaskDetail">{{done.name}}</text>
            <form bindsubmit='del' report-submit data-taskId="{{done.id}}">
              <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
            </form>
          </view> 
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
</swiper>
<template name="normal">
  <view class="content-msg">{{msg}}</view>
</template>
<template name="apv">
  <view class="content-msg apv">
    <view class="apv-title">审批提醒</view>
    <view class="apv-content">{{msg}}</view>
    <view class="apv-do" data-id="{{id}}" data-attValue="{{attValue}}" bindtap="detail">
      <text>审批</text>
      <image class="right-image" src="/images/right.png"/>
    </view>
  </view>
</template>
<template name="end">
  <view class="msg-end" style='width:{{windowWidth - 70}}px;'>
    <image class="end-image" src="/images/{{attValue.suc ? 'success.png' : 'failure.png'}}"></image>
    <view style="width:{{windowWidth - 145}}px;" class="end-msg">{{msg}}<text style="color:#5D718D;" data-id="{{attValue.id}}" bindtap='endDetail'> [详情]</text></view>
  </view>
</template>

<view wx:if="{{isRefresh}}" class="fresh">
    <image src="/images/timer.gif" class="timer"></image>
</view>
<scroll-view  style="height: {{windowHeight}}px;" scroll-y  bindscroll="scroll" scroll-into-view="msgId_{{scrollInitId}}" bindtouchstart="start" bindtouchend="end" bindscrolltolower="hiddenDownBtn">
  <view class="msg-item" wx:for="{{msgs}}" wx:for-item="msg" wx:key="id" id="msgId_{{msg.id}}">
    <view>
      <image src="{{msg.icon}}" class="msg-icon"></image>
    </view>
    <view class="msg-content">
      <text class="name-time" decode="true">{{msg.sendName}} {{msg.createTime}}</text>
      <block wx:if="{{msg.type == 1}}"><template is="apv" data="{{...msg}}"/></block>
      <block wx:elif="{{msg.type == 2}}"><template is="end" data="{{...msg, windowWidth}}"/></block>
      <block wx:else><template is="normal" data="{{...msg}}"/></block>
    </view>
  </view>
  <form bindsubmit='jumpToUpUnRead' report-submit>
    <button class="toUpUnRead" form-type='submit' hidden='{{upBtnHidden}}'>☝ <text>{{unReadNum}}</text>条未读</button>
  </form>
  <form bindsubmit='jumpToDownUnRead' report-submit>
    <button class="toDownUnRead" form-type='submit' hidden='{{downBtnHidden}}'>︾ <text>{{downUnReadNum}}</text>条未读</button>
  </form>
</scroll-view>
<view class="swiper-tab">
    <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">进行中({{progressTotalNums}})</view>  
    <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">已结束({{doneTotalNums}})</view>  
</view> 

<swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px" bindchange="bindChange">  
    <swiper-item>
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>  
        <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
            <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
            <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
            <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
          </view>
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
    <swiper-item>  
      <scroll-view  style="height: {{winHeight - 80}}px;" scroll-y>
        <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
          <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}" bindtap="toTaskDetail">
            <image src="/images/done.png" class="icon" data-taskId="{{done.id}}"></image>
            <text class="name" style="width:{{winWidth - 55}}px;" data-taskId="{{done.id}}">{{done.name}}</text>
          </view> 
        </view>
      </scroll-view>
      <view class="pageCmp">
        <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
        <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
        <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
      </view>
    </swiper-item>  
</swiper>
<view class="layout-column marUpTop" style="padding: 5px 15px;">
    拉钩创建成功,邀请Ta和你拉钩吧。
    <button open-type="share" type='primary' style="background-color: #265a88;width:100%;" size='default' class='marUpTop'>邀请</button>
</view>
<form bindsubmit="formSubmit" report-submit>
  <view class="layout-column marUpTop">
    <textarea class="desc border" placeholder="请描述反馈意见" name="content" maxlength="1000"/>
    <view class="marTop border">
      <button type="primary" size="default" style="background-color: #265a88;" formType="submit" disabled='{{disableBtn}}'>提交</button>
    </view>
    <modal hidden="{{formMsgHidden}}" title="提示" confirm-text="去完善" no-cancel="true" bindcancel="cancel" bindconfirm="hiddenFromMsg">
    意见不能为空
    </modal>
  </view>
</form>

6.PPT展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

产业集群的转型升级需要各个方面的协同转型——以河北吉力宝为例

随着全球经济的不断演进&#xff0c;产业集群的转型升级已经成为确保企业持续竞争力的必经之路。产业集群是一种由相关产业企业在相对密集的地理区域内紧密互联的经济组织形式&#xff0c;它们通常共享类似的供应链、市场和技术基础。其中&#xff0c;河北吉力宝是中国鞋业产业…

【教学类-32-04】20231013十二生肖4.0(标记+1位数字+排序+左右分类)(大班:《我是中国人》偏科学-数)

作品展示 一位数字、汉字对齐排列 背景需求&#xff1a; 1、优化教案&#xff0c;参与比赛 10月份有一个幼儿园原创教案比赛&#xff0c;我把这个活动《十二生肖排排队》上报了。 2、把两位数序号改成一位数。 “老师&#xff0c;我觉得猴子最大&#xff0c;他是90”。 因…

关于Vue+webpack使用unocss编写CSS,打包后CSS没加前缀

关于Vuewebpack使用unocss编写CSS&#xff0c;打包后CSS没加前缀&#xff0c;封装了一个插件去解决了这个问题 unocss-postcss-webpack-plugin unocss在vite中使用配置&#xff0c;关于unocss在vite中使用&#xff0c;自行查阅官网 https://unocss.dev/integrations/vite ,vi…

Jetson ORIN NX安装Ubuntu20.04,配置CUDA,cuDNN 等注意事项

大体准备工作与流程与博客英伟达官方源Jetson Xavier NX安装Ubuntu20.04&#xff0c;配置CUDA&#xff0c;cuDNN&#xff0c;Pytorch等环境教程&#xff08;基于NVIDIA官方教程&#xff0c;理论适用其它Jetson设备&#xff09;一致&#xff0c;主要在步骤二、三处有一些区别&am…

专利分为哪些?如何查询一个公司的专利信息?

今天来分享专利的相关知识。 专利从字面上是指专有的权利和利益。“专利”一词来源于拉丁语Litterae patentes&#xff0c;意为公开的信件或公共文献&#xff0c;是中世纪的君主用来颁布某种特权的证明&#xff0c;后来指英国国王亲自签署的独占权利证书。专利在现代一般是由政…

湖南省政协副主席赖明勇一行莅临麒麟信安调研

10月11日下午&#xff0c;湖南省政协副主席、民建湖南省委会主委赖明勇&#xff0c;省政协提案委主任袁海平&#xff0c;民建省委会专职副主委、一级巡视员段安娜等长沙先进计算及信息安全产业调研组领导莅临麒麟信安调研国产操作系统企业发展情况。长沙市政府副市长彭涛&#…

Java 拷贝

Java 中的拷贝分为两种&#xff0c;浅拷贝和深拷贝&#xff0c;关于为什么要有两种拷贝方式而不是一种&#xff0c;就要涉及到 Java 的两种类型数据了。Java 的深浅拷贝都是针对于引用类型而言的&#xff0c;基本类型是没有深浅拷贝之分的&#xff0c;类似于 C 语言&#xff0c…

C# AnimeGAN 漫画风格迁移 动漫风格迁移 图像卡通化 图像动漫化

效果 项目 模型 animeganv3_H40_model.onnx animeganv3_H50_model.onnx animeganv3_H64_model.onnx AnimeGANv3_JP_face_v1.0.onnx AnimeGANv3_PortraitSketch_25.onnx Hayao-60.onnx Hayao_64.onnx Paprika_54.onnx Shinkai_53.onnx 下载 可执行文件exe下载 源码下载

element el-table树形表格结构,勾选联动 父级勾选,子级全部选中,勾选子级,父级显示勾选状态

需求实现如下 重点使用到 select 以及 select-all 两个方法 返回数据格式 代码实现 <el-table ref"tableRef" :cell-style"{ color: #FFF, background: #333 }":header-cell-style"{ color: #FFF, background: #333 }" row-key"id"…

操作系统 面试题(二)

PART1 1.乐观锁和悲观锁的区别是什么&#xff1f; 2.乐观锁和悲观锁的实现方式分别有哪些&#xff1f; 3.平均周转时间如何计算&#xff1f; 4.银行家算法是什么&#xff1f; 5.IO多路复用是什么&#xff1f; 6.HTTP的头部包含哪些内容&#xff1f; 7.TCP如何保持连接&a…

HTTP 原理与CND原理

1 HTTP 原理 HTTP是一个无状态的协议。无状态是指客户机&#xff08;Web浏览器&#xff09;和服务器之间不需要建立持久的连接&#xff0c;这意味着当一个客户端向服务器端发出请求&#xff0c;然后服务器返回响应(response)&#xff0c;连接就被关闭了&#xff0c;在服务器端…

NSA 和 CISA 揭示十大网络安全错误配置

美国国家安全局 (NSA) 和网络安全与基础设施安全局 (CISA) 在5日公布了其红蓝团队在大型组织网络中发现的十大最常见的网络安全错误配置。 通报还详细介绍了威胁行为者使用哪些策略、技术和程序 (TTP) 来成功利用这些错误配置来实现各种目标&#xff0c;包括获取访问权限、横向…

内存空间扩充之进程覆盖技术,交换技术

1.覆盖技术 人们引入了覆盖技术&#xff0c;用来解决“程序大小超过物理内存总和”的问题。 一个固定区&#xff1a; 存放最活跃的程序段固定区中的程序段在运行过程中不会调入调出 若干覆盖区&#xff1a; 不可能同时被访问程序段可共享一个覆盖区覆盖区中的程序段在运行…

MySQL慢查询的原因与解决方案

一、前言 在数据库系统中&#xff0c;慢查询是一个常见的问题。特别是在MySQL中&#xff0c;由于其复杂的查询结构和大量的数据&#xff0c;慢查询可能会导致系统性能下降&#xff0c;甚至影响整个应用的运行。本文将详细介绍MySQL慢查询的原因&#xff0c;并提供一些有效的解…

基于springboot实现火车订票管理系统项目【项目源码+论文说明】计算机毕业设计

摘要 本论文主要论述了如何使用JAVA语言开发一个火车订票管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述火车订票管理系统的当前背景以及系统开发的…

免备案域名 DNS解析

1、注册购买域名地址&#xff08;免备案&#xff09; Name.com | Domain Names, Registration, Websites & Hosting 注意国家选中国区才可以使用支付宝&#xff0c;信息填写完之后创建账号&#xff0c;邮箱填写自己的邮箱 2、注册完登录账号进去找到Domain Name 搜索自动…

SOLIDWORKS® 2024 新功能 - 3D CAD

1、 先前版本的兼容性 • 利用您订阅的 SOLIDWORKS&#xff0c;可将您的 SOLIDWORKS 设计作品保存为旧版本&#xff0c;与使用旧版本 SOLIDWORKS 的供应商无缝协作。 • 可将零件、装配体和工程图保存为新版本前两年之内的SOLIDWORKS 版本。 优点&#xff1a; 即使其他用户正…

信息系统项目管理师第四版学习笔记——高级项目管理

项目集管理 项目集管理角色和职责 在项目集管理中涉及的相关角色主要包括&#xff1a;项目集发起人、项目集指导委员会、项目集经理、其他影响项目集的干系人。 项目集发起人和收益人是负责承诺将组织的资源应用于项目集&#xff0c;并致力于使项目集取得成功的人。 项目集…

Lego Studio打开solidworks零件/装配体 (sw另存obj文件)

solidworks 2020 Lego studio / part designer 截至2023-10-13&#x1f382;最新版 文章目录 操作步骤1&#xff09; solidworks 开启 ScanTo3D 功能2&#xff09; 零件 / 装配体 保存至stl格式文件3&#xff09; 以SanTo3D网格文件方式打开stl4&#xff09; 将打开的stl另存为…

港联证券:三季报亮相 盈利拐点来了?

10月12日&#xff0c;跟着黄山胶囊宣布深市2023年首份三季报&#xff0c;以及华辰装备宣布创业板首份三季报&#xff0c;第一批宣布三季报的A股公司增至5家。 Wind数据闪现&#xff0c;到10月12日记者发稿时&#xff0c;A股共有208家上市公司宣布了本年三季度成果预告&#xf…