feat(订单): 添加预售商品提示功能

- 在订单提交组件中添加预售商品提示弹窗
- 新增预售商品备注接口调用
- 修改VIP购买提示文本,明确不包含论坛权益
- 调整开发环境API配置
This commit is contained in:
2026-03-24 18:46:08 +08:00
parent 2b208f5dd6
commit 03e031ac81
6 changed files with 977 additions and 707 deletions

View File

@@ -2,8 +2,9 @@ let baseUrl = "";
let socketUrl = "";
if (process.env.NODE_ENV === 'development') {
// 开发环境
baseUrl = "https://api.nuttyreading.com/"; //线上正式'
// baseUrl = "http://192.168.110.100:9200/pb/"; //张川川
// baseUrl = "https://testapi.nuttyreading.com/"; // 线上测试
// baseUrl = "https://api.nuttyreading.com/"; //线上正式'
baseUrl = "http://192.168.110.100:9200/pb/"; //张川川
} else if (process.env.NODE_ENV === 'production') {
// 生产环境11
baseUrl = "https://api.nuttyreading.com/"; //线上正式

View File

@@ -12,8 +12,8 @@
"src" : "图片路径"
}
],
"versionName" : "2.0.45",
"versionCode" : 2045,
"versionName" : "2.0.46",
"versionCode" : 2046,
"sassImplementationName" : "node-sass",
"app-plus" : {
"nvueCompiler" : "uni-app",

View File

@@ -519,6 +519,17 @@
</view>
</view>
</u-popup>
<u-modal
:show="presaleRemarkModalShow"
title="提示"
:content="presaleRemarkModalContent"
:showCancelButton="true"
confirmText="确定"
cancelText="取消"
@confirm="handlePresaleRemarkConfirm"
@cancel="handlePresaleRemarkCancel"
@close="handlePresaleRemarkCancel"
></u-modal>
</view>
</template>
@@ -616,6 +627,9 @@
orderModalShowInfo: {},
orderModalShow: false,
presaleRemarkModalShow: false,
presaleRemarkModalContent: "",
presaleRemarkModalResolve: null,
payType: 1,
freightNum: 0,
addressData: {
@@ -1350,6 +1364,62 @@
this.content = this.remark;
}
},
openPresaleRemarkModal(content) {
this.presaleRemarkModalContent = content;
this.presaleRemarkModalShow = true;
return new Promise((resolve) => {
this.presaleRemarkModalResolve = resolve;
});
},
handlePresaleRemarkConfirm() {
this.presaleRemarkModalShow = false;
if (this.presaleRemarkModalResolve) {
const resolve = this.presaleRemarkModalResolve;
this.presaleRemarkModalResolve = null;
resolve(true);
}
},
handlePresaleRemarkCancel() {
this.presaleRemarkModalShow = false;
if (this.presaleRemarkModalResolve) {
const resolve = this.presaleRemarkModalResolve;
this.presaleRemarkModalResolve = null;
resolve(false);
}
},
async checkPresaleRemark() {
if (this.pageType != "goods") {
return true;
}
const productIds = this.goodsDataList
.map((e) => e.productId)
.filter((id) => id)
.join(",");
if (!productIds || !this.urlList.presaleRemark) {
return true;
}
try {
const res = await this.$http.request({
url: `${this.urlList.presaleRemark}`,
method: "POST",
data: {
productIds,
},
header: {
"Content-Type": "application/json",
},
});
const remark =
res && typeof res.remark == "string" ? res.remark.trim() : "";
if (!remark) {
return true;
}
return await this.openPresaleRemarkModal(remark);
} catch (error) {
console.log("presaleRemark error:", error);
return true;
}
},
async goBuyJie() {
if (this.pageType == "vip") {
if (this.radioValue != "1") {
@@ -1457,6 +1527,11 @@
});
thisproduct = thisproduct.join(",");
}
const passPresaleRemark = await this.checkPresaleRemark();
if (!passPresaleRemark) {
this.buyingFlag = false;
return;
}
if (
this.historyOrderInfo &&
thisproduct == this.historyOrderInfo.product &&

View File

@@ -1308,7 +1308,7 @@
});
const joinedText = this.textList.join('/');
this.goBuyTitle = '购买'+joinedText+'VIP即可畅享更多专属权益';
this.goBuyTitle = '购买'+joinedText+'VIP即可畅享更多专属权益(不包含论坛)';
}
})
},

View File

@@ -132,6 +132,7 @@ export default {
list: "app/phone.do?getCourseDetail_new",
initPrepareOrder: "common/buyOrder/initPrepareOrder",
buyOrder: "book/buyOrder/placeOrder",
presaleRemark: "book/buyOrder/presaleRemark",
curriculumInfo: "app/phone.do?getCourseInfo",
detailInfo: "app/phoneDoctor.do?getTaiHuClassInfo_new",
userInfo: "common/user/getUserInfo",

View File

@@ -1,8 +1,12 @@
<template>
<view class="container">
<view
class="container commonPageBox"
style="background-color: #fff !important"
>
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<z-nav-bar title="吴门医述1111"></z-nav-bar>
<z-nav-bar title="吴门医述"></z-nav-bar>
<!-- <uni-search-bar @confirm="search" :focus="true" v-model="searchValue" @blur="blur" @focus="focus" @input="input"
@cancel="cancel" @clear="clear">
</uni-search-bar> -->
@@ -10,8 +14,13 @@
<view class="contentBox">
<!-- <scroll-view class="scroll-view_H oneCateList" scroll-x="true" scroll-left="0"> -->
<view class="oneCateList flexbox">
<text :class="[curOneCateIndex == index ? 'cur' : '']" @click="setOneCateIndex(item,index)"
v-for="(item, index) in oneCateList" :key="item.type">{{item.title}}</text>
<text
:class="[curOneCateIndex == index ? 'cur' : '']"
@click="setOneCateIndex(item, index)"
v-for="(item, index) in oneCateList"
:key="item.type"
>{{ item.title }}</text
>
</view>
<!-- <view class="search_box" v-if="oneCateList.length > 0">
<u-search @click="checkDisable" placeholder="请输入方剂名" @focus="focus" @clear="clear" v-model="searchValue"
@@ -28,70 +37,148 @@
</view>
</view> -->
<!-- </scroll-view> -->
<view v-show="!showSearchList">
<template v-if="!showSearchList">
<view class="grid twoCateList" v-if="twoCateList.length > 0">
<u-grid :col="3" border class="u-grid-list">
<u-grid-item v-for="(item, index) in twoCateList" :key="item.dictType"
@click="setTwoCateIndex(item, index)">
<view :class="['grid-text',curTwoCateIndex == index ? 'cur' : '']">{{item.dictValue}}</view>
</u-grid-item>
</u-grid>
<view
class="custom-grid"
:class="curOneCateIndex == 1 ? 'col-4' : 'col-3'"
>
<view
v-for="(item, index) in twoCateList"
:key="item.dictType"
class="grid-item"
@click="setTwoCateIndex(item, index)"
>
<view
:class="['grid-text', curTwoCateIndex == index ? 'cur' : '']"
>{{ item.dictValue }}
</view>
</view>
</view>
</view>
<view
:class="` titleList`"
:style="`height:calc(100% - ${scrollViewHeight * 2}rpx;`"
>
<scroll-view
scroll-y="true"
class="scroll-Y"
v-if="titleList.length > 0"
>
<template v-if="curOneCateIndex == 2 && curTwoCateIndex == 2">
<!-- 吴门缘起-吴门之徽 -->
<view class="titleList" v-if="curOneCateIndex == 2&&curTwoCateIndex == 2">
<u-grid :col="3" v-if="titleList.length > 0">
<u-grid-item v-for="(item, index) in titleList" :key="item.id" @click="previewImage(item.url)"
style="align-items: flex-start;">
<!-- <view :class="['titleItem']">{{item.name}}</view> -->
<img :src="item.url" alt="" class="wmzhimg" mode="aspectFit">
<u-grid :col="3">
<u-grid-item
class="scroll-view-item"
v-for="(item, index) in titleList"
:key="item.id"
@click="previewImage(item.url)"
style="align-items: flex-start"
>
<img
:src="item.url"
alt=""
class="wmzhimg"
mode="aspectFit"
/>
</u-grid-item>
</u-grid>
<u-divider v-else text="暂无数据哦~"></u-divider>
</view>
</template>
<template
v-else-if="
curOneCateIndex == 0 &&
(curTwoCateIndex == 0 || curTwoCateIndex == 2)
"
>
<common-list
@lower="onReachBottom1"
:pagination="pagination"
:dataList="titleList"
@hancleClick="gotoDetail"
label="title"
>
</common-list>
<!-- 学术贡献-学术思想和学术平台 -->
<view class="titleList" v-else-if="curOneCateIndex == 0&&(curTwoCateIndex == 0||curTwoCateIndex == 2)">
<u-grid :col="1" v-if="titleList.length > 0">
<u-grid-item v-for="(item, index) in titleList" :key="item.id" @click="gotoDetail(item)"
</template>
<template v-else-if="curOneCateIndex == 0 && curTwoCateIndex == 1">
<u-divider text="点击标签进入出版专著"></u-divider>
</template>
<template v-else-if="curOneCateIndex == 0 || curOneCateIndex == 2">
<common-list
@lower="onReachBottom1"
:dataList="titleList"
@hancleClick="gotoDetail"
label="name"
>
</common-list>
<!-- <u-grid :col="1">
<u-grid-item class="scroll-view-item " v-for="(item, index) in titleList" :key="item.id"
@click="gotoDetail(item)"
style="align-items: flex-start;border-bottom: 2px solid #fff;">
<view :class="['titleItem']">{{ item.name }}</view>
</u-grid-item>
</u-grid> -->
</template>
<template v-if="curOneCateIndex == 3">
<common-list
@lower="onReachBottom1"
:dataList="titleList"
@hancleClick="gotoDetail"
label="title"
>
</common-list>
<!-- <u-grid :col="1">
<scroll-view class="scroll-Y" scroll-y="true">
<u-grid-item class="scroll-view-item " v-for="(item, index) in titleList"
:key="item.id" @click="gotoDetail(item)"
style="align-items: flex-start;border-bottom: 2px solid #fff;">
<view :class="['titleItem']">{{ item.title }}</view>
</u-grid-item>
</u-grid>
</u-grid-item></scroll-view>
</u-grid> -->
</template>
<template v-if="curOneCateIndex == 1">
<view
class="scroll-view-item"
v-for="(item, index) in titleList"
:key="item.id"
@click="gotoDetail(item)"
style="
align-items: flex-start;
border-bottom: 2px solid #fff;
display: flex;
padding: 20rpx 0;
"
>
<view style="width: 280rpx; text-align: center">
<img
src=""
v-if="item.imageslist && item.imageslist.length == 0"
class="chImage"
/>
<img
:src="item.imageslist && item.imageslist[0]"
v-else
class="chImage"
/>
</view>
<view :class="['titleItem']">{{ item.name }}</view>
</view>
</template>
</scroll-view>
<u-divider v-else text="暂无数据哦~"></u-divider>
</view>
<!-- 学术贡献-出版专著 -->
<view class="titleList" v-else-if="curOneCateIndex == 0&&(curTwoCateIndex == 1)">
<u-divider text="点击标签进入出版专著"></u-divider>
</template>
</view>
<!-- 其他 -->
<view class="titleList" v-else>
<u-grid :col="1" v-if="titleList.length > 0&&(curOneCateIndex==0||curOneCateIndex==2)">
<u-grid-item v-for="(item, index) in titleList" :key="item.id" @click="gotoDetail(item)"
style="align-items: flex-start;border-bottom: 2px solid #fff;">
<view :class="['titleItem']">{{item.name}}</view>
</u-grid-item>
</u-grid>
<u-grid :col="1" v-if="titleList.length > 0&&curOneCateIndex==3">
<u-grid-item v-for="(item, index) in titleList" :key="item.id" @click="gotoDetail(item)"
style="align-items: flex-start;border-bottom: 2px solid #fff;">
<view :class="['titleItem']">{{item.title}}</view>
</u-grid-item>
</u-grid>
<view :col="1" v-if="titleList.length > 0&&curOneCateIndex==1">
<view v-for="(item, index) in titleList" :key="item.id" @click="gotoDetail(item)"
style="align-items: flex-start;border-bottom: 2px solid #fff;display: flex;padding: 20rpx 0;">
<view style="width: 280rpx;text-align: center;">
<img src="" v-if="item.imageslist&&item.imageslist.length==0" class="chImage">
<img :src="item.imageslist&&item.imageslist[0]" v-else class="chImage">
</view>
<view :class="['titleItem']">{{item.name}}</view>
</view>
</view>
<u-divider text="暂无数据哦~" v-if="titleList.length==0"></u-divider>
</view>
</view>
</view>
<!-- <view class="search_box flexbox" @click="">
<view class="search">
@@ -115,33 +202,34 @@
</view>
</u-modal> -->
<z-navigation></z-navigation>
</view>
</template>
<script>
import $http from '@/config/requestConfig.js';
import {
mapState
} from 'vuex';
import $http from "@/config/requestConfig.js";
import { mapState } from "vuex";
export default {
data() {
return {
playData: {},
searchValue: '',
oneCateList: [{
searchValue: "",
oneCateList: [
{
title: "学术贡献",
type: 'medicaldesBookType'
}, {
type: "medicaldesBookType",
},
{
title: "学术传承",
type: 'inheritType'
}, {
type: "inheritType",
},
{
title: "吴门缘起",
type: 'lightType'
type: "lightType",
// }, {
// title: "吴门纪实",
// type: 'recordType'
}], // 一级分类标题1
},
], // 一级分类标题1
twoCateList: [], // 二级分类标题
titleList: [], // 方剂标题
curOneCateIndex: 0, // 当前选中的一级分类
@@ -151,26 +239,26 @@
userMes: {}, // 用户信息
searchDisable: false, // 搜索不可用
limitShow: false,
limitTitle: '提示',
limitContent: ''
}
limitTitle: "提示",
limitContent: "",
scrollViewHeight: 0,
};
},
onLoad() {
this.getUserInfo()
this.getUserInfo();
// this.getCateList()
},
onHide() {
// this.showSearchList = false
// this.searchList = []
},
computed: {
...mapState(['userInfo']),
...mapState(["userInfo"]),
},
methods: {
// 检查是有权限使用搜索功能
checkDisable() {
console.log('点击了')
console.log("点击了");
},
// 显示无权限弹窗
// showNoRights() {
@@ -191,174 +279,183 @@
getUserInfo() {
// 用户详情
if (this.userInfo.id != undefined) {
this.$http
.post('book/user/info/' + this.userInfo.id)
.then(res => {
this.userMes = res.user
this.getCateList()
console.log(this.userMes, '呼呼')
this.$http.post("book/user/info/" + this.userInfo.id).then((res) => {
this.userMes = res.user;
this.getCateList();
console.log(this.userMes, "呼呼");
});
}
},
// 详情
gotoDetail(item) {
console.log('111', item)
console.log('this.curOneCateIndex', this.curOneCateIndex)
console.log('this.curTwoCateIndex', this.curTwoCateIndex)
console.log("111", item);
console.log("this.curOneCateIndex", this.curOneCateIndex);
console.log("this.curTwoCateIndex", this.curTwoCateIndex);
if (this.curOneCateIndex == 0) {
if(item.contentType == 2){
uni.navigateTo({
// url: '../bookShop/commodityDetail?id=' + item.id
url: './xueshuwebView?id=' + item.id
})
}else{
uni.navigateTo({
// url: '../bookShop/commodityDetail?id=' + item.id
url: './xueshugongxianDetail?id=' + item.id
})
}
return
url: "./xueshugongxianDetail?id=" + item.id,
});
return;
}
if (this.curOneCateIndex == 1) {
uni.navigateTo({
url: "./medicaldesDetail?id=" + item.id
})
return
url: "./medicaldesDetail?id=" + item.id,
});
return;
}
if (this.curOneCateIndex == 2) {
console.log('111', item)
console.log("111", item);
uni.navigateTo({
url: './video?title=' + item.name + '&src=' + item.url
})
return
url: "./video?title=" + item.name + "&src=" + item.url,
});
return;
}
if (this.curOneCateIndex == 3) {
console.log('111', item)
console.log("111", item);
uni.navigateTo({
url: "./recordDetail?id=" + item.id
})
return
url: "./recordDetail?id=" + item.id,
});
return;
}
},
// 获取名称
getTitles(dictType) {
console.log('dictType', dictType)
console.log("dictType", dictType);
if (this.curOneCateIndex == 0) {
if (dictType == 2) {
uni.navigateTo({
url: './zhuanzhuchuban'
})
return
url: "./zhuanzhuchuban",
});
return;
}
$http.request({
$http
.request({
url: "book/generalArticle/articleByPage",
method: "POST",
data: {
// loadAnimate: 'none', // 请求加载动画
"type": dictType==1?'1':'2',
"limit": 1000,
"current": 1,
type: dictType == 1 ? "1" : "2",
limit: 1000,
current: 1,
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
}).then(res => {
console.log(res, '内容获取成功')
if (res.code == 0 && res.result && res.result.records.length > 0) {
this.titleList = res.result.records
} else {
this.titleList = []
}
}).catch(e => {
this.titleList = []
console.log(e)
})
.then((res) => {
console.log(res, "内容获取成功");
if (res.code == 0 && res.result && res.result.records.length > 0) {
this.titleList = res.result.records;
} else {
this.titleList = [];
}
})
.catch((e) => {
this.titleList = [];
console.log(e);
});
}
if (this.curOneCateIndex == 1) {
$http.request({
$http
.request({
url: "book/medicaldes/inheritListByPage",
method: "POST",
data: {
// loadAnimate: 'none', // 请求加载动画
'dictType': dictType,
"limit": 1000,
"current": 1
dictType: dictType,
limit: 1000,
current: 1,
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
}).then(res => {
console.log(res, '内容获取成功')
})
.then((res) => {
console.log(res, "内容获取成功");
if (res.code == 0 && res.result.records.length > 0) {
this.titleList = res.result.records
this.titleList = res.result.records;
for (let i = 0; i < this.titleList.length; i++) {
this.titleList[i].imageslist = [];
this.titleList[i].imageslist = this.titleList[i].img.split(";");
}
} else {
this.titleList = []
this.titleList = [];
}
}).catch(e => {
this.titleList = []
console.log(e)
})
.catch((e) => {
this.titleList = [];
console.log(e);
});
}
if (this.curOneCateIndex == 2) {
$http.request({
$http
.request({
url: "book/medicaldes/lightListByType?type=" + dictType,
method: "POST",
data: {
// loadAnimate: 'none', // 请求加载动画
"limit": 1000,
"page": 1,
limit: 1000,
page: 1,
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
}).then(res => {
console.log(res, '内容获取成功')
if (res.code == 0 && res.result.length > 0) {
this.titleList = res.result
} else {
this.titleList = []
}
}).catch(e => {
this.titleList = []
console.log(e)
})
.then((res) => {
console.log(res, "内容获取成功");
if (res.code == 0 && res.result.length > 0) {
this.titleList = res.result;
} else {
this.titleList = [];
}
})
.catch((e) => {
this.titleList = [];
console.log(e);
});
}
if (this.curOneCateIndex == 3) {
$http.request({
$http
.request({
url: "book/medicaldes/recordByType?type=" + dictType,
method: "POST",
data: {
// loadAnimate: 'none', // 请求加载动画
"limit": 1000,
"page": 1,
limit: 1000,
page: 1,
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
}).then(res => {
console.log(res, '内容获取成功')
if (res.code == 0 && res.result.length > 0) {
this.titleList = res.result
} else {
this.titleList = []
}
}).catch(e => {
this.titleList = []
console.log(e)
})
.then((res) => {
console.log(res, "内容获取成功");
if (res.code == 0 && res.result.length > 0) {
this.titleList = res.result;
} else {
this.titleList = [];
}
})
.catch((e) => {
this.titleList = [];
console.log(e);
});
}
},
setTwoCateIndex(item, index) {
let dictType = item.dictType
this.curTwoCateIndex = index
this.getTitles(dictType)
let dictType = item.dictType;
this.curTwoCateIndex = index;
this.getTitles(dictType);
},
setOneCateIndex(item, index) {
async setOneCateIndex(item, index) {
console.log(index, 99999);
var that = this;
// if(this.userMes.tgdzPower == 0){
// let that = this
// uni.showModal({
@@ -379,86 +476,132 @@
// })
// return
// }
let type = item.type
this.curOneCateIndex = index
this.curTwoCateIndex = 0
this.searchValue = ''
this.searchList = []
this.showSearchList = false
let type = item.type;
this.curOneCateIndex = index;
this.curTwoCateIndex = 0;
this.searchValue = "";
this.searchList = [];
this.showSearchList = false;
// if (index != 2) {
this.getTowCateList(type)
await this.getTowCateList(type);
// uni.createSelectorQuery().select('.oneCateList').boundingClientRect(function (rect) {
// var height = rect.height
// console.log('元素高度:',);
// }).exec();
// } else {
// this.getJFList(dictType)
// }
},
getTowCateList(type) {
$http.request({
async getTowCateList(type) {
var that = this;
$http
.request({
url: "book/medicaldes/typeList?label=" + type,
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
loadAnimate: 'none', // 请求加载动画
loadAnimate: "none", // 请求加载动画
// 'categoryId': id
},
// header: { //默认 无 说明:请求头
// 'Content-Type': 'application/json'
// },
}).then(res => {
console.log(res, '二级分类获取成功')
})
.then((res) => {
console.log(res, "二级分类获取成功");
if (res.code == 0 && res.result.length >= 0) {
this.twoCateList = res.result
this.twoCateList = res.result;
if (this.curOneCateIndex == 0) {
this.twoCateList = [{
'dictType': "1",
"dictValue": "学术思想"
}, {
'dictType': "2",
"dictValue": "出版专著"
}, {
'dictType': "3",
"dictValue": "学术平台"
}]
this.twoCateList = [
{
dictType: "1",
dictValue: "学术思想",
},
{
dictType: "2",
dictValue: "出版专著",
},
{
dictType: "3",
dictValue: "学术平台",
},
];
}
if (this.curOneCateIndex == 2) {
this.twoCateList = [{
'dictType': "1",
"dictValue": "吴门之歌"
}, {
'dictType': "2",
"dictValue": "巴山夜语"
}, {
'dictType': "3",
"dictValue": "吴门之徽"
}]
this.twoCateList = [
{
dictType: "1",
dictValue: "吴门之歌",
},
{
dictType: "2",
dictValue: "巴山夜语",
},
{
dictType: "3",
dictValue: "吴门之徽",
},
];
}
if (this.curOneCateIndex == 3) {
this.twoCateList = [{
'dictType': "1",
"dictValue": "学术贡献"
}, {
'dictType': "2",
"dictValue": "抗疫纪实"
}, {
'dictType': "3",
"dictValue": "吴门公益"
}]
this.twoCateList = [
{
dictType: "1",
dictValue: "学术贡献",
},
{
dictType: "2",
dictValue: "抗疫纪实",
},
{
dictType: "3",
dictValue: "吴门公益",
},
];
}
this.getTitles(this.twoCateList[0].dictType)
} else {
this.twoCateList = []
this.titleList = []
}
}).catch(e => {
this.twoCateList = []
this.titleList = []
console.log(e)
this.getTitles(this.twoCateList[0].dictType);
this.$nextTick(async () => {
// await uni.createSelectorQuery().select('.uni-tabbar').boundingClientRect(function (rect) {
// console.log(rect.height, '3333')
// // var height = 42 + rect.height + 10;
// // that.scrollViewHeight = height;
// // console.log(that.scrollViewHeight, '111111')
// // that.$forceUpdate()
// // console.log('元素高度2', height);
// }).exec();
await uni
.createSelectorQuery()
.select(".cateList")
.boundingClientRect(function (rect) {
console.log(rect.height, "22222");
var height = 42 + rect.height + 20;
that.scrollViewHeight = height;
console.log(that.scrollViewHeight, "111111");
that.$forceUpdate();
console.log("元素高度2", height);
})
.exec();
});
} else {
this.twoCateList = [];
this.titleList = [];
}
})
.catch((e) => {
this.twoCateList = [];
this.titleList = [];
console.log(e);
});
},
transformData(inputData) {
const result = {};
inputData.forEach(item => {
const {
letter
} = item;
inputData.forEach((item) => {
const { letter } = item;
if (!result[letter]) {
result[letter] = [];
}
@@ -494,9 +637,9 @@
// })
// },
getCateList(id) {
id ? '' : id = 0
this.twoCateList = []
this.curTwoCateIndex = 0
id ? "" : (id = 0);
this.twoCateList = [];
this.curTwoCateIndex = 0;
// 0为获取顶级分类其他为搜索下级分类目前的逻辑顶级是写死的所以可能只会涉及到搜索第二级
// $http.request({
// url: "book/prescript/prescriptCategoryList",
@@ -512,7 +655,7 @@
// console.log(res, '脉穴分类获取成功')
// if (res.code == 0 && res.list.length > 0) {
// this.oneCateList = res.list
this.getTowCateList(this.oneCateList[0].type)
this.getTowCateList(this.oneCateList[0].type);
// } else {
// this.oneCateList = []
// }
@@ -524,15 +667,15 @@
// 放大图片
previewImage(url) {
console.log(url)
console.log(url);
uni.previewImage({
urls: [url],
longPressActions: {
itemList: ['很抱歉,暂不支持保存图片到本地'],
itemList: ["很抱歉,暂不支持保存图片到本地"],
success: function (res) {
// console.log(res,'+++++')
}
}
},
},
});
},
// getSearch() {
@@ -623,13 +766,46 @@
plus.key.hideSoftKeybord();
// #endif
},
components: {
},
}
components: {},
};
</script>
<style lang="scss" scoped>
.u-grid-list {
// height: 40rpx;
}
.custom-grid {
display: flex;
flex-wrap: wrap;
// border: 1px solid #dadbde;
// border-bottom: 0;
&.col-3 {
.grid-item {
min-width: 33.33%;
flex: 1;
}
}
&.col-4 {
.grid-item {
min-width: 25%;
flex: 1;
}
}
.grid-item {
// border-right: 1px solid #dadbde;
// border-bottom: 1px solid #dadbde;
padding: 10rpx 0;
text-align: center;
font-size: 30rpx;
cursor: pointer;
box-sizing: border-box;
}
}
.searchList {
.item {
font-size: 28rpx;
@@ -645,15 +821,18 @@
}
.contentBox {
height: auto;
height: calc(100% - 50px);
.oneCateList {
padding: 10rpx;
box-sizing: border-box;
justify-content: space-between;
text {
text-align: center;
display: inline-block;
width: 32%;
padding: 20rpx 0;
padding: 16rpx 0;
font-size: 34rpx;
border-radius: 10rpx;
}
@@ -661,15 +840,16 @@
.cur {
background-color: #55aaff;
color: #fff;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
}
.twoCateList {
font-size: 28rpx;
font-size: 30rpx;
margin-top: 20rpx;
.grid-text {
padding: 30rpx 20rpx;
padding: 10rpx 0rpx;
text-align: center;
}
@@ -687,19 +867,11 @@
border-radius: 10rpx;
background-color: #f8f9fa;
.titleItem {
padding: 20rpx 10rpx;
}
.JFtitleItem {
background-color: #ffffff;
padding: 20rpx 10rpx;
width: 100%;
border-bottom: 0.5px solid #f8f9fa;
&:last-child {
border-bottom: 0;
}
}
.wmzhimg {
@@ -709,13 +881,6 @@
}
}
.container {
padding: 10rpx;
min-height: 100vh;
background-color: #fff;
}
.search_box {
margin: 0 auto;
overflow: hidden;
@@ -733,17 +898,16 @@
padding: 0upx 40upx;
background-color: #fff;
border-radius: 20upx;
box-shadow: 0 0px 10px 1px #54a96633;
box-shadow: 0 0px 10px 1px #3ab3ae33;
}
.prompt {
color: #838383;
font-size: 24rpx;
}
.icon_search {
background-image: url('@/static/icon/map_ic_search.png');
background-image: url("@/static/icon/map_ic_search.png");
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
@@ -770,7 +934,36 @@
height: 100rpx;
}
.android-bottom-space {
height: 120rpx;
.scroll-Y {
height: 100%;
}
.scroll-view_H {
white-space: nowrap;
width: 100%;
}
.scroll-view-item {
// height: 300rpx;
// line-height: 300rpx;
// text-align: center;
// font-size: 36rpx;
}
.scroll-view-item_H {
display: inline-block;
width: 100%;
// height: 300rpx;
// line-height: 300rpx;
// text-align: center;
// font-size: 36rpx;
}
.titleList {
height: 100%;
}
.titleList2 {
height: calc(100% - 170rpx);
}
</style>