与牧同行-小程序用户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

311 lines
12 KiB

1 month ago
  1. <!-- pages/market/market.wxml -->
  2. <view class="market-page">
  3. <!-- 顶部渐变标题栏 -->
  4. <view class="header-container" animation="{{headerAnimation}}">
  5. <view class="header-bg">
  6. <view class="bg-gradient"></view>
  7. <view class="bg-pattern"></view>
  8. </view>
  9. <view class="header-content">
  10. <view class="header-main">
  11. <view class="title-area">
  12. <view class="app-name">畜牧业市场信息</view>
  13. <view class="app-desc">实时行情 · 专业洞察 · 精准决策</view>
  14. </view>
  15. <view class="header-actions">
  16. <view class="time-display">
  17. <text class="iconfont icon-time"></text>
  18. <text>{{currentTime}}</text>
  19. </view>
  20. </view>
  21. </view>
  22. <!-- 数据统计摘要 -->
  23. <view class="data-summary">
  24. <view class="summary-item">
  25. <text class="summary-value">{{salesData.length}}</text>
  26. <text class="summary-label">畜产品类</text>
  27. </view>
  28. <view class="summary-divider"></view>
  29. <view class="summary-item">
  30. <text class="summary-value">{{feedData.length}}</text>
  31. <text class="summary-label">饲料品类</text>
  32. </view>
  33. <view class="summary-divider"></view>
  34. <view class="summary-item">
  35. <text class="summary-value">{{trendData.length}}</text>
  36. <text class="summary-label">趋势公告</text>
  37. </view>
  38. </view>
  39. </view>
  40. </view>
  41. <!-- 主内容区域 -->
  42. <scroll-view
  43. scroll-y
  44. class="content-container"
  45. enable-back-to-top="true"
  46. refresher-enabled="{{true}}"
  47. refresher-triggered="{{isRefreshing}}"
  48. bindrefresherrefresh="onPullDownRefresh"
  49. >
  50. <!-- 销售市场卡片 -->
  51. <view class="section-title fade-in-item">
  52. <text class="section-icon iconfont icon-sales"></text>
  53. <text class="section-text">销售市场</text>
  54. <text class="section-desc">畜产品价格动态</text>
  55. <view class="section-indicator"></view>
  56. <view class="data-count" wx:if="{{salesData.length > 3}}">
  57. <text>{{salesData.length}}条</text>
  58. </view>
  59. </view>
  60. <view
  61. class="market-card card-sales"
  62. animation="{{cardAnimation1}}"
  63. >
  64. <view class="card-header">
  65. <view class="card-title-area">
  66. <view class="card-main-title">
  67. <view class="card-icon">
  68. <image src="/pages/images/ccp.png" class="icon-img" mode="aspectFit" />
  69. </view>
  70. <text class="card-title-text">畜产品实时价格</text>
  71. </view>
  72. <view class="card-subtitle">各地牛、羊等畜产品的市场价格动态</view>
  73. </view>
  74. <view class="card-status">
  75. <view class="status-dot {{salesStatus}}"></view>
  76. <text class="status-text">{{salesStatus === 'active' ? '更新中' : '已更新'}}</text>
  77. </view>
  78. </view>
  79. <!-- 销售市场数据 - 可滚动区域 -->
  80. <scroll-view
  81. scroll-y
  82. class="data-scroll-container"
  83. style="height: {{salesData.length > 3 ? '420rpx' : 'auto'}}"
  84. >
  85. <view class="price-list">
  86. <view class="price-item" wx:for="{{salesData}}" wx:key="id">
  87. <view class="price-info">
  88. <text class="product-name">{{item.productName}}</text>
  89. <text class="product-region">{{item.regionDetail}}</text>
  90. </view>
  91. <view class="price-value {{item.trend}}">
  92. <text class="price-number">¥{{item.price}}</text>
  93. <text class="price-unit">{{item.unit}}</text>
  94. <view class="trend-indicator">
  95. <text class="trend-icon" wx:if="{{item.trend === 'up'}}">↗</text>
  96. <text class="trend-icon" wx:if="{{item.trend === 'down'}}">↘</text>
  97. <text class="trend-icon" wx:if="{{item.trend === 'stable'}}">→</text>
  98. <text class="trend-change" wx:if="{{item.priceChange}}">+{{item.priceChange}}%</text>
  99. </view>
  100. </view>
  101. <view class="price-time">
  102. <text class="iconfont icon-clock-small"></text>
  103. <text>{{item.updateTime}}</text>
  104. </view>
  105. </view>
  106. </view>
  107. </scroll-view>
  108. <view class="card-footer">
  109. <view class="update-info">
  110. <text class="iconfont icon-clock"></text>
  111. <text class="update-text">更新于 {{salesUpdateTime}}</text>
  112. </view>
  113. <view class="scroll-tip" wx:if="{{salesData.length > 3}}">
  114. <text class="iconfont icon-scroll"></text>
  115. <text>上下滚动查看更多</text>
  116. </view>
  117. </view>
  118. </view>
  119. <!-- 饲料市场卡片 -->
  120. <view class="section-title fade-in-item" style="animation-delay: 0.1s">
  121. <text class="section-text">饲料市场</text>
  122. <text class="section-desc">饲草料供应商价格</text>
  123. <view class="section-indicator"></view>
  124. <view class="data-count" wx:if="{{feedData.length > 3}}">
  125. <text>{{feedData.length}}条</text>
  126. </view>
  127. </view>
  128. <view
  129. class="market-card card-feed"
  130. animation="{{cardAnimation2}}"
  131. >
  132. <view class="card-corner"></view>
  133. <view class="card-header">
  134. <view class="card-title-area">
  135. <view class="card-main-title">
  136. <view class="card-icon">
  137. <image src="/pages/images/sl.png" class="icon-img" mode="aspectFit" />
  138. </view>
  139. <text class="card-title-text">饲料价格行情</text>
  140. </view>
  141. <view class="card-subtitle">各地饲草料供应商实时报价</view>
  142. </view>
  143. <view class="card-status">
  144. <view class="status-dot {{feedStatus}}"></view>
  145. <text class="status-text">{{feedStatus === 'active' ? '更新中' : '已更新'}}</text>
  146. </view>
  147. </view>
  148. <!-- 饲料市场数据 - 可滚动区域 -->
  149. <scroll-view
  150. scroll-y
  151. class="data-scroll-container"
  152. style="height: {{feedData.length > 3 ? '420rpx' : 'auto'}}"
  153. >
  154. <view class="supplier-list">
  155. <view class="supplier-item" wx:for="{{feedData}}" wx:key="id">
  156. <view class="supplier-info">
  157. <text class="supplier-name">{{item.feedName}}</text>
  158. <text class="supplier-company">{{item.supplier}}</text>
  159. </view>
  160. <view class="price-display">
  161. <view class="price-tag {{item.trend}}">
  162. <text class="price-label">¥{{item.price}}</text>
  163. <text class="price-per">{{item.unit}}</text>
  164. </view>
  165. <view class="trend-chart-small">
  166. <view class="chart-bar {{item.trend}}"
  167. style="height: {{item.chartHeight}}%">
  168. </view>
  169. </view>
  170. </view>
  171. <view class="supplier-time">
  172. <text class="iconfont icon-clock-small"></text>
  173. <text>{{item.updateTime}}</text>
  174. </view>
  175. </view>
  176. </view>
  177. </scroll-view>
  178. <view class="card-footer">
  179. <view class="update-info">
  180. <text class="iconfont icon-clock"></text>
  181. <text class="update-text">更新于 {{feedUpdateTime}}</text>
  182. </view>
  183. <view class="scroll-tip" wx:if="{{feedData.length > 3}}">
  184. <text class="iconfont icon-scroll"></text>
  185. <text>上下滚动查看更多</text>
  186. </view>
  187. </view>
  188. </view>
  189. <!-- 市场趋势卡片 - 通知公告(无缝向上滚动) -->
  190. <view class="section-title fade-in-item" style="animation-delay: 0.2s">
  191. <text class="section-icon iconfont icon-trend"></text>
  192. <text class="section-text">市场趋势</text>
  193. <text class="section-desc">通知公告与行业分析</text>
  194. <view class="section-indicator"></view>
  195. <view class="unread-badge" wx:if="{{unreadCount > 0}}">
  196. <text class="badge-text">{{unreadCount}}条未读</text>
  197. </view>
  198. </view>
  199. <view
  200. class="market-card card-trend"
  201. animation="{{cardAnimation3}}"
  202. >
  203. <view class="card-corner"></view>
  204. <view class="card-header">
  205. <view class="card-title-area">
  206. <view class="card-main-title">
  207. <view class="card-icon">
  208. <image src="/pages/images/scqs.png" class="icon-img" mode="aspectFit" />
  209. </view>
  210. <text class="card-title-text">行业洞察与预测</text>
  211. </view>
  212. <view class="card-subtitle">行业报告和专家预测等信息,把握市场发展方向</view>
  213. </view>
  214. </view>
  215. <!-- 市场趋势通知公告 - 无缝向上滚动区域 -->
  216. <view class="notice-scroll-wrapper" style="height: 420rpx;">
  217. <view class="notice-scroll-content"
  218. style="transform: translateY(-{{scrollOffset}}px); transition: transform {{scrollDuration}}s ease;">
  219. <!-- 第一组数据 -->
  220. <view class="notice-list">
  221. <view class="notice-item" wx:for="{{trendData}}" wx:key="id">
  222. <view class="notice-left">
  223. <view class="notice-type {{item.type}}">
  224. {{item.category === '报告' ? '报告' : '预测'}}
  225. </view>
  226. <view class="notice-marker {{item.isNew ? 'new' : ''}}"></view>
  227. </view>
  228. <view class="notice-content">
  229. <view class="notice-title-area">
  230. <text class="notice-title">{{item.title}}</text>
  231. <view class="notice-tag hot" wx:if="{{item.isHot}}">
  232. <text>热点</text>
  233. </view>
  234. <view class="notice-tag new" wx:if="{{item.isNew}}">
  235. <text>新</text>
  236. </view>
  237. </view>
  238. <text class="notice-summary">{{item.content}}</text>
  239. <view class="notice-footer">
  240. <text class="notice-source">{{item.source}}</text>
  241. <text class="notice-date">{{item.publishDate}}</text>
  242. </view>
  243. </view>
  244. </view>
  245. </view>
  246. <!-- 第二组相同数据(用于无缝滚动) -->
  247. <view class="notice-list">
  248. <view class="notice-item" wx:for="{{trendData}}" wx:key="id">
  249. <view class="notice-left">
  250. <view class="notice-type {{item.type}}">
  251. {{item.category === '报告' ? '报告' : '预测'}}
  252. </view>
  253. <view class="notice-marker {{item.isNew ? 'new' : ''}}"></view>
  254. </view>
  255. <view class="notice-content">
  256. <view class="notice-title-area">
  257. <text class="notice-title">{{item.title}}</text>
  258. <view class="notice-tag hot" wx:if="{{item.isHot}}">
  259. <text>热点</text>
  260. </view>
  261. <view class="notice-tag new" wx:if="{{item.isNew}}">
  262. <text>新</text>
  263. </view>
  264. </view>
  265. <text class="notice-summary">{{item.content}}</text>
  266. <view class="notice-footer">
  267. <text class="notice-source">{{item.source}}</text>
  268. <text class="notice-date">{{item.publishDate}}</text>
  269. </view>
  270. </view>
  271. </view>
  272. </view>
  273. </view>
  274. </view>
  275. <view class="card-footer">
  276. <view class="statistics-info">
  277. <text class="stat-text">共 {{trendData.length}} 条公告 · 自动滚动</text>
  278. </view>
  279. <view class="auto-scroll-tip">
  280. <text class="iconfont icon-auto-scroll"></text>
  281. <text>每5秒自动滚动</text>
  282. </view>
  283. </view>
  284. </view>
  285. <!-- 数据更新时间 -->
  286. <view class="update-footer fade-in-item" style="animation-delay: 0.3s">
  287. <view class="update-line">
  288. <text class="iconfont icon-sync"></text>
  289. <text class="update-tip">数据每30分钟自动同步 · 最后更新 {{lastUpdateTime}}</text>
  290. </view>
  291. </view>
  292. </scroll-view>
  293. </view>