mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-09 18:06:44 +08:00
[NEW]【商品商城】新增商品商城模块相关页面
This commit is contained in:
29
src/api/ebiz/product-store/product-store.js
Normal file
29
src/api/ebiz/product-store/product-store.js
Normal 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
|
||||
// })
|
||||
// }
|
||||
@@ -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
|
||||
] //根据需要进行删减
|
||||
|
||||
44
src/router/ebiz/product-store.js
Normal file
44
src/router/ebiz/product-store.js
Normal 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
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -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>
|
||||
|
||||
148
src/views/ebiz/product-store/ForwardRecord.vue
Normal file
148
src/views/ebiz/product-store/ForwardRecord.vue
Normal 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>
|
||||
76
src/views/ebiz/product-store/LoginMsg.vue
Normal file
76
src/views/ebiz/product-store/LoginMsg.vue
Normal 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>
|
||||
97
src/views/ebiz/product-store/StoreDetail.vue
Normal file
97
src/views/ebiz/product-store/StoreDetail.vue
Normal 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>
|
||||
67
src/views/ebiz/product-store/StoreList.vue
Normal file
67
src/views/ebiz/product-store/StoreList.vue
Normal 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>
|
||||
Reference in New Issue
Block a user