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

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.mzph.cn/news/103176.shtml

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

相关文章

【MySQL】关于MySQL升级到8.0版本的实践方案

关于MySQL升级到8.0版本的实践方案 关于数据库版本升级,一直都是热议话题,对于升级的缘由各家也有所不同,有业务驱动的,有DBA自发驱动的,有规划导向也有方向指引的……抛开各种原因,当升级这个决定落下来的时候,对于DBA手头的几百几千套数据库来说,就好比是一场动物大…

[电源选项]没有系统散热方式,没有被动散热选项

背景 笔记本的风扇声音太大&#xff0c;想改成被动散热方式&#xff0c;又不想影响性能。 于是我打开了控制面板\所有控制面板项\电源选项&#xff0c;点更改计划设置-> 更改高级电源设置。 想把散热方式改成被动散热。发现win11中好像没有这个选项了&#xff01; 如何…

198、RabbitMQ 的核心概念 及 工作机制概述; Exchange 类型 及 该类型对应的路由规则;了解什么是JMS。

目录 JMS 讲解★ RabbitMQ的核心概念★ RabbitMQ工作机制★ Connection&#xff08;连接&#xff09; 与 Channel&#xff08;通信信道&#xff09;★ Exchange★ Exchange与Queue★ Exchange的类型&#xff08;4种&#xff09;及 该类型对应的路由规则 看RabbitMQ 之前&#x…

技术分享| 二进制部署MySQL

一、介绍 ​MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#x…

拼多多历史价格数据接口,拼多多商品历史价格接口,拼多多API接口

采集拼多多商品历史价格接口可以采用以下方式&#xff1a; 使用价格监控工具。价格监控工具是一种可以自动监测商品价格变化的工具&#xff0c;它可以帮助消费者快速采集拼多多商品价格信息&#xff0c;还可以提供价格变动趋势的图表分析&#xff0c;使消费者更好地掌握商品价…

PLL的环路滤波器

本篇文章仅为分享PLL学习过程及一些公式推导&#xff0c;如有错误&#xff0c;还请批评指正&#xff01; 文章目录 1、一阶RC低通滤波器&#xff08;II类锁相环&#xff09;2、二阶RC低通滤波器A、加电容型B、加RC低通滤波器型 3、三阶低通滤波器 锁相环3大组成部分&#xff1…

Unity 表面凝结水珠效果(无需编码案例分享)

文章目录 前言正文1、准备工作2、瓶子的表面会先慢慢变白3、身周围的物体的反射会慢慢变得模糊4、周围的反射又会慢慢的变回清晰5、出现一个个不跪着的小水珠 结语 前言 今天跟大家分享一一个非常简单的使用Unity制作出在物体便面凝结小水珠的过程动画&#xff0c;老规矩先上图…

JMeter三种常用的逻辑控制器

一. 如果&#xff08;if&#xff09;控制器 1.1 使用js语法来判断&#xff1a; ## 1.2 使用jexl3函数来判断性能好&#xff1a; 二. 循环控制器 三. ForEach控制器 ForEach控制器一般和用户自定义变量或者正则表达式提取器一起使用&#xff0c;其在用户自定义变量或者从正…

c++视觉处理---均值滤波

均值滤波 cv::blur()函数是OpenCV中用于应用均值滤波的函数。均值滤波是一种简单的平滑技术&#xff0c;它计算每个像素周围像素的平均值&#xff0c;并用该平均值替代原始像素值。这有助于降低图像中的噪声&#xff0c;并可以模糊图像的细节。 以下是cv::blur()函数的基本用…

如何在手机上设置节日提醒和倒计时天数?

在平淡的生活和工作中&#xff0c;时不时有各种各样节日的点缀&#xff0c;为我们的日常增添了一些仪式感&#xff0c;例如春节、元宵节、情人节、端午节、七夕节等。此外还有一些特殊的日子也值得纪念&#xff0c;例如恋爱纪念日、结婚纪念日、亲朋好友生日等。面对这些节日&a…

【数据结构】算法的空间复杂度

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 算法空间复杂度的定义 算法的时间复杂度和空间复杂度是度量算法好坏的两个重要量度,在实际写代码的过程中,我们完全可以用空间来换时间,比如说,我们要判断某某年是不是闰年,大…

css实现一行N个元素动态布局(以4个为例)

昨日同事问了我一个前端问题&#xff0c;前端开发的尺寸都不按照UI图上面还原的吗&#xff1f; 我了解了其中原由&#xff0c;告知UI图并不会考虑到所有的场景&#xff0c;只能给个案例&#xff0c;画图是死的&#xff0c;代码写出来的得是活的。就像他遇到的案例&#xff0c;请…

GTX312L比TSM12更具优势的智能门锁触摸芯片方案

韩国GreenChip&#xff08;绿芯&#xff09;GTX312L是一款高灵敏、超强抗干扰能力具有自动灵敏度校准的12通道电容传感器&#xff0c;电源电压范围为1.8V&#xff5e;5.0V&#xff0c;支持单键/多点触控&#xff1b;采用I2C通信协议&#xff1b;内部控制寄存器可以使用I2C读写接…

华为云云耀云服务器L实例评测使用 | 云耀云服务器L实例Docker可视化Portainer容器管理

一、使用背景 之前一直在用阿里云或者腾讯云的服务器&#xff0c;现在接触了一下华为云的服务器实例&#xff0c;点开产品列表发现有弹性云服务器ECS、云耀云服务器HECS等&#xff0c;本文主要使用云耀云服务器&#xff0c;看到官方简介&#xff1a; 华为云耀云服务器&#x…

uniapp小程序中给web-view页面添加授权弹窗(使用cover-view组件覆盖实现该功能)

效果图&#xff1a; web-view是承载网页的容器。会自动铺满整个小程序页面&#xff0c;个人类型的小程序暂不支持使用。 再看下面一个提示&#xff1a; 每个页面只能有一个 web-view&#xff0c;web-view 会自动铺满整个页面&#xff0c;并覆盖其他组件。 也就是说&#xff0c;…

Android Studio版本升级后的问题 gradle降级、jdk升级

Cannot use TaskAction annotation on method IncrementalTask.taskAction$gradle_core() because interface org.gradle.api.tasks.incremental.IncrementalTaskInputs is not a valid parameter to an action method. 修改下面两处地方分别为7.0.3、7.3.3Android Gradle plu…

前端-Vue-开发指南

VueJS 开源文档 拉入vscode安装node.js安装vue脚手架components : 组件router&#xff1a;路由创建新组建 &#xff1a;assets&#xff1a; 系统图片存放地址main.js&#xff1a; vue脚手架对象存放地 &#xff08;新的包要放在里面&#xff09;属性 computedslot 插槽error St…

Hadoop-2.5.2平台环境搭建遇到的问题

文章目录 一、集群环境二、MySQL2.1 MySQL初始化失败2.2 MySQL启动报错2.3 启动时报不能打开日志错2.4 mysql启动时pid报错 二、Hive2.1 Hive修改core-site.xml文件后刷新权限2.2 Hive启动元数据时报错2.3 Hive初始化MySQL报错2.3.1 报错信息2.3.2 错误原因2.3.3 参考文档 2.4 …

React的类式组件和函数式组件之间有什么区别?

React 中的类组件和函数组件是两种不同的组件编写方式&#xff0c;它们之间有一些区别。 语法和写法&#xff1a;类组件是使用类的语法进行定义的&#xff0c;它继承自 React.Component 类&#xff0c;并且需要实现 render() 方法来返回组件的 JSX。函数组件是使用函数的语法进…

【SCSS篇】Vite+Vue3项目全局引入scss文件

文章目录 前言一、安装与使用1.1 安装1.2 scss 全局文件编写1.2.1 概述 1.3 全局引入和配置1.4 组件内使用 vue2 项目引入 sass附&#xff1a;忽略ts类型检测 前言 Sass 是世界上最成熟、最稳定、最强大的专业级CSS扩展语言&#xff01;在日常项目开发过程中使用非常广泛&…