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 = ""; let socketUrl = "";
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
// 开发环境 // 开发环境
baseUrl = "https://api.nuttyreading.com/"; //线上正式' // baseUrl = "https://testapi.nuttyreading.com/"; // 线上测试
// baseUrl = "http://192.168.110.100:9200/pb/"; //张川川 // baseUrl = "https://api.nuttyreading.com/"; //线上正式'
baseUrl = "http://192.168.110.100:9200/pb/"; //张川川
} else if (process.env.NODE_ENV === 'production') { } else if (process.env.NODE_ENV === 'production') {
// 生产环境11 // 生产环境11
baseUrl = "https://api.nuttyreading.com/"; //线上正式 baseUrl = "https://api.nuttyreading.com/"; //线上正式

View File

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

View File

@@ -519,6 +519,17 @@
</view> </view>
</view> </view>
</u-popup> </u-popup>
<u-modal
:show="presaleRemarkModalShow"
title="提示"
:content="presaleRemarkModalContent"
:showCancelButton="true"
confirmText="确定"
cancelText="取消"
@confirm="handlePresaleRemarkConfirm"
@cancel="handlePresaleRemarkCancel"
@close="handlePresaleRemarkCancel"
></u-modal>
</view> </view>
</template> </template>
@@ -616,6 +627,9 @@
orderModalShowInfo: {}, orderModalShowInfo: {},
orderModalShow: false, orderModalShow: false,
presaleRemarkModalShow: false,
presaleRemarkModalContent: "",
presaleRemarkModalResolve: null,
payType: 1, payType: 1,
freightNum: 0, freightNum: 0,
addressData: { addressData: {
@@ -1350,6 +1364,62 @@
this.content = this.remark; 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() { async goBuyJie() {
if (this.pageType == "vip") { if (this.pageType == "vip") {
if (this.radioValue != "1") { if (this.radioValue != "1") {
@@ -1457,6 +1527,11 @@
}); });
thisproduct = thisproduct.join(","); thisproduct = thisproduct.join(",");
} }
const passPresaleRemark = await this.checkPresaleRemark();
if (!passPresaleRemark) {
this.buyingFlag = false;
return;
}
if ( if (
this.historyOrderInfo && this.historyOrderInfo &&
thisproduct == this.historyOrderInfo.product && thisproduct == this.historyOrderInfo.product &&

View File

@@ -1308,7 +1308,7 @@
}); });
const joinedText = this.textList.join('/'); 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", list: "app/phone.do?getCourseDetail_new",
initPrepareOrder: "common/buyOrder/initPrepareOrder", initPrepareOrder: "common/buyOrder/initPrepareOrder",
buyOrder: "book/buyOrder/placeOrder", buyOrder: "book/buyOrder/placeOrder",
presaleRemark: "book/buyOrder/presaleRemark",
curriculumInfo: "app/phone.do?getCourseInfo", curriculumInfo: "app/phone.do?getCourseInfo",
detailInfo: "app/phoneDoctor.do?getTaiHuClassInfo_new", detailInfo: "app/phoneDoctor.do?getTaiHuClassInfo_new",
userInfo: "common/user/getUserInfo", userInfo: "common/user/getUserInfo",

View File

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