This commit is contained in:
mactj 2021-01-21 16:14:44 +08:00
parent db6d973592
commit 805dcebb81
17 changed files with 2234 additions and 67 deletions

View File

@ -45,8 +45,7 @@ public class AppActivityController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('winery:activity:list')")
@GetMapping("/list")
public TableDataInfo list(AppActivity appActivity)
{
public TableDataInfo list(AppActivity appActivity) {
startPage();
LambdaQueryWrapper<AppActivity> lqw = Wrappers.lambdaQuery(appActivity);
if (StringUtils.isNotBlank(appActivity.getUrl())) {
@ -119,12 +118,25 @@ public class AppActivityController extends BaseController {
}
/**
* 查询活动列表(开放)
*/
@GetMapping("/open/notice")
public AjaxResult openNotice() {
String notice =
"手机尾号4707的用户购买了「山之语·赤霞珠干红葡萄酒」, " +
"手机尾号5266的用户购买了「2021辛丑牛年纪念酒」" +
"手机尾号3062的用户购买了「留世传奇红葡萄酒」";
return AjaxResult.success(notice);
}
/**
* 查询活动列表(开放)
*/
@GetMapping("/open/list")
public TableDataInfo openList(AppActivity appActivity)
{
public TableDataInfo openList(AppActivity appActivity) {
startPage();
LambdaQueryWrapper<AppActivity> lqw = Wrappers.lambdaQuery(appActivity);
if (StringUtils.isNotBlank(appActivity.getUrl())) {

View File

@ -128,4 +128,12 @@ public class NewsContentController extends BaseController {
public AjaxResult remove(@PathVariable String[] ids) {
return toAjax(iNewsContentService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
}
/**
* 获取新闻资讯详细信息
*/
@GetMapping(value = "/open/{id}")
public AjaxResult getOpenInfo(@PathVariable("id") String id) {
return AjaxResult.success(iNewsContentService.getById(id));
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,18 @@ class MallApis {
url: baseUrl + 'winery/activity/open/list'
})
}
getNotice() {
return request.get({
url: baseUrl + 'winery/activity/open/notice'
})
}
getNewsContent(id) {
return request.get({
url: baseUrl + 'news/news_content/open/' + id
})
}
}
export default new MallApis()

View File

@ -109,6 +109,7 @@ pages: [
'pages/mall/order/order-detail-list',
'pages/mall/order/order-check',
'pages/mall/shopping-car/shopping-car-list',
'pages/news/news-detail',
'pages/winery/winery-detail',
'pages/winery/winery-list',
'pages/webView/web'

View File

@ -88,6 +88,8 @@ class AppManager {
navigateTo(path) {
console.log('path:', path)
if (!store.state.user.token) {
eventHub.$emit('onShowDialogUserInfo')
return

View File

@ -5,9 +5,8 @@
*/
// export const baseUrl = 'http://36.1.50.18:18989/'
// export const baseUrl = 'http://127.0.0.1:18989/'
export const baseUrl = 'https://mall.xiao4r.com/api/'
export const baseUrl = 'http://127.0.0.1:18989/'
// export const baseUrl = 'https://mall.xiao4r.com/api/'
export const imgbaseUrl = 'https://www.xiao4r.com/xiao4rstatic/img/winery/'
export const sysImgBaseUrl = 'https://winery-1257413599.cos.ap-beijing.myqcloud.com/'

View File

@ -109,7 +109,7 @@ module.exports.parseImage = parseImage;
</van-row>
<van-notice-bar
text="在代码阅读过程中人们说脏话的频率是衡量代码质量的唯一标准。"
:text="notice"
mode="link"
background="#ddd"
color="#333"
@ -230,7 +230,8 @@ wepy.component({
image: 'https://www.xiao4r.com/xiao4rstatic/img/doctor.png'
}
],
records: []
records: [],
notice: ''
},
@ -253,7 +254,6 @@ wepy.component({
appManager.navigateTo(navDefine.SHOPPING_CAR_LIST)
},
onWebItem(item) {
appManager.navWeb(item.url)
}
@ -263,6 +263,10 @@ wepy.component({
mallApis.getActivityList().then(r => {
this.records = r.rows
})
mallApis.getNotice().then(r => {
this.notice = r.msg
})
}
})
</script>

View File

@ -35,7 +35,7 @@
border="{{ false }}"
use-button-slot
>
<van-button slot="button" size="small" plain type="info" open-type="getPhoneNumber"
<van-button slot="button" size="small" plain type="info" color="#AC1630" open-type="getPhoneNumber"
bind:getphonenumber="onGetMobile">授权
</van-button>
</van-field>
@ -58,11 +58,14 @@
<!-- </van-button>-->
<!-- </van-field>-->
<view style="margin:10px;">
<view style="margin:10px;display: flex;">
<van-checkbox :value="isChecked" shape="square" bind:change="onChangeCheak" checked-color="#AC1630"
style="font-size: 14px;color: #AC1630;">
我同意<span style="color: cornflowerblue;">xxxxx </span>用户协议
</van-checkbox>
/>
<span style="font-size: 13px;color: #AC1630;margin-left: 5px;">我同意并遵守紫色名片
<span style="color: cornflowerblue;" @tap="onTapPrivacy">《隐私政策》 </span>及
<span style="color: cornflowerblue;" @tap="onTapAgreement">《用户条款》 </span>
的全部内容</span>
</view>
</van-dialog>
@ -77,18 +80,18 @@ import { mapActions, mapState } from '@wepy/x'
import eventHub from '../../common/eventHub'
import appManager from '../../appManager'
import userApis from '../../apis/userApis'
import { newsDetailPage } from '../../store/constant/nav/pages'
wepy.component({
store,
props: {},
hooks: {},
data: {
that: this,
isShow: false,
model: {},
isChecked: false,
isChecked: false
},
computed: mapState(['user']),
@ -107,7 +110,6 @@ wepy.component({
this.setUserInfoAction(event.$wx.detail.userInfo)
console.log('userInfo:', store.state.user.userInfo)
if (!this.isChecked) {
appManager.showToast('请确认xxxx协议.')
return false
@ -160,6 +162,16 @@ wepy.component({
},
onClose() {
this.isShow = false
},
onTapAgreement() {
wx.navigateTo({
url: newsDetailPage + '?id=' + 'fb4109a4020b2a2a9d1172f66d043897'
})
},
onTapPrivacy() {
wx.navigateTo({
url: newsDetailPage + '?id=' + 'a1e5ec18ae13036d14c94bf0e5d11756'
})
}
},

View File

@ -21,7 +21,7 @@ module.exports.parseImage = parseImage;
<van-loading v-if="!goodsItem" style="margin-top: 20px;" />
<div v-else style="margin-bottom: 80px;">
<div v-else style="margin-bottom: 80px; width: 100%;">
<swiper indicator-dots="true" autoplay="true" interval="3000" style="height: 750rpx;">
<block v-for="(item,index) in goodsImages" wx:key="index">
@ -33,7 +33,7 @@ module.exports.parseImage = parseImage;
</block>
</swiper>
<div style="padding: 10px;display:flex;flex-direction: column;">
<div style="padding: 10px;display:flex;flex-direction: column;width: 100%;">
<span style="color: #333; font-size: 16px;font-weight: bold;">{{goodsItem.goodsName}}</span>
<span style="color: #999; font-size: 14px;margin-top: 3px;">{{goodsItem.goodsAlias}}</span>
</div>

View File

@ -0,0 +1,137 @@
<style lang="less">
.bg {
z-index: -1;
height: 100%;
position: fixed;
width: 200rpx;
background-color: #AC1630;
}
.winery-item {
width: 400rpx;
height: 60px;
margin-bottom: 20px;
box-shadow: 4px 4px 10px #cccccc;
border: #ffffff 1px solid;
border-radius: 20px;
background-color: white;
padding: 15px 70rpx;
}
.winery-item-icon {
position: absolute;
width: 60px;
height: 60px;
display: flex;
align-items: center;
justify-items: center;
justify-content: center;
text-align: center;
background-color: white;
box-shadow: 4px 4px 10px #cccccc;
margin-top: 10px;
margin-left: -40rpx;
border: #ffffff 1px solid;
border-radius: 50%;
}
.winery-item-arrow {
position: absolute;
width: 45px;
height: 45px;
display: flex;
align-items: center;
justify-items: center;
justify-content: center;
background-color: white;
box-shadow: 4px 4px 10px #cccccc;
margin-top: 18.5px;
margin-left: 500rpx;
border: #ffffff 1px solid;
border-radius: 50%;
}
</style>
<wxs module="filters" lang="babel">
const parseImage = (imageKey) => {
return 'https://winery-1257413599.cos.ap-beijing.myqcloud.com/' + imageKey
}
module.exports.parseImage = parseImage;
</wxs>
<template>
<nav-bar :title="newItem.newsTitle" />
<div class="container">
<van-loading v-if="!newItem" style="margin-top: 20px;" />
<div v-else style="margin-bottom: 80px;">
<div style="margin: 10px 15px;display: flex;flex-direction: column;">
<div style="margin-top: 10px;width:100%;">
<rich-text :nodes="newItem.newsBody" />
</div>
</div>
</div>
</div>
</template>
<script>
import wepy from '@wepy/core'
import store from '@/store'
import { mapActions, mapState } from '@wepy/x'
import defaultMix from '../../mixins/defaultMix'
import merchanApis from '../../apis/merchanApis'
import mallApis from '../../apis/mallApis'
wepy.page({
store,
hooks: {},
mixins: [defaultMix],
data: {
newItem: null,
title: ''
},
computed: {
...mapState({
'imageDefine': state => state.imageDefine
})
},
methods: {
...mapActions([]),
async init(id) {
mallApis.getNewsContent(id).then(r => {
this.newItem = r.data
})
}
},
onLoad(options) {
console.log(options)
if (options.id) {
this.init(options.id)
}
}
})
</script>
<config>
{
navigationBarTitleText: '',
usingComponents: {
}
}
</config>

View File

@ -69,9 +69,10 @@ module.exports.parseImage = parseImage;
<nav-bar title="酒庄信息" />
<div class="container">
<van-loading v-if="!wineryItem" style="margin-top: 20px;" />
<div v-else style="margin-bottom: 80px;">
<image :src="filters.parseImage(wineryItem.avatar)" style="width: 100%;height: 750rpx;" mode="aspectFit" />
<image :src="filters.parseImage(wineryItem.topImage)" style="width: 100%;height: 750rpx;" mode="aspectFit" />
<div style="margin: 10px 15px;display: flex;flex-direction: column;">
<div style="font-size: 20px;font-weight: bold;">{{wineryItem.mchName}}</div>
<div style="font-size: 14px;color: #999999;">{{wineryItem.subtitle}}</div>
@ -83,6 +84,7 @@ module.exports.parseImage = parseImage;
</div>
</div>
</div>
</template>

View File

@ -130,7 +130,7 @@ module.exports.parseAwards = parseAwards;
</div>
<div class="winery-item">
<van-image :src="filters.parseImage(item.avatar)" width="100%" height="128px" />
<van-image :src="filters.parseImage(item.faceImage)" width="100%" height="128px" />
<div style="margin-left: 20px;margin-top:35px;display: flex;align-items: center;">
<span style="font-size: 20px;font-weight: bold;width: 120px;">{{item.mchName}}</span>
<span style="color: #999;font-size: 12px;width: 200px;margin-left: 8px;">{{item.subtitle}}</span>

View File

@ -1,5 +1,5 @@
import { imgbaseUrl } from '../../../baseDefine'
import { orderDetailListPage, orderListPage, userAddressListPage } from './pages'
import { newsDetailPage, orderDetailListPage, orderListPage, userAddressListPage } from './pages'
export const myMenuList1 = [
@ -29,9 +29,9 @@ export const myMenuList2 = [
icon: imgbaseUrl + '/my/tool_2.png',
path: orderDetailListPage
}, {
name: '条款政策',
name: '隐私政策',
icon: imgbaseUrl + '/my/tool_3.png',
path: ''
path: newsDetailPage + '?id=' + 'a1e5ec18ae13036d14c94bf0e5d11756'
}
]

View File

@ -4,6 +4,7 @@ export const orderDetailListPage = '/pages/mall/order/order-detail-list'
export const orderCheck = '/pages/mall/order/order-check'
export const userAddressListPage = '/pages/mall/user/user-address-list'
export const goodsDetailPage = '/pages/mall/goods/goods-detail'
export const newsDetailPage = '/pages/news/news-detail'
export const wineryListPage = '/pages/winery/winery-list'
export const wineryDetailPage = '/pages/winery/winery-detail'
export const webViewPage = '/pages/webView/web'

View File

@ -117,6 +117,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.antMatchers("/winery/mini/user/**").permitAll()
.antMatchers("/winery/order/pay/**").permitAll()
.antMatchers("/winery/activity/open/**").permitAll()
.antMatchers("/news/news_content/open/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated()
.and()