周末修改
This commit is contained in:
parent
6cebfdf962
commit
a4ea766895
@ -27,9 +27,9 @@ export function getGoodDetail(id, params) {
|
||||
}
|
||||
|
||||
// 获取用户评价列表
|
||||
export function agriculturalContent(params) {
|
||||
export function agriculturalContent(data = {}) {
|
||||
return request('goods/goodInfoManage/contentPage', {
|
||||
method: 'POST',
|
||||
params,
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
BIN
sub-operation-service/src/assets/images/avatar.jfif
Normal file
BIN
sub-operation-service/src/assets/images/avatar.jfif
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.9 KiB |
BIN
sub-operation-service/src/assets/images/avatar.webp
Normal file
BIN
sub-operation-service/src/assets/images/avatar.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.4 KiB |
BIN
sub-operation-service/src/assets/images/smartFarm/deep.png
Normal file
BIN
sub-operation-service/src/assets/images/smartFarm/deep.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.8 KiB |
BIN
sub-operation-service/src/assets/images/smartFarm/testPic2.png
Normal file
BIN
sub-operation-service/src/assets/images/smartFarm/testPic2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 109 KiB |
BIN
sub-operation-service/src/assets/images/smartFarm/testPic3.png
Normal file
BIN
sub-operation-service/src/assets/images/smartFarm/testPic3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 65 KiB |
@ -137,7 +137,7 @@ const chartsData = reactive({
|
||||
trigger: 'item',
|
||||
formatter: function (params) {
|
||||
if (params.seriesType === 'effectScatter') {
|
||||
return `${params.name}: (${params.value[0]}, ${params.value[1]})`;
|
||||
return `${params.name}`;
|
||||
}
|
||||
return params.name;
|
||||
},
|
||||
|
@ -111,7 +111,7 @@ function Search() {
|
||||
|
||||
const toHome = () => {
|
||||
console.info('toHome', router);
|
||||
router.push('/sub-operation-service/home');
|
||||
router.push('/sub-operation-service');
|
||||
};
|
||||
|
||||
const toUserCenter = () => {
|
||||
@ -239,9 +239,9 @@ const toCart = () => {
|
||||
.search-warp {
|
||||
position: relative;
|
||||
padding-left: 36px;
|
||||
width: 100%;
|
||||
width: 80%;
|
||||
.el-input {
|
||||
width: 100%;
|
||||
width: 50%;
|
||||
height: 50px;
|
||||
font-size: 18px;
|
||||
flex-grow: 1;
|
||||
@ -252,7 +252,7 @@ const toCart = () => {
|
||||
.el-button {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 8px;
|
||||
right: 25%;
|
||||
padding: 0 24px;
|
||||
height: 42px;
|
||||
font-size: 18px;
|
||||
|
@ -232,10 +232,16 @@ export const constantRoutes = [
|
||||
children: [
|
||||
{
|
||||
path: '/sub-operation-service/ruralFinance/index',
|
||||
component: () => import('@/views/ruralFinance/index.vue'),
|
||||
component: () => import('@/views/error/blank.vue'),
|
||||
name: 'ruralFinanceMain',
|
||||
meta: { title: '涉农金融首页' },
|
||||
},
|
||||
// {
|
||||
// path: '/sub-operation-service/ruralFinance/index',
|
||||
// component: () => import('@/views/ruralFinance/index.vue'),
|
||||
// name: 'ruralFinanceMain',
|
||||
// meta: { title: '涉农金融首页' },
|
||||
// },
|
||||
],
|
||||
},
|
||||
{
|
||||
@ -247,16 +253,28 @@ export const constantRoutes = [
|
||||
children: [
|
||||
{
|
||||
path: '/sub-operation-service/packaging/sorting',
|
||||
component: () => import('@/views/packaging/sorting.vue'),
|
||||
component: () => import('@/views/error/blank.vue'),
|
||||
name: 'sortingMain',
|
||||
meta: { title: '分拣首页' },
|
||||
},
|
||||
// {
|
||||
// path: '/sub-operation-service/packaging/sorting',
|
||||
// component: () => import('@/views/packaging/sorting.vue'),
|
||||
// name: 'sortingMain',
|
||||
// meta: { title: '分拣首页' },
|
||||
// },
|
||||
{
|
||||
path: '/sub-operation-service/packaging/index',
|
||||
component: () => import('@/views/packaging/index.vue'),
|
||||
component: () => import('@/views/error/blank.vue'),
|
||||
name: 'packagingMain',
|
||||
meta: { title: '包装首页' },
|
||||
},
|
||||
// {
|
||||
// path: '/sub-operation-service/packaging/index',
|
||||
// component: () => import('@/views/packaging/index.vue'),
|
||||
// name: 'packagingMain',
|
||||
// meta: { title: '包装首页' },
|
||||
// },
|
||||
{
|
||||
path: '/sub-operation-service/packaging/details',
|
||||
component: () => import('@/views/packaging/details.vue'),
|
||||
@ -274,10 +292,16 @@ export const constantRoutes = [
|
||||
children: [
|
||||
{
|
||||
path: '/sub-operation-service/warehouse',
|
||||
component: () => import('@/views/warehouseLogistics/warehouse/index.vue'),
|
||||
component: () => import('@/views/error/blank.vue'),
|
||||
name: 'warehouseMain',
|
||||
meta: { title: '仓储首页' },
|
||||
},
|
||||
// {
|
||||
// path: '/sub-operation-service/warehouse',
|
||||
// component: () => import('@/views/warehouseLogistics/warehouse/index.vue'),
|
||||
// name: 'warehouseMain',
|
||||
// meta: { title: '仓储首页' },
|
||||
// },
|
||||
{
|
||||
path: '/sub-operation-service/warehouse-detail',
|
||||
component: () => import('@/views/warehouseLogistics/warehouse/detail.vue'),
|
||||
@ -286,10 +310,16 @@ export const constantRoutes = [
|
||||
},
|
||||
{
|
||||
path: '/sub-operation-service/logistics',
|
||||
component: () => import('@/views/warehouseLogistics/logistics/index.vue'),
|
||||
component: () => import('@/views/error/blank.vue'),
|
||||
name: 'logistics-list',
|
||||
meta: { title: '物流首页' },
|
||||
},
|
||||
// {
|
||||
// path: '/sub-operation-service/logistics',
|
||||
// component: () => import('@/views/warehouseLogistics/logistics/index.vue'),
|
||||
// name: 'logistics-list',
|
||||
// meta: { title: '物流首页' },
|
||||
// },
|
||||
{
|
||||
path: '/sub-operation-service/logistics-detail',
|
||||
component: () => import('@/views/warehouseLogistics/logistics/detail.vue'),
|
||||
|
@ -31,9 +31,9 @@ const products = ref([]);
|
||||
|
||||
const applyData = [
|
||||
{ id: 1, title: '耿马绿色蔬菜', imgPath: 'images/brand/11.png' },
|
||||
{ id: 2, title: '耿马云斛石斛', imgPath: 'images/brand/12.png' },
|
||||
// { id: 2, title: '耿马云斛石斛', imgPath: 'images/brand/12.png' },
|
||||
{ id: 3, title: '耿马蒸酶茶', imgPath: 'images/brand/15.png' },
|
||||
{ id: 4, title: '孟定蔬菜', imgPath: 'images/brand/14.png' },
|
||||
// { id: 4, title: '孟定蔬菜', imgPath: 'images/brand/14.png' },
|
||||
{ id: 5, title: '耿马芒抗金丝凤梨', imgPath: 'images/brand/16.png' },
|
||||
// { id: 6, name: '四川泡菜', imgPath: 'images/brand/16.png' },
|
||||
];
|
||||
|
@ -7,13 +7,13 @@
|
||||
<div class="card-left">
|
||||
<img :src="getAssetsFile('images/brand/1532.png')" alt="" />
|
||||
<div class="card-content flex-1 flex-column">
|
||||
<div class="stat-number">999 <span>件</span></div>
|
||||
<div class="stat-number">817 <span>件</span></div>
|
||||
<div class="stat-label">授权产品</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-right">
|
||||
<img :src="getAssetsFile('images/brand/cardLeft.png')" alt="" />
|
||||
<p>较上月上涨 <span>7</span> 件</p>
|
||||
<p>较上月上涨 <span>13</span> 件</p>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
@ -22,13 +22,13 @@
|
||||
<div class="card-left">
|
||||
<img :src="getAssetsFile('images/brand/1533.png')" alt="" />
|
||||
<div class="card-content flex-1 flex-column">
|
||||
<div class="stat-number">999 <span>件</span></div>
|
||||
<div class="stat-label">授权产品</div>
|
||||
<div class="stat-number">125 <span>件</span></div>
|
||||
<div class="stat-label">临期产品</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-right">
|
||||
<img :src="getAssetsFile('images/brand/cardRight.png')" alt="" />
|
||||
<p>较上月上涨 <span>7</span> 件</p>
|
||||
<p>较上月下降 <span>5</span> 件</p>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
@ -166,46 +166,133 @@ const filteredProducts = computed(() => products.value.filter((p) => p.status ==
|
||||
function onInspect(id) {
|
||||
console.log('查看产品:', id);
|
||||
// 这里用硬编码模拟请求,实际中可换成接口调用:getTraceById(id).then(res=> traceData.value = res)
|
||||
const mock = {
|
||||
productName: '无土栽培土豆',
|
||||
quantity: '200KG',
|
||||
producer: '北大荒技术有限公司',
|
||||
origin: '耿马县孟定镇下坝村',
|
||||
productionDate: '2025-1-2',
|
||||
traceCode: '10.5487542154785XSE254.1040201',
|
||||
traceCount: 30,
|
||||
base: {
|
||||
address: '耿马县孟定镇下坝村',
|
||||
location: '东经102° · 北纬24°',
|
||||
area: 12000,
|
||||
climate: '亚热带高原季风型,温和多雨',
|
||||
soil: '红壤',
|
||||
const mocks = [
|
||||
{
|
||||
productName: '耿马镇沙疆西红柿',
|
||||
quantity: '300KG',
|
||||
producer: '北大荒技术有限公司',
|
||||
origin: '耿马县孟定镇下坝村',
|
||||
productionDate: '2025-6-3',
|
||||
traceCode: '10.5487542154785XSE254.1040201',
|
||||
traceCount: 30,
|
||||
base: {
|
||||
address: '耿马县孟定镇下坝村',
|
||||
location: '东经102° · 北纬24°',
|
||||
area: 9000,
|
||||
climate: '亚热带高原季风型,温和多雨',
|
||||
soil: '红壤',
|
||||
},
|
||||
farmingRecords: [
|
||||
{ date: '2025/3/14', operation: '播种西红柿种', operator: '李强' },
|
||||
{ date: '2025/4/2', operation: '施肥 氮肥', operator: '李强' },
|
||||
{ date: '2025/5/17', operation: '浇水', operator: '李强' },
|
||||
{ date: '2025/6/14', operation: '采摘', operator: '李强' },
|
||||
],
|
||||
packaging: {
|
||||
company: '瑞禾农产品包装公司',
|
||||
type: '纸箱',
|
||||
person: '李明瑞',
|
||||
time: '2025-1-20 16:27:41',
|
||||
},
|
||||
logistics: {
|
||||
storageType: '冷藏',
|
||||
temperature: '2°C',
|
||||
shipFrom: '北京市朝阳区解放路24号',
|
||||
shipTo: '上海市黄浦区南京路36号',
|
||||
},
|
||||
trade: {
|
||||
time: '2025-4-2 08:13:52',
|
||||
buyer: '李楠',
|
||||
},
|
||||
img: 'images/brand/product4.png',
|
||||
},
|
||||
farmingRecords: [
|
||||
{ date: '2024/1/2', operation: '播种 20250102批土豆种', operator: '张小东' },
|
||||
{ date: '2024/2/2', operation: '施肥 氮肥', operator: '张小东' },
|
||||
{ date: '2024/3/2', operation: '浇水', operator: '张小东' },
|
||||
{ date: '2024/4/2', operation: '采摘', operator: '张小东' },
|
||||
],
|
||||
packaging: {
|
||||
company: '瑞禾农产品包装公司',
|
||||
type: '纸箱',
|
||||
person: '王大福',
|
||||
time: '2025-1-2 14:00:47',
|
||||
{
|
||||
productName: '无土栽培土豆',
|
||||
quantity: '200KG',
|
||||
producer: '北大荒技术有限公司',
|
||||
origin: '耿马县孟定镇下坝村',
|
||||
productionDate: '2025-1-2',
|
||||
traceCode: '10.5487542154785XSE254.1040201',
|
||||
traceCount: 30,
|
||||
base: {
|
||||
address: '耿马县孟定镇下坝村',
|
||||
location: '东经102° · 北纬24°',
|
||||
area: 12000,
|
||||
climate: '亚热带高原季风型,温和多雨',
|
||||
soil: '红壤',
|
||||
},
|
||||
farmingRecords: [
|
||||
{ date: '2025/1/22', operation: '播种 20250102批土豆种', operator: '王岚' },
|
||||
{ date: '2025/2/14', operation: '施肥 氮肥', operator: '王岚' },
|
||||
{ date: '2025/3/3', operation: '浇水', operator: '王岚' },
|
||||
{ date: '2025/4/21', operation: '采摘', operator: '王岚' },
|
||||
],
|
||||
packaging: {
|
||||
company: '瑞禾农产品包装公司',
|
||||
type: '纸箱',
|
||||
person: '李桑',
|
||||
time: '2025-5-2 07:54:14',
|
||||
},
|
||||
logistics: {
|
||||
storageType: '冷藏',
|
||||
temperature: '2°C',
|
||||
shipFrom: '北京市朝阳区解放路24号',
|
||||
shipTo: '上海市黄浦区南京路36号',
|
||||
},
|
||||
trade: {
|
||||
time: '2025-5-16 16:08:35',
|
||||
buyer: '刘思楠',
|
||||
},
|
||||
img: 'images/brand/product6.png',
|
||||
},
|
||||
logistics: {
|
||||
storageType: '冷藏',
|
||||
temperature: '2°C',
|
||||
shipFrom: '北京市朝阳区解放路24号',
|
||||
shipTo: '上海市黄浦区南京路36号',
|
||||
{
|
||||
productName: '彩椒南瓜混合',
|
||||
quantity: '200KG',
|
||||
producer: '北大荒技术有限公司',
|
||||
origin: '耿马县孟定镇下坝村',
|
||||
productionDate: '2025-5-15',
|
||||
traceCode: '10.5487542154785XSE254.1040201',
|
||||
traceCount: 30,
|
||||
base: {
|
||||
address: '耿马县孟定镇下坝村',
|
||||
location: '东经102° · 北纬24°',
|
||||
area: 12000,
|
||||
climate: '亚热带高原季风型,温和多雨',
|
||||
soil: '红壤',
|
||||
},
|
||||
farmingRecords: [
|
||||
{ date: '2025/2/8', operation: '播种瓜种', operator: '刘琦' },
|
||||
{ date: '2025/3/14', operation: '施肥 氮肥', operator: '刘琦' },
|
||||
{ date: '2025/3/20', operation: '浇水', operator: '刘琦' },
|
||||
{ date: '2025/4/11', operation: '浇水', operator: '刘琦' },
|
||||
{ date: '2025/5/15', operation: '采摘', operator: '刘琦' },
|
||||
],
|
||||
packaging: {
|
||||
company: '瑞禾农产品包装公司',
|
||||
type: '纸箱',
|
||||
person: '王大福',
|
||||
time: '2025-5-26 14:26:27',
|
||||
},
|
||||
logistics: {
|
||||
storageType: '冷藏',
|
||||
temperature: '2°C',
|
||||
shipFrom: '北京市朝阳区解放路24号',
|
||||
shipTo: '上海市黄浦区南京路36号',
|
||||
},
|
||||
trade: {
|
||||
time: '2025-6-2 11:00:51',
|
||||
buyer: '刘小花',
|
||||
},
|
||||
img: 'images/brand/product1.png',
|
||||
},
|
||||
trade: {
|
||||
time: '2025-1-2 14:00:47',
|
||||
buyer: '刘小花',
|
||||
},
|
||||
img: 'images/brand/product6.png',
|
||||
};
|
||||
traceData.value = mock;
|
||||
];
|
||||
if (id === 1) {
|
||||
traceData.value = mocks[0];
|
||||
} else if (id === 2) {
|
||||
traceData.value = mocks[1];
|
||||
} else if (id === 3) {
|
||||
traceData.value = mocks[2];
|
||||
}
|
||||
dialogVisible.value = true;
|
||||
}
|
||||
const onRevoke = (p) => {
|
||||
|
@ -93,7 +93,7 @@ const chartsData = reactive({
|
||||
backgroundColor: 'rgba(17,95,182,0.5)', //设置背景颜色
|
||||
formatter: function (item) {
|
||||
let params = [...item];
|
||||
var res = params[0].name + '<br/>';
|
||||
var res = params[0].name + '(万元)<br/>';
|
||||
for (var i = 0, l = params.length; i < l; i++) {
|
||||
res += params[i].value !== '-' ? params[i].marker + params[i].seriesName + ' : ' + params[i].value + ' <br/>' : '';
|
||||
}
|
||||
|
@ -19,6 +19,22 @@ const chartsData = reactive({
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
formatter: function (params) {
|
||||
let result = params[0].name + '(亿元)<br>'; // x轴值(如"1月")
|
||||
params.forEach((param) => {
|
||||
// 获取系列颜色(param.color)
|
||||
const colorDot = `<span style="
|
||||
display:inline-block;
|
||||
margin-right:5px;
|
||||
border-radius:50%;
|
||||
width:10px;
|
||||
height:10px;
|
||||
background-color:${param.color}">
|
||||
</span>`;
|
||||
result += `${colorDot} ${param.seriesName}: ${param.value} <br>`;
|
||||
});
|
||||
return result;
|
||||
},
|
||||
},
|
||||
grid: {
|
||||
left: '2%',
|
||||
|
@ -51,14 +51,15 @@
|
||||
:class="[index === currentWeight ? 'act' : 'normal']"
|
||||
@click="currentWeight = index"
|
||||
>
|
||||
{{ item.goodSpecs }}/{{ item.unit }}
|
||||
{{ item.goodSpecs }}{{ item.unit }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="goods-num">
|
||||
<div class="num-title">数量:</div>
|
||||
<div class="num-warp">
|
||||
<el-input-number v-model="saveInfo.num" :min="1" :max="10" />
|
||||
<span class="is-have">有货</span>
|
||||
<span v-if="currentStock !== 0" class="is-have">有货: {{ currentStock }}</span>
|
||||
<span v-else class="is-have">售罄</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -96,7 +97,13 @@
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; flex-wrap: wrap">
|
||||
<el-image v-for="(item, index) in currentGood.detailUrl" :key="index" :src="item" style="width: 80%" fit="contain" />
|
||||
<el-image
|
||||
v-for="(item, index) in currentGood.detailUrl"
|
||||
:key="index"
|
||||
:src="item"
|
||||
style="width: 90%; margin: 5px 0"
|
||||
fit="contain"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="tabVal == 'sourceCode'" class="content-source-code">
|
||||
@ -122,7 +129,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="tabVal == 'evaluate'" class="content-evaluate">
|
||||
<evaluate :good-id="goodId"></evaluate>
|
||||
<evaluate :good-id="goodId" :good-url="currentGood.goodUrls[0]"></evaluate>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -168,6 +175,10 @@ const currentPrice = computed(() => {
|
||||
return currentGood.value?.netWeight?.[currentWeight.value]?.goodPrice ?? 0;
|
||||
});
|
||||
|
||||
const currentStock = computed(() => {
|
||||
return currentGood.value?.netWeight?.[currentWeight.value]?.goodStock ?? 0;
|
||||
});
|
||||
|
||||
const mockData = [
|
||||
{
|
||||
goodName: '甜糯玉米种子',
|
||||
@ -616,7 +627,7 @@ const toCopy = () => {};
|
||||
.content-detail {
|
||||
.detail-des {
|
||||
margin-bottom: 24px;
|
||||
width: 80%;
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
.content-source-code {
|
||||
|
@ -40,32 +40,32 @@
|
||||
|
||||
<div class="evaluate-list">
|
||||
<div class="list-content">
|
||||
<template v-for="(e, indexe) in 2" :key="indexe">
|
||||
<template v-for="(e, index) in 1" :key="index">
|
||||
<div class="evaluate-item">
|
||||
<div class="evaluate-item-top">
|
||||
<div class="user-info">
|
||||
<div class="info-img">
|
||||
<el-image :src="getAssetsFile('images/ecommerce/' + 'goods.png')?.href ?? ''" fit="cover" />
|
||||
<el-image :src="getAssetsFile('images/avatar.jfif')?.href ?? ''" fit="cover" />
|
||||
</div>
|
||||
<div class="info-txt">
|
||||
<div class="info-txt-pos">
|
||||
<div class="info-txt-c">
|
||||
<div class="name">用户名888888</div>
|
||||
<div class="time">2025.01.01</div>
|
||||
<div class="name">{{ mockData[currentMock].userName }}</div>
|
||||
<div class="time">{{ mockData[currentMock].createTime }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="score-val">
|
||||
<el-rate :model-value="3" :colors="colors" size="large" :disabled="true" />
|
||||
<el-rate :model-value="mockData[currentMock].stars" :colors="colors" size="large" :disabled="true" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="evaluate-item-content">
|
||||
<div class="content-txt">经过一段时间种植,都长出来了,也结出西红柿,中等个头,入口鲜嫩。性价比挺高,非常值得推荐。</div>
|
||||
<div class="content-txt">{{ mockData[currentMock].content }}</div>
|
||||
<div class="content-img">
|
||||
<template v-for="(m, indexm) in 2" :key="indexm">
|
||||
<template v-for="(m, indexm) in 1" :key="indexm">
|
||||
<div class="img-item">
|
||||
<el-image :src="getAssetsFile('images/ecommerce/' + 'pic.png')?.href ?? ''" fit="cover" />
|
||||
<el-image :src="goodUrl ? goodUrl : ''" fit="cover" />
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
@ -92,8 +92,98 @@ const props = defineProps({
|
||||
type: Number,
|
||||
default: () => 0,
|
||||
},
|
||||
goodUrl: {
|
||||
type: String,
|
||||
default: () => '',
|
||||
},
|
||||
});
|
||||
|
||||
const currentMock = ref(0);
|
||||
|
||||
const mockData = ref([
|
||||
{
|
||||
userName: '用户17378225',
|
||||
createTime: '2025.02.05',
|
||||
content: '正准备复购,基本没踩雷!推荐购买。',
|
||||
stars: 4,
|
||||
},
|
||||
{
|
||||
userName: '用户35613587',
|
||||
createTime: '2025.02.06',
|
||||
content: '平台服务:发货很快,来平台买过好多次了,喜欢平台服务。',
|
||||
stars: 5,
|
||||
},
|
||||
{
|
||||
userName: '用户33578135',
|
||||
createTime: '2025.02.08',
|
||||
content: '物流挺快,到货了也没发现有坏损。',
|
||||
stars: 4.5,
|
||||
},
|
||||
{
|
||||
userName: '用户23467467',
|
||||
createTime: '2025.02.10',
|
||||
content: '包装无损坏,拍品也很好,以后就在平台上购买了,放心,省心,还在犹豫亲们可以下单啦!',
|
||||
stars: 5,
|
||||
},
|
||||
{
|
||||
userName: '用户78613489',
|
||||
createTime: '2025.02.14',
|
||||
content: '实物跟图片描述的一样,不错,值的赞,值得推荐!',
|
||||
stars: 5,
|
||||
},
|
||||
{
|
||||
userName: '用户23497825',
|
||||
createTime: '2025.02.18',
|
||||
content: '少发了商品,在平台联系商家后处理速度很快,马上补发了,商家态度也好。',
|
||||
stars: 4,
|
||||
},
|
||||
{
|
||||
userName: '用户35789421',
|
||||
createTime: '2025.02.24',
|
||||
content: '买错了。退换速度很快,商家很好交流,平台处理速度也很快。',
|
||||
stars: 4,
|
||||
},
|
||||
{
|
||||
userName: '用户83154378',
|
||||
createTime: '2025.02.26',
|
||||
content:
|
||||
'货品质量非常好,与平台页面描述的完全一致,非常满意,完全超出期望值,发货速度非常快,包装非常仔细严实,运送速度很快,很满意的一次平台购物!',
|
||||
stars: 5,
|
||||
},
|
||||
{
|
||||
userName: '用户61398765',
|
||||
createTime: '2025.03.01',
|
||||
content: '东西很好,价美物廉!收到的时候包装完整,货品比我想象中的还要好!不得不得竖起大拇指。下次需要的时候我还会再来的!',
|
||||
stars: 5,
|
||||
},
|
||||
{
|
||||
userName: '用户91357862',
|
||||
createTime: '2025.03.05',
|
||||
content: '包装很完整,没有破损。发货迅速,态度很好,很满意!很好,很好!没想到平台的服务这么好,商品质量好而价低廉,下次还来,祝生意兴隆!',
|
||||
stars: 5,
|
||||
},
|
||||
{
|
||||
userName: '用户31578673',
|
||||
createTime: '2025.03.08',
|
||||
content: '先说商品质量,总体不错,包装严实,再为平台服务点赞啦,最后点评快递发货很快。希望平台有更多优惠,祝生意兴隆!',
|
||||
stars: 5,
|
||||
},
|
||||
{
|
||||
userName: '用户43124789',
|
||||
createTime: '2025.03.10',
|
||||
content:
|
||||
'超级喜欢,非常支持,质量非常好,与平台描述的完全一致,非常满意,完全超出期望值,发货速度非常快,包装非常仔细严实,物流公司服务态度很好,运送速度很快,很满意的一次购物。平台客服态度很专业、热情,有问必答,回复也很快。',
|
||||
stars: 5,
|
||||
},
|
||||
]);
|
||||
|
||||
function getRandomIndex(mockData) {
|
||||
if (!Array.isArray(mockData) || mockData.length === 0) {
|
||||
throw new Error('mockData 必须是非空数组');
|
||||
}
|
||||
currentMock.value = Math.floor(Math.random() * mockData.length);
|
||||
}
|
||||
|
||||
const data = reactive({
|
||||
type: 1,
|
||||
current: 1,
|
||||
@ -103,11 +193,11 @@ const data = reactive({
|
||||
|
||||
const colors = ref(['#99A9BF', '#25BF82', '#25BF82']);
|
||||
const totalList = reactive([
|
||||
{ title: '全部', name: 'all', num: 912 },
|
||||
{ title: '成活率高', name: 'label1', num: 458 },
|
||||
{ title: '抗病率高', name: 'label2', num: 242 },
|
||||
{ title: '抗倒伏率高', name: 'label3', num: 106 },
|
||||
{ title: '坐果率高', name: 'label4', num: 106 },
|
||||
{ title: '全部', name: 'all', num: 1 },
|
||||
{ title: '成活率高', name: 'label1', num: 0 },
|
||||
{ title: '抗病率高', name: 'label2', num: 0 },
|
||||
{ title: '抗倒伏率高', name: 'label3', num: 0 },
|
||||
{ title: '坐果率高', name: 'label4', num: 0 },
|
||||
]);
|
||||
let currentlabel = ref('all');
|
||||
|
||||
@ -124,10 +214,12 @@ const doAnonymous = () => {
|
||||
|
||||
onMounted(() => {
|
||||
data.goodId = props.goodId;
|
||||
getContentList();
|
||||
getRandomIndex(mockData.value);
|
||||
// getContentList('1');
|
||||
});
|
||||
|
||||
const getContentList = (type) => {
|
||||
data.type = type;
|
||||
agriculturalContent(data).then((res) => {
|
||||
if (res.code === '200') {
|
||||
console.log(res);
|
||||
|
@ -6,7 +6,7 @@
|
||||
</div>
|
||||
<div class="goods-name txt-ellipsis clamp2">{{ data.goodName }}</div>
|
||||
<div class="goods-do">
|
||||
<div class="price txt-ellipsis clamp">{{ data.goodPrice }}/{{ data.unit }}</div>
|
||||
<div class="price txt-ellipsis clamp">{{ data.goodPrice }}</div>
|
||||
<div class="do">
|
||||
<div class="iconfont icon-cart"></div>
|
||||
</div>
|
||||
@ -54,8 +54,10 @@ const toDetail = (id, pid) => {
|
||||
}
|
||||
}
|
||||
.goods-name {
|
||||
width: 100%;
|
||||
margin-top: 8px;
|
||||
font-size: 16px;
|
||||
font-size: 1.4em;
|
||||
height: 2.8em;
|
||||
color: $color-666;
|
||||
text-align: left;
|
||||
}
|
||||
|
40
sub-operation-service/src/views/error/blank.vue
Normal file
40
sub-operation-service/src/views/error/blank.vue
Normal file
@ -0,0 +1,40 @@
|
||||
<template>
|
||||
<div
|
||||
class="blank"
|
||||
:style="{
|
||||
backgroundImage: `url(${backgroundImageUrl})`,
|
||||
backgroundSize: '30%',
|
||||
backgroundPosition: 'center',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
}"
|
||||
>
|
||||
正在开发中。。。
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue';
|
||||
import { getAssetsFile } from '@/utils/index.js';
|
||||
|
||||
/* --------------- data --------------- */
|
||||
// #region
|
||||
const backgroundImageUrl = ref(getAssetsFile('images/empty.png'));
|
||||
// #endregion
|
||||
|
||||
/* --------------- methods --------------- */
|
||||
// #region
|
||||
|
||||
// #endregion
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.blank {
|
||||
height: calc(100vh - 300px);
|
||||
background-color: white;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 50px;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
</style>
|
@ -54,7 +54,23 @@ const option = {
|
||||
color: '#5c6c7c',
|
||||
},
|
||||
padding: [10, 10],
|
||||
extraCssText: 'box-shadow: 1px 0 2px 0 rgba(163,163,163,0.5)',
|
||||
extraCssText: 'box-shadow: 1px 0 2px 0 rgba(163,163,163,0.5); text-align: left;',
|
||||
formatter: function (params) {
|
||||
let result = params[0].name + '<br>'; // x轴值(如"1月")
|
||||
params.forEach((param) => {
|
||||
// 获取系列颜色(param.color)
|
||||
const colorDot = `<span style="
|
||||
display:inline-block;
|
||||
margin-right:5px;
|
||||
border-radius:50%;
|
||||
width:10px;
|
||||
height:10px;
|
||||
background-color:${param.color}">
|
||||
</span>`;
|
||||
result += `${colorDot} ${param.seriesName}: ${param.value}${param.seriesName === '茎秆高度' ? 'cm' : param.seriesName === '叶片温度' ? '℃' : 'mm'} <br>`;
|
||||
});
|
||||
return result;
|
||||
},
|
||||
},
|
||||
grid: {
|
||||
top: '20%',
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -81,7 +81,7 @@ onMounted(() => {
|
||||
const option = {
|
||||
backgroundColor: 'rgba(255, 255, 255, 0)', // 白色背景
|
||||
title: {
|
||||
text: '气象数据',
|
||||
text: '气象监测数据',
|
||||
left: 20,
|
||||
top: 10,
|
||||
textStyle: {
|
||||
|
@ -107,14 +107,17 @@ onMounted(async () => {
|
||||
<div style="display: flex; justify-content: space-between; align-items: center">
|
||||
<div class="video-wrapper">
|
||||
<video v-if="num === 1" ref="videoPlayer" src="../components/jiankong.mp4" controls loop autoplay muted></video>
|
||||
<video v-else ref="videoPlayer" src="../components/jiankong1.mp4" controls loop autoplay muted></video>
|
||||
<video v-else-if="num === 2" ref="videoPlayer" src="../components/jiankong1.mp4" controls loop autoplay muted></video>
|
||||
<video v-else-if="num === 4" ref="videoPlayer" src="../components/jiankong2.mp4" controls loop autoplay muted></video>
|
||||
<video v-else-if="num === 5" ref="videoPlayer" src="../components/jiankong3.mp4" controls loop autoplay muted></video>
|
||||
<video v-else-if="num === 6" ref="videoPlayer" src="../components/jiankong4.mp4" controls loop autoplay muted></video>
|
||||
<div v-if="loading" class="status-message">正在加载直播流...</div>
|
||||
<div v-if="error" class="status-message error">{{ error }}</div>
|
||||
</div>
|
||||
<div class="pictures-wrapper">
|
||||
<img :src="getAssetsFile('images/smartFarm/goUp.png')" alt="" style="width: 100px" />
|
||||
<img :src="getAssetsFile('images/smartFarm/testPic1.png')" style="width: 80%; margin: 5px 0" :alt="devices[currentDevice].detail" />
|
||||
<img :src="getAssetsFile('images/smartFarm/testPic1.png')" style="width: 80%; margin: 5px 0" :alt="devices[currentDevice].detail" />
|
||||
<img :src="getAssetsFile('images/smartFarm/testPic2.png')" style="width: 80%; margin: 5px 0" :alt="devices[currentDevice].detail" />
|
||||
<img :src="getAssetsFile('images/smartFarm/testPic3.png')" style="width: 80%; margin: 5px 0" :alt="devices[currentDevice].detail" />
|
||||
<img :src="getAssetsFile('images/smartFarm/goDown.png')" alt="" style="width: 100px" />
|
||||
</div>
|
||||
</div>
|
||||
|
@ -25,24 +25,27 @@
|
||||
<div class="details-block">
|
||||
<div class="detail">
|
||||
<div class="leftTitle">温度</div>
|
||||
<div class="rightValue">
|
||||
{{ currentData.temp }}
|
||||
</div>
|
||||
<div class="rightValue">{{ currentData.temp }}℃</div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="leftTitle">PM2.5</div>
|
||||
<div class="rightValue">{{ currentData.PM2 }}μg/m³</div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="leftTitle">作物虫害</div>
|
||||
<div class="rightValue">
|
||||
{{ currentData.bugs === 0 ? '无' : '有' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="leftTitle">土壤温度</div>
|
||||
<div class="rightValue">{{ currentData.dustTemp }}℃</div>
|
||||
<div class="leftTitle">光照度</div>
|
||||
<div class="rightValue">{{ currentData.light }}Lux</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="detail">-->
|
||||
<!-- <div class="leftTitle">作物虫害</div>-->
|
||||
<!-- <div class="rightValue">-->
|
||||
<!-- {{ currentData.bugs === 0 ? '无' : '有' }}-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="detail">-->
|
||||
<!-- <div class="leftTitle">土壤温度</div>-->
|
||||
<!-- <div class="rightValue">{{ currentData.dustTemp }}℃</div>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
<div class="details-block">
|
||||
<div class="detail">
|
||||
@ -53,16 +56,17 @@
|
||||
<div class="leftTitle">PM10</div>
|
||||
<div class="rightValue">{{ currentData.temp }}μg/m³</div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="leftTitle">作物病害</div>
|
||||
<div class="rightValue">
|
||||
{{ currentData.sick === 0 ? '无' : '有' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="leftTitle">土壤湿度</div>
|
||||
<div class="rightValue">{{ currentData.dustWet }}%</div>
|
||||
</div>
|
||||
<div class="detail"> </div>
|
||||
<!-- <div class="detail">-->
|
||||
<!-- <div class="leftTitle">作物病害</div>-->
|
||||
<!-- <div class="rightValue">-->
|
||||
<!-- {{ currentData.sick === 0 ? '无' : '有' }}-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="detail">-->
|
||||
<!-- <div class="leftTitle">土壤湿度</div>-->
|
||||
<!-- <div class="rightValue">{{ currentData.dustWet }}%</div>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
<div class="details-block">
|
||||
<div class="detail">
|
||||
@ -71,20 +75,17 @@
|
||||
{{ currentData.wind }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="leftTitle">光照度</div>
|
||||
<div class="rightValue">{{ currentData.light }}Lux</div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="leftTitle">风速</div>
|
||||
<div class="rightValue">{{ currentData.temp }}m/s</div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="leftTitle">土壤酸碱度</div>
|
||||
<div class="rightValue">
|
||||
{{ currentData.PH }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail"> </div>
|
||||
<!-- <div class="detail">-->
|
||||
<!-- <div class="leftTitle">土壤酸碱度</div>-->
|
||||
<!-- <div class="rightValue">-->
|
||||
<!-- {{ currentData.PH }}-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
@ -93,65 +94,97 @@
|
||||
<el-card shadow="hover" style="margin-top: 10px; border-radius: 16px">
|
||||
<div style="display: flex; padding: 20px">
|
||||
<div style="width: 30%">
|
||||
<div style="font-size: 18px; font-weight: bold; text-align: left">土壤数据</div>
|
||||
<div style="display: flex">
|
||||
<div class="dustData">
|
||||
<div>
|
||||
<img :src="getAssetsFile('images/smartFarm/光照传感器.png')" alt="" />
|
||||
光照
|
||||
</div>
|
||||
<div class="values">{{ dustData.light }}</div>
|
||||
<div style="font-size: 18px; font-weight: bold; text-align: left">土壤监测数据</div>
|
||||
<!-- <div style="display: flex">-->
|
||||
<!-- <div class="dustData">-->
|
||||
<!-- <div>-->
|
||||
<!-- <img :src="getAssetsFile('images/smartFarm/光照传感器.png')" alt="" />-->
|
||||
<!-- 光照-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="values">{{ dustData.light }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="dustData">-->
|
||||
<!-- <div>-->
|
||||
<!-- <img :src="getAssetsFile('images/smartFarm/排风.png')" alt="" />-->
|
||||
<!-- 排风-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="values">{{ dustData.wind }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="dustData">-->
|
||||
<!-- <div>-->
|
||||
<!-- <img :src="getAssetsFile('images/smartFarm/蒸腾.png')" alt="" />-->
|
||||
<!-- 蒸腾-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="values">{{ dustData.evapotranspiration }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div style="display: flex">-->
|
||||
<!-- <div class="dustData">-->
|
||||
<!-- <div>-->
|
||||
<!-- <img :src="getAssetsFile('images/smartFarm/土壤湿度.png')" alt="" />-->
|
||||
<!-- 湿度-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="values">{{ dustData.wet.min }}</div>-->
|
||||
<!-- <div class="values">{{ dustData.wet.max }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="dustData">-->
|
||||
<!-- <div>-->
|
||||
<!-- <img :src="getAssetsFile('images/smartFarm/土壤温度.png')" alt="" />-->
|
||||
<!-- 温度-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="values">{{ dustData.temp.min }}</div>-->
|
||||
<!-- <div class="values">{{ dustData.temp.max }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="dustData">-->
|
||||
<!-- <div>-->
|
||||
<!-- <img :src="getAssetsFile('images/smartFarm/空气.png')" alt="" />-->
|
||||
<!-- 空气-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="values">{{ dustData.air.dirt }}</div>-->
|
||||
<!-- <div class="values">{{ dustData.air.wet }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="report">-->
|
||||
<!-- <div><img :src="getAssetsFile('images/smartFarm/bell.png')" alt="" /></div>-->
|
||||
<!-- <div class="warning">-->
|
||||
<!-- <div>温度</div>-->
|
||||
<!-- <div>36℃</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="warning">-->
|
||||
<!-- <div>超高</div>-->
|
||||
<!-- <div>4℃</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<div class="dustData">
|
||||
<div style="width: 24%; display: flex; flex-direction: column; justify-content: space-between">
|
||||
<div>土壤深度</div>
|
||||
<div style="position: relative">-10cm<img :src="getAssetsFile('images/smartFarm/deep.png')" class="deepIcon" alt="" /></div>
|
||||
<div style="position: relative">-20cm<img :src="getAssetsFile('images/smartFarm/deep.png')" class="deepIcon" alt="" /></div>
|
||||
<div style="position: relative">-30cm<img :src="getAssetsFile('images/smartFarm/deep.png')" class="deepIcon" alt="" /></div>
|
||||
</div>
|
||||
<div class="dustData">
|
||||
<div>
|
||||
<img :src="getAssetsFile('images/smartFarm/排风.png')" alt="" />
|
||||
排风
|
||||
</div>
|
||||
<div class="values">{{ dustData.wind }}</div>
|
||||
<div style="width: 24%; display: flex; flex-direction: column; justify-content: space-between">
|
||||
<div>土壤水分</div>
|
||||
<div>62%</div>
|
||||
<div>55%</div>
|
||||
<div>53%</div>
|
||||
</div>
|
||||
<div class="dustData">
|
||||
<div>
|
||||
<img :src="getAssetsFile('images/smartFarm/蒸腾.png')" alt="" />
|
||||
蒸腾
|
||||
</div>
|
||||
<div class="values">{{ dustData.evapotranspiration }}</div>
|
||||
<div style="width: 24%; display: flex; flex-direction: column; justify-content: space-between">
|
||||
<div>土壤温度</div>
|
||||
<div>22.5℃</div>
|
||||
<div>18.3℃</div>
|
||||
<div>15.7℃</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex">
|
||||
<div class="dustData">
|
||||
<div>
|
||||
<img :src="getAssetsFile('images/smartFarm/土壤湿度.png')" alt="" />
|
||||
湿度
|
||||
</div>
|
||||
<div class="values">{{ dustData.wet.min }}</div>
|
||||
<div class="values">{{ dustData.wet.max }}</div>
|
||||
</div>
|
||||
<div class="dustData">
|
||||
<div>
|
||||
<img :src="getAssetsFile('images/smartFarm/土壤温度.png')" alt="" />
|
||||
温度
|
||||
</div>
|
||||
<div class="values">{{ dustData.temp.min }}</div>
|
||||
<div class="values">{{ dustData.temp.max }}</div>
|
||||
</div>
|
||||
<div class="dustData">
|
||||
<div>
|
||||
<img :src="getAssetsFile('images/smartFarm/空气.png')" alt="" />
|
||||
空气
|
||||
</div>
|
||||
<div class="values">{{ dustData.air.dirt }}</div>
|
||||
<div class="values">{{ dustData.air.wet }}</div>
|
||||
<div style="width: 24%; display: flex; flex-direction: column; justify-content: space-between">
|
||||
<div>PH值</div>
|
||||
<div>6.5</div>
|
||||
<div>6.2</div>
|
||||
<div>6.1</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="report">
|
||||
<div><img :src="getAssetsFile('images/smartFarm/bell.png')" alt="" /></div>
|
||||
<div class="warning">
|
||||
<div>温度</div>
|
||||
<div>36℃</div>
|
||||
</div>
|
||||
<div class="warning">
|
||||
<div>超高</div>
|
||||
<div>4℃</div>
|
||||
<div>土壤水分偏低,需要灌溉</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -161,7 +194,7 @@
|
||||
<div style="width: 35%">
|
||||
<div style="margin-top: 70px; display: flex; text-align: left">
|
||||
<el-col :span="12">
|
||||
<el-row class="dataTitle">泵压管控mpa</el-row>
|
||||
<el-row class="dataTitle">泵压管控Mpa</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<span style="font-size: 15px">输入</span>
|
||||
@ -174,36 +207,31 @@
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-row class="dataTitle">灌溉流量m²/h</el-row>
|
||||
<el-row class="dataTitle">水泵实时流量m³/h</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<span style="font-size: 15px">灌溉</span>
|
||||
<span class="values">{{ dustData.flow.output }}</span>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<span style="font-size: 15px">回液</span>
|
||||
<span class="values">{{ dustData.flow.input }}</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</div>
|
||||
<div style="display: flex; text-align: left">
|
||||
<el-col :span="12">
|
||||
<el-row class="dataTitle">水肥监测</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<span style="font-size: 15px">PH</span>
|
||||
<span class="values">{{ dustData.fertilization.ph }}</span>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<span style="font-size: 15px">输入</span>
|
||||
<span class="values">{{ dustData.fertilization.output }}</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="12"> </el-col>
|
||||
</div>
|
||||
<el-row class="dataTitle">灌溉流量m²/h</el-row>
|
||||
<!-- <div style="display: flex; text-align: left">-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-row class="dataTitle">水肥监测</el-row>-->
|
||||
<!-- <el-row>-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <span style="font-size: 15px">PH</span>-->
|
||||
<!-- <span class="values">{{ dustData.fertilization.ph }}</span>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <span style="font-size: 15px">输入</span>-->
|
||||
<!-- <span class="values">{{ dustData.fertilization.output }}</span>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="12"> </el-col>-->
|
||||
<!-- </div>-->
|
||||
<el-row class="dataTitle" style="margin-top: 55px">月灌溉量m³</el-row>
|
||||
<charts-flow style="height: 150px; width: 100%"></charts-flow>
|
||||
</div>
|
||||
</div>
|
||||
@ -211,7 +239,7 @@
|
||||
<el-card shadow="hover" style="margin-top: 10px; border-radius: 16px">
|
||||
<div style="display: flex; padding: 20px">
|
||||
<div style="width: 50%">
|
||||
<div style="font-size: 18px; font-weight: bold; text-align: left">产能预测</div>
|
||||
<div style="font-size: 18px; font-weight: bold; text-align: left">产能预测数据</div>
|
||||
<div style="display: flex; justify-content: flex-start; margin: 20px 0">
|
||||
<div class="plansBlock" style="background-color: #25bf82">
|
||||
<div style="">预计生产</div>
|
||||
@ -354,12 +382,13 @@ const dustData = ref({
|
||||
wet: '34%',
|
||||
},
|
||||
pressure: {
|
||||
input: '11',
|
||||
end: 2,
|
||||
input: '0.6',
|
||||
end: 0.3,
|
||||
},
|
||||
flow: {
|
||||
temp: '53',
|
||||
input: '125',
|
||||
output: '180.3',
|
||||
},
|
||||
fertilization: {
|
||||
ph: 8,
|
||||
@ -463,9 +492,9 @@ const changeMap2 = (params) => {
|
||||
// 压力参数
|
||||
pressure: {
|
||||
// 输入压力 (5-15 MPa)
|
||||
input: '@natural(5, 15)',
|
||||
input: '@natural(0.2, 0.8)',
|
||||
// 末端压力衰减 (1-5)
|
||||
end: '@natural(1, 5)',
|
||||
end: '@natural(0.2, 0.8)',
|
||||
},
|
||||
|
||||
// 流量参数
|
||||
@ -474,6 +503,7 @@ const changeMap2 = (params) => {
|
||||
temp: '@natural(30, 60)',
|
||||
// 输入流量 (50-200 m²/h)
|
||||
input: '@natural(50, 200)',
|
||||
output: '@natural(175, 185)',
|
||||
},
|
||||
|
||||
// 施肥参数
|
||||
@ -592,6 +622,7 @@ const generateFarmData = (baseTemp = 18) => {
|
||||
color: #999999;
|
||||
}
|
||||
.warning {
|
||||
font-size: 14px;
|
||||
div {
|
||||
margin: 4px 0;
|
||||
}
|
||||
@ -609,20 +640,18 @@ const generateFarmData = (baseTemp = 18) => {
|
||||
}
|
||||
}
|
||||
.dustData {
|
||||
width: 33%;
|
||||
height: 70px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-direction: column;
|
||||
font-size: 15px;
|
||||
margin: 20px 0;
|
||||
.values {
|
||||
color: #25bf82;
|
||||
}
|
||||
img {
|
||||
height: 20px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
justify-content: space-around;
|
||||
font-size: 14px;
|
||||
height: 250px;
|
||||
padding: 30px 0;
|
||||
}
|
||||
.deepIcon {
|
||||
width: 30px;
|
||||
position: absolute;
|
||||
left: -20px;
|
||||
top: -2px;
|
||||
}
|
||||
.details {
|
||||
display: flex;
|
||||
@ -631,7 +660,7 @@ const generateFarmData = (baseTemp = 18) => {
|
||||
width: 29%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.detail {
|
||||
display: flex;
|
||||
|
@ -6,7 +6,7 @@
|
||||
<devices :title="'智能灌溉设备'" :devices="devices"></devices>
|
||||
</div>
|
||||
<div style="display: flex; align-items: stretch; justify-content: space-between; margin-top: 20px">
|
||||
<stream :title="'灌溉监测实时监控'" :devices="devices" style="width: 60%; margin-right: 20px; height: fit-content"></stream>
|
||||
<stream :title="'灌溉监测监控'" :num="5" :devices="devices" style="width: 60%; margin-right: 20px; height: fit-content"></stream>
|
||||
<DataDisplay :title="'灌溉分析'" :data="rightData" :show-image="true" :image-list="srcList" style="flex: 1"></DataDisplay>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<devices :title="'智能浸种设备'" :devices="devices"></devices>
|
||||
</div>
|
||||
<div style="display: flex; align-items: stretch; justify-content: space-between; margin-top: 20px">
|
||||
<stream :title="'浸种监测实时监控'" :devices="devices" style="width: 60%; margin-right: 20px; height: fit-content"></stream>
|
||||
<stream :title="'浸种监测监控'" :num="6" :devices="devices" style="width: 60%; margin-right: 20px; height: fit-content"></stream>
|
||||
<DataDisplay :title="'浸种分析'" :data="rightData" :show-image="true" :image-list="srcList" style="flex: 1"></DataDisplay>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -147,10 +147,10 @@ const chooseIcon = (type) => {
|
||||
</div>
|
||||
<div style="margin-top: 10px; display: flex; justify-content: space-between">
|
||||
<div style="display: flex; justify-content: space-between; margin-top: 10px">
|
||||
<stream :title="'病害监测实时监控'" :devices="devices" style="width: 60%; height: fit-content"></stream>
|
||||
<stream :title="'病害监测监控'" :devices="devices" style="width: 60%; height: fit-content"></stream>
|
||||
<div style="width: 38%">
|
||||
<el-card style="border-radius: 16px; padding: 10px">
|
||||
<div style="font-size: 16px; font-weight: bold; text-align: left; color: #000">虫害数据</div>
|
||||
<div style="font-size: 16px; font-weight: bold; text-align: left; color: #000">病害数据</div>
|
||||
<sick-data style="width: 38%; min-width: 300px"></sick-data>
|
||||
</el-card>
|
||||
</div>
|
||||
@ -158,7 +158,7 @@ const chooseIcon = (type) => {
|
||||
</div>
|
||||
<div style="margin-top: 10px; display: flex; justify-content: space-between">
|
||||
<div style="display: flex; justify-content: space-between; margin-top: 10px; width: 100%">
|
||||
<stream :title="'虫害监测实时监控'" :num="2" :devices="devices" style="width: 60%; height: fit-content"></stream>
|
||||
<stream :title="'虫害监测监控'" :num="2" :devices="devices" style="width: 60%; height: fit-content"></stream>
|
||||
<div style="width: 38%">
|
||||
<el-card style="border-radius: 16px; padding: 10px">
|
||||
<div style="font-size: 16px; font-weight: bold; text-align: left; color: #000">虫害数据</div>
|
||||
|
@ -32,7 +32,7 @@
|
||||
</div>
|
||||
<div class="envData">
|
||||
<div class="dt">
|
||||
<div class="values">{{ monitorData.co2 }}</div>
|
||||
<div class="values">{{ monitorData.temperature }}</div>
|
||||
<div class="points">空气温度</div>
|
||||
</div>
|
||||
<div class="dt">
|
||||
@ -164,7 +164,7 @@ const getMockData = () => {
|
||||
// 左侧环境监测数据
|
||||
const leftData = Mock.mock({
|
||||
co2: () => randomRange(200, 800, 0) + 'ppm', // CO₂浓度(300~800ppm)
|
||||
temperature: () => randomRange(-10, 40, 1) + '℃', // 温度(-10~40℃)
|
||||
temperature: () => randomRange(19, 33, 1) + '℃', // 温度(-10~40℃)
|
||||
humidity: () => randomRange(10, 100, 0) + '%', // 湿度(10%~100%)
|
||||
wind: '@pick(["东南风", "西南风", "东北风", "西北风"])',
|
||||
rainfall: () => randomRange(0, 200, 1) + 'mm', // 降水量(0~200mm,1位小数)
|
||||
|
@ -6,7 +6,7 @@
|
||||
<devices :title="'田间监测设备'" :devices="devices"></devices>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: space-between; margin-top: 10px">
|
||||
<stream :title="'田间监测实时监控'" :devices="devices" style="width: 60%; height: fit-content" @change-device="changeDevice"></stream>
|
||||
<stream :title="'田间监测监控'" :devices="devices" style="width: 60%; height: fit-content" @change-device="changeDevice"></stream>
|
||||
<data-display style="width: calc(40% - 20px)" title="作物生长状态" show-charts :data="textData"></data-display>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<devices :title="'智能配肥设备'" :devices="devices"></devices>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: space-between; margin-top: 10px">
|
||||
<stream :title="'施肥监测实时监控'" :devices="devices" style="width: 60%; height: fit-content"></stream>
|
||||
<stream :title="'施肥监测监控'" :devices="devices" :num="4" style="width: 60%; height: fit-content"></stream>
|
||||
<el-card style="width: calc(40% - 20px); border-radius: 16px">
|
||||
<div style="font-size: 16px; font-weight: bold; text-align: left">配肥分析</div>
|
||||
<div class="plantStatus">
|
||||
@ -17,14 +17,14 @@
|
||||
<div class="leftKey">土壤养分含量:</div>
|
||||
<div class="errorValue">N 元素不足</div>
|
||||
</div>
|
||||
<div class="plantStatus">
|
||||
<div class="leftKey">光照强度:</div>
|
||||
<div class="errorValue">偏高</div>
|
||||
</div>
|
||||
<div class="plantStatus">
|
||||
<div class="leftKey">风速:</div>
|
||||
<div class="rightValue">微风</div>
|
||||
</div>
|
||||
<!-- <div class="plantStatus">-->
|
||||
<!-- <div class="leftKey">光照强度:</div>-->
|
||||
<!-- <div class="errorValue">偏高</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="plantStatus">-->
|
||||
<!-- <div class="leftKey">风速:</div>-->
|
||||
<!-- <div class="rightValue">微风</div>-->
|
||||
<!-- </div>-->
|
||||
<div class="plantStatus">
|
||||
<div class="leftKey">作物生长状态:</div>
|
||||
<div class="rightValue">良好</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user