This commit is contained in:
沈鸿 2025-06-18 10:54:22 +08:00
commit 63f2686c80
16 changed files with 318 additions and 38 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -216,7 +216,7 @@ export default {
if (params.seriesName !== 'mouseoutSeries') { if (params.seriesName !== 'mouseoutSeries') {
return ` return `
<span style="color:#FFF"> <span style="color:#FFF">
${params.seriesName}<br/> ${params.seriesName}万亩<br/>
<span style="display:inline-block; <span style="display:inline-block;
margin-right:5px; margin-right:5px;
border-radius:10px; border-radius:10px;

View File

@ -34,7 +34,7 @@
<div class="layout-header-bottom-left"> <div class="layout-header-bottom-left">
<div class="layout-header-bottom-search"> <div class="layout-header-bottom-search">
<div class="title"> <div class="title">
<img :src="getAssetsFile('images/logo1.png')" /> <img :src="getAssetsFile('images/logo2.png')" />
</div> </div>
<div class="search-warp"> <div class="search-warp">
<el-input v-model="keyword" placeholder="请输入关键词进行搜索"></el-input> <el-input v-model="keyword" placeholder="请输入关键词进行搜索"></el-input>

View File

@ -184,13 +184,13 @@ export const constantRoutes = [
path: 'detail', path: 'detail',
component: () => import('@/views/ruralFinance/integratedSector/detail.vue'), component: () => import('@/views/ruralFinance/integratedSector/detail.vue'),
name: 'integratedSectorDetail', name: 'integratedSectorDetail',
meta: { title: '查看详情', hideInBread: true }, meta: { title: '查看详情' },
}, },
{ {
path: 'loan', path: 'loan',
component: () => import('@/views/ruralFinance/integratedSector/loan.vue'), component: () => import('@/views/ruralFinance/integratedSector/loan.vue'),
name: 'integratedSectorLoan', name: 'integratedSectorLoan',
meta: { title: '我要贷款', hideInBread: true }, meta: { title: '我要贷款' },
}, },
], ],
}, },
@ -602,7 +602,7 @@ export const constantRoutes = [
children: [ children: [
{ {
path: '', path: '',
component: () => import('@/views/ecommerce/supplierDetail.vue'), component: () => import('@/views/ecommerce/agriculturalDetail.vue'),
name: 'supplierDetail', name: 'supplierDetail',
meta: { title: '农产品详情', headerActive: 'ecommerce', hideInBread: true }, meta: { title: '农产品详情', headerActive: 'ecommerce', hideInBread: true },
}, },

View File

@ -9,28 +9,28 @@ import { reactive, ref } from 'vue';
// #region // #region
const dataList = ref([ const dataList = ref([
{ {
name: '豆菜类作物 25万亩', name: '豆菜类作物',
value: 60.8, value: 25,
money: 100, money: 100,
}, },
{ {
name: '根菜类作物 20万亩', name: '根菜类作物',
value: 44.4, value: 20,
money: 88, money: 88,
}, },
{ {
name: '叶菜类作物 10万亩', name: '叶菜类作物',
value: 24.3, value: 10,
money: 92, money: 92,
}, },
{ {
name: '茄科类作物 20万亩', name: '茄科类作物',
value: 32.7, value: 20,
money: 56, money: 56,
}, },
{ {
name: '其他蔬菜作物 20万亩', name: '其他蔬菜作物',
value: 32.9, value: 20,
money: 18, money: 18,
}, },
]); ]);

View File

@ -50,7 +50,7 @@
<div class="goods-num"> <div class="goods-num">
<div class="num-title">数量</div> <div class="num-title">数量</div>
<div class="num-warp"> <div class="num-warp">
<el-input-number v-model="saveInfo.num" :min="1" :max="10" /> <el-input-number v-model="saveInfo.num" :min="1" :max="99999" />
<span v-if="currentStock !== 0" class="is-have">有货: {{ currentStock }}</span> <span v-if="currentStock !== 0" class="is-have">有货: {{ currentStock }}</span>
<span v-else class="is-have">售罄</span> <span v-else class="is-have">售罄</span>
</div> </div>
@ -63,6 +63,10 @@
<div class="item-btn reservation" @click="addGoodToCart"> <div class="item-btn reservation" @click="addGoodToCart">
<span>加入购物车</span> <span>加入购物车</span>
</div> </div>
<div class="contact" @click="showPhone = true">
<div><img :src="getAssetsFile('images/ecommerce/contact.png')" alt="" width="15" /></div>
<div>联系客服</div>
</div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -129,6 +133,16 @@
</div> </div>
</div> </div>
</div> </div>
<el-dialog v-model="showPhone" title="联系客服" width="400" align-center style="text-align: left">
<span>该号码为虚拟号码</span>
<div>400-059-0985-5109</div>
<template #footer>
<div class="dialog-footer">
<el-button type="danger" @click="showPhone = false">关闭</el-button>
</div>
</template>
</el-dialog>
</template> </template>
</common> </common>
</div> </div>
@ -153,6 +167,7 @@ const router = useRouter();
const goodId = route.query.id; // const goodId = route.query.id; //
const pId = route.query.pid; const pId = route.query.pid;
const currentWeight = ref(0); const currentWeight = ref(0);
const showPhone = ref(false);
let bannerList = reactive(['images/ecommerce/' + 'banner.png', 'images/ecommerce/' + 'banner.png']); let bannerList = reactive(['images/ecommerce/' + 'banner.png', 'images/ecommerce/' + 'banner.png']);
const tabList = reactive([ const tabList = reactive([
@ -614,15 +629,22 @@ const toCopy = () => {};
} }
} }
.top-btn { .top-btn {
display: flex;
justify-content: flex-start;
align-items: center;
.contact {
text-align: center;
cursor: pointer;
margin-left: 10px;
}
.contact:hover {
}
.item-btn { .item-btn {
display: inline-block; padding: 7px 24px;
margin: 8px 24px 8px 0; margin-right: 20px;
margin-top: 16px;
padding: 0 24px;
font-size: 20px; font-size: 20px;
border-radius: 12px; border-radius: 12px;
color: $color-fff; color: $color-fff;
line-height: 42px;
&.sign { &.sign {
background: $color-main; background: $color-main;
cursor: pointer; cursor: pointer;

View File

@ -50,7 +50,7 @@
<div class="goods-num"> <div class="goods-num">
<div class="num-title">数量</div> <div class="num-title">数量</div>
<div class="num-warp"> <div class="num-warp">
<el-input-number v-model="saveInfo.num" :min="1" :max="10" /> <el-input-number v-model="saveInfo.num" :min="1" :max="99999" />
<span v-if="currentStock !== 0" class="is-have">有货: {{ currentStock }}</span> <span v-if="currentStock !== 0" class="is-have">有货: {{ currentStock }}</span>
<span v-else class="is-have">售罄</span> <span v-else class="is-have">售罄</span>
</div> </div>

View File

@ -1,19 +1,238 @@
<template> <template>
<div></div> <div>
<common>
<template #main>
<el-card style="border-radius: 16px" :body-style="{ padding: 0 }">
<div class="product-card">
<div style="padding: 20px; display: flex; justify-content: space-between">
<div style="display: flex">
<img :src="getAssetsFile(currentDetail.img)" width="120px" alt="" />
<div style="display: flex; align-items: center">
<div style="font-size: 20px; font-weight: bold; margin: 0 20px">{{ currentDetail.title }}</div>
<div style="display: flex" class="tags">
<div>额度高</div>
<div>政策扶持</div>
</div>
</div>
</div>
<div style="margin: auto 0">
<el-button style="background-color: #25bf82; color: #ffffff; padding: 20px; font-size: 20px" @click="goLoan">我要贷款</el-button>
</div>
</div>
<div style="display: flex; margin-top: 40px; justify-content: space-around; text-align: center">
<div>
<div class="subTitle">最高50万</div>
<div class="subContent">货款额度</div>
</div>
<div>
<div class="subTitle">4.15%</div>
<div class="subContent">产品利率</div>
</div>
<div>
<div class="subTitle">最长60个月</div>
<div class="subContent">货款期限</div>
</div>
</div>
<div style="display: flex; justify-content: space-between; padding: 40px">
<div style="font-size: 18px">
<div class="subs">最快放款<span>即时放款</span></div>
<div class="subs">适用范围<span>临沧市</span></div>
</div>
<div style="font-size: 18px">
<div class="subs">担保方式<span>信用抵押</span></div>
<div class="subs">
所属机构<span>{{ currentDetail.type }}</span>
</div>
</div>
<div style="font-size: 18px">
<div class="subs">还款方式<span>等额本息先息后本</span></div>
<div class="subs">&nbsp;</div>
</div>
</div>
</div>
<div v-for="(item, index) in currentDetail.content" :key="index">
<div style="padding: 10px 20px">
<div style="display: flex">
<!-- <img :src="getAssetsFile('images/finance/productInt.png')" alt="" height="40" />-->
<div class="titles">
<div>{{ item.title }}</div>
<div class="underLine"></div>
</div>
</div>
</div>
<div class="contents" v-html="item.content"></div>
</div>
<!-- <div style="padding: 20px">-->
<!-- <div style="display: flex">-->
<!-- &lt;!&ndash; <img :src="getAssetsFile('images/finance/customs.png')" alt="" height="40" />&ndash;&gt;-->
<!-- <div class="titles">-->
<!-- <div>适用客户</div>-->
<!-- <div class="underLine"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="contents" style="text-indent: 0">-->
<!-- 广泛覆盖从事特色产业经营农村电商购销农业产业链供销以及在农行有金融资产或信贷关系等客户贷款可用于生产经营和消费包括但不限于以下范围<br />1.在农行存款理财基金等金融资产达到一定标准的农户<br />2.在农行办理住房贷款且尚未结清的农户<br />3.在农行办理过农户贷款且信用记录良好的农户<br />4.从事茶叶林果蔬菜烟草谷物种植和畜牧家禽渔业养殖等农行认可的特色产业经营农户<br />5.农行认可的信用村内有资产有收入有诚信的农户<br />6.与农行合作的农业产业化龙头企业上下游农户<br />7.与农行合作的电商平台上下游购销农户<br />8.纳入政府增信机制或融资性担保公司担保的农户-->
<!-- </div>-->
</el-card>
</template>
</common>
</div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue'; import { ref, onMounted } from 'vue';
import common from '../components/common.vue';
import { getAssetsFile } from '../../../utils/index.js';
import { useRoute, useRouter } from 'vue-router';
/* --------------- data --------------- */ /* --------------- data --------------- */
// #region // #region
const router = useRouter();
const route = useRoute();
const detailId = route.query.id;
const mockData = ref([
{
id: 1,
img: 'images/finance/nyyh.png',
title: '惠农e贷',
type: '农业银行',
content: [
{
title: '一、产品简介',
content:
'惠农e贷是中国农业银行专为广大农民量身打造的便捷高效线上贷款产品一部手机实现在线申请、在线取款、在线还款农民\n' + '足不出户办理贷款。',
},
{
title: '二、产品优势',
content:
'<p>快批量作业、自动授信、自动放贷线上7×24小时服务。</p><p>准:精准对接贷款需求,系统自动核定贷款额度。</p><p>简:申请简便,即可手机银行线上自助申请,也可网点柜台提交申请,借款还款手机分分钟搞定。</p><p>信:符合条件可办理纯信用无担保贷款,也可选用抵押、保证担保贷款。</p><p>惠:利率优惠、随借随还、循环使用,实际使用贷款按日起息,不用款不计利息。</p>',
},
{
title: '三、贷款要素',
content:
'贷款额度3000元起步最高不超过50万元。<p>贷款期限根据您的生产经营周期及收入等情况综合确定最长不超过8年。</p><p>贷款利率:根据您的信用状况、担保方式等情况综合确定。</p><p>还款方式:根据贷款期限可灵活选用定期结息到期还本、一次性利随本清、等额本息分期还款等多种方式。</p>',
},
{
title: '四、适用对象',
content:
'惠农e贷全面支持农村和城郊结合部的种植养殖、生产加工、商贸流通等一二三类产业。<p>种植养殖:牛、羊、猪、鸡等养殖,水稻、玉米、小麦、茶叶、花卉、水果等。</p><p>生产加工:禽蛋肉奶食品加工、手工作坊、乡村车间等。</p><p>商贸流通:农家乐、农资店、小卖店、面条馆、理发店、家电维修店、物流配送中心等。</p>',
},
{
title: '五、贷款条件',
content: '品行端正、信用记录良好;<p>有固定生产经营项目,有稳定收入来源;</p><p>提供真实、准确、有效的家庭资产、经营、收入等信息资料。</p>',
},
{
title: '六、合作机构信息公示',
content: '农户贷款合作机构信息目录',
},
],
},
{
id: 2,
img: 'images/finance/yzcx.png',
title: '农贷通',
type: '邮政银行',
content: [
{
title: '一、产品简介',
content: '向遵纪守法、诚实守信、有劳动能力的农户发放的,用于支持其生产经营性用途以及改善乡村居民生活环境的贷款。',
},
{
title: '二、服务介绍',
content:
'适用对象:农户。<p>授信额度单户贷款最高1000万元。</p><p>贷款期限最长10年。</p><p>担保方式:信用、保证、抵押、质押。</p><p>利率:以各地实际利率为准。</p>',
},
{
title: '三、办理渠道',
content: '邮储银行各大开办信贷业务的网点。客户服务热线95580。',
},
],
},
]);
const currentDetail = ref(mockData.value[0]);
// #endregion // #endregion
/* --------------- methods --------------- */ /* --------------- methods --------------- */
// #region // #region
const goLoan = () => {
router.push({
path: '/sub-operation-service/finance/integratedSector/loan',
query: { id: detailId },
});
};
onMounted(() => {
if (detailId) {
for (let i in mockData.value) {
if (detailId == mockData.value[i].id) {
currentDetail.value = mockData.value[i];
console.log(currentDetail.value);
}
}
}
});
// #endregion // #endregion
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped>
.contents {
text-indent: 2em;
font-size: 18px;
text-align: left;
padding: 10px 20px;
}
.product-card {
border-radius: 16px;
width: 100%;
background: linear-gradient(to top, #25bf82 -100%, #ffffff 90%);
}
.tags {
font-size: 14px;
color: #25bf82;
div {
margin-right: 10px;
padding: 5px;
border: 1px solid #25bf82;
background-color: rgba(37, 191, 130, 0.1);
border-radius: 8px;
}
}
.subs {
text-align: left;
span {
font-size: 18px;
color: #25bf82;
font-weight: bold;
display: inline-block;
max-width: 8em; /* 大约6个汉字的宽度 */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: bottom;
}
}
.subTitle {
font-size: 26px;
color: #25bf82;
font-weight: bold;
}
.subContent {
font-size: 18px;
}
.titles {
display: flex;
flex-direction: column;
font-size: 20px;
font-weight: bold;
}
.underLine {
background-color: #25bf82;
width: 100%;
border-radius: 4px;
height: 8px;
}
</style>

View File

@ -92,7 +92,7 @@
</div> </div>
</div> </div>
<div style="margin: auto 0"> <div style="margin: auto 0">
<el-button style="background-color: #25bf82; color: #ffffff; border-radius: 11px; padding: 20px; font-size: 18px"> 查看详情 </el-button> <el-button class="detailBtn" @click="goDetail(item.id)"> 查看详情 </el-button>
</div> </div>
</div> </div>
</el-card> </el-card>
@ -104,8 +104,8 @@
<script setup> <script setup>
import { ref } from 'vue'; import { ref } from 'vue';
import common from '../components/common.vue'; import common from '../components/common.vue';
import { getAssetsFile } from '../../../utils/index.js'; import { getAssetsFile } from '@/utils/index.js';
import { useRoute, useRouter } from 'vue-router';
/* --------------- data --------------- */ /* --------------- data --------------- */
// #region // #region
const chooseMoney = ref(0); const chooseMoney = ref(0);
@ -113,6 +113,8 @@ const chooseDate = ref(0);
const chooseWay = ref(0); const chooseWay = ref(0);
const chooseUse = ref(0); const chooseUse = ref(0);
const chooseType = ref(0); const chooseType = ref(0);
const router = useRouter();
const route = useRoute();
const pagination = ref({ const pagination = ref({
total: 2, total: 2,
@ -178,6 +180,14 @@ const sortFunction = (type) => {};
const getList = () => { const getList = () => {
console.log('刷新数据'); console.log('刷新数据');
}; };
const goDetail = (id) => {
router.push({
path: '/sub-operation-service/finance/integratedSector/detail',
query: { id: id },
});
};
// #endregion // #endregion
</script> </script>
@ -245,4 +255,11 @@ const getList = () => {
height: 15px; height: 15px;
} }
} }
.detailBtn {
background-color: #25bf82;
color: #ffffff;
border-radius: 11px;
padding: 20px;
font-size: 18px;
}
</style> </style>

View File

@ -1,18 +1,46 @@
<template> <template>
<div></div> <div>
<common>
<template #main>
<el-card style="border-radius: 16px" :body-style="{ padding: 0 }">
<div style="padding: 20px">
<img :src="getAssetsFile(currentPic)" style="width: 100%" alt="" />
</div>
</el-card>
</template>
</common>
</div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue'; import { onMounted, ref } from 'vue';
import common from '../components/common.vue';
import { getAssetsFile } from '@/utils/index.js';
import { useRoute, useRouter } from 'vue-router';
/* --------------- data --------------- */ /* --------------- data --------------- */
// #region // #region
const router = useRouter();
const route = useRoute();
const id = route.query.id;
const currentPic = ref('images/finance/wydk.png');
// #endregion // #endregion
/* --------------- methods --------------- */ /* --------------- methods --------------- */
// #region // #region
onMounted(() => {
if (id) {
if (id == '1') {
currentPic.value = 'images/finance/wydk.png';
} else if (id == '2') {
currentPic.value = 'images/finance/wydk1.png';
}
}
});
// #endregion // #endregion
</script> </script>

View File

@ -17,13 +17,7 @@
</div> </div>
<span :class="n.isOpen ? 'active' : ''" class="item-title">{{ n.title }}</span> <span :class="n.isOpen ? 'active' : ''" class="item-title">{{ n.title }}</span>
<img v-if="n.children && n.isOpen" alt="" :src="getAssetsFile('images/smartFarm/closing.png')" class="isOpen" /> <img v-if="n.children && n.isOpen" alt="" :src="getAssetsFile('images/smartFarm/closing.png')" class="isOpen" />
<img <img v-if="n.children && !n.isOpen" alt="" :src="getAssetsFile('images/smartFarm/down_1@2x.png')" class="isOpen fz" />
v-if="n.children && !n.isOpen"
alt=""
:src="getAssetsFile('images/smartFarm/down_1@2x.png')"
class="isOpen fz"
@click.stop="openList(index)"
/>
</div> </div>
<div v-if="n.children && n.isOpen" class="item-children"> <div v-if="n.children && n.isOpen" class="item-children">
<div v-for="(item, indexC) in n.children" :key="indexC"> <div v-for="(item, indexC) in n.children" :key="indexC">