[NEW]【商品商城】新增商品商城模块相关页面

This commit is contained in:
yuweiqi
2020-06-17 10:58:05 +08:00
parent d556954128
commit f7419c4f6b
8 changed files with 493 additions and 4 deletions

View File

@@ -0,0 +1,29 @@
import request from '@/assets/js/utils/request'
import getUrl from '@/assets/js/utils/get-url'
// // 获取商品商城列表
// export function getCategory(data) {
// return request({
// url: getUrl('/sale/product/getCategory', 1),
// method: 'post',
// data
// })
// }
// // 获取商城详情
// export function getList(data) {
// return request({
// url: getUrl('/sale/product/getProList', 1),
// method: 'post',
// data
// })
// }
// // 获取转发记录列表
// export function getProductInfo(data) {
// return request({
// url: getUrl('/sale/product/getItemDetail', 1),
// method: 'post',
// data
// })
// }

View File

@@ -15,4 +15,23 @@ import nbs from './nbs'
import manpower from './manpower'
import cardList from './cardList'
import claims from './claims'
export default [...proposal, ...sale, ...customer, ...my, ...serve, ...common, ...product, ...cardList ,...agentEenter, ...milestone, ...poster, ...report, ...survey, ...nbs, ...manpower, ...claims] //根据需要进行删减
import productStore from './product-store'
export default [
...proposal,
...sale,
...customer,
...my,
...serve,
...common,
...product,
...cardList,
...agentEenter,
...milestone,
...poster,
...report,
...survey,
...nbs,
...manpower,
...claims,
...productStore
] //根据需要进行删减

View File

@@ -0,0 +1,44 @@
//商品商城
const ForwardRecord = () => import('@/views/ebiz/product-store/ForwardRecord')
const LoginMsg = () => import('@/views/ebiz/product-store/LoginMsg')
const StoreDetail = () => import('@/views/ebiz/product-store/StoreDetail')
const StoreList = () => import('@/views/ebiz/product-store/StoreList')
export default [
{
path: '/productStore/forwardRecord',
name: 'ForwardRecord',
component: ForwardRecord,
meta: {
title: '转发记录',
index: 1
}
},
{
path: '/productStore/loginMsg',
name: 'LoginMsg',
component: LoginMsg,
meta: {
title: '输入登录信息',
index: 1
}
},
{
path: '/productStore/storeDetail',
name: 'StoreDetail',
component: StoreDetail,
meta: {
title: '商城简介',
index: 1
}
},
{
path: '/productStore/storeList',
name: 'StoreList',
component: StoreList,
meta: {
title: '商品商城',
index: 1
}
}
]

View File

@@ -25,11 +25,11 @@
<li><router-link to="/customer/customerList">客户管理</router-link></li>
<li><router-link to="/my/UserIncome">收入</router-link></li>
<li><router-link to="/serve/list">保单列表</router-link></li>
<li><router-link to="/agentEenter/agentEenterBasicInfor">自助入司</router-link></li>
<li><router-link to="/agentEenter/approve/ApproveList">入司审批列表</router-link></li>
<!-- <li><router-link to="/agentEenter/agentEenterBasicInfor">自助入司</router-link></li> -->
<!-- <li><router-link to="/agentEenter/approve/ApproveList">入司审批列表</router-link></li>
<li><router-link to="/survey/surveyList">问卷调查</router-link></li>
<li><router-link to="/nbs/list">nbs列表</router-link></li>
<li><router-link to="/manpower/DiscAnalysis/List">DISC性格分析</router-link></li>
<li><router-link to="/manpower/DiscAnalysis/List">DISC性格分析</router-link></li> -->
</ul>
</li>
<li class="mt10">
@@ -54,6 +54,15 @@
</li>
</ul>
</li>
<li class="mt10">
<p class="fw600">商品商城</p>
<ul class="pl20">
<li><router-link to="/productStore/storeList">商品商城列表</router-link></li>
<li><router-link to="/productStore/storeDetail">商城详情简介</router-link></li>
<li><router-link to="/productStore/loginMsg">输入登录信息</router-link></li>
<li><router-link to="/productStore/forwardRecord">转发记录</router-link></li>
</ul>
</li>
</ul>
<van-tabbar v-model="active">
<van-tabbar-item icon="home-o">首页</van-tabbar-item>

View File

@@ -0,0 +1,148 @@
<!--转发记录页-->
<template>
<div class="forward-record-container">
<van-sticky>
<div class="top-table" sticky>
<van-row type="flex" align="center">
<van-col class="order" span="4">序号</van-col>
<van-col class="subTime" span="10">转发时间</van-col>
<van-col class="name" span="10">是否打开</van-col>
</van-row>
</div>
</van-sticky>
<van-list
v-model="loading"
:immediate-check="false"
:finished="finished"
:finished-text="finishedText"
error-text="请求失败点击重新加载"
:error.sync="error"
@load="loadMore"
>
<div v-if="isSuccess">
<div v-if="answerList.length > 0" class="pb80">
<div class="main-table" v-for="(item, index) in answerList" :key="index">
<van-row type="flex" align="center">
<van-col class="order" span="4">{{ index + 1 }}</van-col>
<van-col class="subTime" span="10">{{ item.answerDate }}</van-col>
<van-col class="name" span="10">{{ item.customerName }}</van-col>
</van-row>
</div>
</div>
<div v-else class="text-center">
<img class="mt40" src="@/assets/images/pic_page-non.png" />
<div class="fs17 mt40">暂无数据</div>
</div>
</div>
</van-list>
</div>
</template>
<script>
import { Sticky, Row, Col, List } from 'vant'
import { discAnalysisList } from '@/api/ebiz/manpower/manpower'
export default {
name: 'ForwardRecord',
components: {
[Sticky.name]: Sticky,
[Row.name]: Row,
[List.name]: List,
[Col.name]: Col
},
data() {
return {
loading: false,
finished: false,
currentPage: 1, //当前页数
error: false,
finishedText: '',
pageSize: 15, //每页数据条数
isSuccess: false,
answerList: [] //答卷列表
}
},
created() {},
mounted() {
this.loadMore()
},
methods: {
//分页用
loadMore() {
let pageInfo = {
pageNum: this.currentPage,
pageSize: this.pageSize
}
this.getDiscAnalysisList(pageInfo)
},
//获取DISC统计列表数据
//TODO
getDiscAnalysisList(pageInfo) {
let params = {
...pageInfo,
...{
agentCode: '',
tableCode: 'GFRS-DISC'
}
}
discAnalysisList(params).then(res => {
if (res.result == '0') {
this.isSuccess = true
this.currentPage++
this.loading = false
if (res.content == null) {
this.finished = true
this.loading = false
this.finishedText = ''
return
}
let answerList = res.content.answerList.list
this.answerList = this.answerList.concat(answerList)
if (answerList.length == 0) {
this.finishedText = ''
} else {
this.finishedText = '已经全部加载'
}
if (this.answerList.length == 0) {
this.isSuccess = false
}
this.loading = false
if (res.content.nextPage == 0) {
//当下一页为0时 表示全部数据加载完毕
this.finished = true
}
} else {
this.finished = true
this.loading = false
this.finishedText = res.resultMessage
}
})
}
}
}
</script>
<style lang="scss" scoped>
.forward-record-container {
.top-table,
.main-table {
background: #fff;
padding: 0 10px;
border-bottom: 1px solid #e7e7e7;
}
.van-col {
height: 51px;
font-size: 13px;
font-weight: 400;
color: rgba(0, 0, 0, 1);
line-height: 51px;
text-align: center;
}
.top-table {
.van-col {
color: #e9332e;
font-size: 14px;
}
}
}
</style>

View File

@@ -0,0 +1,76 @@
<!--输入登录信息页-->
<template>
<div class="login-msg-container">
<div class="p5 pb0">
<van-field v-model="loginInfo.name" required label="登录账号" v-validate="'required'" name="登录账号" placeholder="请输入" clearable />
<van-field v-model="loginInfo.password" required label="登录密码" v-validate="'required'" name="登录密码" placeholder="请输入" clearable />
</div>
<van-button type="danger" class="bottom-btn" @click="nextStep" v-no-more-click="1000">确认并转发</van-button>
</div>
</template>
<script>
import { Field } from 'vant'
// import { weixinShare } from '@/assets/js/utils/wxShare.js'
export default {
name: 'LoginMsg',
components: {
[Field.name]: Field
},
data() {
return {
loginInfo: {
name: '',
password: ''
}
}
},
created() {},
mounted() {
document.getElementsByTagName('body')[0].classList.add('bg-white')
},
destroyed() {
document.getElementsByTagName('body')[0].classList.remove('bg-white')
},
methods: {
async nextStep() {
let valid = await this.$validator.validate()
if (true === valid) {
this.share()
} else {
return this.$toast(this.$validator.errors.all()[0])
}
},
share() {
let url =
location.origin +
'/#/manpower/DiscAnalysis/Share?token=' +
localStorage.getItem('token') +
'&name=' +
escape(this.loginInfo.name) +
'password=' +
escape(this.loginInfo.password)
console.log(url)
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('bridge', {
flag: 'share',
extra: {
title: `xxx商品商城`,
content: `分享给你一个商品,快来点击购买吧!`,
url: url,
img: this.$assetsUrl + 'images/logo.png'
}
})
}
}
}
</script>
<style lang="scss" scoped>
.login-msg-container {
/deep/.van-cell {
border-bottom: 1px solid #ebedf0;
}
}
</style>

View File

@@ -0,0 +1,97 @@
<!--商城详情页-->
<template>
<div class="store-detail-container">
<div v-if="isWeixin">
<van-notice-bar wrapable :scrollable="false" text="温馨提示:您即将离开本站,访问的链接来源于第三方网站,可能存在风险,请谨慎操作!" />
</div>
<div>
<img src="https://img.yzcdn.cn/vant/apple-1.jpg" alt="" />
</div>
<div class="p5 pb0 mb40" v-if="isWeixin">
<van-field v-model="loginInfo.name" required label="登录账号" v-validate="'required'" name="登录账号" placeholder="请输入" clearable />
<van-field v-model="loginInfo.password" required label="登录密码" v-validate="'required'" name="登录密码" placeholder="请输入" clearable />
</div>
<van-button v-if="isWeixin" type="danger" class="bottom-btn" @click="check" v-no-more-click="1000">查看</van-button>
<van-button v-else type="danger" class="bottom-btn" @click="forward" v-no-more-click="1000">一键转发</van-button>
</div>
</template>
<script>
import { NoticeBar, Field } from 'vant'
export default {
name: 'StoreDetail',
components: {
[NoticeBar.name]: NoticeBar,
[Field.name]: Field
},
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
isWeixin, //是否在微信
//登录账号及密码
loginInfo: {
name: '',
password: ''
},
storeId: '', //商城id
imgUrl: '' //商城简介图片地址
}
},
mounted() {
document.getElementsByTagName('body')[0].classList.add('bg-white')
if (!this.isWeixin) {
setTimeout(() => {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('webview_right_button', {
title: '转发记录',
title_color: '#e9332e'
})
}, 100)
}
window.appCallback = this.appCallback //app回调
this.storeId = this.$route.query.storeId
if (this.isWeixin) {
this.loginInfo.name = this.$route.query.name
this.loginInfo.password = this.$route.query.password
}
},
destroyed() {
document.getElementsByTagName('body')[0].classList.remove('bg-white')
},
methods: {
//查看
check() {
//TODO
},
//一键转发
forward() {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/productStore/loginMsg?storeId=${this.storeId}`
},
routerInfo: {
path: `/productStore/loginMsg?storeId=${this.storeId}`
}
})
},
//app回调
appCallback(data) {
if (data.trigger == 'right_button_click' && !this.isWeixin) {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/productStore/forwardRecord`
},
routerInfo: {
path: `/productStore/forwardRecord`
}
})
}
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@@ -0,0 +1,67 @@
<!--商品商城列表页-->
<template>
<div class="store-list-container">
<div v-for="(item, index) in list" :key="index" @click="goDetail(item)">
<van-grid :border="false" :gutter="10" :column-num="3">
<van-grid-item>
<van-image :src="item.imageUrl" />
<van-grid-item :text="item.name" />
</van-grid-item>
<van-grid-item>
<van-image :src="item.imageUrl" />
<van-grid-item :text="item.name" />
</van-grid-item>
<van-grid-item>
<van-image :src="item.imageUrl" />
<van-grid-item :text="item.name" />
</van-grid-item>
</van-grid>
</div>
</div>
</template>
<script>
import { Grid, GridItem, Image } from 'vant'
export default {
name: 'StoreList',
components: {
[Grid.name]: Grid,
[GridItem.name]: GridItem,
[Image.name]: Image
},
data() {
return {
list: [] //商品商城列表
}
},
mounted() {
//TEST
this.setList()
},
methods: {
//TEST
setList() {
this.list = [
{ name: '小米', imageUrl: 'https://img.yzcdn.cn/vant/apple-1.jpg', storeId: 'A1' },
{ name: '华为', imageUrl: 'https://img.yzcdn.cn/vant/apple-2.jpg', storeId: 'A2' },
{ name: '苹果', imageUrl: 'https://img.yzcdn.cn/vant/apple-3.jpg', storeId: 'A3' }
]
},
//查看详情
goDetail(v) {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/productStore/storeDetail?storeId=${v.storeId}`
},
routerInfo: {
path: `/productStore/storeDetail?storeId=${v.storeId}`
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>