4 Commits

Author SHA1 Message Date
84484bf597 feat: 新增预售书重复购买提示
在结算页面中新增预售备注的弹窗功能,用户在结算时可查看相关备注信息。更新manifest.json中的版本号至1.2.87。
2026-03-25 11:40:40 +08:00
7c0308b991 chore: 修改学术传承分类 2026-03-24 18:51:49 +08:00
211bbbb6c2 fix: 更新阳经穴位属性及版本号
修正阳经穴位属性中的错误描述,将"脾经(土)"改为"胃经(土)","心(火)"改为"小肠(火)","后匾(母穴)"改为"后溪(母穴)"。同时更新应用版本号至1.2.85。
2026-03-24 17:27:24 +08:00
e8b98a62cb docs: 统一收货相关术语为收件并更新版本号
将“收货地址”、“收货人”、“待发货”、“待收货”等术语统一修改为“收件地址”、“收件人”、“待发出”、“待收到”等更准确的表述
更新manifest.json中的版本号为1.2.84
2026-03-05 09:35:28 +08:00
26 changed files with 1035 additions and 751 deletions

View File

@@ -2,6 +2,7 @@ let baseUrl = "";
let socketUrl = "";
if (process.env.NODE_ENV === 'development') {
//开发环境
// 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') {

View File

@@ -13,8 +13,8 @@
}
],
"sassImplementationName" : "node-sass",
"versionName" : "1.2.83",
"versionCode" : 1283,
"versionName" : "1.2.87",
"versionCode" : 1287,
"app-plus" : {
"compatible" : {
"ignoreVersion" : true

View File

@@ -66,11 +66,11 @@
SunList: {
title: '阳经',
vlue: '属性',
attribute: ['阳经', '属性', '大肠经(金)', '经(土)', '(火)', '膀胱经(水)', '三焦经(冬至前相火,冬至后相水)', '胆经(木)'],
attribute: ['阳经', '属性', '大肠经(金)', '经(土)', '小肠(火)', '膀胱经(水)', '三焦经(冬至前相火,冬至后相水)', '胆经(木)'],
arry: [
['井', '金', '商阳(本穴)', '厉兑(子穴)', '少泽', '至阴(母穴)', '关冲(冬至后母穴)', '窍阴'],
['荥', '水', '二间(子穴)', '内庭(泄井当泄荥)', '前谷', '通谷(本穴)', '液门(冬至后本穴)', '侠溪(母穴)'],
['俞', '木', '三间', '陷谷', '后(母穴)', '束骨(子穴)', '中渚(冬至前回穴,冬至后子穴)', '临泣(本穴)'],
['俞', '木', '三间', '陷谷', '后(母穴)', '束骨(子穴)', '中渚(冬至前回穴,冬至后子穴)', '临泣(本穴)'],
['经', '火', '阳溪', '解溪(母穴)', '阳谷(本穴)', '昆仑', '支沟(冬至前本穴)', '阳辅(子穴)'],
['合', '土', '曲池(母穴)', '足三里(本穴)', '小海(子穴)', '委中(补井当补合)', '天井(冬至前子穴)', '阳陵泉'],
['原', '', '合谷', '冲阳', '腕骨', '京骨', '阳池', '丘墟'],

View File

@@ -34,7 +34,7 @@
<view>1.2 您通过我们的服务进行通讯的信息例如曾通讯的账号</view>
<view>1.3 您通过我们的服务分享的内容所包含的信息元数据例如拍摄或上传的共享照片或录像的日期时间或地点等</view>
<view class="dp_con2">2位置信息指您开启设备定位功能并使用我们基于位置提供的相关服务时收集的有关您位置的信息包括</view>
<view>2.1 您通过具有定位功能的移动设备使用我们的服务时通过GPS或WiFi等方式收集的您的地理位置信息用于 健康超市收 提供位置信息</view>
<view>2.1 您通过具有定位功能的移动设备使用我们的服务时通过GPS或WiFi等方式收集的您的地理位置信息用于 健康超市收 提供位置信息</view>
<view>
2.2 您或其他用户提供的包含您所处地理位置的实时信息例如您提供的账户信息中包含的您所在地区信息您上传的显示您当前或曾经所处地理位置的共享信息您或其他人共享的照片包含的地理标记信息
</view>

View File

@@ -9,7 +9,7 @@
<view class="sl_tit">
<text class="bok_name">
{{item.productName}}
<span v-if="item.productStock==0" style="color: #aaa;font-size:26rpx;"></span>
<span v-if="item.productStock==0" style="color: #aaa;font-size:26rpx;">库存</span>
</text>
</view>
<view class="sl_ric">

View File

@@ -20,7 +20,7 @@
</view>
<view class="commodityyName">
{{productInfo.productName}}
<span v-if="productInfo.productStock==0" style="color: #aaa;font-size:26rpx;"></span>
<span v-if="productInfo.productStock==0" style="color: #aaa;font-size:26rpx;">库存</span>
<view><text class="SoldNumber">已售<span>{{productInfo.sumSales}}</span></text></view>
</view>
<view class="contentButton">

View File

@@ -127,7 +127,7 @@
<span
v-if="productInfo.productStock == 0"
style="color: #aaa; font-size: 28rpx"
>(无</span
>(无库存</span
>
<view
style="

View File

@@ -104,9 +104,9 @@
if (this.orderContet.orderStatus == 0) {
this.titleStat = '待支付'
} else if (this.orderContet.orderStatus == 1) {
this.titleStat = '待发'
this.titleStat = '待发'
} else if (this.orderContet.orderStatus == 2) {
this.titleStat = '待收'
this.titleStat = '待收'
} else if (this.orderContet.orderStatus == 3) {
this.titleStat = '已完成'
}

View File

@@ -27,8 +27,8 @@
<view class="orderItem">
<view class="" style="position: relative; height: 120rpx;">
<text class="orderState orderState0" v-if="orderContet.orderStatus==0">待支付</text>
<text class="orderState orderState1" v-if="orderContet.orderStatus==1">待发</text>
<text class="orderState orderState2" v-if="orderContet.orderStatus==2">待收</text>
<text class="orderState orderState1" v-if="orderContet.orderStatus==1">待发</text>
<text class="orderState orderState2" v-if="orderContet.orderStatus==2">待收</text>
<text class="orderState orderState3" v-if="orderContet.orderStatus==3">已完成</text>
<text class="orderState orderState5" v-if="orderContet.orderStatus==5">已超时</text>
</view>
@@ -128,7 +128,7 @@
<text style="font-size: 24rpx;color: #666;">{{orderContet.paymentDate}}</text>
</view>
<!-- <view class="orderReal" v-if="orderContet.orderStatus >= 2 && orderContet.orderStatus != 5">
<span style="color: #666;margin-right: 10rpx;float: left;">时间 : </span>
<span style="color: #666;margin-right: 10rpx;float: left;">时间 : </span>
<text style="font-size: 24rpx;color: #666;">{{orderContet.shippingTime}}</text>
</view> -->
<view class="orderOper">
@@ -138,7 +138,7 @@
</u-button> -->
<view v-if="orderContet.orderStatus==2 && sheetList.length > 0 && orderContet.orderStatus != 5" class="opFix" @click="seeExpressDetail(orderContet)">查看物流</view>
<view v-if="orderContet.orderStatus==2" class="opCan" @click="OverOrder" >确认收</view>
<view v-if="orderContet.orderStatus==2" class="opCan" @click="OverOrder" >确认收</view>
<view v-if="orderContet.orderStatus==0" class="opFix" @click="canceOrder">取消订单</view>
<view v-if="orderContet.orderStatus==0" class="opCan" @click="goPay(orderContet)">去支付</view>
@@ -208,7 +208,7 @@
<h4 style="margin-bottom: 10rpx;">包裹 {{index+1}}</h4>
<view class="">运单号{{item.expressOrderSn}}
<u-tag @click="copyData(item.expressOrderSn)" size="mini" class="copyCode" text="复制单号" plain type="success" /></view>
<view class="">时间{{item.createTime}}</view>
<view class="">时间{{item.createTime}}</view>
</view>
</view>
@@ -565,10 +565,10 @@
url: "./deliverDetail?objId=" + item
})
},
OverOrder() { // 确认收
OverOrder() { // 确认收
uni.showModal({
title: '提示',
content: '确认收',
content: '确认收',
success: res => {
let data = {
orderId: this.orderID,
@@ -587,7 +587,7 @@
if (res.code == 0) {
uni.hideLoading()
uni.showToast({
title: '收货成功',
title: '确认收到成功',
icon: 'success',
duration: 1000
})
@@ -624,9 +624,9 @@
if (this.orderContet.orderStatus == 0) {
this.titleStat = '待支付'
} else if (this.orderContet.orderStatus == 1) {
this.titleStat = '待发'
this.titleStat = '待发'
} else if (this.orderContet.orderStatus == 2) {
this.titleStat = '待收'
this.titleStat = '待收'
} else if (this.orderContet.orderStatus == 3) {
this.titleStat = '已完成'
}

View File

@@ -13,8 +13,8 @@
<view class="orderList" v-if="orderList.length > 0">
<view class="orderItem" v-for="(ifex,inten) in orderList" @click="goOrdiCont(ifex)" :key="inten">
<text class="orderState orderState0" v-if="ifex.orderStatus==0">待支付</text>
<text class="orderState orderState1" v-if="ifex.orderStatus==1">待发</text>
<text class="orderState orderState2" v-if="ifex.orderStatus==2">待收</text>
<text class="orderState orderState1" v-if="ifex.orderStatus==1">待发</text>
<text class="orderState orderState2" v-if="ifex.orderStatus==2">待收</text>
<text class="orderState orderState3" v-if="ifex.orderStatus==3">已完成</text>
<text class="orderState orderState5" v-if="ifex.orderStatus==5">已超时</text>
<view class="guoqi flexbox" v-if="ifex.orderStatus==0 && ifex.overTime > 0">
@@ -122,10 +122,10 @@
name: '待支付',
value: 0
}, {
name: '待发',
name: '待发',
value: 1
}, {
name: '待收',
name: '待收',
value: 2
}, {
name: '已完成',

View File

@@ -26,8 +26,8 @@
<view class="mainContent">
<view class="item" @click.stop="toDetail(item)">
<view class="orderstatus" v-show="item.orderStatus == 0">未付款</view>
<view class="orderstatus" v-show="item.orderStatus == 1">待发</view>
<view class="orderstatus" v-show="item.orderStatus == 2">已发货</view>
<view class="orderstatus" v-show="item.orderStatus == 1">待发</view>
<view class="orderstatus" v-show="item.orderStatus == 2">待收到</view>
<view class="orderstatus" v-show="item.orderStatus == 3">交易成功</view>
<view class="orderstatus" v-show="item.orderStatus == 4">交易失败</view>
<view class="orderstatus" v-show="item.orderStatus == 5">过期</view>
@@ -90,9 +90,9 @@
<span class="right flexbox opbtns">
<view class="orderstatusbtn" v-if="item.orderStatus == 0" @click.stop="canceOrder(item)">取消订单</view>
<view class="orderstatusbtn" v-if="item.orderStatus == 0" @click.stop="goPay(item)">付款</view>
<!-- <view class="orderstatusbtn alertDeliver" v-if="item.orderStatus == 1">催发</view> -->
<!-- <view class="orderstatusbtn alertDeliver" v-if="item.orderStatus == 1">催发</view> -->
<view class="orderstatusbtn" v-if="item.orderStatus == 2" @click.stop="seeExpressDetail(item)">查看物流</view>
<view class="orderstatusbtn" v-if="item.orderStatus == 2" @click.stop="OverOrder(item)">确认收</view>
<view class="orderstatusbtn" v-if="item.orderStatus == 2" @click.stop="OverOrder(item)">确认收</view>
<!-- <view class="orderstatusbtn" v-if="item.orderStatus == 3">申请售后</view> -->
<!-- -->
<!-- <view class="orderstatusbtn" v-if=" userRecordid == null && item.come == 0" @click.stop="pingji(item.id)">评价</view> -->
@@ -206,10 +206,10 @@ import { data } from 'jquery';
name: '待付款',
value: 0
}, {
name: '待发',
name: '待发',
value: 1
}, {
name: '待收',
name: '待收',
value: 2
}, {
name: '已完成',
@@ -317,7 +317,7 @@ import { data } from 'jquery';
var params = {
"userId": this.userInfo.id,
"orderStatus":flag,//传null为全部订单状态 0-未付款 1-待发 2-已发货 3-交易成功 4-交易失败 5-过期
"orderStatus":flag,//传null为全部订单状态 0-未付款 1-待发 2-待收到 3-交易成功 4-交易失败 5-过期
"limit": 10,
"page": this.newestpage
}
@@ -511,11 +511,11 @@ import { data } from 'jquery';
})
// }
},
// 确认收
// 确认收
OverOrder(item) {
uni.showModal({
title: '提示',
content: '确认收',
content: '确认收',
success: res => {
let data = {
orderId: item.orderId,
@@ -534,7 +534,7 @@ import { data } from 'jquery';
if (res.code == 0) {
uni.hideLoading()
uni.showToast({
title: '收货成功',
title: '确认收到成功',
icon: 'success',
duration: 1000
})

View File

@@ -189,10 +189,10 @@ import { data } from 'jquery';
name: '待付款',
value: 2
}, {
name: '待发',
name: '待发',
value: 3
}, {
name: '待收',
name: '待收',
value: 4
}, {
name: '已完成',

View File

@@ -13,7 +13,7 @@
size="20"
style="display: inline-block; margin-right: 10rpx"
></u-icon>
请添加收地址
请添加收地址
</view>
<view
@@ -171,7 +171,7 @@
size="12"
style="display: inline-block; margin-right: 10rpx"
></u-icon>
注:如订单包含一种或多种预售书,预售书和现书需分开发(即需要收取多次快递首重费用);如多本书会按照实际重量,收取快递续重费用。
注:如订单包含一种或多种预售书,预售书和现书需分开发(即需要收取多次快递首重费用);如多本书会按照实际重量,收取快递续重费用。
</view>
<view class="yq_yunfei" v-if="districtAmount > 0" style="color: #202020">
@@ -374,6 +374,18 @@
</view>
</u-popup>
<u-modal
:show="presaleRemarkModalShow"
title="提示"
:content="presaleRemarkModalContent"
:showCancelButton="true"
confirmText="继续购买"
cancelText="取消"
@confirm="handlePresaleRemarkConfirm"
@cancel="handlePresaleRemarkCancel"
@close="handlePresaleRemarkCancel"
></u-modal>
<music-play :playData="playData"></music-play>
</view>
</template>
@@ -413,6 +425,9 @@ export default {
realPrice: 0,
payType: 1,
nowClick: true,
presaleRemarkModalShow: false,
presaleRemarkModalContent: "",
presaleRemarkModalResolve: null,
paylist: [
{
title: "支付宝",
@@ -556,6 +571,59 @@ export default {
}
},
// 获取优惠券列表
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() {
const productIds = this.cartList
.map((e) => e.productId)
.filter((id) => id)
.join(",");
if (!productIds) {
return true;
}
try {
const res = await $http.request({
url: "book/buyOrder/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;
}
},
getCourpe() {
let proId = "";
for (let i = 0; i < this.cartList.length; i++) {
@@ -894,7 +962,7 @@ export default {
this.youhuiShow = false;
},
// 提交结算
goBuyJie() {
async goBuyJie() {
if (this.addressList.length == 0) {
this.dizhiShow = true; // 如果没有地址信息
return;
@@ -923,11 +991,16 @@ export default {
quantity: this.cartList[i].productAmount,
});
}
const passPresaleRemark = await this.checkPresaleRemark();
if (!passPresaleRemark) {
this.nowClick = true;
return;
}
let data = {
buyType: this.typeId, //0- 商品页直接下单 1- 购物车结算
userId: this.userInfo.id, //下单人ID
shippingUser: this.adressMoRen.consigneeName, //收人姓名
userPhone: this.adressMoRen.consigneePhone, //收人手机号
shippingUser: this.adressMoRen.consigneeName, //收人姓名
userPhone: this.adressMoRen.consigneePhone, //收人手机号
// province: this.adressMoRen.areaidpathtext.split(' ')[0], //省
// city: this.adressMoRen.areaidpathtext.split(' ')[1], //市

View File

@@ -5,7 +5,7 @@
<z-nav-bar title="商品结算"></z-nav-bar>
<view v-if="adressMoRen.username==undefined" class="addShouhuo" @click="toAddress()">
<u-icon name="plus" size="20" style="display: inline-block;margin-right: 10rpx;"></u-icon>
请添加收地址
请添加收地址
</view>
<view class="adDefault" @click="dizhiShow = true" v-if="adressMoRen.username!=undefined">
<view class="defalTop">
@@ -606,8 +606,8 @@
let data = {
buyType: this.typeId, //0- 商品页直接下单 1- 购物车结算
userId: this.userInfo.id, //下单人ID
shippingUser: this.adressMoRen.username, //收人姓名
userPhone: this.adressMoRen.userphone, //收人手机号
shippingUser: this.adressMoRen.username, //收人姓名
userPhone: this.adressMoRen.userphone, //收人手机号
province: this.adressMoRen.areaidpathtext.split(' ')[0], //省
city: this.adressMoRen.areaidpathtext.split(' ')[1], //市
district: this.adressMoRen.areaidpathtext.split(' ')[2], //区

View File

@@ -59,10 +59,10 @@
v-if="orderContet.orderStatus == 0">待支付</text>
<text
class="orderState orderState1"
v-if="orderContet.orderStatus == 1">待发</text>
v-if="orderContet.orderStatus == 1">待发</text>
<text
class="orderState orderState2"
v-if="orderContet.orderStatus == 2">待收</text>
v-if="orderContet.orderStatus == 2">待收</text>
<text
class="orderState orderState3"
v-if="orderContet.orderStatus == 3">已完成</text>
@@ -325,7 +325,7 @@
plain
type="success"
/></view>
<view class="">发时间:{{ item.createTime }}</view>
<view class="">发时间:{{ item.createTime }}</view>
</view>
</view>
</view>
@@ -421,7 +421,7 @@ export default {
this.goPay(this.orderContet);
} else if (data.text == "取消订单") {
this.canceOrder();
} else if (data.text == "确认收") {
} else if (data.text == "确认收") {
this.OverOrder();
} else if (data.text == "查看物流") {
this.seeExpressDetail(this.orderContet);
@@ -531,10 +531,10 @@ export default {
});
},
OverOrder() {
// 确认收
// 确认收
uni.showModal({
title: "提示",
content: "确认收",
content: "确认收",
success: (res) => {
let data = {
orderId: this.orderID,
@@ -554,7 +554,7 @@ export default {
if (res.code == 0) {
uni.hideLoading();
uni.showToast({
title: "收货成功",
title: "确认收到成功",
icon: "success",
duration: 1000,
});
@@ -604,7 +604,7 @@ export default {
if (this.orderContet.orderStatus == 2) {
this.customButton.push({
width: "160rpx",
text: "确认收",
text: "确认收",
color: "#fff",
});
@@ -626,9 +626,9 @@ export default {
if (this.orderContet.orderStatus == 0) {
this.titleStat = "待支付";
} else if (this.orderContet.orderStatus == 1) {
this.titleStat = "待发";
this.titleStat = "待发";
} else if (this.orderContet.orderStatus == 2) {
this.titleStat = "待收";
this.titleStat = "待收";
} else if (this.orderContet.orderStatus == 3) {
this.titleStat = "已完成";
}

View File

@@ -1,5 +1,9 @@
<template>
<view class="container">
<view
class="container commonPageBox"
style="background-color: #fff !important"
>
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<z-nav-bar title="吴门医述"></z-nav-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,69 +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 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-item>
</u-grid>
<u-divider v-else text="暂无数据哦~"></u-divider>
</view>
<!-- 学术贡献-学术思想和学术平台 -->
<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)"
style="align-items: flex-start;border-bottom: 2px solid #fff;">
<view :class="['titleItem']">{{item.title}}</view>
</u-grid-item>
</u-grid>
<u-divider v-else text="暂无数据哦~"></u-divider>
</view>
<!-- 学术贡献-出版专著 -->
<view class="titleList" v-else-if="curOneCateIndex == 0&&(curTwoCateIndex == 1)">
<u-divider text="点击标签进入出版专著"></u-divider>
</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="` 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">
<!-- 吴门缘起-吴门之徽 -->
<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>
</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>
<!-- 学术贡献-学术思想和学术平台 -->
</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></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>
</template>
</view>
<!-- <view class="search_box flexbox" @click="">
<view class="search">
@@ -114,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, // 当前选中的一级分类
@@ -150,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() {
@@ -190,167 +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) {
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({
@@ -371,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] = [];
}
@@ -486,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",
@@ -504,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 = []
// }
@@ -516,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() {
@@ -615,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;
@@ -637,14 +821,18 @@
}
.contentBox {
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;
}
@@ -652,15 +840,16 @@
.cur {
background-color: #55aa7f;
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;
}
@@ -678,10 +867,6 @@
border-radius: 10rpx;
background-color: #f8f9fa;
.titleItem {
padding: 20rpx 10rpx;
}
.JFtitleItem {
background-color: #ffffff;
padding: 20rpx 10rpx;
@@ -696,13 +881,6 @@
}
}
.container {
padding: 10rpx;
height: 100vh;
background-color: #fff;
}
.search_box {
margin: 0 auto;
overflow: hidden;
@@ -720,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;
@@ -756,4 +933,37 @@
.chImage {
height: 100rpx;
}
.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>

View File

@@ -227,9 +227,9 @@
if (this.orderDetail.orderStatus == 0) {
this.titleStat = '待支付'
} else if (this.orderDetail.orderStatus == 1) {
this.titleStat = '待发'
this.titleStat = '待发'
} else if (this.orderDetail.orderStatus == 2) {
this.titleStat = '待收'
this.titleStat = '待收'
} else if (this.orderDetail.orderStatus == 3) {
this.titleStat = '已完成'
}

View File

@@ -279,7 +279,7 @@
let data = {
userId: that.userInfo.id, //下单人ID
userPhone: that.userInfo.tel, //收人手机号
userPhone: that.userInfo.tel, //收人手机号
paymentMethod: that.payType, //1支付宝2微信3ios内购
orderMoney: that.stepsVc.money * 1, //订单金额
districtMoney: 0, //优惠金额

View File

@@ -566,7 +566,7 @@ export default {
let that = this;
let data = {
userId: that.userInfo.id, //下单人ID
userPhone: that.userInfo.tel, //收人手机号
userPhone: that.userInfo.tel, //收人手机号
paymentMethod: that.payType, //2支付宝1微信3ios内购
orderMoney: that.stepsCj.money * 1, //订单金额
districtMoney: 0, //优惠金额

View File

@@ -350,7 +350,7 @@
let that = this
let data = {
userId: that.userInfo.id, //下单人ID
userPhone: that.userInfo.tel, //收人手机号
userPhone: that.userInfo.tel, //收人手机号
paymentMethod: that.payType, //2支付宝1微信3ios内购
orderMoney: that.stepsCj.money * 1, //订单金额
districtMoney: 0, //优惠金额

View File

@@ -33,7 +33,7 @@
</view>
<view class="addressFooter">
<view class="addAddress" @click="toAddress(0,0)">
+ 添加收地址
+ 添加收地址
</view>
</view>
<music-play :playData="playData"></music-play>

View File

@@ -176,7 +176,7 @@
</view>
<view class="commodityyName">
{{productInfo.productName}}
<span v-if="productInfo.productStock==0" style="color: #aaa;font-size:26rpx;"></span>
<span v-if="productInfo.productStock==0" style="color: #aaa;font-size:26rpx;">库存</span>
<view><text class="SoldNumber">已售<span
style="padding-left:10rpx;">{{productInfo.sumSales}}</span></text></view>
</view>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long