270 lines
8.9 KiB
Vue
Raw Normal View History

2025-07-17 14:57:01 +08:00
<template>
<div>
<common>
<template #main>
<el-card style="border-radius: 16px">
<div class="choose">
<div class="searchType">整机类型</div>
<div :class="{ active: chooseMoney === 0 }" class="chooseAll" @click="changeChoose('money', 0)">全部</div>
<div :class="{ active: chooseMoney === 1 }" class="chooseItem" @click="changeChoose('money', 1)">收割机</div>
<div :class="{ active: chooseMoney === 2 }" class="chooseItem" @click="changeChoose('money', 2)">插秧机</div>
<div :class="{ active: chooseMoney === 3 }" class="chooseItem" @click="changeChoose('money', 3)">播种机</div>
<div :class="{ active: chooseMoney === 4 }" class="chooseItem" @click="changeChoose('money', 4)">烘干机</div>
<div :class="{ active: chooseMoney === 5 }" class="chooseItem" @click="changeChoose('money', 5)">喷雾机</div>
<div :class="{ active: chooseMoney === 6 }" class="chooseItem" @click="changeChoose('money', 6)">饲料机</div>
<div :class="{ active: chooseMoney === 7 }" class="chooseItem" @click="changeChoose('money', 7)">拖拉机</div>
<div :class="{ active: chooseMoney === 8 }" class="chooseItem" @click="changeChoose('money', 8)">其他</div>
</div>
<div style="align-items: center" class="choose">
<div class="searchType">地理位置</div>
<div style="margin-left: 20px">
<el-cascader v-model="postArea" style="width: 100%" :props="props" :options="options" @change="handleChange" />
</div>
<div style="margin-left: 20px">
<el-input v-model="address" placeholder="输入详细位置" />
</div>
</div>
<div style="align-items: center" class="choose">
<div class="searchType">用车时间</div>
<div style="margin-left: 20px">
<el-date-picker v-model="value2" type="date" placeholder="开始日期" :size="size" />
</div>
<div style="margin-left: 20px">
<el-date-picker v-model="value3" type="date" placeholder="结束日期" :size="size" />
</div>
</div>
<div style="align-items: center" class="choose">
2025-07-17 15:07:26 +08:00
<div class="searchType">价格区间</div>
2025-07-17 14:57:01 +08:00
<div style="margin-left: 20px">
<el-input v-model="price1" placeholder="最低价格/天" />
</div>
<div style="margin-left: 20px">~</div>
<div style="margin-left: 20px">
<el-input v-model="price2" placeholder="最高价格/天" />
</div>
</div>
</el-card>
<div style="margin-top: 20px">
<el-card shadow="hover" style="border-radius: 16px; margin-top: 10px; background-color: #f5f5f5">
<!-- <h2 style="text-align: left">农业政策</h2> -->
<div style="width: 100%">
<div v-for="(item, index) in tableData" :key="index" class="card-item">
<div style="width: 100%; display: flex; align-items: center; justify-content: center">
<img :src="item.imgPath" alt="" width="200px" style="height: 200px" />
</div>
<div style="width: 100%; display: flex; flex-direction: column; justify-content: space-between; padding: 0 20px">
<div>
<div style="font-size: 16px; font-weight: bold; margin-top: 5px">{{ item.title }}</div>
<div style="font-size: 14px; margin-top: 5px">
{{ item.subtext }}
</div>
<div style="display: flex; justify-content: space-between; margin-top: 5px">
<div style="font-size: 12px">
<text style="color: #25bf82; font-size: 15px; font-weight: bold">{{ item.price }}</text
>/
</div>
<div style="font-size: 12px">可用时间{{ item.time }}</div>
</div>
</div>
<div style="width: 100%; display: flex; justify-content: space-between; margin-top: 5px">
<div style="display: flex; align-items: center">
<img style="width: 20px; height: 20px; border-radius: 100%" src="../../../assets/images/carton.png" alt="" />
<div style="margin-left: 5px">{{ item.name }}</div>
</div>
<el-button style="height: 30px; background-color: #25bf82; color: #ffffff; border-radius: 16px" @click="goDetail(item.id)"
>立即预约</el-button
>
</div>
</div>
</div>
</div>
</el-card>
</div>
</template>
</common>
</div>
</template>
<script setup>
import { ref, onMounted, reactive } from 'vue';
import common from '../components/common.vue';
import { getAssetsFile } from '@/utils/index.js';
import { useRouter } from 'vue-router';
import { informationList } from '@/apis/farmingService.js';
import options from '../../../assets/address.json';
import { ElMessage } from 'element-plus';
const router = useRouter();
let postArea = ref('');
let address = ref('');
let value2 = ref('');
let value3 = ref('');
let price1 = ref('');
let price2 = ref('');
const props = ref({
value: 'label',
});
/* --------------- data --------------- */
// #region
const tableData = ref([
{
id: 1,
title: '东风牌 1204 型拖拉机',
subtext: '拖拉机·广安市岳池县',
price: '1800',
time: '全年',
name: '王师傅',
imgPath: 'http://localhost:9526/sub-operation-service/src/assets/images/1.png',
},
{
id: 2,
title: '久保田 4LZ-5A1 收割机',
subtext: '收割机·广安市武胜县',
price: '2500',
time: '7-9月',
name: '李师傅',
imgPath: 'http://localhost:9526/sub-operation-service/src/assets/images/2.png',
},
{
id: 3,
title: '洋马 VP6D 高速插秧机',
subtext: '插秧机·广安市邻水县',
price: '1600',
time: '4-5月',
name: 'w王师傅',
imgPath: 'http://localhost:9526/sub-operation-service/src/assets/images/3.png',
},
{
id: 4,
title: '约翰迪尔 9B 播种机',
subtext: '播种机·广安市广安区',
price: '1200',
time: '3-4月',
name: '赵师傅',
imgPath: 'http://localhost:9526/sub-operation-service/src/assets/images/2.png',
},
]);
const chooseMoney = ref(0);
const chooseDate = ref(0);
const chooseWay = ref(0);
const chooseUse = ref(0);
const chooseType = ref(0);
const pagination = ref({
total: 0,
page: 1,
size: 10,
});
// #endregion
/* --------------- methods --------------- */
// #region
onMounted(() => {
// queryList();
});
const extractText = (htmlText, maxChars = 80) => {
// 去除 HTML 标签
const cleanText = htmlText.replace(/<[^>]+>/g, '');
// 去除多余空格和换行
const trimmedText = cleanText.replace(/\s+/g, ' ').trim();
// 取前 20 个字
return trimmedText.substring(0, maxChars);
};
const queryList = () => {
informationList({ current: pagination.value.page, size: pagination.value.size }).then((res) => {
if (res.code === 200) {
tableData.value = res.data.records;
for (let i in res.data.records) {
tableData.value[i].content = extractText(res.data.records[i].content);
if (tableData.value[i].content.length > 80) {
tableData.value[i].content += '...';
}
}
}
});
};
const changeChoose = (type, index) => {
switch (type) {
case 'money':
chooseMoney.value = index;
break;
case 'date':
chooseDate.value = index;
break;
case 'way':
chooseWay.value = index;
break;
case 'use':
chooseUse.value = index;
break;
case 'type':
chooseType.value = index;
break;
}
// getList();
};
const goDetail = (id) => {
ElMessage({
message: '功能正在维护中,请稍后点击',
type: 'warning',
});
// router.push('/sub-operation-service/farmService/consult/laborServicesDel?id=' + id);
};
// #endregion
</script>
<style lang="scss" scoped>
.framing_service_content {
margin: 0 auto;
padding: 0 32px;
width: 1200px;
min-height: 600px;
border: 1px solid skyblue;
box-sizing: border-box;
}
.card-item {
border-radius: 10px;
padding: 10px 0;
background-color: #fff;
float: left;
width: 250px;
display: flex;
flex-direction: column;
// justify-content: space-between;
margin: 20px 0;
text-align: left;
margin-left: 30px;
}
.choose {
display: flex;
justify-content: flex-start;
font-size: 18px;
font-weight: 400;
margin-bottom: 20px;
&:last-child {
margin-bottom: 0;
}
.searchType {
color: #999999;
}
.chooseAll {
margin: 0 30px;
cursor: pointer;
}
.chooseItem {
cursor: pointer;
margin-right: 20px;
}
}
.active {
color: #25bf82;
font-weight: bold;
}
</style>