与牧同行-小程序用户端
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.

308 lines
12 KiB

1 month ago
1 month ago
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">已更新</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">已更新</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>
  196. <view
  197. class="market-card card-trend"
  198. animation="{{cardAnimation3}}"
  199. >
  200. <view class="card-corner"></view>
  201. <view class="card-header">
  202. <view class="card-title-area">
  203. <view class="card-main-title">
  204. <view class="card-icon">
  205. <image src="/pages/images/scqs.png" class="icon-img" mode="aspectFit" />
  206. </view>
  207. <text class="card-title-text">行业洞察与预测</text>
  208. </view>
  209. <view class="card-subtitle">行业报告和专家预测等信息,把握市场发展方向</view>
  210. </view>
  211. </view>
  212. <!-- 市场趋势通知公告 - 无缝向上滚动区域 -->
  213. <view class="notice-scroll-wrapper" style="height: 420rpx;">
  214. <view class="notice-scroll-content"
  215. style="transform: translateY(-{{scrollOffset}}px); transition: transform {{scrollDuration}}s ease;">
  216. <!-- 第一组数据 -->
  217. <view class="notice-list">
  218. <view class="notice-item" wx:for="{{trendData}}" wx:key="id">
  219. <view class="notice-left">
  220. <view class="notice-type {{item.type}}">
  221. {{item.category === '报告' ? '报告' : '预测'}}
  222. </view>
  223. <view class="notice-marker {{item.isNew ? 'new' : ''}}"></view>
  224. </view>
  225. <view class="notice-content">
  226. <view class="notice-title-area">
  227. <text class="notice-title">{{item.title}}</text>
  228. <view class="notice-tag hot" wx:if="{{item.isHot}}">
  229. <text>热点</text>
  230. </view>
  231. <view class="notice-tag new" wx:if="{{item.isNew}}">
  232. <text>新</text>
  233. </view>
  234. </view>
  235. <text class="notice-summary">{{item.content}}</text>
  236. <view class="notice-footer">
  237. <text class="notice-source">{{item.source}}</text>
  238. <text class="notice-date">{{item.publishDate}}</text>
  239. </view>
  240. </view>
  241. </view>
  242. </view>
  243. <!-- 第二组相同数据(用于无缝滚动) -->
  244. <view class="notice-list">
  245. <view class="notice-item" wx:for="{{trendData}}" wx:key="id">
  246. <view class="notice-left">
  247. <view class="notice-type {{item.type}}">
  248. {{item.category === '报告' ? '报告' : '预测'}}
  249. </view>
  250. <view class="notice-marker {{item.isNew ? 'new' : ''}}"></view>
  251. </view>
  252. <view class="notice-content">
  253. <view class="notice-title-area">
  254. <text class="notice-title">{{item.title}}</text>
  255. <view class="notice-tag hot" wx:if="{{item.isHot}}">
  256. <text>热点</text>
  257. </view>
  258. <view class="notice-tag new" wx:if="{{item.isNew}}">
  259. <text>新</text>
  260. </view>
  261. </view>
  262. <text class="notice-summary">{{item.content}}</text>
  263. <view class="notice-footer">
  264. <text class="notice-source">{{item.source}}</text>
  265. <text class="notice-date">{{item.publishDate}}</text>
  266. </view>
  267. </view>
  268. </view>
  269. </view>
  270. </view>
  271. </view>
  272. <view class="card-footer">
  273. <view class="statistics-info">
  274. <text class="stat-text">共 {{trendData.length}} 条公告 · 自动滚动</text>
  275. </view>
  276. <view class="auto-scroll-tip">
  277. <text class="iconfont icon-auto-scroll"></text>
  278. <text>每5秒自动滚动</text>
  279. </view>
  280. </view>
  281. </view>
  282. <!-- 数据更新时间 -->
  283. <view class="update-footer fade-in-item" style="animation-delay: 0.3s">
  284. <view class="update-line">
  285. <text class="iconfont icon-sync"></text>
  286. <text class="update-tip">数据每30分钟自动同步 · 最后更新 {{lastUpdateTime}}</text>
  287. </view>
  288. </view>
  289. </scroll-view>
  290. </view>