提交 1dbbad7a 作者: 方治民

Merge branch 'main' of https://gitee.com/mrf/agri-app

...@@ -4,7 +4,7 @@ import { CodeGenerator, Property } from 'pont-engine' ...@@ -4,7 +4,7 @@ import { CodeGenerator, Property } from 'pont-engine'
// 接口 API 前缀 // 接口 API 前缀
// 通常与项目的 env 配置中的 VITE_GLOB_API_URL_PREFIX 相同 // 通常与项目的 env 配置中的 VITE_GLOB_API_URL_PREFIX 相同
const API_URL_PREFIX = '/api' const API_URL_PREFIX = '/jeecgboot'
export default class BasicGenerator extends CodeGenerator { export default class BasicGenerator extends CodeGenerator {
checkJsonParam(inter: Interface, paramsCode: string): boolean { checkJsonParam(inter: Interface, paramsCode: string): boolean {
...@@ -60,8 +60,8 @@ export default class BasicGenerator extends CodeGenerator { ...@@ -60,8 +60,8 @@ export default class BasicGenerator extends CodeGenerator {
sourceResponseType === 'File' sourceResponseType === 'File'
? 'void' ? 'void'
: sourceResponseType === 'defs.ResultString' : sourceResponseType === 'defs.ResultString'
? 'string' ? 'string'
: sourceResponseType.replace(/defs.Result(.*)/, 'defs.$1') : sourceResponseType.replace(/defs.Result(.*)/, 'defs.$1')
return ` return `
export ${paramsCode} export ${paramsCode}
...@@ -127,8 +127,8 @@ export default class BasicGenerator extends CodeGenerator { ...@@ -127,8 +127,8 @@ export default class BasicGenerator extends CodeGenerator {
requestParams.includes('form') requestParams.includes('form')
? `headers: { 'Content-Type': 'multipart/form-data;charset=UTF-8' },` ? `headers: { 'Content-Type': 'multipart/form-data;charset=UTF-8' },`
: isBody : isBody
? `headers: { 'Content-Type': 'application/json' },` ? `headers: { 'Content-Type': 'application/json' },`
: '' : ''
} }
...config, ...config,
......
...@@ -2,6 +2,9 @@ import { otherHttp } from '/@/utils/http/axios' ...@@ -2,6 +2,9 @@ import { otherHttp } from '/@/utils/http/axios'
enum Api { enum Api {
zoneList = '/online/cgform/api/getData/01fd687ecb164aea914e92047e144d66', // 金刚区菜单数据 zoneList = '/online/cgform/api/getData/01fd687ecb164aea914e92047e144d66', // 金刚区菜单数据
productMarketList = '/online/cgform/api/getData/5b71e11020d44366b2d130e200c7a640', // 热门产地行情
serviceStatsList = '/online/cgform/api/getData/491863dde351404da63a1a6e8c699c4c', // 服务展示窗
agricultureClassList = '/online/cgform/api/getData/311c300e05694ba69a063d04c8572e9e', // 农技课堂
} }
/** /**
...@@ -14,3 +17,36 @@ export function zoneList(params = {}) { ...@@ -14,3 +17,36 @@ export function zoneList(params = {}) {
params, params,
}) })
} }
/**
* @param params 请求参数
* @description: 热门产地行情数据
*/
export function productMarketList(params = {}) {
return otherHttp.get({
url: Api.productMarketList,
params,
})
}
/**
* @param params 请求参数
* @description: 服务展示窗数据
*/
export function serviceStatsList(params = {}) {
return otherHttp.get({
url: Api.serviceStatsList,
params,
})
}
/**
* @param params 请求参数
* @description: 农技课堂数据
*/
export function agricultureClassList(params = {}) {
return otherHttp.get({
url: Api.agricultureClassList,
params,
})
}
import { otherHttp } from '/@/utils/http/axios'
enum Api {
zoneList = '/online/cgform/api/getData/01fd687ecb164aea914e92047e144d66', // 功能菜单数据
agricultureModelsList = '/online/cgform/api/getData/7b2983df6ddf416aba68db8b0ab234ab', // 农业模型数据
baseManagementList = '/online/cgform/api/getData/e4e4e6c901254b60b1e7a005097999ec', // 基地管理数据
commonToolsList = '/online/cgform/api/getData/3a7fbb877f304b7d83935caa454859c4', // 常用工具数据
}
/**
* @param params 请求参数
* @description: 金刚区菜单数据
*/
export function zoneList(params = {}) {
return otherHttp.get({
url: Api.zoneList,
params,
})
}
/**
* @param params 请求参数
* @description: 农业模型数据
*/
export function agricultureModelsList(params = {}) {
return otherHttp.get({
url: Api.agricultureModelsList,
params,
})
}
/**
* @param params 请求参数
* @description: 基地管理数据
*/
export function baseManagementList(params = {}) {
return otherHttp.get({
url: Api.baseManagementList,
params,
})
}
/**
* @param params 请求参数
* @description: 常用工具数据
*/
export function commonToolsList(params = {}) {
return otherHttp.get({
url: Api.commonToolsList,
params,
})
}
...@@ -178,53 +178,43 @@ ...@@ -178,53 +178,43 @@
} }
} }
}, },
// pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{ {
"path": "pages/index/index", "path": "pages/index/index",
"style": { "style": {
"navigationBarTitleText": "Basic APP" "navigationBarTitleText": "Basic APP"
} }
}, },
// ================================ 通用页面分割线 ====================================
// === 关于我们 ===
{ {
"path": "pages/common/about/index", "path": "pages/common/about/index",
"style": { "style": {
"navigationBarTitleText": "关于我们" "navigationBarTitleText": "关于我们"
} }
}, },
// === 问题反馈 ===
{ {
"path": "pages/common/feedback/index", "path": "pages/common/feedback/index",
"style": { "style": {
"navigationBarTitleText": "问题反馈" "navigationBarTitleText": "问题反馈"
} }
}, },
// === Webview ===
{ {
"path": "pages/common/webview/index", "path": "pages/common/webview/index",
"style": { "style": {
"navigationBarTitleText": "" "navigationBarTitleText": ""
} }
}, },
// === PDF 文件预览 ===
{ {
"path": "pages/common/viewer/pdf", "path": "pages/common/viewer/pdf",
"style": { "style": {
"navigationBarTitleText": "" "navigationBarTitleText": ""
} }
}, },
// === 空页面(开发中...) ===
{ {
"path": "pages/common/coding/coding", "path": "pages/common/coding/coding",
"style": { "style": {
// #ifdef H5
"titleNView": false, "titleNView": false,
// #endif
"navigationBarTitleText": "开发中" "navigationBarTitleText": "开发中"
} }
}, },
// === 版本更新 ===
{ {
"path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup", "path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
"style": { "style": {
...@@ -241,7 +231,6 @@ ...@@ -241,7 +231,6 @@
"disableScroll": true "disableScroll": true
} }
}, },
// === 应用全屏通知弹窗(场景:应用维护通知、用户通知公告等) ===
{ {
"path": "pages/common/notice/index", "path": "pages/common/notice/index",
"style": { "style": {
...@@ -265,9 +254,7 @@ ...@@ -265,9 +254,7 @@
"easycom": { "easycom": {
"autoscan": true, "autoscan": true,
"custom": { "custom": {
// https://doc.firstui.cn/docs/introduce.html
"^fui-(.*)": "@/components/FirstUI/fui-$1/fui-$1.vue", "^fui-(.*)": "@/components/FirstUI/fui-$1/fui-$1.vue",
// https://ext.dcloud.net.cn/plugin?id=55#detail
"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
} }
}, },
......
...@@ -11,12 +11,14 @@ ...@@ -11,12 +11,14 @@
{ id: 4, name: '采摘' }, { id: 4, name: '采摘' },
{ id: 5, name: '其他' }, { id: 5, name: '其他' },
], ],
currentCategoryId: 1,
// 用工类型标签 // 用工类型标签
employmentTabs: [ employmentTabs: [
{ id: 1, name: '推荐用工' }, { id: 1, name: '推荐用工' },
{ id: 2, name: '我的用工' }, { id: 2, name: '我的用工' },
], ],
currentEmploymentId: 1,
// 用工列表 // 用工列表
employmentList: [ employmentList: [
...@@ -87,12 +89,14 @@ ...@@ -87,12 +89,14 @@
// 分类标签点击事件 // 分类标签点击事件
function onCategoryTabClick(tab: any) { function onCategoryTabClick(tab: any) {
console.log('点击分类标签:', tab) console.log('点击分类标签:', tab)
pageData.currentCategoryId = tab.id
// 在这里添加具体的分类标签点击逻辑 // 在这里添加具体的分类标签点击逻辑
} }
// 用工类型标签点击事件 // 用工类型标签点击事件
function onEmploymentTabClick(tab: any) { function onEmploymentTabClick(tab: any) {
console.log('点击用工类型标签:', tab) console.log('点击用工类型标签:', tab)
pageData.currentEmploymentId = tab.id
// 在这里添加具体的用工类型标签点击逻辑 // 在这里添加具体的用工类型标签点击逻辑
} }
...@@ -117,10 +121,13 @@ ...@@ -117,10 +121,13 @@
v-for="tab in pageData.categoryTabs" v-for="tab in pageData.categoryTabs"
:key="tab.id" :key="tab.id"
class="codefun-flex-col codefun-justify-start codefun-items-center" class="codefun-flex-col codefun-justify-start codefun-items-center"
:class="[tab.id === 1 ? 'text-wrapper' : 'text-wrapper_2', tab.id > 1 ? 'codefun-ml-12' : '']" :class="[
tab.id === pageData.currentCategoryId ? 'text-wrapper' : 'text-wrapper_2',
tab.id > 1 ? 'codefun-ml-12' : '',
]"
@click="onCategoryTabClick(tab)" @click="onCategoryTabClick(tab)"
> >
<text class="font_2" :class="[`text_${tab.id + 1}`]"> <text class="font_2 text_2">
{{ tab.name }} {{ tab.name }}
</text> </text>
</view> </view>
...@@ -130,15 +137,11 @@ ...@@ -130,15 +137,11 @@
<view <view
v-for="tab in pageData.employmentTabs" v-for="tab in pageData.employmentTabs"
:key="tab.id" :key="tab.id"
class="codefun-flex-col codefun-justify-start codefun-items-center" class="codefun-flex-col codefun-justify-start codefun-items-center text-50p"
:class="[ :class="[tab.id === pageData.currentEmploymentId ? 'text-wrapper_3' : 'codefun-self-start']"
tab.id === 1 ? 'text-wrapper_3' : '',
tab.id > 1 ? 'codefun-self-start' : '',
tab.id > 1 ? 'ml-55' : '',
]"
@click="onEmploymentTabClick(tab)" @click="onEmploymentTabClick(tab)"
> >
<text class="font_2" :class="[`text_${tab.id + 6}`]"> <text class="font_2">
{{ tab.name }} {{ tab.name }}
</text> </text>
</view> </view>
...@@ -309,16 +312,25 @@ ...@@ -309,16 +312,25 @@
border-right: solid 2rpx #ffffffcc; border-right: solid 2rpx #ffffffcc;
border-top: solid 2rpx #ffffffcc; border-top: solid 2rpx #ffffffcc;
border-bottom: solid 2rpx #ffffffcc; border-bottom: solid 2rpx #ffffffcc;
.text-50p {
width: 50%;
padding: 0.75rem 0 1.625rem;
}
.text-wrapper_3 { .text-wrapper_3 {
padding: 24rpx 0 52rpx;
background-color: #ffffff; background-color: #ffffff;
border-radius: 32rpx; border-radius: 32rpx;
width: 348rpx;
height: 102rpx;
.text_7 { .text_7 {
color: #333333; color: #333333;
line-height: 26.16rpx; line-height: 26.16rpx;
} }
.font_2 {
color: #1f2937;
}
}
.codefun-self-start {
.font_2 {
color: #5db66f;
}
} }
.text_8 { .text_8 {
margin-top: 20rpx; margin-top: 20rpx;
...@@ -343,11 +355,11 @@ ...@@ -343,11 +355,11 @@
.font_4 { .font_4 {
font-size: 24rpx; font-size: 24rpx;
font-family: DingTalk Sans; font-family: DingTalk Sans;
line-height: 22rpx; // line-height: 22rpx;
color: #999999; color: #999999;
} }
.text_10 { .text_10 {
line-height: 23.36rpx; // line-height: 23.36rpx;
} }
} }
.image_8 { .image_8 {
......
<script setup lang="ts"> <script setup lang="ts">
import { reactive } from 'vue' import { reactive } from 'vue'
import { onPullDownRefresh } from '@dcloudio/uni-app' import { onPullDownRefresh, onShow } from '@dcloudio/uni-app'
import Navigate from '@/utils/page/navigate' import Navigate from '@/utils/page/navigate'
import * as HomeAPI from '@/api/model/home'
import * as NongChangAPI from '@/api/model/nongchang'
onShow(() => {
// 获取金刚区菜单数据
getZoomList()
// 获取农业模型数据
getAgricultureModelsList()
// 获取基地管理数据
getBaseManagementList()
// 获取常用工具数据
getCommonToolsList()
// 农技课堂
getAgricultureClassList()
})
// 下拉刷新 // 下拉刷新
onPullDownRefresh(() => { onPullDownRefresh(() => {
setTimeout(function () { setTimeout(function () {
...@@ -21,11 +37,11 @@ ...@@ -21,11 +37,11 @@
// 功能菜单 // 功能菜单
menuItems: [ menuItems: [
{ id: 1, name: '监测预警', icon: '/static/images/codefun/e683f9d10dc21da45abffbfa4c56fffb.png' }, // { id: 1, name: '监测预警', icon: '/static/images/codefun/e683f9d10dc21da45abffbfa4c56fffb.png' },
{ id: 2, name: '农业模型', icon: '/static/images/codefun/afdf5cf91bb1832ec12b89ba1f8a4a22.png' }, // { id: 2, name: '农业模型', icon: '/static/images/codefun/afdf5cf91bb1832ec12b89ba1f8a4a22.png' },
{ id: 3, name: '基地管理', icon: '/static/images/codefun/8ce0f7de048a5d10fd901fa4caee40fd.png' }, // { id: 3, name: '基地管理', icon: '/static/images/codefun/8ce0f7de048a5d10fd901fa4caee40fd.png' },
{ id: 4, name: '信用中心', icon: '/static/images/codefun/bc6853d7f464c445f1d6cc5f3b37103d.png' }, // { id: 4, name: '信用中心', icon: '/static/images/codefun/bc6853d7f464c445f1d6cc5f3b37103d.png' },
{ id: 5, name: '灵活用工', icon: '/static/images/codefun/104cbc5dca418b07e6933d2e953db1d8.png' }, // { id: 5, name: '灵活用工', icon: '/static/images/codefun/104cbc5dca418b07e6933d2e953db1d8.png' },
], ],
// 农场信息 // 农场信息
...@@ -41,30 +57,30 @@ ...@@ -41,30 +57,30 @@
// 农业模型 // 农业模型
agricultureModels: [ agricultureModels: [
{ // {
id: 1, // id: 1,
image: '/static/images/codefun/d8106d6756782001856157ea8933e6f0.png', // image: '/static/images/codefun/d8106d6756782001856157ea8933e6f0.png',
name: '柑橘模型', // name: '柑橘模型',
description: '精准预测柑橘生长周期', // description: '精准预测柑橘生长周期',
actionText: '查看介绍', // actionText: '查看介绍',
link: '/pages/nongyedamoxing/nongyedamoxing', // link: '/pages/nongyedamoxing/nongyedamoxing',
}, // },
{ // {
id: 2, // id: 2,
image: '/static/images/codefun/2716e8578a8409fc69b6b25ca47dd988.png', // image: '/static/images/codefun/2716e8578a8409fc69b6b25ca47dd988.png',
name: '作物生长监测', // name: '作物生长监测',
description: 'AI识别生长状况', // description: 'AI识别生长状况',
actionText: '查看介绍', // actionText: '查看介绍',
link: '/pages/nongyedamoxing/nongyedamoxing', // link: '/pages/nongyedamoxing/nongyedamoxing',
}, // },
{ // {
id: 3, // id: 3,
image: '/static/images/codefun/f29a54a031b5665bf1522b973b109416.png', // image: '/static/images/codefun/f29a54a031b5665bf1522b973b109416.png',
name: '产能模型', // name: '产能模型',
description: '基于作物生长状况产能构建模型', // description: '基于作物生长状况产能构建模型',
actionText: '查看介绍', // actionText: '查看介绍',
link: '/pages/nongyedamoxing/nongyedamoxing', // link: '/pages/nongyedamoxing/nongyedamoxing',
}, // },
], ],
// 灵活用工 // 灵活用工
...@@ -76,41 +92,41 @@ ...@@ -76,41 +92,41 @@
// 基地管理 // 基地管理
baseManagement: [ baseManagement: [
{ // {
id: 1, // id: 1,
name: '基础信息', // name: '基础信息',
icon: '/static/images/codefun/652ff68221e41e59bd253d90a260a9d2.png', // icon: '/static/images/codefun/652ff68221e41e59bd253d90a260a9d2.png',
value: 3, // value: 3,
unit: '个', // unit: '个',
}, // },
{ // {
id: 2, // id: 2,
name: '作物管理', // name: '作物管理',
icon: '/static/images/codefun/73f2cd7926e10ad8d0222682c6f0dd44.png', // icon: '/static/images/codefun/73f2cd7926e10ad8d0222682c6f0dd44.png',
value: 3, // value: 3,
unit: '种', // unit: '种',
}, // },
{ // {
id: 3, // id: 3,
name: '农资管理', // name: '农资管理',
icon: '/static/images/codefun/d5224faf803b94f41aea2c682a8b30fe.png', // icon: '/static/images/codefun/d5224faf803b94f41aea2c682a8b30fe.png',
value: 4, // value: 4,
unit: '项', // unit: '项',
}, // },
{ // {
id: 4, // id: 4,
name: '销售记录', // name: '销售记录',
icon: '/static/images/codefun/9489121f8d1fa3d7847a2ef3e45b8753.png', // icon: '/static/images/codefun/9489121f8d1fa3d7847a2ef3e45b8753.png',
value: 5, // value: 5,
unit: '笔', // unit: '笔',
}, // },
{ // {
id: 5, // id: 5,
name: '收支概览', // name: '收支概览',
icon: '/static/images/codefun/68ae1a4d9d9f5bcd80dd2a4603ac7cdf.png', // icon: '/static/images/codefun/68ae1a4d9d9f5bcd80dd2a4603ac7cdf.png',
value: 8300, // value: 8300,
unit: '元', // unit: '元',
}, // },
], ],
// 监测预警图表数据 // 监测预警图表数据
...@@ -194,11 +210,63 @@ ...@@ -194,11 +210,63 @@
// 农技学习 // 农技学习
agricultureClass: { agricultureClass: {
title: '专家实录—鸡饲养技术', title: '专家实录—鸡饲养技术',
expert: '张教授', time: '',
info: '23:15|2.3万次播放', videoList: [],
}, },
current: 0,
}) })
function getZoomList() {
NongChangAPI.zoneList({
pageNo: 1,
pageSize: 5,
status: 1,
type: 2,
}).then((res) => {
const { records } = res
pageData.menuItems = []
pageData.menuItems = records
})
}
function getAgricultureModelsList() {
NongChangAPI.agricultureModelsList({
status: 1,
}).then((res) => {
const { records } = res
pageData.agricultureModels = []
pageData.agricultureModels = records
})
}
function getBaseManagementList() {
NongChangAPI.baseManagementList({
pageNo: 1,
pageSize: 5,
status: 1,
}).then((res) => {
const { records } = res
pageData.baseManagement = []
pageData.baseManagement = records
})
}
function getCommonToolsList() {
NongChangAPI.commonToolsList({
status: 1,
}).then((res) => {
const { records } = res
pageData.commonTools = []
pageData.commonTools = records
})
}
function getAgricultureClassList() {
HomeAPI.agricultureClassList({
status: 1,
}).then((res) => {
const { records } = res
pageData.agricultureClass.videoList = records
pageData.agricultureClass.title = records[0]?.title
})
}
// 菜单点击事件 // 菜单点击事件
function onMenuItemClick(item: any) { function onMenuItemClick(item: any) {
console.log('点击菜单项:', item) console.log('点击菜单项:', item)
...@@ -211,7 +279,7 @@ ...@@ -211,7 +279,7 @@
// 在这里添加具体的农业模型点击逻辑 // 在这里添加具体的农业模型点击逻辑
// 打开模型详情页面 // 打开模型详情页面
Navigate.to(model.link) Navigate.to('/pages/nongyedamoxing/nongyedamoxing')
} }
// 基地管理点击事件 // 基地管理点击事件
...@@ -255,6 +323,18 @@ ...@@ -255,6 +323,18 @@
console.log('点击常用工具:', tool) console.log('点击常用工具:', tool)
// 在这里添加具体的常用工具点击逻辑 // 在这里添加具体的常用工具点击逻辑
} }
// 轮播视频切换的时候触发
function handleChangeVideo(e: any) {
// console.log('切换视频', e.detail.current)
pageData.current = e.detail.current
pageData.agricultureClass.title = pageData.agricultureClass.videoList[pageData.current]?.title
}
// 获取视频时长
function handleMetadataLoaded(e: any) {
pageData.agricultureClass.time = e.target.duration
}
</script> </script>
<template> <template>
...@@ -273,15 +353,9 @@ ...@@ -273,15 +353,9 @@
v-for="item in pageData.menuItems" v-for="item in pageData.menuItems"
:key="item.id" :key="item.id"
class="codefun-flex-col codefun-items-center" class="codefun-flex-col codefun-items-center"
:class="{
'equal-division-item': item.id === 1,
'group_3 equal-division-item': item.id === 2 || item.id === 3,
'group_4 equal-division-item_2': item.id === 4,
'equal-division-item_3 group_5': item.id === 5,
}"
@click="onMenuItemClick(item)" @click="onMenuItemClick(item)"
> >
<image class="image_6" :src="item.icon" /> <image class="image_6" :src="item.icon_url" />
<text class="font_3 mt-13" :class="`text_${item.id + 2}`">{{ item.name }}</text> <text class="font_3 mt-13" :class="`text_${item.id + 2}`">{{ item.name }}</text>
</view> </view>
</view> </view>
...@@ -331,14 +405,14 @@ ...@@ -331,14 +405,14 @@
<view class="codefun-flex-row equal-division_3"> <view class="codefun-flex-row equal-division_3">
<template v-for="(model, index) in pageData.agricultureModels" :key="model.id"> <template v-for="(model, index) in pageData.agricultureModels" :key="model.id">
<view class="codefun-flex-col equal-division-item_5 group_11"> <view class="codefun-flex-col equal-division-item_5 group_11">
<image class="codefun-self-center image_7" :src="model.image" /> <image class="codefun-self-center image_7" :src="model.icon_url" />
<text class="codefun-self-center font_5 text_18">{{ model.name }}</text> <text class="codefun-self-center font_5 text_18">{{ model.name }}</text>
<text class="codefun-self-center font_7 text_21">{{ model.description }}</text> <text class="codefun-self-center font_7 text_21">{{ model.describes }}</text>
<view <view
class="codefun-flex-col codefun-justify-start codefun-items-center codefun-self-center text-wrapper_3" class="codefun-flex-col codefun-justify-start codefun-items-center codefun-self-center text-wrapper_3"
@click="onAgricultureModelClick(model)" @click="onAgricultureModelClick(model)"
> >
<text class="font_8 text_24">{{ model.actionText }}</text> <text class="font_8 text_24">查看介绍</text>
</view> </view>
</view> </view>
...@@ -387,14 +461,13 @@ ...@@ -387,14 +461,13 @@
<view <view
v-for="item in pageData.baseManagement" v-for="item in pageData.baseManagement"
:key="item.id" :key="item.id"
class="codefun-flex-col codefun-items-start section_11 equal-division-item_7" class="codefun-flex-col codefun-items-start section_11 equal-division-item_7 ml-9"
:class="{ 'ml-9': item.id > 1 }"
@click="onBaseManagementClick(item)" @click="onBaseManagementClick(item)"
> >
<image :class="item.id === 1 ? 'image_10' : 'image_5'" :src="item.icon" /> <image class="image_5" :src="item.icon" />
<text class="font_11" :class="`text_${30 + item.id - 1}`">{{ item.name }}</text> <text class="font_11" :class="`text_${30 + item.id - 1}`">{{ item.name }}</text>
<view :class="`group_${15 + item.id}`"> <view class="group_25">
<text class="font_12" :class="`text_${35 + item.id - 1}`">{{ item.value }}</text> <text class="font_12" :class="`text_${35 + item.id - 1}`">{{ item.num }}</text>
<text class="font_10" :class="`text_${35 + item.id + 3}`">{{ item.unit }}</text> <text class="font_10" :class="`text_${35 + item.id + 3}`">{{ item.unit }}</text>
</view> </view>
</view> </view>
...@@ -561,6 +634,54 @@ ...@@ -561,6 +634,54 @@
<text class="font_6 text_43 text_67" @click="onViewMoreClass">查看更多</text> <text class="font_6 text_43 text_67" @click="onViewMoreClass">查看更多</text>
</view> </view>
<view class="codefun-flex-col section_20"> <view class="codefun-flex-col section_20">
<fui-swiper-dot
:items="pageData.agricultureClass.videoList"
:current="pageData.current"
:styles="{
height: 10,
activeWidth: 40,
background: '#dff0e2',
activeBackground: '#5db66f',
bottom: 10,
}"
>
<swiper
class="fui-banner__wrap"
circular
:indicator-dots="false"
autoplay
:interval="4000"
:duration="150"
@change="handleChangeVideo"
>
<swiper-item v-for="(video, index) in pageData.agricultureClass.videoList" :key="index">
<video
:src="video.media_video"
:poster="video.cover_image"
:controls="false"
style="width: 654rpx; height: 358rpx"
@loadedmetadata="handleMetadataLoaded"
></video>
</swiper-item>
</swiper>
</fui-swiper-dot>
<view class="describe">
<text class="codefun-self-start font text_34">{{ pageData.agricultureClass.title }}</text>
<view
class="codefun-flex-row codefun-justify-between codefun-items-center codefun-self-stretch mt-13"
>
<!-- <view class="codefun-flex-row codefun-items-center">
<image
class="codefun-shrink-0 image_15"
src="/static/images/codefun/893f216142f5ca20cf9f2496d9b793c8.png"
/>
<text class="font_14 text_35 ml-5">{{ pageData.agricultureClass.expert }}</text>
</view> -->
<text class="font_14 text_36">{{ pageData.agricultureClass.time }}</text>
</view>
</view>
</view>
<!-- <view class="codefun-flex-col section_20">
<text class="codefun-self-start font_2 text_68">{{ pageData.agricultureClass.title }}</text> <text class="codefun-self-start font_2 text_68">{{ pageData.agricultureClass.title }}</text>
<view <view
class="codefun-flex-row codefun-justify-between codefun-items-center codefun-self-stretch group_31" class="codefun-flex-row codefun-justify-between codefun-items-center codefun-self-stretch group_31"
...@@ -594,7 +715,7 @@ ...@@ -594,7 +715,7 @@
/> />
</view> </view>
</view> </view>
</view> </view> -->
</view> </view>
</view> </view>
</view> </view>
...@@ -749,7 +870,10 @@ ...@@ -749,7 +870,10 @@
} }
} }
.section_3 { .section_3 {
padding: 16rpx 12rpx 16rpx; display: flex;
justify-content: space-between;
align-items: center;
padding: 16rpx 24rpx 16rpx;
background-color: #ffffff; background-color: #ffffff;
border-radius: 16rpx; border-radius: 16rpx;
mix-blend-mode: NOTTHROUGH; mix-blend-mode: NOTTHROUGH;
...@@ -885,6 +1009,7 @@ ...@@ -885,6 +1009,7 @@
margin-top: 16rpx; margin-top: 16rpx;
text-align: center; text-align: center;
width: 160rpx; width: 160rpx;
height: 60rpx;
} }
.text-wrapper_3 { .text-wrapper_3 {
margin-top: 36rpx; margin-top: 36rpx;
...@@ -1399,16 +1524,47 @@ ...@@ -1399,16 +1524,47 @@
.group_30 { .group_30 {
margin-top: 48rpx; margin-top: 48rpx;
.section_20 { .section_20 {
position: relative;
margin-right: 28rpx; margin-right: 28rpx;
padding: 272rpx 36rpx 22rpx 48rpx; margin-top: 32.86rpx;
height: 418rpx;
// padding: 271.06rpx 36.64rpx 22rpx 48rpx;
padding: 20rpx;
padding-bottom: 0;
background-color: #ffffff; background-color: #ffffff;
border-radius: 16rpx; border-radius: 16rpx;
mix-blend-mode: NOTTHROUGH; mix-blend-mode: NOTTHROUGH;
background-image: url('/static/images/codefun/de7f2f0177d74c2b9c784b3825ea9832.png'); // background-image: url('/static/images/codefun/de7f2f0177d74c2b9c784b3825ea9832.png');
background-size: 94%; // background-size: 94%;
background-repeat: no-repeat; // background-repeat: no-repeat;
background-position-x: 20rpx; // background-position-x: 20rpx;
background-position-y: 20rpx; // background-position-y: 20rpx;
.fui-banner__item {
height: 358rpx;
border-radius: 20rpx;
}
.fui-banner__wrap {
height: 358rpx;
:deep(.uni-video-cover) {
.uni-video-cover-play-button {
width: 70rpx;
height: 70rpx;
line-height: 40rpx;
font-size: 56rpx;
}
}
}
.describe {
width: 88%;
position: absolute;
bottom: 52rpx;
left: 40rpx;
.text_34 {
color: #ffffff;
}
}
.text_68 { .text_68 {
line-height: 26.58rpx; line-height: 26.58rpx;
} }
...@@ -1480,7 +1636,6 @@ ...@@ -1480,7 +1636,6 @@
} }
.font { .font {
font-size: 32rpx; font-size: 32rpx;
line-height: 29.32rpx; line-height: 29.32rpx;
color: #333333; color: #333333;
} }
......
<script> <script setup lang="ts">
export default { import { reactive } from 'vue'
components: {},
props: {},
data() {
return {}
},
methods: {}, const pageData = reactive({
// 分类标签
categoryTabs: [
{ id: 1, name: '找农机' },
{ id: 2, name: '干农活' },
],
currentCategoryId: 1,
})
// 分类标签点击事件
function onCategoryTabClick(tab: any) {
console.log('点击分类标签:', tab)
pageData.currentCategoryId = tab.id
// 在这里添加具体的分类标签点击逻辑
} }
</script> </script>
...@@ -24,10 +32,17 @@ ...@@ -24,10 +32,17 @@
</view> </view>
</view> </view>
<view class="codefun-flex-row section_3"> <view class="codefun-flex-row section_3">
<view class="codefun-flex-col codefun-justify-start codefun-items-center text-wrapper"> <view
<text class="font_2 text_4">找农机</text> v-for="item in pageData.categoryTabs"
:key="item.id"
class="codefun-flex-col codefun-justify-start codefun-items-center text-50p"
:class="item.id === pageData.currentCategoryId ? 'text-wrapper' : ''"
@click="onCategoryTabClick(item)"
>
<text class="font_2" :class="item.id === pageData.currentCategoryId ? 'text_4' : 'text_5'">{{
item.name
}}</text>
</view> </view>
<text class="codefun-self-start font_2 text_5 codefun-ml-56">干农活</text>
</view> </view>
<view class="codefun-flex-col codefun-relative section_4"> <view class="codefun-flex-col codefun-relative section_4">
<view class="codefun-flex-row group_6"> <view class="codefun-flex-row group_6">
...@@ -272,18 +287,20 @@ ...@@ -272,18 +287,20 @@
background-color: #ffffff66; background-color: #ffffff66;
border-radius: 32rpx; border-radius: 32rpx;
border: solid 2rpx #ffffffcc; border: solid 2rpx #ffffffcc;
.text-50p {
width: 50%;
height: 102rpx;
padding: 0.75rem 0 1.625rem;
}
.text-wrapper { .text-wrapper {
padding: 24rpx 0 56rpx; padding: 24rpx 0 56rpx;
background-color: #ffffff; background-color: #ffffff;
border-radius: 32rpx; border-radius: 32rpx;
width: 348rpx;
height: 102rpx;
.text_4 { .text_4 {
line-height: 26.02rpx; line-height: 26.02rpx;
} }
} }
.text_5 { .text_5 {
margin-top: 24rpx;
color: #5db66f; color: #5db66f;
line-height: 25.82rpx; line-height: 25.82rpx;
} }
......
<script> <script setup lang="ts"></script>
export default {
components: {},
props: {},
data() {
return {}
},
methods: {},
}
</script>
<template> <template>
<view class="codefun-flex-col page"> <view class="codefun-flex-col page">
......
...@@ -37,9 +37,14 @@ ...@@ -37,9 +37,14 @@
}) })
// 查询金刚区数据 // 查询金刚区数据
HomeAPI.zoneList().then((res) => { getServiceItems()
console.log('HomeAPI.zoneList', res) getMenuItems()
}) // 查询热门产地行情
getProductMarketList()
// 服务展示窗
getServiceStatsList()
// 农技课堂
getAgricultureClassList()
}) })
// 下拉刷新 // 下拉刷新
...@@ -112,20 +117,10 @@ ...@@ -112,20 +117,10 @@
}, },
// 功能菜单 // 功能菜单
menuItems: [ menuItems: [],
{ id: 1, name: '农业政策', icon: '/static/images/codefun/4d9a15cf0dce9c5b1f274f99eb3e4718.png' },
{ id: 2, name: '灵活用工', icon: '/static/images/codefun/24864cd4c6f680714e327688c6ee9977.png' },
{ id: 3, name: '可信农资', icon: '/static/images/codefun/0c9b2418502708fc8414e7b2c04dc8e2.png' },
{ id: 4, name: '农机租购', icon: '/static/images/codefun/15059d8b705006d875ca9460b696a316.png' },
],
// 其他服务 // 其他服务
serviceItems: [ serviceItems: [],
{ id: 1, name: '惠农金融', icon: '/static/images/codefun/9f300d453071240f6f56ff6f83e223db.png' },
{ id: 2, name: '助农保险', icon: '/static/images/codefun/f422ac97718981ce225a7f595779f2be.png' },
{ id: 3, name: '品牌策划', icon: '/static/images/codefun/c0669727e6384083a7493979154183a9.png' },
{ id: 4, name: '农知农技', icon: '/static/images/codefun/182a345a5e2d417c944035b240ba2e64.png' },
],
// 新闻资讯 // 新闻资讯
newsItems: [ newsItems: [
...@@ -136,68 +131,131 @@ ...@@ -136,68 +131,131 @@
// 农产品行情 // 农产品行情
productMarket: { productMarket: {
title: '热门产地行情', title: '热门产地行情',
updateTime: '08-30日更新', // updateTime: '08-30日更新',
products: [ products: [
{ id: 1, name: '晚稻13号', price: '¥4120', change: '+1.2%', isUp: true }, // { id: 1, name: '晚稻13号', price: '¥4120', change: '+1.2%', isUp: true },
{ id: 2, name: '晚稻9号', price: '¥3211', change: '+1.2%', isUp: true }, // { id: 2, name: '晚稻9号', price: '¥3211', change: '+1.2%', isUp: true },
{ id: 3, name: '晚稻11号', price: '¥2120', change: '-1.2%', isUp: false }, // { id: 3, name: '晚稻11号', price: '¥2120', change: '-1.2%', isUp: false },
], ],
}, },
// 服务展示窗 // 服务展示窗
serviceStats: [ serviceStats: [
{ // {
id: 1, // id: 1,
name: '农场入驻', // name: '农场入驻',
value: '2,360', // value: '2,360',
unit: '个', // unit: '个',
icon: '/static/images/codefun/15911306636a361a8dc16ce0283f3830.png', // icon: '/static/images/codefun/15911306636a361a8dc16ce0283f3830.png',
}, // },
{ // {
id: 2, // id: 2,
name: '空闲农机', // name: '空闲农机',
value: '126', // value: '126',
unit: '台', // unit: '台',
icon: '/static/images/codefun/1d0cd168eeffbaf37a90aa949c6ad806.png', // icon: '/static/images/codefun/1d0cd168eeffbaf37a90aa949c6ad806.png',
}, // },
{ // {
id: 3, // id: 3,
name: '产销对接', // name: '产销对接',
value: '156', // value: '156',
unit: '笔', // unit: '笔',
icon: '/static/images/codefun/24dd00386672f240ef00394b746c2ff0.png', // icon: '/static/images/codefun/24dd00386672f240ef00394b746c2ff0.png',
}, // },
{ // {
id: 4, // id: 4,
name: '服务农户', // name: '服务农户',
value: '12,580', // value: '12,580',
unit: '人', // unit: '人',
icon: '/static/images/codefun/3fd6a50eaf22431687a6151df0581156.png', // icon: '/static/images/codefun/3fd6a50eaf22431687a6151df0581156.png',
}, // },
{ // {
id: 5, // id: 5,
name: '覆盖面积', // name: '覆盖面积',
value: '268', // value: '268',
unit: 'km', // unit: 'km',
icon: '/static/images/codefun/87773a17a1b64dc686bf935708262002.png', // icon: '/static/images/codefun/87773a17a1b64dc686bf935708262002.png',
}, // },
{ // {
id: 6, // id: 6,
name: '覆盖区县', // name: '覆盖区县',
value: '21', // value: '21',
unit: '个', // unit: '个',
icon: '/static/images/codefun/329a4404092545f2924ad095c531cc66.png', // icon: '/static/images/codefun/329a4404092545f2924ad095c531cc66.png',
}, // },
], ],
// 农技课堂 // 农技课堂
agricultureClass: { agricultureClass: {
title: '专家实录—鸡饲养技术', title: '专家实录—鸡饲养技术',
expert: '张教授', // expert: '张教授',
info: '23:15|2.3万次播放', time: '',
videoList: [],
}, },
current: 0,
}) })
function getServiceItems() {
HomeAPI.zoneList({
pageNo: 1,
pageSize: 4,
status: 1,
type: 1,
}).then((res) => {
const { records } = res
pageData.serviceItems = []
pageData.serviceItems = records
})
}
function getMenuItems() {
HomeAPI.zoneList({
pageNo: 1,
pageSize: 4,
status: 1,
type: 2,
}).then((res) => {
const { records } = res
pageData.menuItems = []
pageData.menuItems = records
})
}
function getProductMarketList() {
HomeAPI.productMarketList({
status: 1,
}).then((res) => {
const { records } = res
console.log(res)
pageData.productMarket.products = records
pageData.productMarket.products.forEach((item: any) => {
switch (item.tendency) {
case 1:
item.isUp = true
break
case 2:
item.isUp = false
break
}
})
})
}
function getServiceStatsList() {
HomeAPI.serviceStatsList({
status: 1,
}).then((res) => {
const { records } = res
pageData.serviceStats = records
})
}
function getAgricultureClassList() {
HomeAPI.agricultureClassList({
status: 1,
}).then((res) => {
const { records } = res
pageData.agricultureClass.videoList = records
pageData.agricultureClass.title = records[0]?.title
})
}
// 菜单点击事件 // 菜单点击事件
function onMenuItemClick(item: any) { function onMenuItemClick(item: any) {
console.log('点击菜单项:', item) console.log('点击菜单项:', item)
...@@ -215,6 +273,18 @@ ...@@ -215,6 +273,18 @@
console.log('查看全部农技课堂') console.log('查看全部农技课堂')
// 在这里添加具体的查看逻辑 // 在这里添加具体的查看逻辑
} }
// 轮播视频切换的时候触发
function handleChangeVideo(e: any) {
// console.log('切换视频', e.detail.current)
pageData.current = e.detail.current
pageData.agricultureClass.title = pageData.agricultureClass.videoList[pageData.current]?.title
}
// 获取视频时长
function handleMetadataLoaded(e: any) {
pageData.agricultureClass.time = e.target.duration
}
</script> </script>
<template> <template>
...@@ -326,29 +396,32 @@ ...@@ -326,29 +396,32 @@
<view class="codefun-flex-col codefun-relative section_5"> <view class="codefun-flex-col codefun-relative section_5">
<view class="codefun-flex-row"> <view class="codefun-flex-row">
<view <view
v-show="item.status"
v-for="item in pageData.menuItems" v-for="item in pageData.menuItems"
:key="item.id" :key="item.id"
class="codefun-flex-col codefun-items-center group_10" class="codefun-flex-col codefun-items-center group_10"
@click="onMenuItemClick(item)" @click="onMenuItemClick(item)"
> >
<image class="image_11" :src="item.icon" /> <image class="image_11" :src="item.icon_url" />
<text class="font_2 mt-11">{{ item.name }}</text> <text class="font_2 mt-11">{{ item.name }}</text>
</view> </view>
</view> </view>
<view class="codefun-flex-col group_11 codefun-mt-20"> <view class="codefun-flex-col group_11 codefun-mt-20">
<view class="codefun-flex-row group_38"> <view class="codefun-flex-row group_38">
<image <image
v-show="service.status"
v-for="service in pageData.serviceItems" v-for="service in pageData.serviceItems"
:key="service.id" :key="service.id"
class="image_12" class="image_12"
:class="{ :class="{
'ml-43': service.id > 1, 'ml-43': service.id > 1,
}" }"
:src="service.icon" :src="service.icon_url"
/> />
</view> </view>
<view class="codefun-flex-row codefun-justify-between mt-13"> <view class="codefun-flex-row codefun-justify-between mt-13">
<text <text
v-show="service.status"
v-for="service in pageData.serviceItems" v-for="service in pageData.serviceItems"
:key="service.id" :key="service.id"
class="font_2" class="font_2"
...@@ -381,7 +454,7 @@ ...@@ -381,7 +454,7 @@
</view> </view>
<view class="codefun-flex-row codefun-justify-between codefun-items-baseline group_12"> <view class="codefun-flex-row codefun-justify-between codefun-items-baseline group_12">
<text class="font_6">{{ pageData.productMarket.title }}</text> <text class="font_6">{{ pageData.productMarket.title }}</text>
<text class="font_7 text_22">{{ pageData.productMarket.updateTime }}</text> <!-- <text class="font_7 text_22">{{ pageData.productMarket.updateTime }}</text> -->
</view> </view>
<view class="codefun-flex-row equal-division section_8"> <view class="codefun-flex-row equal-division section_8">
<view <view
...@@ -395,16 +468,11 @@ ...@@ -395,16 +468,11 @@
}" }"
> >
<view <view
class="codefun-flex-col codefun-justify-start codefun-items-start codefun-self-center codefun-relative" class="codefun-flex-col codefun-justify-start codefun-items-start codefun-self-center codefun-relative group_1"
:class="{
group_41: index === 0,
group_20: index === 1,
group_1: index === 2,
}"
> >
<text class="font_8 text_23">{{ product.name }}</text> <text class="font_8 text_23">{{ product.name }}</text>
<text class="font_9" :class="`pos${index > 0 ? `_${index + 1}` : ''}`">{{ <text class="font_9 text_23" :class="`pos${index > 0 ? `_${index + 1}` : ''}`">{{
product.price product.current_price
}}</text> }}</text>
</view> </view>
<view <view
...@@ -430,7 +498,7 @@ ...@@ -430,7 +498,7 @@
text_26: !product.isUp, text_26: !product.isUp,
}" }"
> >
{{ product.change }} {{ `${product.percent}%` }}
</text> </text>
</view> </view>
<view <view
...@@ -449,20 +517,10 @@ ...@@ -449,20 +517,10 @@
<view <view
v-for="stat in pageData.serviceStats" v-for="stat in pageData.serviceStats"
:key="stat.id" :key="stat.id"
class="codefun-flex-col section_12" class="codefun-flex-col section_12 section_19"
:class="{
section_18: stat.id === 1,
section_1: stat.id === 2,
section_19: stat.id > 2,
}"
> >
<view <view
class="codefun-flex-row codefun-justify-center codefun-items-center codefun-self-stretch codefun-relative" class="codefun-flex-row codefun-justify-center codefun-items-center codefun-self-stretch codefun-relative group_27"
:class="{
group_25: stat.id === 1,
group_26: stat.id === 2,
group_27: stat.id > 2,
}"
> >
<image class="image_5 mr-1" :class="`pos_${stat.id}`" :src="stat.icon" /> <image class="image_5 mr-1" :class="`pos_${stat.id}`" :src="stat.icon" />
<text <text
...@@ -471,22 +529,9 @@ ...@@ -471,22 +529,9 @@
>{{ stat.name }}</text >{{ stat.name }}</text
> >
</view> </view>
<view <view class="codefun-flex-row codefun-justify-center codefun-items-baseline mt-11 group_30">
class="codefun-flex-row codefun-justify-center codefun-items-baseline mt-11" <text class="font_12 text_37">{{ stat.num }}</text>
:class="{ <text class="font_7 text_31">{{ stat.unit }}</text>
group_28: stat.id === 1,
group_18: stat.id === 2,
group_30: stat.id > 2,
}"
>
<text class="font_12" :class="`text_${stat.id === 1 ? 47 : stat.id === 2 ? 48 : 37}`">{{
stat.value
}}</text>
<text
class="font_7"
:class="`text_${stat.id === 1 ? 49 : stat.id === 2 ? '' : stat.id > 4 ? 31 : 31}`"
>{{ stat.unit }}</text
>
</view> </view>
</view> </view>
</view> </view>
...@@ -495,31 +540,50 @@ ...@@ -495,31 +540,50 @@
<text class="font_7 text_33" @click="onViewMoreClass">查看全部</text> <text class="font_7 text_33" @click="onViewMoreClass">查看全部</text>
</view> </view>
<view class="codefun-flex-col section_13"> <view class="codefun-flex-col section_13">
<text class="codefun-self-start font text_34">{{ pageData.agricultureClass.title }}</text> <fui-swiper-dot
<view :items="pageData.agricultureClass.videoList"
class="codefun-flex-row codefun-justify-between codefun-items-center codefun-self-stretch mt-13" :current="pageData.current"
:styles="{
height: 10,
activeWidth: 40,
background: '#dff0e2',
activeBackground: '#5db66f',
bottom: 10,
}"
> >
<view class="codefun-flex-row codefun-items-center"> <swiper
<image class="fui-banner__wrap"
class="codefun-shrink-0 image_15" circular
src="/static/images/codefun/893f216142f5ca20cf9f2496d9b793c8.png" :indicator-dots="false"
/> autoplay
<text class="font_14 text_35 ml-5">{{ pageData.agricultureClass.expert }}</text> :interval="4000"
</view> :duration="150"
<text class="font_14 text_36">{{ pageData.agricultureClass.info }}</text> @change="handleChangeVideo"
</view>
<view class="codefun-flex-row codefun-justify-center codefun-self-stretch mt-13">
<view class="section_14" />
<view
class="codefun-flex-col codefun-justify-start codefun-items-center image-wrapper codefun-ml-8"
> >
<image class="image_16" src="/static/images/codefun/d2f4116cc0ab402e57bdbd7aa4dead94.png" /> <swiper-item v-for="(video, index) in pageData.agricultureClass.videoList" :key="index">
</view> <video
<view class="section_15 codefun-ml-8" /> :src="video.media_video"
:poster="video.cover_image"
:controls="false"
style="width: 654rpx; height: 358rpx"
@loadedmetadata="handleMetadataLoaded"
></video>
</swiper-item>
</swiper>
</fui-swiper-dot>
<view class="describe">
<text class="codefun-self-start font text_34">{{ pageData.agricultureClass.title }}</text>
<view <view
class="codefun-flex-col codefun-justify-start codefun-items-center image-wrapper codefun-ml-8" class="codefun-flex-row codefun-justify-between codefun-items-center codefun-self-stretch mt-13"
> >
<image class="image_16" src="/static/images/codefun/d2f4116cc0ab402e57bdbd7aa4dead94.png" /> <!-- <view class="codefun-flex-row codefun-items-center">
<image
class="codefun-shrink-0 image_15"
src="/static/images/codefun/893f216142f5ca20cf9f2496d9b793c8.png"
/>
<text class="font_14 text_35 ml-5">{{ pageData.agricultureClass.expert }}</text>
</view> -->
<text class="font_14 text_36">{{ pageData.agricultureClass.time }}</text>
</view> </view>
</view> </view>
</view> </view>
...@@ -885,7 +949,8 @@ ...@@ -885,7 +949,8 @@
margin-right: 28rpx; margin-right: 28rpx;
margin-top: 32.72rpx; margin-top: 32.72rpx;
.group_13 { .group_13 {
flex: 1 1 231.34rpx; flex: 0 0 33.33%;
text-align: center;
.group_41 { .group_41 {
padding: 10rpx 0 4.92rpx; padding: 10rpx 0 4.92rpx;
width: 106rpx; width: 106rpx;
...@@ -919,7 +984,7 @@ ...@@ -919,7 +984,7 @@
color: #333333; color: #333333;
} }
.text_23 { .text_23 {
width: 124rpx; width: 100%;
} }
.font_9 { .font_9 {
font-size: 36rpx; font-size: 36rpx;
...@@ -928,7 +993,7 @@ ...@@ -928,7 +993,7 @@
} }
.group_1 { .group_1 {
padding: 10rpx 0 4.92rpx; padding: 10rpx 0 4.92rpx;
width: 106rpx; // width: 106rpx;
.text_24 { .text_24 {
color: #5db66f; color: #5db66f;
} }
...@@ -1002,7 +1067,7 @@ ...@@ -1002,7 +1067,7 @@
.equal-division_2 { .equal-division_2 {
margin-top: 32.9rpx; margin-top: 32.9rpx;
.section_12 { .section_12 {
flex: 1 1 216rpx; flex: 0 0 calc(33.33% - 14rpx);
.group_25 { .group_25 {
padding: 5.24rpx 0 4.8rpx; padding: 5.24rpx 0 4.8rpx;
.pos_4 { .pos_4 {
...@@ -1090,7 +1155,7 @@ ...@@ -1090,7 +1155,7 @@
} }
.group_16 { .group_16 {
flex-wrap: wrap; flex-wrap: wrap;
gap: 10px; gap: 20rpx;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin-right: 10px; margin-right: 10px;
...@@ -1117,17 +1182,44 @@ ...@@ -1117,17 +1182,44 @@
color: #333333; color: #333333;
} }
.section_13 { .section_13 {
position: relative;
margin-right: 28rpx; margin-right: 28rpx;
margin-top: 32.86rpx; margin-top: 32.86rpx;
padding: 271.06rpx 36.64rpx 22rpx 48rpx; height: 418rpx;
// padding: 271.06rpx 36.64rpx 22rpx 48rpx;
padding: 20rpx;
padding-bottom: 0;
background-color: #ffffff; background-color: #ffffff;
border-radius: 16rpx; border-radius: 16rpx;
mix-blend-mode: NOTTHROUGH; mix-blend-mode: NOTTHROUGH;
background-image: url('/static/images/codefun/de7f2f0177d74c2b9c784b3825ea9832.png'); // background-image: url('/static/images/codefun/de7f2f0177d74c2b9c784b3825ea9832.png');
background-size: 94%; // background-size: 94%;
background-repeat: no-repeat; // background-repeat: no-repeat;
background-position-x: 20rpx; // background-position-x: 20rpx;
background-position-y: 20rpx; // background-position-y: 20rpx;
.fui-banner__item {
height: 358rpx;
border-radius: 20rpx;
}
.fui-banner__wrap {
height: 358rpx;
:deep(.uni-video-cover) {
.uni-video-cover-play-button {
width: 70rpx;
height: 70rpx;
line-height: 40rpx;
font-size: 56rpx;
}
}
}
.describe {
width: 88%;
position: absolute;
bottom: 52rpx;
left: 40rpx;
}
.text_34 { .text_34 {
line-height: 26.58rpx; line-height: 26.58rpx;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论