7 Commits

Author SHA1 Message Date
@fawn-nine
8c2cb8bc39 备份 2023-12-08 14:48:44 +08:00
@fawn-nine
716b3fce33 方剂检索页面ui 2023-11-10 13:58:57 +08:00
@fawn-nine
ca693e3a4d 首页的图标调整 2023-11-10 09:38:49 +08:00
@fawn-nine
346ec9d615 页面完善 2023-11-08 17:31:37 +08:00
@fawn-nine
b08bc52662 完善地址信息 2023-11-08 15:26:40 +08:00
@fawn-nine
f25a50e09d Merge branch 'xie_xuewei' 2023-11-08 13:37:23 +08:00
@fawn-nine
1065f5cbf6 穴位 2023-11-08 13:36:51 +08:00
16 changed files with 920 additions and 167 deletions

View File

@@ -11,8 +11,8 @@ Vue.prototype.$bgm = bgm
// Vue.prototype.$baseUrl = "http://59.110.212.44:9100/pb/"
Vue.prototype.$baseUrl = "https://api.nuttyreading.com/"
// 安卓安卓包下载地址
// Vue.prototype.$apkUrl = "https://www.nuttyreading.com/nuttyreading.apk"
Vue.prototype.$apkUrl = "https://www.nuttyreading.com/nuttyreading.apk"
// Vue.prototype.$apkUrl = "https://www.nuttyreading.com/nuttyreading.apk" // 本地地址
Vue.prototype.$apkUrl = "https://a.app.qq.com/o/simple.jsp?pkgname=com.cn.nuttyreading" // 应用宝
// uView组件库

View File

@@ -12,8 +12,8 @@
"src" : "图片路径"
}
],
"versionName" : "1.2.12",
"versionCode" : 1212,
"versionName" : "1.2.13",
"versionCode" : 1213,
"app-plus" : {
"compatible" : {
"ignoreVersion" : true

View File

@@ -508,6 +508,22 @@
"navigationBarTitleText" : "脉穴详情",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/prescription/prescription",
"style" :
{
"navigationBarTitleText" : "方药检索",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/prescription/prescriptionDetail",
"style" :
{
"navigationBarTitleText" : "方药详情",
"enablePullDownRefresh" : false
}
}
],
"globalStyle": {

View File

@@ -62,7 +62,7 @@
return {
playData: {},
searchValue: '',
oneCateList: [], // 一级分类标题
oneCateList: [], // 一级分类标题1
twoCateList: [], // 二级分类标题
titleList:[], // 穴位标题
curOneCateIndex:0, // 当前选中的一级分类

View File

@@ -8,7 +8,7 @@
:duration="duration">
<swiper-item v-for="(item, index) in acupointDetail.imageList" :key="index">
<view class="swiper-item">
<image :src="item" mode="aspectFit"></image>
<image :src="item" mode="aspectFit" @click="previewImage(item)"></image>
</view>
</swiper-item>
</swiper>
@@ -21,7 +21,7 @@
</view>
</uni-section>
<uni-section class="mb-10" titleFontSize="18px" title="别名" type="line">
<view class="item" v-if="acupointDetail.alias && acupointDetail.alias != ''">
<view class="item" v-if="acupointDetail.alias && acupointDetail.alias != ''" >
{{acupointDetail.alias}}
</view>
<view class="item" v-else>
@@ -30,20 +30,20 @@
</uni-section>
<uni-section class="mb-10" titleFontSize="18px" title="所属经络" type="line">
<view class="item">
{{acupointDetail.meridian}}
<view class="item" v-html="acupointDetail.meridian">
</view>
</uni-section>
<uni-section class="mb-10" titleFontSize="18px" title="定位" type="line">
<view class="item">
{{acupointDetail.position}}
<uni-section class="mb-10" titleFontSize="18px" title="定位" type="line" >
<view class="item" v-html="acupointDetail.position">
</view>
</uni-section>
<uni-section class="mb-10" titleFontSize="18px" title="解剖" type="line">
<view class="item" v-if="acupointDetail.anatomy && acupointDetail.anatomy != ''">
{{acupointDetail.anatomy}}
<view class="item" v-if="acupointDetail.anatomy && acupointDetail.anatomy != ''" v-html="acupointDetail.anatomy">
</view>
<view class="item" v-else>
暂无
@@ -51,14 +51,13 @@
</uni-section>
<uni-section class="mb-10" titleFontSize="18px" title="主治" type="line">
<view class="item">
{{acupointDetail.indication}}
<view class="item" v-html="acupointDetail.indication">
</view>
</uni-section>
<uni-section class="mb-10" titleFontSize="18px" title="配伍" type="line">
<view class="item" v-if="acupointDetail.compatibility && acupointDetail.compatibility != ''">
{{acupointDetail.compatibility}}
<view class="item" v-if="acupointDetail.compatibility && acupointDetail.compatibility != ''" v-html="acupointDetail.compatibility">
</view>
<view class="item" v-else>
暂无
@@ -66,8 +65,8 @@
</uni-section>
<uni-section class="mb-10" titleFontSize="18px" title="文献" type="line">
<view class="item" v-if="acupointDetail.literature && acupointDetail.literature != ''">
{{acupointDetail.literature}}
<view class="item" v-if="acupointDetail.literature && acupointDetail.literature != ''" v-html="acupointDetail.literature">
</view>
<view class="item" v-else>
暂无
@@ -105,6 +104,19 @@
this.getDetail()
},
methods: {
// 放大图片
previewImage(url) {
console.log(url)
uni.previewImage({
urls: [url],
longPressActions: {
itemList: ['很抱歉,暂不支持保存图片到本地'],
success: function(res) {
// console.log(res,'+++++')
}
}
});
},
// 穴位详情
getDetail() {
$http.request({
@@ -139,7 +151,7 @@
.mb-10{ margin-bottom: 10px;}
.content{font-size: 28rpx;}
.swiper-item{
image{margin: 0 auto; height:200rpx;}
image{margin: 0 auto; height:250rpx;}
}
.uni-margin-wrap{ margin-bottom: 20rpx; padding-top: 20rpx;

View File

@@ -661,7 +661,7 @@
.then(res => {
if (res.code == 0) {
console.log(res, '任务信息')
if (res.result != {}) {
if (res.result != {} && res.result) {
this.taskInfo = res.result
this.taskInfo.video != '' ? this.poster = this.taskInfo.video +
"?x-oss-process=video/snapshot,t_0,f_jpg" : ''
@@ -735,7 +735,7 @@
return
}
if (!this.taskInfo.id) {
if (this.taskInfo != null && !this.taskInfo.id) {
uni.showToast({
title: '当天未发布打卡任务,不可签到哦',
icon: 'none'

View File

@@ -22,7 +22,7 @@
<uni-tag class="tag" @click="toMore()" :inverted="true" text="书评" type="success"></uni-tag>
<uni-tag @click="gotoListen()" class="tag" v-if="bookMessage.canListen" :inverted="true" text="听书" type="primary"></uni-tag>
<!-- 1:打卡2不打卡 -->
<uni-tag @click="gotoclock()" v-if="bookMessage.clockIn == 1" class="tag" :inverted="true" text="签到" type="warning"></uni-tag>
<uni-tag @click="gotoclock()" v-if="bookMessage.clockIn == 1" class="tag" :inverted="true" text="打卡" type="warning"></uni-tag>
<uni-tag @click="goJiangShu()" v-if="bookMessage.teachIn == 1" class="tag" :inverted="true" text="讲书" type="error"></uni-tag>
</view>
<view class="buy" v-if="!bookMessage.isBuy">

View File

@@ -14,18 +14,19 @@
<image src="../../static/icon/five1.png" mode="aspectFit" ></image>
<text>经穴检索</text>
</div>
<div class="item item1">
<div class="item item1" @click="onPageJump('../prescription/prescription')">
<image src="../../static/icon/five2.png" mode="aspectFit"></image>
<text>方药检索</text>
</div>
<div class="item item1" @click="onPageJump('../peanut/searchFor')">
<image src="../../static/icon/five3.png" mode="aspectFit"></image>
<text>书名检索</text>
</div>
<div class="item item1">
<image src="../../static/icon/five4.png" mode="aspectFit"></image>
<text>五运六气</text>
</div>
<div class="item item1" @click="onPageJump('../peanut/searchFor')">
<image src="../../static/icon/five3.png" mode="aspectFit"></image>
<text>书名检索</text>
</div>
<div class="item item1">
<image src="../../static/icon/five5.png" mode="aspectFit"></image>
<text>吴门医述</text>
@@ -50,23 +51,23 @@
<view class="home_nar">
<view class="hn_cl_tit shuguan" @click="onPageJump('../clock/index')">
<image src="../../static/icon/home1.png" mode="aspectFit"></image>
<text> </text>
<!-- <text> </text> -->
</view>
<view class="hn_cl_tit dianzishu" @click="onPageJump('../listen/home')">
<image src="../../static/icon/home2.png" mode="aspectFit"></image>
<text> </text>
<!-- <text> </text> -->
</view>
<!-- <view class="hn_cl_tit" @click="onPageJump('../bookShop/bookShopIndex')"> -->
<view class="hn_cl_tit shuping" @click="onPageJump('../comments/commentsList')">
<image src="../../static/icon/home3.png" mode="aspectFit"></image>
<text> </text>
<!-- <text> </text> -->
</view>
<view class="hn_cl_tit chaoshi" @click="onPageJump('../talkBook/talkBook')">
<image src="../../static/icon/home4.png" mode="aspectFit"></image>
<text> </text>
<!-- <text> </text> -->
</view>
</view>
@@ -124,7 +125,7 @@
</view>
</view> -->
<view class="head_line" >
<view class="head_line" style="margin-top: -20rpx;">
<b></b>
<text>新书上市</text>
<!-- <i @click="onBookMore('New')">查看更多 ></i> -->
@@ -713,7 +714,7 @@
text{
font-size: 28rpx; color: #11a669;
}
image{width: 60rpx; height: 60rpx; margin: 0 auto; }
image{width: 56rpx; height: 56rpx; margin: 0 auto; }
}
.hehan{width: 80%; margin: 10rpx auto;}
.zhekou{
@@ -723,7 +724,9 @@
.priceAndnum{ font-size: 24rpx !important;
.price{color: #9b9b9b !important; font-size: inherit; font-weight: normal !important; display: block;}
}
.ProTabs{margin: 20rpx 0; padding:0 20rpx;
.ProTabs{
// margin: 20rpx 0;
padding:0 20rpx;
text{padding: 12rpx 14rpx; font-size: 32rpx; border-radius: 10rpx; overflow: hidden;
// background-color: #eee;
color: #55aa7f; margin-right: 10rpx;}
@@ -826,10 +829,10 @@
}
}
.home_nar {
margin: 30rpx 20rpx; justify-content: space-between;
margin: 10rpx 20rpx; justify-content: space-between;
display: flex;
color: #333;
// margin-bottom: 0;
margin-bottom: 0;
// .dianzishu{ margin-right:10rpx;
// background-color:#f8d6f4 ; border: 2px solid #edcce9;
// }

View File

@@ -0,0 +1,630 @@
<template>
<view class="container">
<!-- 公共组件-每个页面必须引入1 -->
<public-module></public-module> -->
<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> -->
<view class="oneCateList flexbox">
<text :class="[curOneCateIndex == index ? 'cur' : '']" @click="setOneCateIndex(item,index)"
v-for="(item, index) in oneCateList" :key="item.id">{{item.title}}</text>
</view>
<view class="search_box">
<u-search placeholder="请输入方药名" @focus="focus" @clear="clear" v-model="searchValue" @input="input"
@blur="blur" @search="search"></u-search>
</view>
<view class="searchList" v-show="showSearchList">
<view class="itemBox" v-if="searchList.length > 0">
<view class="item" v-for="(item, index) in searchList" :key="index" @click="gotoDetail(item)">
{{item.title}}
</view>
</view>
<view v-else class="">
<u-divider text="未找到相关方药哦~"></u-divider>
</view>
</view>
<view v-show="!showSearchList" class="contentBox">
<view class="" v-if="false">
<!-- 常规格式 -->
<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.id"
@click="setTwoCateIndex(item, index)">
<view :class="['grid-text',curTwoCateIndex == index ? 'cur' : '']">{{item.title}}</view>
</u-grid-item>
</u-grid>
</view>
<view class="titleList">
<u-grid :col="3" v-if="titleList.length > 0">
<u-grid-item v-for="(item, index) in titleList" :key="item.id" @click="gotoDetail(item)">
<view :class="['titleItem']">{{item.title}}</view>
</u-grid-item>
</u-grid>
<u-divider v-else text="暂无方药数据哦~"></u-divider>
</view>
</view>
<view class="mode2" v-else>
<!-- 经方样式 -->
<scroll-view class="scroll-container" scroll-y="true" :scroll-into-view="toView"
scroll-with-animation="true">
<view class="address-book" v-for="(item, index) in jingfangList" :key="index" :id="item.id">
<view class="address-book-index">{{ item.id }}</view>
<view class="contact-container" v-for="(item, index) in item.data" :key="index">
<view class="contact-detail-container">
<view class="contact-name">{{ item.title }}</view>
</view>
</view>
</view>
</scroll-view>
<view class="letter-nav">
<view class="item" v-for="(item, index) in indexList" :key="index" @click="toSelectIndex(item)">
{{ item }}
</view>
</view>
</view>
</view>
<music-play :playData="playData"></music-play>
<z-navigation></z-navigation>
</view>
</template>
<script>
import musicPlay from '@/components/music.vue'
import $http from '@/config/requestConfig.js';
export default {
data() {
return {
indexList: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
],
playData: {},
searchValue: '',
oneCateList: [], // 一级分类标题1
twoCateList: [], // 二级分类标题
titleList: [], // 方药标题
curOneCateIndex: 0, // 当前选中的一级分类
curTwoCateIndex: 0, // 当前选中的二级分类
searchList: [], // 搜索结果数组
showSearchList: false,
toView: '',
jingfangList: [{
id: 'A',
data: [{
title: '阿联酋迪拉姆',
},
{
title: '阿尔巴尼亚列克',
},
]
},
{
id: 'B',
data: [{
title: '孟加拉国塔卡',
},
{
title: '保加利亚列瓦',
},
]
},
{
id: 'C',
data: [{
title: '加拿大元',
},
{
title: '瑞士法郎',
},
]
},
{
id: 'D',
data: [{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
]
},
{
id: 'E',
data: [{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
]
},
{
id: 'F',
data: [{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
]
},
{
id: 'G',
data: [{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
]
},
{
id: 'H',
data: [{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
]
},
{
id: 'I',
data: [{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
]
},
{
id: 'J',
data: [{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
{
title: '丹麦克朗',
},
{
title: '多米尼加比索',
},
]
},
{
id: 'Z',
data: [{
title: 'z',
},
{
title: 'zzz',
},
]
}
], // 经方数组
}
},
onLoad() {
this.getCateList()
},
onHide() {
this.showSearchList = false
this.searchList = []
},
methods: {
toSelectIndex(item) {
this.toView = item
},
// 方药详情
gotoDetail(item) {
uni.navigateTo({
url: "./acupointDetail?id=" + item.id
})
},
// 获取方药名称
getTitles(id) {
$http.request({
url: "book/point/getPointsByCategoryId",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
// loadAnimate: 'none', // 请求加载动画
'pointCategoryId': id
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
}).then(res => {
console.log(res, '内容获取成功')
if (res.code == 0 && res.points.length > 0) {
this.titleList = res.points
} else {
this.titleList = []
}
}).catch(e => {
this.titleList = []
console.log(e)
})
},
setTwoCateIndex(item, index) {
let id = item.id
this.curTwoCateIndex = index
this.getTitles(id)
},
setOneCateIndex(item, index) {
let id = item.id
this.curOneCateIndex = index
this.curTwoCateIndex = 0
this.getTowCateList(id)
},
getTowCateList(id) {
$http.request({
url: "book/point/getPointCategoryByPid",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
loadAnimate: 'none', // 请求加载动画
'id': id
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
}).then(res => {
console.log(res, '二级分类获取成功')
if (res.code == 0 && res.category.length > 0) {
this.twoCateList = res.category
this.getTitles(this.twoCateList[0].id)
} else {
this.twoCateList = []
this.titleList = []
}
}).catch(e => {
this.twoCateList = []
this.titleList = []
console.log(e)
})
},
getCateList(id) {
id ? '' : id = 0
this.twoCateList = []
this.curTwoCateIndex = 0
// 0为获取顶级分类其他为搜索下级分类目前的逻辑顶级是写死的所以可能只会涉及到搜索第二级
$http.request({
url: "book/point/getPointCategoryByPid",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
loadAnimate: 'none', // 请求加载动画
'id': id
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
}).then(res => {
console.log(res, '脉穴分类获取成功')
if (res.code == 0 && res.category.length > 0) {
this.oneCateList = res.category
this.getTowCateList(this.oneCateList[0].id)
} else {
this.oneCateList = []
}
}).catch(e => {
this.oneCateList = []
console.log(e)
})
},
getSearch() {
$http.request({
url: "book/point/searchPointList",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
loadAnimate: 'none', // 请求加载动画
'keywords': this.searchValue
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
}).then(res => {
console.log(res, '搜索结果')
if (res.code == 0 && res.points.length > 0) {
this.searchList = res.points
}
}).catch(e => {
// this.titleList = []
this.searchList = []
console.log(e)
})
},
search(res) {
console.log(res, 'res')
// uni.showToast({
// title: '搜索:' + res,
// icon: 'none'
// })
},
input(res) {
console.log('----input:', res)
if (res == '') {
this.searchList = []
} else {
this.getSearch()
}
},
clear(res) {
// uni.showToast({
// title: 'clear事件清除值为',
// icon: 'none'
// })
this.showSearchList = false
},
blur(res) {
if (res == '') {
this.showSearchList = false
this.searchList = []
} else {
this.getSearch()
}
},
focus(e) {
// uni.showToast({
// title: 'focus事件输出值为' + e.value,
// icon: 'none'
// })
this.showSearchList = true
},
// cancel(res) {
// uni.showToast({
// title: '点击取消,输入值为:' + res.value,
// icon: 'none'
// })
// }
},
onBackPress() {
// #ifdef APP-PLUS
plus.key.hideSoftKeybord();
// #endif
},
components: {
musicPlay
},
}
</script>
<style lang="scss" scoped>
.mode2 {
position: relative;
}
.address-book-index {
background-color: #f8f9fa; padding: 10rpx 0; text-indent: 2%;
}
.contact-img {
width: 20px;
height: 20px;
}
.scroll-container {
height: calc(100vh - 70rpx);
}
.letter-nav {
position: absolute;
right: 25rpx;
top: 40rpx;
.item {
font-size: 28rpx; margin-bottom: 10rpx;
}
}
.contact-container {
display: flex;
align-items: center;
margin: 2%;
}
.contact-detail-container {
margin-left: 2%;
.contact-name{
padding: 10rpx;
}
}
.searchList {
.item {
font-size: 28rpx;
padding: 20rpx;
border-bottom: 1px solid #dadbde;
}
}
.scroll-view_H {
background-color: #fff;
white-space: nowrap;
padding: 10rpx;
}
.oneCateList {
margin-bottom: 20rpx;
justify-content: space-between;
text {
text-align: center;
display: inline-block;
width: 32%;
padding: 20rpx 0;
font-size: 34rpx;
border-radius: 10rpx;
}
.cur {
background-color: #55aa7f;
color: #fff;
}
}
.contentBox {
.twoCateList {
font-size: 28rpx;
margin-top: 20rpx;
.grid-text {
padding: 30rpx 20rpx;
text-align: center;
}
.cur {
color: #55aa7f;
}
// .u-grid-list{border: 0.5px solid #dadbde;}
}
.titleList {
font-size: 26rpx;
margin-top: 20rpx;
padding: 10rpx;
border-radius: 10rpx;
background-color: #f8f9fa;
.titleItem {
padding: 20rpx 0;
}
}
}
.container {
padding: 10rpx;
min-height: 100vh;
overflow: hidden;
background-color: #fff;
}
.search_box {
margin: 0 auto;
overflow: hidden;
margin-top: 20rpx;
align-items: center;
width: calc(100% - 10px);
margin-top: 0;
margin-bottom: 40rpx;
.search {
height: 56upx;
display: flex;
width: 86%;
margin: 0 auto;
align-items: center;
padding: 0upx 40upx;
background-color: #fff;
border-radius: 20upx;
box-shadow: 0 0px 10px 1px #54a96633;
}
.prompt {
color: #838383;
font-size: 24rpx;
}
.icon_search {
background-image: url('@/static/icon/map_ic_search.png');
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
width: 36upx;
height: 36upx;
margin-right: 20upx;
}
}
.flexbox {
display: flex;
}
</style>

View File

@@ -0,0 +1,22 @@
<template>
<view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>

View File

@@ -19,9 +19,9 @@
<u-form-item label="所在地区 :" prop="">
<view class="add_arrow" @click="addreShow=true">{{addressForm.areaidpathtext}}</view>
<u-picker @cancel="addcancel" :show="addreShow" ref="uPicker" :columns="columns" keyName="UName"
@confirm="addconfirm" @change="changeHandler" ></u-picker>
</u-form-item>
<u-picker @cancel="addcancel" :show="addreShow" ref="uPicker" :columns="columns" keyName="UName" -->
@confirm="addconfirm" @change="changeHandler" ></u-picker>
</u-form-item>
<u-form-item label="详细地址 :" prop="useraddress">
<u-input type="string" v-model="addressForm.useraddress" placeholder="小区楼栋/乡村名称" clearable
border="surround" />
@@ -50,7 +50,6 @@
</template>
<script>
import musicPlay from '@/components/music.vue'
import $http from '@/config/requestConfig.js';
import addressList1 from "@/static/json/address.json"
@@ -64,14 +63,14 @@
// indexp:0,
// indexq:0,
// indexc:0,
playData:{},
playData: {},
addreShow: false, //是否显示
columns: [], //省份数据显示,三级联动需要三维数组,展示初始数据
columnData: [], //市数据
columnDatas: [], //区地址
switchTrue: true,
switchFalse: false,
addressChanged:false, // 地址修改标记
addressChanged: false, // 地址修改标记
navName: '', // 顶部导航栏标题
provId: '', // 存储省id
cityId: '', // 存储市id
@@ -91,6 +90,51 @@
isShowDel: false,
editIndex: 0,
deleteShow: false,
list: [{
value: 1,
label: '中国',
children: [{
value: 2,
label: '广东',
children: [{
value: 3,
label: '深圳'
},
{
value: 4,
label: '广州'
}
]
},
{
value: 5,
label: '广西',
children: [{
value: 6,
label: '南宁'
},
{
value: 7,
label: '桂林'
}
]
}
]
},
{
value: 8,
label: '美国',
children: [{
value: 9,
label: '纽约',
children: [{
value: 10,
label: '皇后街区'
}]
}]
}
],
rules: {
username: [{
required: true,
@@ -137,10 +181,10 @@
this.getAddress()
}
this.initDataPicker() //初始化省份列表
},
onShow() {
},
computed: {
...mapState(['userInfo']),
@@ -148,113 +192,113 @@
onReady() {
this.$refs.addForm.setRules(this.rules)
},
components:{
musicPlay
components: {
musicPlay
},
methods: {
methods: {
// 三级联动
initDataPicker() {
// console.log(this.addressList,'addressList')
// this.$http
// .post('api/province/getProvince')
// .then(res => {
// if (res.code == 0) {
// this.addressList = res.provinceEntity
//此处的province主要用作数据的初始化即刚打开就需要进行展示的数据这个跟第一条省份数据相关我的第一条是北京市所以需要columns中的三维数组第一维度是省份数据数组第二维度是市数据数组第三维度是区数据数组
let province = []; //初始数据需要展示的省份
let province1 = [{
"cityId": this.addressList[0].cityList[0].cityId,
"provId": this.addressList[0].cityList[0].provId,
"cityName": this.addressList[0].cityList[0].cityName,
"UName": this.addressList[0].cityList[0].cityName,
"createDate": this.addressList[0].cityList[0].createDate,
"regionCode": this.addressList[0].cityList[0].regionCode,
"countyList": this.addressList[0].cityList[0].countyList
}]; //因为第一个市北京市,所以就直接添加北京市下辖的直辖市了 也即初始数据需要展示的市,北京市只有一个市辖区
let province2 = []; //初始数据需要展示的区域数据,也即是 北京市市辖区内的区
// .post('api/province/getProvince')
// .then(res => {
// if (res.code == 0) {
// this.addressList = res.provinceEntity
//此处的province主要用作数据的初始化即刚打开就需要进行展示的数据这个跟第一条省份数据相关我的第一条是北京市所以需要columns中的三维数组第一维度是省份数据数组第二维度是市数据数组第三维度是区数据数组
let province = []; //初始数据需要展示的省份
let province1 = [{
"cityId": this.addressList[0].cityList[0].cityId,
"provId": this.addressList[0].cityList[0].provId,
"cityName": this.addressList[0].cityList[0].cityName,
"UName": this.addressList[0].cityList[0].cityName,
"createDate": this.addressList[0].cityList[0].createDate,
"regionCode": this.addressList[0].cityList[0].regionCode,
"countyList": this.addressList[0].cityList[0].countyList
}]; //因为第一个市北京市,所以就直接添加北京市下辖的直辖市了 也即初始数据需要展示的市,北京市只有一个市辖区
let province2 = []; //初始数据需要展示的区域数据,也即是 北京市市辖区内的区
for (let i = 0; i < this.addressList.length; i++) {
this.addressList[i].UName = this.addressList[i].provName
if (this.addressList[i].cityList == null) {
this.addressList[i].cityList = [{
"cityId": this.addressList[i].provId,
"provId": this.addressList[i].provId,
"cityName": this.addressList[i].provName,
"UName": this.addressList[i].provName,
"createDate": this.addressList[i].createDate,
"regionCode": this.addressList[i].regionCode,
"countyList": [{
"countyId": this.addressList[i].provId,
"cityId": this.addressList[i].provId,
"countyName": this.addressList[i].provName,
"UName": this.addressList[i].provName,
"createDate": this.addressList[i].createDate,
"regionCode": this.addressList[i].regionCode
}]
}]
} else {
for (let j = 0; j < this.addressList[i].cityList.length; j++) {
this.addressList[i].cityList[j].UName = this.addressList[i].cityList[j]
.cityName
for (let k = 0; k < this.addressList[i].cityList[j].countyList.length; k++) {
this.addressList[i].cityList[j].countyList[k].UName = this.addressList[i]
.cityList[j].countyList[k].countyName
}
}
}
province.push(this.addressList[i]);
for (let i = 0; i < this.addressList.length; i++) {
this.addressList[i].UName = this.addressList[i].provName
if (this.addressList[i].cityList == null) {
this.addressList[i].cityList = [{
"cityId": this.addressList[i].provId,
"provId": this.addressList[i].provId,
"cityName": this.addressList[i].provName,
"UName": this.addressList[i].provName,
"createDate": this.addressList[i].createDate,
"regionCode": this.addressList[i].regionCode,
"countyList": [{
"countyId": this.addressList[i].provId,
"cityId": this.addressList[i].provId,
"countyName": this.addressList[i].provName,
"UName": this.addressList[i].provName,
"createDate": this.addressList[i].createDate,
"regionCode": this.addressList[i].regionCode
}]
}]
} else {
for (let j = 0; j < this.addressList[i].cityList.length; j++) {
this.addressList[i].cityList[j].UName = this.addressList[i].cityList[j]
.cityName
for (let k = 0; k < this.addressList[i].cityList[j].countyList.length; k++) {
this.addressList[i].cityList[j].countyList[k].UName = this.addressList[i]
.cityList[j].countyList[k].countyName
}
}
}
province.push(this.addressList[i]);
}
this.addressList[0].cityList[0].countyList.map(item => {
province2.push(item);
});
this.addressList[0].cityList[0].countyList.map(item => {
province2.push(item);
});
//省数据 因为要做数据初始化,所以是三维数组
// 数据格式 [ [所有的省份数据:{},{}] , [第一个省份下的所有的市:{},{},{}] , [第一个市下面所有的区:{},{},{}] ]
this.columns.push(province);
this.columns.push(province1);
this.columns.push(province2);
//省数据 因为要做数据初始化,所以是三维数组
// 数据格式 [ [所有的省份数据:{},{}] , [第一个省份下的所有的市:{},{},{}] , [第一个市下面所有的区:{},{},{}] ]
this.columns.push(province);
this.columns.push(province1);
this.columns.push(province2);
// console.log(6666666,this.columns)
// console.log(6666666,this.columns)
// 市数据数组筛选address.json文件将全国所有省下面的市数据放入数组
// 格式[ [第一个省下面所有市,{},{},{}] , [第二个省下面所有市{},{},{}] , [第三个省下面所有市{},{},{}] ] 注意,以上的第一第二对应着 columns[0] 的数据
// 市数据数组筛选address.json文件将全国所有省下面的市数据放入数组
// 格式[ [第一个省下面所有市,{},{},{}] , [第二个省下面所有市{},{},{}] , [第三个省下面所有市{},{},{}] ] 注意,以上的第一第二对应着 columns[0] 的数据
this.addressList.map(item => {
let city = [];
item.cityList.map(item1 => {
city.push(item1);
});
this.columnData.push(city);
});
this.addressList.map(item => {
let city = [];
item.cityList.map(item1 => {
city.push(item1);
});
this.columnData.push(city);
});
//区数据数组
//数据格式: [ 所有省下面所有市的所有区 [ 第一个省下面所有市的区:[ [第一个省下面第一个市的所有区] , [第一个省下面第二个市的所有区] ,] , [ 第二个省下面所有市的区:[ [第二个省下面第一个市的所有区] , [第二个省下面第二个市的所有区] ,] ]
//区数据数组
//数据格式: [ 所有省下面所有市的所有区 [ 第一个省下面所有市的区:[ [第一个省下面第一个市的所有区] , [第一个省下面第二个市的所有区] ,] , [ 第二个省下面所有市的区:[ [第二个省下面第一个市的所有区] , [第二个省下面第二个市的所有区] ,] ]
let area = [];
this.addressList.map((item, index) => {
let area1 = []; //省下面所有市的初始化
item.cityList.map(item1 => {
area = []; //市下面的区初始化
item1.countyList.map(item2 => {
area.push(item2);
});
area1.push(area); // 每循环一个市,添加该市下面的所有区
});
this.columnDatas.push(area1); // 每循环一个省,添加该省下面的所有市
});
let area = [];
this.addressList.map((item, index) => {
let area1 = []; //省下面所有市的初始化
item.cityList.map(item1 => {
area = []; //市下面的区初始化
item1.countyList.map(item2 => {
area.push(item2);
});
area1.push(area); // 每循环一个市,添加该市下面的所有区
});
this.columnDatas.push(area1); // 每循环一个省,添加该省下面的所有市
});
// };
// }).catch(e => {
// console.log(e,'e')
// })
// };
// }).catch(e => {
// console.log(e,'e')
// })
},
changeHandler(e) { //城市选择时触发
console.log(e,'变化了',this.columnData, this.columnDatas)
this.addressChanged = true
console.log(e, '变化了', this.columnData, this.columnDatas)
this.addressChanged = true
const {
columnIndex, //当前选择的列,省 / 市 / 区
value, // 当前选择的数组内容
@@ -266,7 +310,7 @@
// 当第一列值发生变化时,变化第二列和第三列的值(省份变更,市和区跟着变更)
if (columnIndex === 0) { // 判断当前变更的是省还是市还是区
// picker为选择器this实例变化第二列对应的选项
picker.setColumnValues(1, this.columnData[
index]); //设置市为该省下面的所有市index是当前省在省份数组的下标对应市数组中的下表就是 该省下面的所有市 的数据
picker.setColumnValues(2, this.columnDatas[index][0]); // 设置区域为该省下面第一个市下面的所有区域
@@ -278,7 +322,7 @@
},
addconfirm(e) { //点击确定按钮
console.log(e,'选中的值')
console.log(e, '选中的值')
this.addressChanged = true
this.addreShow = false;
this.addressForm.areaidpathtext = e.value[0].UName + '-' + e.value[1].UName + '-' + e.value[2].UName
@@ -286,7 +330,7 @@
this.cityId = e.value[1].cityId
this.countyId = e.value[2].regionCode
},
addcancel() { //点击取消按钮
this.addreShow = false;
},
@@ -314,7 +358,7 @@
// this.addressForm.consigneePhone = this.addressForm.userphone
// this.addressForm.consigneeName = this.addressForm.username
// this.addressForm.regionCode = ''
// // this.addressForm.userid = this.userInfo.id
// if(this.addressChanged){ // 如果修改过地址区域,就重新赋值,否则保持不变
// this.addressForm.areaidpath = `${this.provId}_${this.cityId}_${this.countyId}`
@@ -325,15 +369,15 @@
// let data = this.addressForm
let data = {
'id':this.addressForm.addressid,
'detailAddress' : this.addressForm.useraddress,
'regionCode':this.countyId,
'userId':this.userInfo.id,
'consigneePhone':this.addressForm.userphone,
'id': this.addressForm.addressid,
'detailAddress': this.addressForm.useraddress,
'regionCode': this.countyId,
'userId': this.userInfo.id,
'consigneePhone': this.addressForm.userphone,
'consigneeName': this.addressForm.username,
'isDefault':this.addressForm.isDafault ? 1 : 0
'isDefault': this.addressForm.isDafault ? 1 : 0
}
console.log(data,'保存参数')
console.log(data, '保存参数')
$http.request({
url: link_add,
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
@@ -375,16 +419,17 @@
.then(res => {
if (res.code == 0) {
this.addressForm = {
'useraddress':res.list[this.editIndex].detailAddress,
'userphone':res.list[this.editIndex].consigneePhone,
'username':res.list[this.editIndex].consigneeName,
'isdefault':res.list[this.editIndex].isDefault,
'isDafault':res.list[this.editIndex].isDefault == 1 ? true : false,
'areaidpathtext':res.list[this.editIndex].province +'-'+ res.list[this.editIndex].city +'-'+ res.list[this.editIndex].county
,'addressid':res.list[this.editIndex].id
'useraddress': res.list[this.editIndex].detailAddress,
'userphone': res.list[this.editIndex].consigneePhone,
'username': res.list[this.editIndex].consigneeName,
'isdefault': res.list[this.editIndex].isDefault,
'isDafault': res.list[this.editIndex].isDefault == 1 ? true : false,
'areaidpathtext': res.list[this.editIndex].province + '-' + res.list[this
.editIndex].city + '-' + res.list[this.editIndex].county,
'addressid': res.list[this.editIndex].id
}
this.countyId = res.list[this.editIndex].regionCode
// this.addressForm = res.list[this.editIndex]
// this.addressForm = res.list[this.editIndex]
if (this.addressForm.isdefault == 1) {
this.addressForm.isDafault = true
}
@@ -399,15 +444,15 @@
this.deleteShow = false
this.$http
.get(`book/userAddress/delete?id=${this.addressForm.addressid}`)
.then(res => {
if (res.code == 0) {
uni.showToast({
title: '地址删除成功',
duration: 1000,
});
uni.navigateBack()
}
})
.then(res => {
if (res.code == 0) {
uni.showToast({
title: '地址删除成功',
duration: 1000,
});
uni.navigateBack()
}
})
},
},
@@ -416,10 +461,19 @@
</script>
<style lang="scss" scoped>
.flexbox{display: flex;}
.selectAdd{ justify-content: space-between;
.addItem{ display: block;width: 30%}
.flexbox {
display: flex;
}
.selectAdd {
justify-content: space-between;
.addItem {
display: block;
width: 30%
}
}
.add_arrow {
height: 28px;
line-height: 28px;
@@ -495,4 +549,4 @@
background-image: linear-gradient(90deg, #bf0c0c 0%, #95110c 100%)
}
}
</style>
</style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -14781,7 +14781,15 @@
"createDate": 1666867907000
},
{
"countyList": [],
"countyList": [
{
"regionCode": "441900",
"countyId": 8446,
"cityId": 949,
"countyName": "东莞市",
"createDate": 1699422943745
}
],
"regionCode": "441900",
"cityName": "东莞市",
"cityId": 949,
@@ -14789,7 +14797,15 @@
"createDate": 1666867907000
},
{
"countyList": [],
"countyList": [
{
"regionCode": "442000",
"countyId": 8447,
"cityId": 950,
"countyName": "中山市",
"createDate": 1699423000757
}
],
"regionCode": "442000",
"cityName": "中山市",
"cityId": 950,