Commit 5b6bbe4d authored by 陈宗胤(贵阳日报)'s avatar 陈宗胤(贵阳日报)
parents a10cb70c 34b2385c
import { request } from '../../utils/request'; import { request } from '../../utils/request';
// 获取指定类型轮播图 // 筑农专区分类
export function getSortList(data) { export function getSortList(data) {
return request({ return request({
url: `/sgyrdd/category/znList`, url: `/sgyrdd/category/znList`,
...@@ -9,6 +9,24 @@ export function getSortList(data) { ...@@ -9,6 +9,24 @@ export function getSortList(data) {
}); });
} }
// 预售板块轮播图
export function getPresaleList(data) {
return request({
url: `/sgyrdd/carousel/presaleList`,
method: 'GET',
data,
});
}
// 筑农严选分类
export function getStrictSelection(data) {
return request({
url: `/sgyrdd/category/getZnyx`,
method: 'GET',
data,
});
}
// 筑农严选首页-分类预售商品列表 // 筑农严选首页-分类预售商品列表
export function getPresaleCategory(data) { export function getPresaleCategory(data) {
return request({ return request({
...@@ -18,28 +36,28 @@ export function getPresaleCategory(data) { ...@@ -18,28 +36,28 @@ export function getPresaleCategory(data) {
}); });
} }
// 预售板块轮播图 // 筑农严选首页-好货特卖商品列表
export function getPresaleList(data) { export function getGoodSaleProdList(data) {
return request({ return request({
url: `/sgyrdd/carousel/presaleList`, url: `/sgyrdd/znprod/getGoodSaleProdList`,
method: 'GET', method: 'GET',
data, data,
}); });
} }
// 筑农严选分类 // 筑农严选首页-分类查询商品列表
export function getStrictSelection(data) { export function getPlatformProdList(data) {
return request({ return request({
url: `/sgyrdd/category/getZnyx`, url: `/sgyrdd/znprod/getPlatformProdList`,
method: 'GET', method: 'GET',
data, data,
}); });
} }
// 筑农预售分类 // 筑农首页-分类查询商品列表
export function getBuindingSort(data) { export function getPresaleProdList(data) {
return request({ return request({
url: `/sgyrdd/category/presaleList`, url: `/sgyrdd/znprod/getPresaleProdList`,
method: 'GET', method: 'GET',
data, data,
}); });
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<view class="hot-sale"> <view class="hot-sale">
<view class="top-title"> <view class="top-title">
<text class="left-title">好货热卖</text> <text class="left-title">好货热卖</text>
<text class="right-title">更多</text> <text class="right-title" @tap="toPresale">更多</text>
</view> </view>
<wd-icon <wd-icon
name="arrow-right" name="arrow-right"
......
...@@ -8,21 +8,16 @@ ...@@ -8,21 +8,16 @@
placeholderText="请输入要搜索的内容" placeholderText="请输入要搜索的内容"
></Search> ></Search>
<view> <view>
<img <wd-swiper
class="img1" :list="swiperList"
src="/static/assistingAgriculture/assets/bacImg.png" autoplay
style="width: 750rpx; height: 440rpx" v-model:current="current"
/> @click="handleClick"
<img @change="onChange"
class="img2" customClass="guiyang"
src="/static/assistingAgriculture/assets/bottom.png" height="220"
style="width: 750rpx; height: 32rpx" imageMode="aspectFill"
/> ></wd-swiper>
<img
class="img3"
src="/static/assistingAgriculture/assets/right.png"
style="width: 288rpx; height: 124rpx"
/>
</view> </view>
<view class="sort"> <view class="sort">
<view style="display: flex; flex-direction: row"> <view style="display: flex; flex-direction: row">
...@@ -62,11 +57,19 @@ ...@@ -62,11 +57,19 @@
import Search from '../../../components/assistingAgriculture/index/Search.vue'; import Search from '../../../components/assistingAgriculture/index/Search.vue';
import { import {
getPresaleCategory, getPresaleCategory,
getPresaleList,
getSortList, getSortList,
getStrictSelection, getStrictSelection,
} from '../../../api/assistingAgriculture/building'; } from '../../../api/assistingAgriculture/building';
import { onMounted } from 'vue'; import { onMounted, ref } from 'vue';
import { groupImgList } from '@/api';
const list = ref([]); const list = ref([]);
const sortList = ref([]);
const swiperList = ref([]);
const current = ref(0);
// 轮播图数据
let lunboData;
const detailList = ref([ const detailList = ref([
{ {
img: '/static/assistingAgriculture/assets/detailedMapOne.png', img: '/static/assistingAgriculture/assets/detailedMapOne.png',
...@@ -84,11 +87,11 @@ const detailList = ref([ ...@@ -84,11 +87,11 @@ const detailList = ref([
text: '麻辣鱼豆腐', text: '麻辣鱼豆腐',
}, },
]); ]);
const sortList = ref([]);
onMounted(async () => { onMounted(async () => {
getList(); getList();
getPresaleCategoryList(); getPresaleCategoryList();
getStrictSelectionList(); getStrictSelectionList();
getPresale();
}); });
// 获取筑农专区分类; // 获取筑农专区分类;
const getList = () => { const getList = () => {
...@@ -107,7 +110,6 @@ const getPresaleCategoryList = () => { ...@@ -107,7 +110,6 @@ const getPresaleCategoryList = () => {
item.commodityList = item.prodSimples; item.commodityList = item.prodSimples;
item.commodityList.forEach((item) => { item.commodityList.forEach((item) => {
item.commodityImg = import.meta.env.VITE_APP_IMG_URL + item.pic; item.commodityImg = import.meta.env.VITE_APP_IMG_URL + item.pic;
console.log(item.commodityImg, 111);
}); });
}); });
list.value = res.data; list.value = res.data;
...@@ -115,23 +117,40 @@ const getPresaleCategoryList = () => { ...@@ -115,23 +117,40 @@ const getPresaleCategoryList = () => {
}; };
// 筑农严选分类 // 筑农严选分类
const getStrictSelectionList = () => { const getStrictSelectionList = () => {
getStrictSelection().then((res) => { getStrictSelection().then((res) => {});
console.log(res, 333); };
// 预售板块轮播图
const getPresale = () => {
getPresaleList({ place: 'index_top' }).then((res) => {
console.log(res, 111);
res.data.forEach((item) => {
item.imgUrl = import.meta.env.VITE_APP_IMG_URL + item.imgUrl;
});
lunboData = res.data;
swiperList.value = res.data.map((item) => {
return item.imgUrl;
});
}); });
}; };
const onChange = (e) => {
// console.log(e);
};
function toBuilding(index) { function toBuilding(index) {
if (index === 0) { if (index === 0) {
// TODO: 跳转到筑农严选 // TODO: 跳转到筑农严选
xma.navigateTo({ xma.navigateTo({
url: '/pages/assistingAgriculture/index/building', url: '/pages/assistingAgriculture/index/building',
}); });
} else if (index === 1) {
console.log(111);
} else if (index === 2) { } else if (index === 2) {
// TODO: 跳转到乡村旅居 // TODO: 跳转到乡村旅居
xma.navigateTo({ xma.navigateTo({
url: '/pages/assistingAgriculture/RuralTravel/RuralTravel', url: '/pages/assistingAgriculture/RuralTravel/RuralTravel',
}); });
} else if (index === 3) {
console.log(222);
} }
console.log(index, 121);
} }
// 跳转详情页 // 跳转详情页
function toDetail() { function toDetail() {
...@@ -157,15 +176,6 @@ page { ...@@ -157,15 +176,6 @@ page {
.img1 { .img1 {
display: flex; display: flex;
} }
.img2 {
display: flex;
margin-top: -31rpx;
}
.img3 {
display: flex;
margin-top: -120rpx;
margin-left: 462rpx;
}
.bottom-image { .bottom-image {
position: relative; position: relative;
top: -40rpx; top: -40rpx;
...@@ -273,8 +283,8 @@ page { ...@@ -273,8 +283,8 @@ page {
color: #fa5151; color: #fa5151;
} }
::v-deep .icon { ::v-deep .icon {
width: 40rpx; width: 40 rpx;
height: 40rpx; height: 40 rpx;
margin-left: 40rpx; margin-left: 40 rpx;
} }
</style> </style>
...@@ -10,13 +10,14 @@ ...@@ -10,13 +10,14 @@
</view> </view>
<view class="nav"> <view class="nav">
<wd-swiper <wd-swiper
class="main-img"
:list="swiperList" :list="swiperList"
autoplay autoplay
v-model:current="current" v-model:current="current"
@click="handleClick" @click="handleClick"
@change="onChange" @change="onChange"
height="188" customClass="guiyang"
height="220"
imageMode="aspectFill"
></wd-swiper> ></wd-swiper>
</view> </view>
<view class="sort"> <view class="sort">
...@@ -143,12 +144,11 @@ ...@@ -143,12 +144,11 @@
<script setup> <script setup>
import Search from '../../../components/assistingAgriculture/index/Search.vue'; import Search from '../../../components/assistingAgriculture/index/Search.vue';
import { ref, onMounted } from 'vue'; import { ref, onMounted } from 'vue';
import { import { getPresaleList } from '../../../api/assistingAgriculture/building';
getBuindingSort, const swiperList = ref([]);
getPresaleList,
getStrictSelection,
} from '../../../api/assistingAgriculture/building';
const current = ref(0); const current = ref(0);
// 轮播图数据
let lunboData;
const light = ref(0); const light = ref(0);
const sortList = ref([ const sortList = ref([
{ img: '/static/assistingAgriculture/presale/bacImg.png', price: '25', text: '应季好物' }, { img: '/static/assistingAgriculture/presale/bacImg.png', price: '25', text: '应季好物' },
...@@ -157,11 +157,6 @@ const sortList = ref([ ...@@ -157,11 +157,6 @@ const sortList = ref([
{ img: '/static/assistingAgriculture/presale/img4.png', price: '25', text: '预选蔬菜' }, { img: '/static/assistingAgriculture/presale/img4.png', price: '25', text: '预选蔬菜' },
{ img: '/static/assistingAgriculture/presale/img5.png', price: '25', text: '心选水果' }, { img: '/static/assistingAgriculture/presale/img5.png', price: '25', text: '心选水果' },
]); ]);
const swiperList = ref([
'../../../static/assistingAgriculture/presale/img.png',
'../../../static/assistingAgriculture/presale/img.png',
'../../../static/assistingAgriculture/presale/img.png',
]);
const tabsData = ref([ const tabsData = ref([
{ img: '/static/assistingAgriculture/assets/mainPicture.png', text: '全部' }, { img: '/static/assistingAgriculture/assets/mainPicture.png', text: '全部' },
{ img: '/static/assistingAgriculture/assets/presale.png', text: '分类1' }, { img: '/static/assistingAgriculture/assets/presale.png', text: '分类1' },
...@@ -235,18 +230,18 @@ const goodList = ref([ ...@@ -235,18 +230,18 @@ const goodList = ref([
]); ]);
onMounted(async () => { onMounted(async () => {
getPresale(); getPresale();
getBuindingSortList();
}); });
// 预售板块轮播图 // 预售板块轮播图
const getPresale = () => { const getPresale = () => {
getPresaleList({ place: 3 }).then((res) => { getPresaleList({ place: 'presale' }).then((res) => {
console.log(res, 111); console.log(res, 111);
}); res.data.forEach((item) => {
}; item.imgUrl = import.meta.env.VITE_APP_IMG_URL + item.imgUrl;
// 筑农预售分类 });
const getBuindingSortList = () => { lunboData = res.data;
getBuindingSort({ level: 3 }).then((res) => { swiperList.value = res.data.map((item) => {
console.log(res, 222); return item.imgUrl;
});
}); });
}; };
// 左侧数据列表 // 左侧数据列表
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<view class="itemPicker"> <view class="itemPicker">
<view class="item01"> <view class="item01">
<text class="label">评分</text> <text class="label">评分</text>
<!-- 评分 -->
<wd-rate <wd-rate
prop="merchantServices" prop="merchantServices"
v-model="formdata.merchantServices" v-model="formdata.merchantServices"
...@@ -20,23 +21,25 @@ ...@@ -20,23 +21,25 @@
<text>{{ merList[formdata.merchantServices] }}</text> <text>{{ merList[formdata.merchantServices] }}</text>
</view> </view>
</view> </view>
<!-- 内容描述 -->
<wd-textarea <wd-textarea
prop="evaluation" prop="evaluation"
v-model="formdata.evaluation" v-model="formdata.evaluation"
placeholder="亲,分享您的看法,给其他人一个参考哦!" placeholder="亲,分享您的看法,给其他人一个参考哦!"
/> />
<text class="textarea">上传图片/视频</text> <text class="textarea">上传图片/视频</text>
<!-- 图片上传 -->
<view class="wdUpload" prop="images"> <view class="wdUpload" prop="images">
<wd-upload <wd-upload
multiple multiple
:action="action" :action="action"
@change="handleFile" @change="handleFile"
:file-list="formdata.images" :file-list="fList"
:before-remove="beforeRemove" :before-remove="beforeRemove"
:header="headers" :header="headers"
></wd-upload> ></wd-upload>
</view> </view>
<!-- 匿名评价 -->
<wd-cell title="匿名评价" prop="isAnonymous" class="itemSwichval"> <wd-cell title="匿名评价" prop="isAnonymous" class="itemSwichval">
<wd-switch <wd-switch
size="48rpx" size="48rpx"
...@@ -63,7 +66,8 @@ ...@@ -63,7 +66,8 @@
import Header from './components/Header/index.vue'; import Header from './components/Header/index.vue';
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
import { evaluation } from '@/api/order'; import { evaluation } from '@/api/order';
import { useToast } from 'wot-design-uni';
const uToast = useToast();
const form = ref(); const form = ref();
const token = getToken(); const token = getToken();
// 上传图片地址 // 上传图片地址
...@@ -74,7 +78,6 @@ const headers = ref(); ...@@ -74,7 +78,6 @@ const headers = ref();
*/ */
const shopname = ref<string>(''); const shopname = ref<string>('');
onLoad((options) => { onLoad((options) => {
console.log(options);
shopname.value = options?.shopName; shopname.value = options?.shopName;
formdata.orderNumber = options?.orderNumber; formdata.orderNumber = options?.orderNumber;
headers.value = { Authorization: 'Bearer ' + token }; headers.value = { Authorization: 'Bearer ' + token };
...@@ -83,18 +86,40 @@ onLoad((options) => { ...@@ -83,18 +86,40 @@ onLoad((options) => {
const formdata = reactive<{ const formdata = reactive<{
orderNumber: string; orderNumber: string;
evaluation: string; evaluation: string;
images: string; images: string[];
isAnonymous: number; isAnonymous: number;
descriptionMatches: number;
merchantServices: number; merchantServices: number;
}>({ }>({
orderNumber: '', orderNumber: '',
evaluation: '', evaluation: '',
images: '', images: [],
isAnonymous: 0, isAnonymous: 0,
descriptionMatches: 0,
merchantServices: 0, merchantServices: 0,
}); });
const rules = {};
/**
* 表单验证规则
*/
const rules = {
images: [
{
required: true,
message: '请上传图片',
validator: (value: any) => {
if (value) {
console.log('123456');
} else {
console.log('963852');
}
},
},
],
evaluation: [{ required: true, message: '请填写评价内容' }],
merchantServices: [{ required: true, message: '请选择商家服务评分' }],
};
/** /**
* 显示推荐菜 * 显示推荐菜
*/ */
...@@ -118,16 +143,15 @@ const handlemerchant = (item: { value: number }) => { ...@@ -118,16 +143,15 @@ const handlemerchant = (item: { value: number }) => {
/** /**
* 图片上传 * 图片上传
*/ */
const fileList = ref<any[]>([]); const fList = ref<any[]>([]);
function handleFile({ fileList: files }) { function handleFile({ fileList: files }) {
console.log('fileList', formdata.images); fList.value = files;
fileList.value = files;
} }
/** /**
* 图片地址处理 * 图片地址处理
*/ */
const proImage = () => { const proImage = () => {
const data = fileList.value.map((item) => { const data = fList.value.map((item) => {
return JSON.parse(item.response).data.url; return JSON.parse(item.response).data.url;
}); });
return data.join(','); return data.join(',');
...@@ -135,34 +159,41 @@ const proImage = () => { ...@@ -135,34 +159,41 @@ const proImage = () => {
const overshow = ref<boolean>(false); const overshow = ref<boolean>(false);
const resolves = ref(); const resolves = ref();
const beforeRemove = ({ file, fileList, resolve }) => { const beforeRemove = ({ resolve }) => {
overshow.value = true; overshow.value = true;
resolves.value = resolve; resolves.value = resolve;
}; };
const deleteImg = () => { const deleteImg = () => {
console.log(resolves.value(true)); resolves.value(true);
overshow.value = false; overshow.value = false;
}; };
/** /**
* Release提交 * Release提交
*/ */
const handleSubmit = async () => { const handleSubmit = async () => {
await evaluation({ await evaluation({
...formdata, ...formdata,
// images: proImage(), images: proImage(),
});
xma.showToast({
title: '评价成功',
duration: 1000,
icon: 'none',
}); });
uToast.success('评价成功');
xma.redirectTo({ xma.redirectTo({
url: `/pages/order/order?status=not_eval`, url: `/pages/order/order?status=not_eval`,
}); });
console.log(formdata);
}; };
// const handleSubmit = async () => {
// console.log(form.value.validate());
// form.value
// .validate()
// .then(({ valid, errors }) => {
// if (valid) {
// uToast.info({ msg: '校验通过' });
// }
// })
// .catch((error: any) => {
// console.log(error, 'error');
// });
// };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.container { .container {
...@@ -207,6 +238,9 @@ const handleSubmit = async () => { ...@@ -207,6 +238,9 @@ const handleSubmit = async () => {
margin-top: 25rpx; margin-top: 25rpx;
margin-bottom: 172rpx; margin-bottom: 172rpx;
padding: 20rpx; padding: 20rpx;
:deep(.wd-textarea) {
padding: 0 30rpx;
}
.itemPicker { .itemPicker {
display: flex; display: flex;
......
...@@ -5,16 +5,21 @@ ...@@ -5,16 +5,21 @@
<view class="content"> <view class="content">
<!-- 列表 --> <!-- 列表 -->
<view class="listcon"> <view class="listcon">
<view class="pubList" v-for="item in list" :key="item.id"> <view
class="pubList"
v-for="item in list"
:key="item.shopId"
@click="item.shopStatus != [1, 2, 3] ? shopGto(item.shopId) : ''"
>
<!-- 列表头部 --> <!-- 列表头部 -->
<view class="titlecon"> <view class="titlecon">
<span>{{ item.shopName }}</span> <span>{{ item.shopName }}</span>
<span>{{ item.shopStatus }}</span> <span>{{ shopStatus[item.shopStatus] }}</span>
</view> </view>
<!-- 列表详细 --> <!-- 列表详细 -->
<view class="delbox"> <view class="delbox">
<view class="listPic"> <view class="listPic">
<img :src="item.shopLogo" /> <img :src="itemUrl + item.shopLogo" />
</view> </view>
<view class="deltxt"> <view class="deltxt">
...@@ -38,13 +43,22 @@ ...@@ -38,13 +43,22 @@
</view> </view>
<view class="shbox" v-if="list.length > 0">审核被拒可点击修改重新提交</view> <view class="shbox" v-if="list.length > 0">审核被拒可点击修改重新提交</view>
</view> </view>
<view class="butCon"><button class="butXz" @click="shopGto">申请入驻</button></view> <view class="butCon"><button class="butXz" @click="shopGto()">申请入驻</button></view>
</view> </view>
</template> </template>
<script setup> <script setup>
import Header from '@/pages/order/components/Header/index.vue'; import Header from '@/pages/order/components/Header/index.vue';
import { shopList } from '@/api/storeEntry'; import { shopList } from '@/api/storeEntry';
const itemUrl = import.meta.env.VITE_APP_IMG_URL;
const shopStatus = reactive({
0: '停业中',
1: '营业中',
2: '平台下线',
3: '平台下线待审核',
4: '开店申请中',
5: '开店申请待审核',
});
const list = ref([]); const list = ref([]);
const getList = async () => { const getList = async () => {
const { data: res } = await shopList(); const { data: res } = await shopList();
...@@ -52,12 +66,12 @@ const getList = async () => { ...@@ -52,12 +66,12 @@ const getList = async () => {
if (res.length > 0) { if (res.length > 0) {
list.value = res; list.value = res;
} else { } else {
// shopGto(); shopGto();
} }
}; };
const shopGto = () => { const shopGto = (item) => {
xma.redirectTo({ xma.redirectTo({
url: `/pages/storeEntry/detail`, url: `/pages/storeEntry/detail${item ? `?id=${item}` : ''}`,
}); });
}; };
getList(); getList();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment