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


    1.项目背景

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

    2.项目目标

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

    3.项目总体描述

    3.1发展成果

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

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

    3.2功能描述

    (1)用户注册

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

    (2)用户订单 包括

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

    (3)交易中心

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

    (4)我的产地

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

    (5)通知信息

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

    (6)客服中心

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

    4.项目成果

    5.核心代码展示

    1. <view class="goods marUpTop">
    2. <text class="total">共{{totalNum}}条</text>
    3. <view class="good" wx:for="{{goods}}" wx:key="id" wx:for-item="good">
    4. <image class="image" src="{{good.icon}}"></image>
    5. <text class="name" style='width:{{windowWidth - 80}}px;'>{{good.name}}</text>
    6. </view>
    7. <text class="bottomLoad" bindtap='bottomLoad' hidden='{{initLoadDataNum < pageSize}}'>{{bottomLoadMsg}}</text>
    8. </view>
    9. <view class="swiper-tab">
    10. <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">未开始({{notStartTotalNums}})</view>
    11. <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">进行中({{progressTotalNums}})</view>
    12. <view class="swiper-tab-list {{currentTab==2 ? 'on' : ''}}" data-current="2" bindtap="swichNav">已结束({{doneTotalNums}})</view>
    13. </view>
    14. <swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px;" bindchange="bindChange">
    15. <swiper-item>
    16. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    17. <view wx:for="{{notStartDatas}}" wx:for-item="notStart" wx:key="id" wx:for-index="index">
    18. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{notStart.id}}" >
    19. <image bindtap="toTaskDetail" src="/images/notStart.png" class="icon" data-taskId="{{notStart.id}}"></image>
    20. <text bindtap="toTaskDetail" style="width:{{winWidth - 140}}px;" class="name" data-taskId="{{notStart.id}}">{{notStart.name}}</text>
    21. <button open-type="share" data-taskId="{{notStart.id}}" data-hookName="{{notStart.userName}}" type='primary' style="background-color: #265a88;" class='btn invite'>邀请</button>
    22. <form bindsubmit='del' report-submit data-taskId="{{notStart.id}}">
    23. <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
    24. </form>
    25. </view>
    26. </view>
    27. </scroll-view>
    28. <view class="pageCmp">
    29. <image class="page" bindtap='upPage' src="{{notStartCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    30. <text class="page-no">{{notStartCurPage}}/{{notStartTotalPage}}</text>
    31. <image class="page" bindtap='downPage' src="{{notStartCurPage == notStartTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    32. </view>
    33. </swiper-item>
    34. <swiper-item>
    35. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    36. <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
    37. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
    38. <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
    39. <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
    40. <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
    41. </view>
    42. </view>
    43. </scroll-view>
    44. <view class="pageCmp">
    45. <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    46. <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
    47. <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    48. </view>
    49. </swiper-item>
    50. <swiper-item>
    51. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    52. <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
    53. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}">
    54. <image src="/images/done.png" class="icon" data-taskId="{{done.id}}" bindtap="toTaskDetail"></image>
    55. <text style="width:{{winWidth - 95}}px;" class="name" data-taskId="{{done.id}}" bindtap="toTaskDetail">{{done.name}}</text>
    56. <form bindsubmit='del' report-submit data-taskId="{{done.id}}">
    57. <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
    58. </form>
    59. </view>
    60. </view>
    61. </scroll-view>
    62. <view class="pageCmp">
    63. <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    64. <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
    65. <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    66. </view>
    67. </swiper-item>
    68. </swiper>
    69. <template name="normal">
    70. <view class="content-msg">{{msg}}</view>
    71. </template>
    72. <template name="apv">
    73. <view class="content-msg apv">
    74. <view class="apv-title">审批提醒</view>
    75. <view class="apv-content">{{msg}}</view>
    76. <view class="apv-do" data-id="{{id}}" data-attValue="{{attValue}}" bindtap="detail">
    77. <text>审批</text>
    78. <image class="right-image" src="/images/right.png"/>
    79. </view>
    80. </view>
    81. </template>
    82. <template name="end">
    83. <view class="msg-end" style='width:{{windowWidth - 70}}px;'>
    84. <image class="end-image" src="/images/{{attValue.suc ? 'success.png' : 'failure.png'}}"></image>
    85. <view style="width:{{windowWidth - 145}}px;" class="end-msg">{{msg}}<text style="color:#5D718D;" data-id="{{attValue.id}}" bindtap='endDetail'> [详情]</text></view>
    86. </view>
    87. </template>
    88. <view wx:if="{{isRefresh}}" class="fresh">
    89. <image src="/images/timer.gif" class="timer"></image>
    90. </view>
    91. <scroll-view style="height: {{windowHeight}}px;" scroll-y bindscroll="scroll" scroll-into-view="msgId_{{scrollInitId}}" bindtouchstart="start" bindtouchend="end" bindscrolltolower="hiddenDownBtn">
    92. <view class="msg-item" wx:for="{{msgs}}" wx:for-item="msg" wx:key="id" id="msgId_{{msg.id}}">
    93. <view>
    94. <image src="{{msg.icon}}" class="msg-icon"></image>
    95. </view>
    96. <view class="msg-content">
    97. <text class="name-time" decode="true">{{msg.sendName}} {{msg.createTime}}</text>
    98. <block wx:if="{{msg.type == 1}}"><template is="apv" data="{{...msg}}"/></block>
    99. <block wx:elif="{{msg.type == 2}}"><template is="end" data="{{...msg, windowWidth}}"/></block>
    100. <block wx:else><template is="normal" data="{{...msg}}"/></block>
    101. </view>
    102. </view>
    103. <form bindsubmit='jumpToUpUnRead' report-submit>
    104. <button class="toUpUnRead" form-type='submit' hidden='{{upBtnHidden}}'><text>{{unReadNum}}</text>条未读</button>
    105. </form>
    106. <form bindsubmit='jumpToDownUnRead' report-submit>
    107. <button class="toDownUnRead" form-type='submit' hidden='{{downBtnHidden}}'><text>{{downUnReadNum}}</text>条未读</button>
    108. </form>
    109. </scroll-view>
    110. <view class="swiper-tab">
    111. <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">进行中({{progressTotalNums}})</view>
    112. <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">已结束({{doneTotalNums}})</view>
    113. </view>
    114. <swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px" bindchange="bindChange">
    115. <swiper-item>
    116. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    117. <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
    118. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
    119. <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
    120. <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
    121. <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
    122. </view>
    123. </view>
    124. </scroll-view>
    125. <view class="pageCmp">
    126. <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    127. <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
    128. <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    129. </view>
    130. </swiper-item>
    131. <swiper-item>
    132. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    133. <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
    134. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}" bindtap="toTaskDetail">
    135. <image src="/images/done.png" class="icon" data-taskId="{{done.id}}"></image>
    136. <text class="name" style="width:{{winWidth - 55}}px;" data-taskId="{{done.id}}">{{done.name}}</text>
    137. </view>
    138. </view>
    139. </scroll-view>
    140. <view class="pageCmp">
    141. <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    142. <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
    143. <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    144. </view>
    145. </swiper-item>
    146. </swiper>
    147. <view class="layout-column marUpTop" style="padding: 5px 15px;">
    148. 拉钩创建成功,邀请Ta和你拉钩吧。
    149. <button open-type="share" type='primary' style="background-color: #265a88;width:100%;" size='default' class='marUpTop'>邀请</button>
    150. </view>
    151. <form bindsubmit="formSubmit" report-submit>
    152. <view class="layout-column marUpTop">
    153. <textarea class="desc border" placeholder="请描述反馈意见" name="content" maxlength="1000"/>
    154. <view class="marTop border">
    155. <button type="primary" size="default" style="background-color: #265a88;" formType="submit" disabled='{{disableBtn}}'>提交</button>
    156. </view>
    157. <modal hidden="{{formMsgHidden}}" title="提示" confirm-text="去完善" no-cancel="true" bindcancel="cancel" bindconfirm="hiddenFromMsg">
    158. 意见不能为空
    159. </modal>
    160. </view>
    161. </form>
    162. <view class="goods marUpTop">
    163. <text class="total">共{{totalNum}}条</text>
    164. <view class="good" wx:for="{{goods}}" wx:key="id" wx:for-item="good">
    165. <image class="image" src="{{good.icon}}"></image>
    166. <text class="name" style='width:{{windowWidth - 80}}px;'>{{good.name}}</text>
    167. </view>
    168. <text class="bottomLoad" bindtap='bottomLoad' hidden='{{initLoadDataNum < pageSize}}'>{{bottomLoadMsg}}</text>
    169. </view>
    170. <view class="swiper-tab">
    171. <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">未开始({{notStartTotalNums}})</view>
    172. <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">进行中({{progressTotalNums}})</view>
    173. <view class="swiper-tab-list {{currentTab==2 ? 'on' : ''}}" data-current="2" bindtap="swichNav">已结束({{doneTotalNums}})</view>
    174. </view>
    175. <swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px;" bindchange="bindChange">
    176. <swiper-item>
    177. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    178. <view wx:for="{{notStartDatas}}" wx:for-item="notStart" wx:key="id" wx:for-index="index">
    179. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{notStart.id}}" >
    180. <image bindtap="toTaskDetail" src="/images/notStart.png" class="icon" data-taskId="{{notStart.id}}"></image>
    181. <text bindtap="toTaskDetail" style="width:{{winWidth - 140}}px;" class="name" data-taskId="{{notStart.id}}">{{notStart.name}}</text>
    182. <button open-type="share" data-taskId="{{notStart.id}}" data-hookName="{{notStart.userName}}" type='primary' style="background-color: #265a88;" class='btn invite'>邀请</button>
    183. <form bindsubmit='del' report-submit data-taskId="{{notStart.id}}">
    184. <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
    185. </form>
    186. </view>
    187. </view>
    188. </scroll-view>
    189. <view class="pageCmp">
    190. <image class="page" bindtap='upPage' src="{{notStartCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    191. <text class="page-no">{{notStartCurPage}}/{{notStartTotalPage}}</text>
    192. <image class="page" bindtap='downPage' src="{{notStartCurPage == notStartTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    193. </view>
    194. </swiper-item>
    195. <swiper-item>
    196. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    197. <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
    198. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
    199. <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
    200. <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
    201. <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
    202. </view>
    203. </view>
    204. </scroll-view>
    205. <view class="pageCmp">
    206. <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    207. <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
    208. <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    209. </view>
    210. </swiper-item>
    211. <swiper-item>
    212. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    213. <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
    214. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}">
    215. <image src="/images/done.png" class="icon" data-taskId="{{done.id}}" bindtap="toTaskDetail"></image>
    216. <text style="width:{{winWidth - 95}}px;" class="name" data-taskId="{{done.id}}" bindtap="toTaskDetail">{{done.name}}</text>
    217. <form bindsubmit='del' report-submit data-taskId="{{done.id}}">
    218. <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
    219. </form>
    220. </view>
    221. </view>
    222. </scroll-view>
    223. <view class="pageCmp">
    224. <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    225. <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
    226. <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    227. </view>
    228. </swiper-item>
    229. </swiper>
    230. <template name="normal">
    231. <view class="content-msg">{{msg}}</view>
    232. </template>
    233. <template name="apv">
    234. <view class="content-msg apv">
    235. <view class="apv-title">审批提醒</view>
    236. <view class="apv-content">{{msg}}</view>
    237. <view class="apv-do" data-id="{{id}}" data-attValue="{{attValue}}" bindtap="detail">
    238. <text>审批</text>
    239. <image class="right-image" src="/images/right.png"/>
    240. </view>
    241. </view>
    242. </template>
    243. <template name="end">
    244. <view class="msg-end" style='width:{{windowWidth - 70}}px;'>
    245. <image class="end-image" src="/images/{{attValue.suc ? 'success.png' : 'failure.png'}}"></image>
    246. <view style="width:{{windowWidth - 145}}px;" class="end-msg">{{msg}}<text style="color:#5D718D;" data-id="{{attValue.id}}" bindtap='endDetail'> [详情]</text></view>
    247. </view>
    248. </template>
    249. <view wx:if="{{isRefresh}}" class="fresh">
    250. <image src="/images/timer.gif" class="timer"></image>
    251. </view>
    252. <scroll-view style="height: {{windowHeight}}px;" scroll-y bindscroll="scroll" scroll-into-view="msgId_{{scrollInitId}}" bindtouchstart="start" bindtouchend="end" bindscrolltolower="hiddenDownBtn">
    253. <view class="msg-item" wx:for="{{msgs}}" wx:for-item="msg" wx:key="id" id="msgId_{{msg.id}}">
    254. <view>
    255. <image src="{{msg.icon}}" class="msg-icon"></image>
    256. </view>
    257. <view class="msg-content">
    258. <text class="name-time" decode="true">{{msg.sendName}} {{msg.createTime}}</text>
    259. <block wx:if="{{msg.type == 1}}"><template is="apv" data="{{...msg}}"/></block>
    260. <block wx:elif="{{msg.type == 2}}"><template is="end" data="{{...msg, windowWidth}}"/></block>
    261. <block wx:else><template is="normal" data="{{...msg}}"/></block>
    262. </view>
    263. </view>
    264. <form bindsubmit='jumpToUpUnRead' report-submit>
    265. <button class="toUpUnRead" form-type='submit' hidden='{{upBtnHidden}}'><text>{{unReadNum}}</text>条未读</button>
    266. </form>
    267. <form bindsubmit='jumpToDownUnRead' report-submit>
    268. <button class="toDownUnRead" form-type='submit' hidden='{{downBtnHidden}}'><text>{{downUnReadNum}}</text>条未读</button>
    269. </form>
    270. </scroll-view>
    271. <view class="swiper-tab">
    272. <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">进行中({{progressTotalNums}})</view>
    273. <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">已结束({{doneTotalNums}})</view>
    274. </view>
    275. <swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px" bindchange="bindChange">
    276. <swiper-item>
    277. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    278. <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
    279. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
    280. <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
    281. <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
    282. <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
    283. </view>
    284. </view>
    285. </scroll-view>
    286. <view class="pageCmp">
    287. <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    288. <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
    289. <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    290. </view>
    291. </swiper-item>
    292. <swiper-item>
    293. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    294. <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
    295. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}" bindtap="toTaskDetail">
    296. <image src="/images/done.png" class="icon" data-taskId="{{done.id}}"></image>
    297. <text class="name" style="width:{{winWidth - 55}}px;" data-taskId="{{done.id}}">{{done.name}}</text>
    298. </view>
    299. </view>
    300. </scroll-view>
    301. <view class="pageCmp">
    302. <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    303. <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
    304. <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    305. </view>
    306. </swiper-item>
    307. </swiper>
    308. <view class="layout-column marUpTop" style="padding: 5px 15px;">
    309. 拉钩创建成功,邀请Ta和你拉钩吧。
    310. <button open-type="share" type='primary' style="background-color: #265a88;width:100%;" size='default' class='marUpTop'>邀请</button>
    311. </view>
    312. <form bindsubmit="formSubmit" report-submit>
    313. <view class="layout-column marUpTop">
    314. <textarea class="desc border" placeholder="请描述反馈意见" name="content" maxlength="1000"/>
    315. <view class="marTop border">
    316. <button type="primary" size="default" style="background-color: #265a88;" formType="submit" disabled='{{disableBtn}}'>提交</button>
    317. </view>
    318. <modal hidden="{{formMsgHidden}}" title="提示" confirm-text="去完善" no-cancel="true" bindcancel="cancel" bindconfirm="hiddenFromMsg">
    319. 意见不能为空
    320. </modal>
    321. </view>
    322. </form>
    323. <view class="goods marUpTop">
    324. <text class="total">共{{totalNum}}条</text>
    325. <view class="good" wx:for="{{goods}}" wx:key="id" wx:for-item="good">
    326. <image class="image" src="{{good.icon}}"></image>
    327. <text class="name" style='width:{{windowWidth - 80}}px;'>{{good.name}}</text>
    328. </view>
    329. <text class="bottomLoad" bindtap='bottomLoad' hidden='{{initLoadDataNum < pageSize}}'>{{bottomLoadMsg}}</text>
    330. </view>
    331. <view class="swiper-tab">
    332. <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">未开始({{notStartTotalNums}})</view>
    333. <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">进行中({{progressTotalNums}})</view>
    334. <view class="swiper-tab-list {{currentTab==2 ? 'on' : ''}}" data-current="2" bindtap="swichNav">已结束({{doneTotalNums}})</view>
    335. </view>
    336. <swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px;" bindchange="bindChange">
    337. <swiper-item>
    338. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    339. <view wx:for="{{notStartDatas}}" wx:for-item="notStart" wx:key="id" wx:for-index="index">
    340. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{notStart.id}}" >
    341. <image bindtap="toTaskDetail" src="/images/notStart.png" class="icon" data-taskId="{{notStart.id}}"></image>
    342. <text bindtap="toTaskDetail" style="width:{{winWidth - 140}}px;" class="name" data-taskId="{{notStart.id}}">{{notStart.name}}</text>
    343. <button open-type="share" data-taskId="{{notStart.id}}" data-hookName="{{notStart.userName}}" type='primary' style="background-color: #265a88;" class='btn invite'>邀请</button>
    344. <form bindsubmit='del' report-submit data-taskId="{{notStart.id}}">
    345. <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
    346. </form>
    347. </view>
    348. </view>
    349. </scroll-view>
    350. <view class="pageCmp">
    351. <image class="page" bindtap='upPage' src="{{notStartCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    352. <text class="page-no">{{notStartCurPage}}/{{notStartTotalPage}}</text>
    353. <image class="page" bindtap='downPage' src="{{notStartCurPage == notStartTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    354. </view>
    355. </swiper-item>
    356. <swiper-item>
    357. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    358. <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
    359. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
    360. <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
    361. <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
    362. <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
    363. </view>
    364. </view>
    365. </scroll-view>
    366. <view class="pageCmp">
    367. <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    368. <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
    369. <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    370. </view>
    371. </swiper-item>
    372. <swiper-item>
    373. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    374. <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
    375. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}">
    376. <image src="/images/done.png" class="icon" data-taskId="{{done.id}}" bindtap="toTaskDetail"></image>
    377. <text style="width:{{winWidth - 95}}px;" class="name" data-taskId="{{done.id}}" bindtap="toTaskDetail">{{done.name}}</text>
    378. <form bindsubmit='del' report-submit data-taskId="{{done.id}}">
    379. <button form-type='submit' type='primary' style="background-color: red;" class='btn delete'>删除</button>
    380. </form>
    381. </view>
    382. </view>
    383. </scroll-view>
    384. <view class="pageCmp">
    385. <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    386. <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
    387. <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    388. </view>
    389. </swiper-item>
    390. </swiper>
    391. <template name="normal">
    392. <view class="content-msg">{{msg}}</view>
    393. </template>
    394. <template name="apv">
    395. <view class="content-msg apv">
    396. <view class="apv-title">审批提醒</view>
    397. <view class="apv-content">{{msg}}</view>
    398. <view class="apv-do" data-id="{{id}}" data-attValue="{{attValue}}" bindtap="detail">
    399. <text>审批</text>
    400. <image class="right-image" src="/images/right.png"/>
    401. </view>
    402. </view>
    403. </template>
    404. <template name="end">
    405. <view class="msg-end" style='width:{{windowWidth - 70}}px;'>
    406. <image class="end-image" src="/images/{{attValue.suc ? 'success.png' : 'failure.png'}}"></image>
    407. <view style="width:{{windowWidth - 145}}px;" class="end-msg">{{msg}}<text style="color:#5D718D;" data-id="{{attValue.id}}" bindtap='endDetail'> [详情]</text></view>
    408. </view>
    409. </template>
    410. <view wx:if="{{isRefresh}}" class="fresh">
    411. <image src="/images/timer.gif" class="timer"></image>
    412. </view>
    413. <scroll-view style="height: {{windowHeight}}px;" scroll-y bindscroll="scroll" scroll-into-view="msgId_{{scrollInitId}}" bindtouchstart="start" bindtouchend="end" bindscrolltolower="hiddenDownBtn">
    414. <view class="msg-item" wx:for="{{msgs}}" wx:for-item="msg" wx:key="id" id="msgId_{{msg.id}}">
    415. <view>
    416. <image src="{{msg.icon}}" class="msg-icon"></image>
    417. </view>
    418. <view class="msg-content">
    419. <text class="name-time" decode="true">{{msg.sendName}} {{msg.createTime}}</text>
    420. <block wx:if="{{msg.type == 1}}"><template is="apv" data="{{...msg}}"/></block>
    421. <block wx:elif="{{msg.type == 2}}"><template is="end" data="{{...msg, windowWidth}}"/></block>
    422. <block wx:else><template is="normal" data="{{...msg}}"/></block>
    423. </view>
    424. </view>
    425. <form bindsubmit='jumpToUpUnRead' report-submit>
    426. <button class="toUpUnRead" form-type='submit' hidden='{{upBtnHidden}}'><text>{{unReadNum}}</text>条未读</button>
    427. </form>
    428. <form bindsubmit='jumpToDownUnRead' report-submit>
    429. <button class="toDownUnRead" form-type='submit' hidden='{{downBtnHidden}}'><text>{{downUnReadNum}}</text>条未读</button>
    430. </form>
    431. </scroll-view>
    432. <view class="swiper-tab">
    433. <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">进行中({{progressTotalNums}})</view>
    434. <view class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}" data-current="1" bindtap="swichNav">已结束({{doneTotalNums}})</view>
    435. </view>
    436. <swiper current="{{currentTab}}" class="swiper-box" duration="300" style="height:{{winHeight - 40}}px" bindchange="bindChange">
    437. <swiper-item>
    438. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    439. <view wx:for="{{progressDatas}}" wx:for-item="progress" wx:key="id" wx:for-index="index">
    440. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{progress.id}}" bindtap="toTaskDetail">
    441. <image src="/images/doing.png" class="icon" data-taskId="{{progress.id}}"></image>
    442. <text class="name" style="width:{{winWidth - 140}}px;" data-taskId="{{progress.id}}">{{progress.name}}</text>
    443. <progress class="progress" data-taskId="{{progress.id}}" activeColor="{{progress.activeColor}}" percent="{{progress.progress}}" show-info="true" active/>
    444. </view>
    445. </view>
    446. </scroll-view>
    447. <view class="pageCmp">
    448. <image class="page" bindtap='upPage' src="{{progressCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    449. <text class="page-no">{{progressCurPage}}/{{progressTotalPage}}</text>
    450. <image class="page" bindtap='downPage' src="{{progressCurPage == progressTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    451. </view>
    452. </swiper-item>
    453. <swiper-item>
    454. <scroll-view style="height: {{winHeight - 80}}px;" scroll-y>
    455. <view wx:for="{{doneDatas}}" wx:for-item="done" wx:key="id" wx:for-index="index">
    456. <view class="list" style="background-color:{{index % 2 == 0 ? '#F6F6F6' : '#ffffff'}}" data-taskId="{{done.id}}" bindtap="toTaskDetail">
    457. <image src="/images/done.png" class="icon" data-taskId="{{done.id}}"></image>
    458. <text class="name" style="width:{{winWidth - 55}}px;" data-taskId="{{done.id}}">{{done.name}}</text>
    459. </view>
    460. </view>
    461. </scroll-view>
    462. <view class="pageCmp">
    463. <image class="page" bindtap='upPage' src="{{doneCurPage == 1 ? '/images/up-grey.png' : '/images/up.png'}}"/>
    464. <text class="page-no">{{doneCurPage}}/{{doneTotalPage}}</text>
    465. <image class="page" bindtap='downPage' src="{{doneCurPage == doneTotalPage ? '/images/down-grey.png' : '/images/down.png'}}"/>
    466. </view>
    467. </swiper-item>
    468. </swiper>
    469. <view class="layout-column marUpTop" style="padding: 5px 15px;">
    470. 拉钩创建成功,邀请Ta和你拉钩吧。
    471. <button open-type="share" type='primary' style="background-color: #265a88;width:100%;" size='default' class='marUpTop'>邀请</button>
    472. </view>
    473. <form bindsubmit="formSubmit" report-submit>
    474. <view class="layout-column marUpTop">
    475. <textarea class="desc border" placeholder="请描述反馈意见" name="content" maxlength="1000"/>
    476. <view class="marTop border">
    477. <button type="primary" size="default" style="background-color: #265a88;" formType="submit" disabled='{{disableBtn}}'>提交</button>
    478. </view>
    479. <modal hidden="{{formMsgHidden}}" title="提示" confirm-text="去完善" no-cancel="true" bindcancel="cancel" bindconfirm="hiddenFromMsg">
    480. 意见不能为空
    481. </modal>
    482. </view>
    483. </form>

    6.PPT展示

  • 相关阅读:
    ChatGPT总结(持续更新)
    美国家安全局等发布安全部署人工智能系统指南
    [Linux] 基于阻塞队列的生产者消费者模型
    HTML CSS JS 网页设计作业「我的家乡吉林」
    【云原生Kubernetes】二进制搭建Kubernetes集群(中)——部署node节点
    ES6-匿名函数
    使用pip安装模块时,提示MemoryError
    基于费舍尔判别分析的故障与诊断(lunwen+文献综述+翻译及原文+MATLAB程序)
    基于红外传感器人体测温系统设计(STC89C51单片机)
    tcp/ip协议和opc协议对比详解
  • 原文地址:https://blog.csdn.net/lf21qp/article/details/133376999