同步版本
@@ -10,6 +10,10 @@
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"h5" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"type" : "uniCloud"
|
||||
}
|
||||
]
|
||||
|
||||
2
App.vue
@@ -10,7 +10,7 @@
|
||||
console.log('App Hide')
|
||||
},
|
||||
globalData: {
|
||||
mainColor: "#c82626"
|
||||
mainColor: "white"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -31,8 +31,12 @@ const request = (parameter) => {
|
||||
'Authorization': store.getters.getToken || ''
|
||||
}
|
||||
|
||||
console.log('发送数据调试用', parameter)
|
||||
// 加载提示
|
||||
uni.showLoading({
|
||||
title: '加载中'
|
||||
});
|
||||
|
||||
console.log('dbug', parameter)
|
||||
// 请求实例
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
@@ -46,6 +50,7 @@ const request = (parameter) => {
|
||||
updateToken('token', res.header.Authorization)
|
||||
}
|
||||
if(res.statusCode === 200){
|
||||
uni.hideLoading()
|
||||
const resolveData = res.data
|
||||
if(resolveData.status_code === 200) {
|
||||
resolve(resolveData.data)
|
||||
@@ -64,9 +69,41 @@ const request = (parameter) => {
|
||||
})
|
||||
}
|
||||
|
||||
// 文件上传
|
||||
const uploading = (paths) => {
|
||||
uni.showLoading({
|
||||
title: '上传中'
|
||||
});
|
||||
// 注入header
|
||||
config.header = {
|
||||
'Accept': 'application/json',
|
||||
'Authorization': store.getters.getToken || ''
|
||||
}
|
||||
// 上传图片
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.uploadFile({
|
||||
url : config.apiUrl + 'storage/uploads',
|
||||
files : paths,
|
||||
header : config.header || {},
|
||||
success : res=>{
|
||||
if(res.statusCode === 200){
|
||||
uni.hideLoading()
|
||||
let updData = JSON.parse(res.data)
|
||||
if(updData.status_code === 200){
|
||||
resolve(updData.data)
|
||||
return
|
||||
}
|
||||
reject(updData)
|
||||
return
|
||||
}
|
||||
errToast(res.statusCode)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 处理一些http请求错误提示
|
||||
const errToast = (code) => {
|
||||
console.log(code)
|
||||
switch (code){
|
||||
case 404:
|
||||
uni.showToast({
|
||||
@@ -107,10 +144,13 @@ const loginHint = () => {
|
||||
success: res=> {
|
||||
loginHintState = false
|
||||
if (res.confirm) uni.reLaunch({
|
||||
url: '/pages/auth/login?type=overdue'
|
||||
url: '/pages/equity/index'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export default request
|
||||
export {
|
||||
request,
|
||||
uploading
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* moduleName: 鉴权
|
||||
*/
|
||||
|
||||
import request from '../index'
|
||||
import { request } from '../index'
|
||||
|
||||
// 一键登录
|
||||
const keyAuth = (data) => {
|
||||
|
||||
91
apis/interfaces/company.js
Normal file
@@ -0,0 +1,91 @@
|
||||
|
||||
/**
|
||||
* Web唐明明
|
||||
* 匆匆数载恍如梦,岁月迢迢华发增。
|
||||
* 碌碌无为枉半生,一朝惊醒万事空。
|
||||
* moduleName: 企业
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 企业注册配置信息
|
||||
const createConfig = () => {
|
||||
return request({
|
||||
url: 'companies/inits/create'
|
||||
})
|
||||
}
|
||||
|
||||
// 企业行业信息
|
||||
const inits = data => {
|
||||
return request({
|
||||
url: 'companies/inits',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 企业广场
|
||||
const companies = data => {
|
||||
return request({
|
||||
url: 'companies',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 企业列表
|
||||
const companiesList = data => {
|
||||
return request({
|
||||
url: 'companies/lists',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 企业认证配置信息
|
||||
const appliesCreate = () => {
|
||||
return request({
|
||||
url: 'companies/applies/create'
|
||||
})
|
||||
}
|
||||
|
||||
// 企业认证提交、编辑
|
||||
const applies = (data,method) => {
|
||||
return request({
|
||||
url: 'companies/applies',
|
||||
method,
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 企业认证前置条件
|
||||
const isallow = () => {
|
||||
return request({
|
||||
url: 'companies/applies/isallow',
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
|
||||
// 企业申请状态
|
||||
const appliesQuery = () => {
|
||||
return request({
|
||||
url: 'companies/applies/query'
|
||||
})
|
||||
}
|
||||
|
||||
// 企业信息展示
|
||||
const appliesInfo = () => {
|
||||
return request({
|
||||
url: 'companies/applies'
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
createConfig,
|
||||
inits,
|
||||
companies,
|
||||
companiesList,
|
||||
appliesCreate,
|
||||
applies,
|
||||
isallow,
|
||||
appliesQuery,
|
||||
appliesInfo
|
||||
}
|
||||
36
apis/interfaces/goods.js
Normal file
@@ -0,0 +1,36 @@
|
||||
|
||||
/**
|
||||
* Web唐明明
|
||||
* 匆匆数载恍如梦,岁月迢迢华发增。
|
||||
* 碌碌无为枉半生,一朝惊醒万事空。
|
||||
* moduleName: 商品
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 商城首页
|
||||
const mall = data => {
|
||||
return request({
|
||||
url: "mall"
|
||||
})
|
||||
}
|
||||
|
||||
// 商品列表
|
||||
const list = data => {
|
||||
return request({
|
||||
url: "mall/goods"
|
||||
})
|
||||
}
|
||||
|
||||
// 商品详情
|
||||
const goods = id => {
|
||||
return request({
|
||||
url: 'mall/goods/' + id
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
mall,
|
||||
list,
|
||||
goods
|
||||
}
|
||||
22
apis/interfaces/order.js
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
/**
|
||||
* Web唐明明
|
||||
* 匆匆数载恍如梦,岁月迢迢华发增。
|
||||
* 碌碌无为枉半生,一朝惊醒万事空。
|
||||
* moduleName: 订单
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 创建,确认订单
|
||||
const buy = (data, method) => {
|
||||
return request({
|
||||
url: 'mall/buy/goods',
|
||||
method,
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
buy
|
||||
}
|
||||
56
apis/interfaces/store.js
Normal file
@@ -0,0 +1,56 @@
|
||||
|
||||
/**
|
||||
* Web唐明明
|
||||
* 匆匆数载恍如梦,岁月迢迢华发增。
|
||||
* 碌碌无为枉半生,一朝惊醒万事空。
|
||||
* moduleName: 企业工具
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 企业首页
|
||||
const index = () => {
|
||||
return request({
|
||||
url: 'companies/index'
|
||||
})
|
||||
}
|
||||
|
||||
// 成交客户
|
||||
const customer = data => {
|
||||
return request({
|
||||
url: 'mall/statistics',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 访客记录
|
||||
const visitors = data => {
|
||||
return request({
|
||||
url: 'companies/visitors/lists',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 基础信息模块
|
||||
const basicsConfig = () => {
|
||||
return request({
|
||||
url: 'companies/info/create'
|
||||
})
|
||||
}
|
||||
|
||||
// 企业基础信息 编辑
|
||||
const basicsInfo = (method, data) => {
|
||||
return request({
|
||||
url: 'companies/info',
|
||||
method,
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
index,
|
||||
customer,
|
||||
visitors,
|
||||
basicsConfig,
|
||||
basicsInfo
|
||||
}
|
||||
17
apis/interfaces/uploading.js
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
/**
|
||||
* Web唐明明
|
||||
* 匆匆数载恍如梦,岁月迢迢华发增。
|
||||
* 碌碌无为枉半生,一朝惊醒万事空。
|
||||
* moduleName: 上传图片
|
||||
*/
|
||||
|
||||
import { uploading as upd } from '../index'
|
||||
|
||||
const uploads = (paths) => {
|
||||
return upd(paths)
|
||||
}
|
||||
|
||||
export {
|
||||
uploads
|
||||
}
|
||||
37
apis/interfaces/vip.js
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
/**
|
||||
* Web唐明明
|
||||
* 匆匆数载恍如梦,岁月迢迢华发增。
|
||||
* 碌碌无为枉半生,一朝惊醒万事空。
|
||||
* moduleName: 会员
|
||||
*/
|
||||
|
||||
import { request } from '../index'
|
||||
|
||||
// 会员身份信息
|
||||
const identities = () => {
|
||||
return request({
|
||||
url: 'user/identities'
|
||||
})
|
||||
}
|
||||
|
||||
// 开通会员
|
||||
const vipOrder = id =>{
|
||||
return request({
|
||||
url : 'user/identities/create/' + id,
|
||||
method : 'POST'
|
||||
})
|
||||
}
|
||||
|
||||
// 开通会员微信支付
|
||||
const vipWechatPay = id => {
|
||||
return request({
|
||||
url : 'user/identities/pay/' + id + '/wechat'
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
identities,
|
||||
vipOrder,
|
||||
vipWechatPay
|
||||
}
|
||||
@@ -2,18 +2,18 @@
|
||||
<template>
|
||||
<view class="goods--list">
|
||||
<block v-if="list.length > 0">
|
||||
<view class="goods--item" v-for="(item, index) in list" :key="index">
|
||||
<view class="goods--item" v-for="(item, index) in list" :key="index" @click="goods(item)">
|
||||
<view class="cover">
|
||||
<image class="cover--src" :src="item.cover" mode="aspectFill" />
|
||||
</view>
|
||||
<view class="content">
|
||||
<view class="title">{{item.title}}</view>
|
||||
<view class="title">{{item.name}}</view>
|
||||
<view class="content-flex">
|
||||
<view class="price eb" v-if="priceType === 'EB'">
|
||||
{{item.price}}<text>易币</text>
|
||||
</view>
|
||||
<view class="price cny" v-if="priceType === 'CNY'">
|
||||
<text>¥</text>{{item.price}}
|
||||
<text>¥</text>{{item.original_price}}
|
||||
</view>
|
||||
<view class="sales">已易{{item.sales}}</view>
|
||||
</view>
|
||||
@@ -49,6 +49,11 @@ export default {
|
||||
type : String,
|
||||
default : '暂无商品数据 -_-!'
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
goods(e){
|
||||
this.$emit('on-goods', e)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@@ -63,7 +68,7 @@ export default {
|
||||
box-sizing: border-box;
|
||||
width: calc(50% - 20rpx);
|
||||
margin: 10rpx;
|
||||
border-radius: $radius/4;
|
||||
border-radius: $radius/2;
|
||||
overflow: hidden;
|
||||
.cover{
|
||||
position: relative;
|
||||
@@ -83,6 +88,8 @@ export default {
|
||||
font-size: $title-size-lg;
|
||||
line-height: 40rpx;
|
||||
height: 80rpx;
|
||||
text-align: justify;
|
||||
@extend .ellipsis;
|
||||
}
|
||||
.content-flex{
|
||||
display: flex;
|
||||
@@ -92,7 +99,7 @@ export default {
|
||||
.price{
|
||||
color: $text-price;
|
||||
font-weight: bold;
|
||||
font-size: $title-size + 8;
|
||||
font-size: $title-size;
|
||||
text{
|
||||
font-size: $title-size-sm;
|
||||
font-weight: normal;
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="industry--list">
|
||||
<view class="industry--box">
|
||||
<image class="industry--cover" src="../../static/dev/good_cover_00.jpg" mode="aspectFill"></image>
|
||||
<view class="industry--content">
|
||||
<view class="industry--title">MLB</view>
|
||||
<view class="industry--credibility">信誉值</view>
|
||||
<view class="industry--business">主营</view>
|
||||
<view class="industry--trading">成交</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name:"industry-list",
|
||||
data() {
|
||||
return {
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
104
components/industry-list/industry-list.vue
Normal file
@@ -0,0 +1,104 @@
|
||||
<template>
|
||||
<view class="industry--list">
|
||||
<block v-if="list.length > 0">
|
||||
<view class="industry--box" v-for="(item, index) in list" :key="index" @click="industry(item)">
|
||||
<image class="industry--cover" :src="item.cover" mode="aspectFill"></image>
|
||||
<view class="industry--content">
|
||||
<view class="industry--title">{{item.name}}</view>
|
||||
<view class="industry--credibility">
|
||||
<uni-rate
|
||||
:readonly="true"
|
||||
color="#ddd"
|
||||
active-color="#c82626"
|
||||
:value="item.star"
|
||||
:size="14"
|
||||
/>
|
||||
</view>
|
||||
<view class="industry--business">{{item.industry.title}}</view>
|
||||
<uni-icons class="industry--arrow" type="arrowright" color="#ddd" size="14" />
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="industry--null">
|
||||
<view>{{toast}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name:"industry-list",
|
||||
props: {
|
||||
// 数据列表
|
||||
list: {
|
||||
type : Array,
|
||||
default : () => {
|
||||
return new Array
|
||||
}
|
||||
},
|
||||
// 列表空提示
|
||||
toast : {
|
||||
type : String,
|
||||
default : '暂无商品数据 -_-!'
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
industry(e){
|
||||
this.$emit('on-industry', e)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 列表信息
|
||||
.industry--list{
|
||||
padding-bottom: $padding;
|
||||
}
|
||||
.industry--box{
|
||||
position: relative;
|
||||
margin: $margin - 10 $margin;
|
||||
background: white;
|
||||
border-radius: $radius/2;
|
||||
padding: $padding ($padding*3) $padding ($padding * 2 + 128);
|
||||
min-height: 128rpx;
|
||||
.industry--cover{
|
||||
position: absolute;
|
||||
left: $padding;
|
||||
top: $padding;
|
||||
width: 128rpx;
|
||||
height: 128rpx;
|
||||
}
|
||||
.industry--title{
|
||||
font-weight: bold;
|
||||
font-size: $title-size-lg;
|
||||
line-height: 40rpx;
|
||||
}
|
||||
.industry--credibility{
|
||||
padding-top: 8rpx;
|
||||
height: 48rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.industry--business{
|
||||
line-height: 40rpx;
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
}
|
||||
.industry--arrow{
|
||||
position: absolute;
|
||||
right: $margin;
|
||||
top: 50%;
|
||||
margin-top: -7px;
|
||||
}
|
||||
}
|
||||
// 数据空
|
||||
.industry--null{
|
||||
width: 100%;
|
||||
padding: 20vh 0;
|
||||
text-align: center;
|
||||
font-size: $title-size-m;
|
||||
color: $text-gray;
|
||||
}
|
||||
</style>
|
||||
249
components/store-boss/store-boss.vue
Normal file
@@ -0,0 +1,249 @@
|
||||
<template>
|
||||
<view class="boos">
|
||||
<!-- 店铺交易数据 -->
|
||||
<view class="statistical">
|
||||
<view class="item">
|
||||
<view class="number">{{wordData.top.barter_total || 0}}</view>
|
||||
<view class="text">总易货额</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="number">{{wordData.top.trading_day || 0}}</view>
|
||||
<view class="text">今日交易额</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="number">{{wordData.top.eb_in || 0}}</view>
|
||||
<view class="text">E货额度收入</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<view class="number">{{wordData.top.cash_in || 0}}</view>
|
||||
<view class="text">现金收入</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 店铺概况 -->
|
||||
<view class="general">
|
||||
<view class="general-box">
|
||||
<view class="general-item" @click="$Router.push({name: 'Visitors'})">
|
||||
<view class="number">{{wordData.middle.visitors || 0}}</view>
|
||||
<view class="text">访客统计</view>
|
||||
</view>
|
||||
<view class="general-item" @click="$Router.push({name: 'Customer'})">
|
||||
<view class="number">{{wordData.middle.clinch || 0}}</view>
|
||||
<view class="text">成交客户</view>
|
||||
</view>
|
||||
<view class="general-item" @click="$Router.push({name: 'Employees'})">
|
||||
<view class="number">{{wordData.middle.employees || 0}}</view>
|
||||
<view class="text">员工数量</view>
|
||||
<!-- <uni-icons type="arrowright" size="14" color="#555"></uni-icons> -->
|
||||
</view>
|
||||
<view class="general-item">
|
||||
<view class="number">{{wordData.middle.sale || 0}}</view>
|
||||
<view class="text">在售权证</view>
|
||||
</view>
|
||||
<view class="general-item">
|
||||
<view class="number">{{wordData.middle.hold || 0}}</view>
|
||||
<view class="text">权证持有</view>
|
||||
</view>
|
||||
<view class="general-item">
|
||||
<view class="number">{{wordData.middle.transfer || 0}}</view>
|
||||
<view class="text">转让权证</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 店铺订单管理 -->
|
||||
<view class="tool-flex order">
|
||||
<view class="order-item">
|
||||
<view class="number" v-if="wordData.order.not_shipped > 0">{{wordData.order.not_shipped}}</view>
|
||||
<image class="icon" src="@/static/icons/order_icon_01.png" mode="aspectFill"></image>
|
||||
<view class="title">待发货</view>
|
||||
</view>
|
||||
<view class="order-item">
|
||||
<view class="number" v-if="wordData.order.already_shipped > 0">{{wordData.order.already_shipped}}</view>
|
||||
<image class="icon" src="@/static/icons/order_icon_02.png" mode="aspectFill"></image>
|
||||
<view class="title">已发货</view>
|
||||
</view>
|
||||
<view class="order-item">
|
||||
<view class="number" v-if="wordData.order.not_pick > 0">{{wordData.order.not_pick}}</view>
|
||||
<image class="icon" src="@/static/icons/order_icon_03.png" mode="aspectFill"></image>
|
||||
<view class="title">待提货</view>
|
||||
</view>
|
||||
<view class="order-item">
|
||||
<view class="number" v-if="wordData.order.already_pick > 0">{{wordData.order.already_pick}}</view>
|
||||
<image class="icon" src="@/static/icons/order_icon_00.png" mode="aspectFill"></image>
|
||||
<view class="title">已提货</view>
|
||||
</view>
|
||||
<view class="order-item">
|
||||
<view class="number" v-if="wordData.order.after_sale > 0">{{wordData.order.after_sale}}</view>
|
||||
<image class="icon" src="@/static/icons/order_icon_04.png" mode="aspectFill"></image>
|
||||
<view class="title">退换货</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 店铺工具 -->
|
||||
<view class="tool-flex store">
|
||||
<view class="store-item">
|
||||
<image class="icon" src="@/static/icons/tool_icon_00.png" mode="aspectFill"></image>
|
||||
<view class="title">扫码验证</view>
|
||||
</view>
|
||||
<view class="store-item">
|
||||
<image class="icon" src="@/static/icons/tool_icon_01.png" mode="aspectFill"></image>
|
||||
<view class="title">商品权证</view>
|
||||
</view>
|
||||
<view class="store-item">
|
||||
<image class="icon" src="@/static/icons/tool_icon_02.png" mode="aspectFill"></image>
|
||||
<view class="title">优惠券管理</view>
|
||||
</view>
|
||||
<view class="store-item">
|
||||
<image class="icon" src="@/static/icons/tool_icon_03.png" mode="aspectFill"></image>
|
||||
<view class="title">收款管理</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 企业营销工具管理 -->
|
||||
<view class="tool-flex store">
|
||||
<view class="store-item">
|
||||
<image class="icon" src="@/static/icons/tool_icon_04.png" mode="aspectFill"></image>
|
||||
<view class="title">基础信息</view>
|
||||
</view>
|
||||
<view class="store-item">
|
||||
<image class="icon" src="@/static/icons/tool_icon_05.png" mode="aspectFill"></image>
|
||||
<view class="title">智能名片</view>
|
||||
</view>
|
||||
<view class="store-item">
|
||||
<image class="icon" src="@/static/icons/tool_icon_06.png" mode="aspectFill"></image>
|
||||
<view class="title">营销推广码</view>
|
||||
</view>
|
||||
<view class="store-item">
|
||||
<image class="icon" src="@/static/icons/tool_icon_07.png" mode="aspectFill"></image>
|
||||
<view class="title">部门/门店</view>
|
||||
</view>
|
||||
<view class="store-item">
|
||||
<image class="icon" src="@/static/icons/tool_icon_08.png" mode="aspectFill"></image>
|
||||
<view class="title">员工管理</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name:"store-boss",
|
||||
props:{
|
||||
// 工作台信息
|
||||
wordData:{
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {
|
||||
top : {},
|
||||
middle : {},
|
||||
order : {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.boos{
|
||||
// 店铺统计
|
||||
.statistical{
|
||||
display: flex;
|
||||
background: $text-price;
|
||||
padding: $padding ($padding/2) $padding*5;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
.item{
|
||||
width: calc(25% - #{$padding});
|
||||
text-align: center;
|
||||
color: white;
|
||||
margin: 0 $margin / 2;
|
||||
.number{
|
||||
font-weight: bold;
|
||||
font-size: $title-size;
|
||||
}
|
||||
.text{
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 店铺概况
|
||||
.general{
|
||||
margin: -$margin*4 $margin 0 $margin;
|
||||
.general-box{
|
||||
background-color: white;
|
||||
border-radius: $radius/2;
|
||||
display: flex;
|
||||
padding: $padding $padding/2;
|
||||
flex-wrap: wrap;
|
||||
.general-item{
|
||||
width: 33.33%;
|
||||
text-align: center;
|
||||
padding: $padding/2;
|
||||
box-sizing: border-box;
|
||||
.number{
|
||||
font-weight: bold;
|
||||
font-size: $title-size;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
.text{
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
line-height: 40rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 店铺工具
|
||||
.tool-flex{
|
||||
background: white;
|
||||
border-radius: $radius/2;
|
||||
padding: $padding/2;
|
||||
margin: $margin;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
.store-item{
|
||||
padding: $padding/2;
|
||||
text-align: center;
|
||||
width: 25%;
|
||||
box-sizing: border-box;
|
||||
.icon{
|
||||
width: 68rpx;
|
||||
height: 68rpx;
|
||||
vertical-align: top;
|
||||
}
|
||||
.title{
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
padding-top: $padding/3;
|
||||
}
|
||||
}
|
||||
.order-item{
|
||||
position: relative;
|
||||
padding: $padding/2;
|
||||
text-align: center;
|
||||
width: 20%;
|
||||
box-sizing: border-box;
|
||||
.icon{
|
||||
width: 58rpx;
|
||||
height: 58rpx;
|
||||
vertical-align: top;
|
||||
}
|
||||
.title{
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
}
|
||||
.number{
|
||||
position: absolute;
|
||||
top: 10rpx;
|
||||
left: calc( 50% + 10rpx );
|
||||
font-size: $title-size-sm;
|
||||
background: $text-price;
|
||||
color: white;
|
||||
height: 30rpx;
|
||||
line-height: 30rpx;
|
||||
border-radius: 15rpx;
|
||||
min-width: 30rpx;
|
||||
z-index: 9;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
159
components/store-staff/store-staff.vue
Normal file
@@ -0,0 +1,159 @@
|
||||
<template>
|
||||
<view class="staff">
|
||||
员工
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name:"store-staff",
|
||||
props:{
|
||||
// 店铺统计
|
||||
top: {
|
||||
type: Object,
|
||||
default: ()=> {
|
||||
return {
|
||||
barter_total: 0,
|
||||
trading_day : 0,
|
||||
eb_in : 0,
|
||||
cash_in : 0
|
||||
}
|
||||
}
|
||||
},
|
||||
// 店铺概况
|
||||
middle: {
|
||||
type: Object,
|
||||
default: ()=> {
|
||||
return {
|
||||
visitors : 0,
|
||||
clinch : 0,
|
||||
employees: 0,
|
||||
sale : 0,
|
||||
hold : 0,
|
||||
transfer : 0
|
||||
}
|
||||
}
|
||||
},
|
||||
// 店铺订单
|
||||
order: {
|
||||
type: Object,
|
||||
default: ()=> {
|
||||
return {
|
||||
not_shipped : 0,
|
||||
already_shipped : 0,
|
||||
not_pick : 0,
|
||||
already_pick : 0,
|
||||
after_sale : 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.staff{
|
||||
// 店铺统计
|
||||
.statistical{
|
||||
display: flex;
|
||||
background: $text-price;
|
||||
padding: $padding ($padding/2) $padding*5;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
.item{
|
||||
width: calc(25% - #{$padding});
|
||||
text-align: center;
|
||||
color: white;
|
||||
margin: 0 $margin / 2;
|
||||
.number{
|
||||
font-weight: bold;
|
||||
font-size: $title-size;
|
||||
}
|
||||
.text{
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 店铺概况
|
||||
.general{
|
||||
margin: -$margin*4 $margin 0 $margin;
|
||||
.general-box{
|
||||
background-color: white;
|
||||
border-radius: $radius/2;
|
||||
display: flex;
|
||||
padding: $padding $padding/2;
|
||||
flex-wrap: wrap;
|
||||
.general-item{
|
||||
width: 33.33%;
|
||||
text-align: center;
|
||||
padding: $padding/2;
|
||||
box-sizing: border-box;
|
||||
.number{
|
||||
font-weight: bold;
|
||||
font-size: $title-size;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
.text{
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
line-height: 40rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 店铺工具
|
||||
.tool-flex{
|
||||
background: white;
|
||||
border-radius: $radius/2;
|
||||
padding: $padding/2;
|
||||
margin: $margin;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
.store-item{
|
||||
padding: $padding/2;
|
||||
text-align: center;
|
||||
width: 25%;
|
||||
box-sizing: border-box;
|
||||
.icon{
|
||||
width: 68rpx;
|
||||
height: 68rpx;
|
||||
vertical-align: top;
|
||||
}
|
||||
.title{
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
padding-top: $padding/3;
|
||||
}
|
||||
}
|
||||
.order-item{
|
||||
position: relative;
|
||||
padding: $padding/2;
|
||||
text-align: center;
|
||||
width: 20%;
|
||||
box-sizing: border-box;
|
||||
.icon{
|
||||
width: 58rpx;
|
||||
height: 58rpx;
|
||||
vertical-align: top;
|
||||
}
|
||||
.title{
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
}
|
||||
.number{
|
||||
position: absolute;
|
||||
top: 10rpx;
|
||||
left: calc( 50% + 10rpx );
|
||||
font-size: $title-size-sm;
|
||||
background: $text-price;
|
||||
color: white;
|
||||
height: 30rpx;
|
||||
line-height: 30rpx;
|
||||
border-radius: 15rpx;
|
||||
min-width: 30rpx;
|
||||
z-index: 9;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -23,27 +23,30 @@
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules" : {
|
||||
"OAuth" : {}
|
||||
"OAuth" : {},
|
||||
"Payment" : {},
|
||||
"Share" : {}
|
||||
},
|
||||
/* 应用发布信息 */
|
||||
"distribute" : {
|
||||
/* android打包配置 */
|
||||
"android" : {
|
||||
"permissions" : [
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
@@ -52,8 +55,63 @@
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {
|
||||
"oauth" : {
|
||||
"univerify" : {}
|
||||
"univerify" : {},
|
||||
"weixin" : {
|
||||
"appid" : "wx222fbe58feee7819",
|
||||
"appsecret" : "3d24525a636d7573a8fae885097d5cf7",
|
||||
"UniversalLinks" : ""
|
||||
}
|
||||
},
|
||||
"payment" : {
|
||||
"weixin" : {
|
||||
"__platform__" : [ "ios", "android" ],
|
||||
"appid" : "wx222fbe58feee7819",
|
||||
"UniversalLinks" : ""
|
||||
}
|
||||
},
|
||||
"share" : {
|
||||
"weixin" : {
|
||||
"appid" : "wx222fbe58feee7819",
|
||||
"UniversalLinks" : ""
|
||||
}
|
||||
},
|
||||
"maps" : {},
|
||||
"ad" : {}
|
||||
},
|
||||
"icons" : {
|
||||
"android" : {
|
||||
"hdpi" : "unpackage/res/icons/72x72.png",
|
||||
"xhdpi" : "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
||||
},
|
||||
"ios" : {
|
||||
"appstore" : "unpackage/res/icons/1024x1024.png",
|
||||
"ipad" : {
|
||||
"app" : "unpackage/res/icons/76x76.png",
|
||||
"app@2x" : "unpackage/res/icons/152x152.png",
|
||||
"notification" : "unpackage/res/icons/20x20.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
||||
"settings" : "unpackage/res/icons/29x29.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"spotlight" : "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone" : {
|
||||
"app@2x" : "unpackage/res/icons/120x120.png",
|
||||
"app@3x" : "unpackage/res/icons/180x180.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"notification@3x" : "unpackage/res/icons/60x60.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"settings@3x" : "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
}
|
||||
},
|
||||
"splashscreen" : {
|
||||
"androidStyle" : "common"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
117
pages.json
@@ -4,7 +4,8 @@
|
||||
"path": "pages/equity/index",
|
||||
"name": "Equity",
|
||||
"style":{
|
||||
"navigationStyle":"custom"
|
||||
"navigationStyle":"custom",
|
||||
"navigationBarTextStyle":"white"
|
||||
}
|
||||
},{
|
||||
"path": "pages/market/index",
|
||||
@@ -25,12 +26,23 @@
|
||||
}
|
||||
},{
|
||||
"path": "pages/store/index",
|
||||
"name": "Store"
|
||||
"name": "Store",
|
||||
"style": {
|
||||
"navigationStyle":"custom",
|
||||
"navigationBarTitleText":"企业工具",
|
||||
"navigationBarTextStyle":"white",
|
||||
"navigationBarBackgroundColor":"#c82626"
|
||||
}
|
||||
},{
|
||||
"path": "pages/property/index",
|
||||
"name": "Property"
|
||||
"name": "Property",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle":"custom"
|
||||
}
|
||||
},{
|
||||
"path" : "pages/goods/details",
|
||||
"name" : "goodsDetails",
|
||||
"style": {
|
||||
"navigationBarTitleText":"",
|
||||
"titleNView": {
|
||||
@@ -82,9 +94,96 @@
|
||||
"path": "pages/vip/index",
|
||||
"name": "Vip",
|
||||
"style": {
|
||||
"navigationBarTitleText": "我的会员"
|
||||
"navigationBarTitleText": "会员",
|
||||
"navigationBarBackgroundColor":"#1f1b1c",
|
||||
"navigationBarTextStyle":"white",
|
||||
"backgroundColor":"#fefaef"
|
||||
}
|
||||
}
|
||||
,{
|
||||
"path" : "pages/equity/search",
|
||||
"name" : "Search",
|
||||
"style":{
|
||||
"navigationBarTitleText": "搜索"
|
||||
}
|
||||
},{
|
||||
"path" : "pages/market/logs",
|
||||
"name" : "marketLogs",
|
||||
"style" :{
|
||||
"navigationBarTitleText": "成交历史"
|
||||
}
|
||||
},{
|
||||
"path" : "pages/order/buy",
|
||||
"name" : "Buy",
|
||||
"style" :{
|
||||
"navigationBarTitleText": "确认订单",
|
||||
"navigationBarBackgroundColor":"#FFFFFF"
|
||||
}
|
||||
},{
|
||||
"path" : "pages/goods/lists",
|
||||
"name" : "goodsList",
|
||||
"style" :{
|
||||
"navigationBarTitleText": "商品列表",
|
||||
"navigationBarBackgroundColor":"#FFFFFF"
|
||||
}
|
||||
},{
|
||||
"path" : "pages/company/approve",
|
||||
"name" : "Approve",
|
||||
"style" :{
|
||||
"navigationBarTitleText": ""
|
||||
}
|
||||
},{
|
||||
"path" : "pages/store/visitors",
|
||||
"name" : "Visitors",
|
||||
"style" : {
|
||||
"navigationBarTitleText": "访客统计",
|
||||
"navigationBarBackgroundColor":"#FFFFFF"
|
||||
}
|
||||
},{
|
||||
"path" : "pages/store/customer",
|
||||
"name" : "Customer",
|
||||
"style" : {
|
||||
"navigationBarTitleText": "成交客户",
|
||||
"navigationBarBackgroundColor":"#FFFFFF"
|
||||
}
|
||||
},{
|
||||
"path" : "pages/store/employees",
|
||||
"name" : "Employees",
|
||||
"style" : {
|
||||
"navigationBarTitleText": "员工",
|
||||
"app-plus":{
|
||||
"titleNView": {
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"buttons": [
|
||||
{
|
||||
"text": "添加",
|
||||
"fontSize": "16",
|
||||
"width": "80",
|
||||
"color": "#c82626"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},{
|
||||
"path" : "pages/store/basics",
|
||||
"style" :{
|
||||
"navigationBarTitleText": "基础信息",
|
||||
"app-plus":{
|
||||
"titleNView": {
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"buttons": [
|
||||
{
|
||||
"text": "保存",
|
||||
"fontSize": "16",
|
||||
"width": "80",
|
||||
"color": "#c82626"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"tabBar": {
|
||||
"color": "#bababa",
|
||||
@@ -121,5 +220,15 @@
|
||||
},
|
||||
"easycom": {
|
||||
"nv": "@/uni_modules/pyh-nv/components/pyh-nv/pyh-nv.vue"
|
||||
},
|
||||
"condition" : { //模式配置,仅开发期间生效
|
||||
"current": 0, //当前激活的模式(list 的索引项)
|
||||
"list": [
|
||||
{
|
||||
"name": "", //模式名称
|
||||
"path": "", //启动页面,必选
|
||||
"query": "" //启动参数,在页面的onLoad函数里面得到
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
259
pages/company/approve.vue
Normal file
@@ -0,0 +1,259 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="header">
|
||||
<view class="title">企业认证</view>
|
||||
<view class="subtitle">请如实填写认证信息,快速审核开店</view>
|
||||
</view>
|
||||
<view class="white-box">
|
||||
<view class="inputs logo">
|
||||
<label>企业LOGO</label>
|
||||
<image class="logo-cover" :src="logo || require('@/static/icons/add-icon.png')" @click="updImg('logo')" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<label>企业名称</label>
|
||||
<input type="text" v-model="name" placeholder="输入企业名称" />
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<label>企业类型</label>
|
||||
<picker v-if="type.length > 0" :range="type" :value="typeIndex" range-key="name" @change="changePicker" data-type="type">
|
||||
<view class="picker-text nowrap">
|
||||
{{type[typeIndex].name}}
|
||||
<uni-icons class="picker-icon" type="arrowdown"></uni-icons>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<label>企业行业</label>
|
||||
<picker v-if="industry.length > 0" :range="industry" :value="industryIndex" range-key="title" @change="changePicker" data-type="industry">
|
||||
<view class="picker-text nowrap">
|
||||
{{industry[industryIndex].title}}
|
||||
<uni-icons class="picker-icon" type="arrowdown"></uni-icons>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<label>法人姓名</label>
|
||||
<input type="text" v-model="corporate" placeholder="输入法人姓名" />
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<label>法人身份证</label>
|
||||
<input type="text" v-model="identity" placeholder="输入法人身份证" />
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<label>机构代码</label>
|
||||
<input type="text" v-model="org" placeholder="输入企业组织机构代码" />
|
||||
</view>
|
||||
<view class="inputs logo">
|
||||
<label>营业执照</label>
|
||||
<image class="license-cover" :src="license || require('@/static/icons/add-icon.png')" @click="updImg('license')" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="btns">
|
||||
<button type="default" size="default" @click="submitApplies">提交认证</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { appliesCreate, applies, appliesInfo } from '@/apis/interfaces/company'
|
||||
import { uploads } from '@/apis/interfaces/uploading'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
formType : "",
|
||||
name : "",
|
||||
corporate : "",
|
||||
identity : "",
|
||||
org : "",
|
||||
logo : "",
|
||||
license : "",
|
||||
type : [],
|
||||
industry : [],
|
||||
typeIndex : 0,
|
||||
industryIndex: 0,
|
||||
reason : ''
|
||||
};
|
||||
},
|
||||
created(){
|
||||
appliesCreate().then(res=>{
|
||||
console.log(res)
|
||||
this.industry = res.industries
|
||||
this.type = res.type
|
||||
this.formType = this.$Route.query.formType
|
||||
this.name = res.info.name
|
||||
this.typeIndex = res.type.findIndex(val => val.id === res.info.type.id) || 0
|
||||
this.industryIndex = res.industries.findIndex(val => val.industry_id === res.info.industry.industry_id) || 0
|
||||
if(this.formType === 'put'){
|
||||
appliesInfo().then(formValue => {
|
||||
this.corporate = formValue.certification.name
|
||||
this.identity = formValue.certification.idcard
|
||||
this.org = formValue.certification.code
|
||||
this.logo = formValue.cover
|
||||
this.license = formValue.certification.license
|
||||
}).catch(valueErr => {
|
||||
console.log(valueErr)
|
||||
})
|
||||
}
|
||||
}).catch(err =>{
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
methods:{
|
||||
// 提交信息
|
||||
submitApplies(){
|
||||
|
||||
let method = this.formType === 'put' ? 'PUT' : 'POST'
|
||||
applies({
|
||||
name : this.name,
|
||||
cover : this.logo,
|
||||
license : this.license,
|
||||
user_name : this.corporate,
|
||||
id_card : this.identity,
|
||||
code : this.org,
|
||||
type : this.type[this.typeIndex].id,
|
||||
industry_id : this.industry[this.industryIndex].industry_id,
|
||||
}, method).then(res => {
|
||||
uni.showModal({
|
||||
title : '提示',
|
||||
content : '您的企业认证信息已提交,审核需3-7个工作日,请耐心等待',
|
||||
showCancel : false,
|
||||
confirmText : '确认',
|
||||
success : resModal => {
|
||||
this.$Router.back()
|
||||
}
|
||||
})
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 选择器
|
||||
changePicker(e){
|
||||
let changeType = e.target.dataset.type,
|
||||
changeVlae = e.detail.value
|
||||
|
||||
switch(changeType){
|
||||
case 'type':
|
||||
this.typeIndex = changeVlae
|
||||
break
|
||||
case 'industry':
|
||||
this.industryIndex = changeVlae
|
||||
break
|
||||
}
|
||||
},
|
||||
|
||||
// 上传图片
|
||||
updImg(type){
|
||||
uni.chooseImage({
|
||||
count : 1,
|
||||
success : choose => {
|
||||
let paths = choose.tempFilePaths
|
||||
uploading(paths).then(res => {
|
||||
this[type] = res.url
|
||||
console.log(this[type])
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 内容
|
||||
.content{
|
||||
.header{
|
||||
height: 15vh;
|
||||
padding-bottom: $padding * 2;
|
||||
box-sizing: border-box;
|
||||
@extend .vertical;
|
||||
.title{
|
||||
text-align: center;
|
||||
font-size: $title-size + 14;
|
||||
font-weight: bold;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
.subtitle{
|
||||
font-size: $title-size-m;
|
||||
color: $text-gray;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.white-box{
|
||||
background-color: white;
|
||||
border-radius: $radius $radius 0 0;
|
||||
min-height: 85vh;
|
||||
padding: $padding $padding * 2 $padding * 2;
|
||||
box-sizing: border-box;
|
||||
.inputs{
|
||||
position: relative;
|
||||
margin-top: $margin;
|
||||
background: white;
|
||||
border-bottom: solid 1rpx $border-color;
|
||||
padding-left: 200rpx;
|
||||
line-height: 90rpx;
|
||||
min-height: 90rpx;
|
||||
label{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 200rpx;
|
||||
font-size: $title-size;
|
||||
}
|
||||
input{
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
}
|
||||
.picker-text{
|
||||
position: relative;
|
||||
padding-right: 90rpx;
|
||||
.picker-icon{
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.logo{
|
||||
min-height: 98rpx;
|
||||
padding-bottom: $padding;
|
||||
.logo-cover{
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 98rpx;
|
||||
height: 98rpx;
|
||||
background: $border-color-lg;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.license-cover{
|
||||
@extend .logo-cover;
|
||||
border-radius: 0;
|
||||
width: 131rpx;
|
||||
}
|
||||
}
|
||||
.btns{
|
||||
padding-top: $padding * 2;
|
||||
button{
|
||||
background: $text-price;
|
||||
border-radius: 0;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
font-size: $title-size;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
&::after{
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -16,7 +16,8 @@
|
||||
},
|
||||
onNavigationBarButtonTap(e){
|
||||
this.$Router.pushTab({name: "Equity"})
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -11,18 +11,18 @@
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<label>企业类型</label>
|
||||
<picker @change="changePicker" data-type="type">
|
||||
<picker v-if="type.length > 0" :range="type" :value="typeIndex" range-key="name" @change="changePicker" data-type="type">
|
||||
<view class="picker-text nowrap">
|
||||
选择企业类型
|
||||
{{type[typeIndex].name}}
|
||||
<uni-icons class="picker-icon" type="arrowdown"></uni-icons>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="inputs">
|
||||
<label>企业行业</label>
|
||||
<picker @change="changePicker" data-type="industry">
|
||||
<picker v-if="industry.length > 0" :range="industry" :value="industryIndex" range-key="title" @change="changePicker" data-type="industry">
|
||||
<view class="picker-text nowrap">
|
||||
选择企业行业
|
||||
{{industry[industryIndex].title}}
|
||||
<uni-icons class="picker-icon" type="arrowdown"></uni-icons>
|
||||
</view>
|
||||
</picker>
|
||||
@@ -35,6 +35,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { createConfig, inits } from '@/apis/interfaces/company'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@@ -45,18 +46,34 @@
|
||||
industryIndex: 0
|
||||
};
|
||||
},
|
||||
created(){
|
||||
createConfig().then(res=>{
|
||||
this.type = res.type
|
||||
this.industry = res.industries
|
||||
})
|
||||
},
|
||||
methods:{
|
||||
// 提交信息
|
||||
next(){
|
||||
console.log(this.name)
|
||||
console.log('提交信息')
|
||||
this.$Router.push({name: 'Prompt'})
|
||||
inits({
|
||||
name : this.name,
|
||||
type : this.type[this.typeIndex].id,
|
||||
industry_id : this.industry[this.industryIndex].industry_id
|
||||
}).then(res => {
|
||||
this.$Router.push({name: 'Prompt'})
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
//选择器
|
||||
changePicker(e){
|
||||
let changeType = e.target.dataset.type,
|
||||
changeVlae = e.target.dataset.value
|
||||
changeVlae = e.detail.value
|
||||
|
||||
switch(changeType){
|
||||
case 'type':
|
||||
this.typeIndex = changeVlae
|
||||
|
||||
@@ -1,61 +1,53 @@
|
||||
<template>
|
||||
<view>
|
||||
<!-- 状态栏 -->
|
||||
<nv :config="nvConfig" @nvTabTap="onNvTab"></nv>
|
||||
<nv :config="nvConfig" @nvTabTap="onNvTab" @nvBtnTap="onRightBtn"></nv>
|
||||
<block v-if="tabIndex === 0">
|
||||
<!-- 搜索 -->
|
||||
<view class="search">
|
||||
<navigator class="nav" url="#">搜索企业/行业</navigator>
|
||||
</view>
|
||||
<!-- 推荐商家 -->
|
||||
<view class="block-title">推荐商家</view>
|
||||
<view class="block-title">
|
||||
<view class="title">
|
||||
推荐商家
|
||||
</view>
|
||||
</view>
|
||||
<scroll-view scroll-x class="recommended">
|
||||
<block v-for="(item, index) in 4" :key="index">
|
||||
<block v-for="(item, index) in recommendBus" :key="index">
|
||||
<view class="item-box">
|
||||
<image
|
||||
class="item-cover"
|
||||
src="@/static/dev/mall-logo-01.png"
|
||||
mode="aspectFill"
|
||||
></image>
|
||||
<view class="item-title">MLB</view>
|
||||
<view class="item-btn">进店</view>
|
||||
</view>
|
||||
<view class="item-box">
|
||||
<image
|
||||
class="item-cover"
|
||||
src="@/static/dev/mall-logo-00.png"
|
||||
:src="item.cover"
|
||||
mode="aspectFill"
|
||||
/>
|
||||
<view class="item-title">名创优品</view>
|
||||
<view class="item-title nowrap">{{item.name || '-'}}</view>
|
||||
<view class="item-btn">进店</view>
|
||||
</view>
|
||||
</block>
|
||||
</scroll-view>
|
||||
<!-- 热易商家 -->
|
||||
<view class="block-title">
|
||||
热易商家
|
||||
<navigator class="more" url="#">查看更多</navigator>
|
||||
<view class="title">
|
||||
热易商家
|
||||
</view>
|
||||
</view>
|
||||
<swiper class="hot-swiper">
|
||||
<swiper-item v-for="(item, index) in 3" :key="index">
|
||||
<swiper-item v-for="(item, index) in hotBus" :key="index">
|
||||
<view class="hot-box">
|
||||
<image
|
||||
class="cover"
|
||||
src="@/static/dev/mall-logo-00.png"
|
||||
:src="item.cover"
|
||||
mode="aspectFill"
|
||||
/>
|
||||
<view class="content">
|
||||
<view class="title nowrap">MLB(美职联)</view>
|
||||
<view class="hot-content">
|
||||
<view class="hot-title nowrap">{{item.name || '-'}}</view>
|
||||
<view class="credibility">
|
||||
<uni-rate
|
||||
:readonly="true"
|
||||
color="#ddd"
|
||||
active-color="#c82626"
|
||||
:value="2.5"
|
||||
:value="item.star"
|
||||
:size="14"
|
||||
/>
|
||||
</view>
|
||||
<view class="trading nowrap">累计交易100次</view>
|
||||
<view class="trading nowrap">累计交易{{item.orders || 0}}次</view>
|
||||
</view>
|
||||
<view class="btn">进店</view>
|
||||
</view>
|
||||
@@ -63,68 +55,121 @@
|
||||
</swiper>
|
||||
<!-- 行业分类 -->
|
||||
<scroll-view class="industry-tabs" scroll-x>
|
||||
<view class="industry-item show">全部</view>
|
||||
<view class="industry-item">轻工食品</view>
|
||||
<view class="industry-item">服饰纺织</view>
|
||||
<view class="industry-item">家居用品</view>
|
||||
<view class="industry-item">住宿餐饮</view>
|
||||
<view class="industry-item">建筑建材</view>
|
||||
<view class="industry-item" :class="{'show':index === industryIndex}" v-for="(item, index) in industryBus" :key="index">{{item.title}}</view>
|
||||
</scroll-view>
|
||||
<!-- 商家 -->
|
||||
<industry-list :list="busList" />
|
||||
</block>
|
||||
<!-- 易货商城 -->
|
||||
<block v-if="tabIndex === 1">
|
||||
<!-- 搜索 -->
|
||||
<view class="search">
|
||||
<navigator class="nav" url="#">搜索企业/行业</navigator>
|
||||
</view>
|
||||
<!-- 轮播图 -->
|
||||
<view class="banner">
|
||||
<swiper class="banner-swiper">
|
||||
<swiper-item>
|
||||
<view class="swiper-item">1</view>
|
||||
</swiper-item>
|
||||
<swiper-item>
|
||||
<view class="swiper-item">2</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
<!-- 分类 -->
|
||||
<view class="classify">
|
||||
<view class="classify-item" v-for="(item, index) in 10" :key="index">
|
||||
<image src="" mode="aspectFill"></image>
|
||||
<view class="">餐饮美食</view>
|
||||
<view class="header-back">
|
||||
<!-- 轮播图 -->
|
||||
<view class="banner">
|
||||
<swiper class="banner-swiper" indicator-color="#c82626" indicator-active-color="#f8f8f8" indicator-dots autoplay>
|
||||
<swiper-item v-for="(item, index) in banners" :key="index">
|
||||
<image class="cover" :src="item.cover" mode="aspectFill"></image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
<!-- 分类 -->
|
||||
<view class="classify">
|
||||
<view class="classify-item" v-for="(item, index) in classify" :key="index" @click="onClassify">
|
||||
<image class="cover" :src="item.cover" mode="aspectFill"></image>
|
||||
<view class="title">{{item.name}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 提醒信息 -->
|
||||
<swiper class="notice">
|
||||
<swiper-item>
|
||||
<view class="swiper-item">公告信息</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
<!-- 每日推荐 -->
|
||||
<!-- 限时抢购 -->
|
||||
<view class="block-title">
|
||||
<view class="title">
|
||||
每日推荐<text>小易精选 推荐好物</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="goods-push" v-if="JSON.stringify(position) != '{}'">
|
||||
<view class="itme item-mian" @click="onGoods(position.one)">
|
||||
<image class="cover" :src="position.one.cover" mode="widthFix"></image>
|
||||
<view class="title">{{position.one.name}}</view>
|
||||
<view class="price"><text>¥</text>{{position.one.original_price}}</view>
|
||||
</view>
|
||||
<view class="itme">
|
||||
<view class="itme-list" v-for="(item, index) in position.two" :key="index" @click="onGoods(item)">
|
||||
<image class="cover" :src="item.cover" mode="aspectFill"></image>
|
||||
<view class="title">{{item.name}}</view>
|
||||
<view class="price"><text>¥</text>{{item.original_price}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 优惠券 -->
|
||||
<view class="block-title">
|
||||
<view class="title">
|
||||
限时抢购<text>海量商家优惠券</text>
|
||||
</view>
|
||||
<navigator class="more" url="#">查看更多</navigator>
|
||||
</view>
|
||||
<view class="coupons" v-if="coupons.length > 0">
|
||||
<view class="coupons-item" v-for="(item, index) in coupons" :key="index">
|
||||
<view class="content">
|
||||
<view class="coupons-title">{{item.title}}</view>
|
||||
<view class="sun-text">{{item.title}}</view>
|
||||
<view class="btn">立即领取</view>
|
||||
</view>
|
||||
<image class="logo" :src="item.cover" mode="aspectFill"></image>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 优选商品 -->
|
||||
<goods-list :list="goods" priceType="CNY" @on-goods="onGoods" />
|
||||
</block>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { companies, companiesList } from '@/apis/interfaces/company'
|
||||
import { mall, list } from '@/apis/interfaces/goods'
|
||||
import goodsList from '@/components/goods-list/goods-list'
|
||||
import industryList from '@/components/industry-list/industry-list'
|
||||
export default{
|
||||
comments:{
|
||||
goodsList,
|
||||
industryList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tabIndex: 0,
|
||||
nvConfig: {
|
||||
tabIndex : 0,
|
||||
nvConfig : {
|
||||
tabArr: [
|
||||
{title:'广场', active:true},
|
||||
{title:'易货'}
|
||||
],
|
||||
color: "#555",
|
||||
hideback: true
|
||||
}
|
||||
color: '#FFF',
|
||||
hideback: true,
|
||||
bgColor: '#c82626',
|
||||
|
||||
btn: [{
|
||||
icon: '/static/icons/search-icon.png',
|
||||
style: 'paddingRight: 20rpx;'
|
||||
}]
|
||||
},
|
||||
// 易货部分
|
||||
banners : [],
|
||||
classify : [],
|
||||
coupons : [],
|
||||
position : {},
|
||||
goods : [],
|
||||
pages : {},
|
||||
// 广场部分
|
||||
industryIndex: 0,
|
||||
recommendBus : [],
|
||||
hotBus : [],
|
||||
industryBus : [],
|
||||
busList : [],
|
||||
busPages : {}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getCompanies()
|
||||
},
|
||||
methods:{
|
||||
// tab
|
||||
onNvTab(e){
|
||||
let tabIndex = e.index
|
||||
for(let i in this.nvConfig.tabArr){
|
||||
@@ -132,16 +177,231 @@
|
||||
else this.nvConfig.tabArr[i].active = false
|
||||
}
|
||||
this.tabIndex = tabIndex
|
||||
if(this.goods.length <= 0) this.getMall()
|
||||
},
|
||||
// 搜索
|
||||
onRightBtn(e){
|
||||
switch(e.index){
|
||||
case 0:
|
||||
this.$Router.push({name: 'Search'})
|
||||
break
|
||||
}
|
||||
},
|
||||
// 企业广场
|
||||
getCompanies(){
|
||||
companies().then(res=>{
|
||||
this.recommendBus = res.positions
|
||||
this.hotBus = res.hot
|
||||
this.industryBus = [{title: '全部',}, ...res.industries]
|
||||
this.getCompaniesList()
|
||||
})
|
||||
},
|
||||
// 企业列表
|
||||
getCompaniesList(){
|
||||
companiesList().then(res => {
|
||||
this.busList = res.data
|
||||
this.busPages = res.pages
|
||||
})
|
||||
},
|
||||
// 易货首页
|
||||
getMall(){
|
||||
mall().then(res => {
|
||||
this.classify = res.categories
|
||||
this.banners = res.banners
|
||||
this.coupons = res.coupons
|
||||
this.position = res.positions
|
||||
})
|
||||
this.getGoods()
|
||||
},
|
||||
// 商品列表
|
||||
getGoods(){
|
||||
list().then(res => {
|
||||
this.goods = res.data
|
||||
this.pages = res.page
|
||||
})
|
||||
},
|
||||
// 商品详情
|
||||
onGoods(e){
|
||||
this.$Router.push({name: 'goodsDetails', params: {id: e.goods_id}})
|
||||
},
|
||||
// 易货分类
|
||||
onClassify(){
|
||||
this.$Router.push({name: 'goodsList'})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 易货
|
||||
.header-back{
|
||||
background-image: linear-gradient(to bottom, white , #f8f8f8);
|
||||
padding-top: $padding;
|
||||
// 易货轮播
|
||||
.banner{
|
||||
position: relative;
|
||||
background: white;
|
||||
margin: 0 $margin;
|
||||
border-radius: $radius/2;
|
||||
padding-top: calc(50% - #{$margin * 2});
|
||||
overflow: hidden;
|
||||
.banner-swiper{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.cover{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: $radius/2;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 分类
|
||||
.classify{
|
||||
display: flex;
|
||||
margin: $margin/2;
|
||||
flex-wrap: wrap;
|
||||
.classify-item{
|
||||
margin: $margin/2;
|
||||
width: calc(20% - #{$margin});
|
||||
text-align: center;
|
||||
.cover{
|
||||
width: 98rpx;
|
||||
height: 98rpx;
|
||||
vertical-align: top;
|
||||
margin-bottom: $margin/2;
|
||||
}
|
||||
.title{
|
||||
line-height: 40rpx;
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 每日推荐
|
||||
.goods-push{
|
||||
margin: 0 $margin;
|
||||
background: white;
|
||||
border-radius: $radius/2;
|
||||
display: flex;
|
||||
.itme{
|
||||
width: 50%;
|
||||
}
|
||||
.item-mian{
|
||||
width: 50%;
|
||||
padding: $padding/2;
|
||||
height: 450rpx;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
border-right: solid 1rpx $border-color;
|
||||
@extend .vertical;
|
||||
.title{
|
||||
font-weight: bold;
|
||||
font-size: $title-size;
|
||||
@extend .nowrap;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
.price{
|
||||
color: $text-price;
|
||||
font-size: $title-size;
|
||||
font-weight: bold;
|
||||
line-height: 50rpx;
|
||||
text{
|
||||
font-size: 80%;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.cover{
|
||||
margin-bottom: 30rpx;
|
||||
width: 220rpx;
|
||||
height: 220rpx;
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
.itme-list{
|
||||
position: relative;
|
||||
padding: 25rpx $padding/2;
|
||||
padding-left: 150rpx;
|
||||
height: 150rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.title{
|
||||
font-size: $title-size-lg;
|
||||
@extend .nowrap;
|
||||
line-height: 60rpx;
|
||||
}
|
||||
|
||||
.price{
|
||||
color: $text-price;
|
||||
font-size: $title-size;
|
||||
font-weight: bold;
|
||||
line-height: 40rpx;
|
||||
text{
|
||||
font-size: 80%;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.cover{
|
||||
position: absolute;
|
||||
left: $padding/2;
|
||||
top: $padding/2;
|
||||
width: calc(150rpx - #{$padding});
|
||||
height: calc(150rpx - #{$padding});
|
||||
}
|
||||
}
|
||||
}
|
||||
// 优惠券
|
||||
.coupons{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin: -10rpx ($margin - 10rpx);
|
||||
.coupons-item{
|
||||
background: white;
|
||||
width: calc(50% - 20rpx);
|
||||
margin: 10rpx;
|
||||
border-radius: $radius/2;
|
||||
padding: $padding - 10;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
.content{
|
||||
width: calc(100% - 118rpx);
|
||||
.coupons-title{
|
||||
font-size: $title-size-lg;
|
||||
@extend .nowrap;
|
||||
}
|
||||
.sun-text{
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
margin-bottom: $margin/2;
|
||||
@extend .nowrap;
|
||||
}
|
||||
.btn{
|
||||
color: $text-price;
|
||||
border:solid 1rpx $text-price;
|
||||
display: inline-block;
|
||||
font-size: $title-size-sm;
|
||||
padding: 0 ($padding/2);
|
||||
height: 45rpx;
|
||||
line-height: 45rpx;
|
||||
border-radius: 22rpx;
|
||||
}
|
||||
}
|
||||
.logo{
|
||||
width: 98rpx;
|
||||
height: 98rpx;
|
||||
border-radius: 50%;
|
||||
border:solid 1rpx $border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 行业分类
|
||||
.industry-tabs{
|
||||
white-space:nowrap;
|
||||
padding: 0 0 $padding 0;
|
||||
.industry-item{
|
||||
margin-left: $margin;
|
||||
display: inline-block;
|
||||
@@ -160,7 +420,7 @@
|
||||
}
|
||||
// 热易商家
|
||||
.hot-swiper{
|
||||
margin: $margin;
|
||||
margin: 0 $margin $margin $margin;
|
||||
height: 198rpx;
|
||||
.hot-box{
|
||||
position: absolute;
|
||||
@@ -168,7 +428,6 @@
|
||||
width: 100%;
|
||||
border-radius: ($radius/2);
|
||||
background: white;
|
||||
box-shadow: 0 0 6rpx 6rpx rgba($color: #000, $alpha: .02);
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
.cover{
|
||||
@@ -178,15 +437,14 @@
|
||||
width: calc(198rpx - #{$padding * 2});
|
||||
height: calc(198rpx - #{$padding * 2});
|
||||
}
|
||||
.content{
|
||||
.hot-content{
|
||||
padding-left: calc(198rpx - #{$padding});
|
||||
padding-right: calc(100rpx + #{$padding});
|
||||
.title{
|
||||
.hot-title{
|
||||
font-weight: bold;
|
||||
font-size: $title-size-lg;
|
||||
line-height: 40rpx;
|
||||
height: 40rpx;
|
||||
color: $text-color;
|
||||
padding-bottom: 10rpx;
|
||||
}
|
||||
.credibility{
|
||||
@@ -217,11 +475,9 @@
|
||||
// 推荐商家
|
||||
.recommended{
|
||||
white-space:nowrap;
|
||||
padding: $padding 0;
|
||||
.item-box{
|
||||
display: inline-block;
|
||||
background: white;
|
||||
box-shadow: 0 0 6rpx 6rpx rgba($color: #000, $alpha: .02);
|
||||
width: 240rpx;
|
||||
margin-left: $margin;
|
||||
border-radius: ($radius/2);
|
||||
@@ -242,7 +498,6 @@
|
||||
font-weight: bold;
|
||||
font-size: $title-size-lg;
|
||||
padding: ($padding/2) 0;
|
||||
color: $text-color;
|
||||
}
|
||||
.item-btn{
|
||||
font-size: $title-size-m;
|
||||
@@ -254,27 +509,20 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
// 搜索
|
||||
.search{
|
||||
padding: $padding;
|
||||
.nav{
|
||||
background: white;
|
||||
border-radius: $radius/2;
|
||||
height: 70rpx;
|
||||
line-height: 70rpx;
|
||||
text-align: center;
|
||||
box-shadow: 0 0 6rpx 6rpx rgba($color: #000000, $alpha: .02);
|
||||
font-size: $title-size-lg;
|
||||
color: $text-gray-m;
|
||||
}
|
||||
}
|
||||
// 模块标题
|
||||
.block-title{
|
||||
padding: 0 $padding;
|
||||
font-weight: bold;
|
||||
color: $text-color;
|
||||
padding: $padding;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
.title{
|
||||
font-weight: bold;
|
||||
text{
|
||||
padding-left: $padding/2;
|
||||
font-weight: normal;
|
||||
font-size: $title-size-m;
|
||||
color: $text-gray;
|
||||
}
|
||||
}
|
||||
.more{
|
||||
font-size: $title-size-m;
|
||||
font-weight: normal;
|
||||
@@ -283,41 +531,4 @@
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- goods: [
|
||||
{
|
||||
cover: "https://yanxuan-item.nosdn.127.net/d3b072b5006f56935d15d239cbc5c953.jpg",
|
||||
title: "片片大果仁,夏威夷坚果脆片 可可味 55克",
|
||||
price: "16",
|
||||
sales: "25"
|
||||
},
|
||||
{
|
||||
cover: "https://yanxuan-item.nosdn.127.net/8cfaed758404e23bc74c7214505ce5ec.jpg",
|
||||
title: "每日坚果亚麻籽谷物燕麦片 600克",
|
||||
price: "58",
|
||||
sales: "1002"
|
||||
},
|
||||
{
|
||||
cover: "https://yanxuan-item.nosdn.127.net/65af0745153e2dfa3d7c4fafb7472db6.jpg",
|
||||
title: "全新升级银罐,玲珑柑普茶 130克(10颗)",
|
||||
price: "98",
|
||||
sales: "2235"
|
||||
},
|
||||
{
|
||||
cover: "https://yanxuan-item.nosdn.127.net/f3af9b6eaf15e6e3be1f14e14da90930.jpg",
|
||||
title: "别致养生设计 猪鬃气垫按摩梳",
|
||||
price: "79",
|
||||
sales: "992"
|
||||
},
|
||||
{
|
||||
cover: "https://yanxuan-item.nosdn.127.net/cb99e8a2f4597f3a5d05347a9eeb64c5.png",
|
||||
title: "2020年新款,日式减压按摩腰靠",
|
||||
price: "219",
|
||||
sales: "231"
|
||||
},
|
||||
{
|
||||
cover: "https://yanxuan-item.nosdn.127.net/fff6aead2baff207e869f0aa6f276b63.png",
|
||||
title: "T300无线吸尘器",
|
||||
price: "159",
|
||||
sales: "988"
|
||||
}
|
||||
] -->
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view>
|
||||
|
||||
搜索
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -1,33 +1,29 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="content" v-if="!loding">
|
||||
<!-- 轮播主图 -->
|
||||
<view class="goods-covers">
|
||||
<swiper class="swiper">
|
||||
<swiper-item>
|
||||
<image class="swiper-item" src="https://yanxuan-item.nosdn.127.net/b3cc0eadfe8581b8bc86f428b18a5ea8.png" mode="aspectFill"/>
|
||||
</swiper-item>
|
||||
<swiper-item>
|
||||
<image class="swiper-item" src="https://yanxuan-item.nosdn.127.net/a7f8652eeecb2c0e1915120b1d986510.png" mode="aspectFill"/>
|
||||
</swiper-item>
|
||||
<swiper-item>
|
||||
<image class="swiper-item" src="https://yanxuan-item.nosdn.127.net/afb05e6fc75e7476729146214450f0ae.png" mode="aspectFill"/>
|
||||
</swiper-item>
|
||||
<swiper class="swiper" indicator-dots indicator-active-color="#c82626">
|
||||
<block v-if="goodsObj.pictures.length > 0">
|
||||
<swiper-item v-for="(item, index) in goodsObj.pictures" :key="index">
|
||||
<image class="swiper-item" :src="item" mode="aspectFill"/>
|
||||
</swiper-item>
|
||||
</block>
|
||||
</swiper>
|
||||
</view>
|
||||
<!-- 产品详情 -->
|
||||
<view class="goods-content">
|
||||
<view class="header">
|
||||
<view class="title">谷风一木3层软抽面巾纸 6包/提</view>
|
||||
<view class="sub-title">进口原木浆 和风高颜值</view>
|
||||
<view class="title">{{goodsObj.name}}</view>
|
||||
<view class="sub-title">{{goodsObj.description}}</view>
|
||||
<view class="flex-box">
|
||||
<view class="price"><text>¥</text>100.00</view>
|
||||
<view class="sales">累计易货10次</view>
|
||||
<view class="price"><text>¥</text>{{goodsObj.price.show}}</view>
|
||||
<view class="sales">累计易货{{goodsObj.sales}}次</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 商家信息 -->
|
||||
<view class="store">
|
||||
<view class="title">宜家哈尔滨旗舰店</view>
|
||||
<image class="logo" src="@/static/dev/good_cover_06.jpg" mode="aspectFill"></image>
|
||||
<view class="title">{{goodsObj.shop.name}}</view>
|
||||
<image class="logo" :src="goodsObj.shop.cover" mode="aspectFill"></image>
|
||||
<view class="rate">
|
||||
<uni-rate
|
||||
:readonly="true"
|
||||
@@ -43,7 +39,7 @@
|
||||
<view class="size">
|
||||
<view class="size-item nowrap">
|
||||
<label class="title">产品规格</label>
|
||||
17个功能分区,理性展现
|
||||
{{goodsObj.skus[0].goods_name}}
|
||||
</view>
|
||||
<view class="size-item nowrap">
|
||||
<label class="title">限制</label>
|
||||
@@ -56,36 +52,53 @@
|
||||
</view>
|
||||
<!-- 产品详情 -->
|
||||
<view class="product">
|
||||
<image src="https://yanxuan-item.nosdn.127.net/15b6eb17fd2dfc10824d19262d579115.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/64bba3712d2de3afbd01209ddc8a144c.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/e361196cfdc93e697214cb8b73715d7b.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/b508dcfc9b597e0563fb9703084df968.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/47aea2602cdc2d74f7c1470845b10228.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/47aea2602cdc2d74f7c1470845b10228.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/a93ea06bab7212b3d09b58a4ef6ef992.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/48062fd41ab8345e4d89dcc9ae882a83.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/c6144d9afbfa23dae5127d71b27f9286.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/d36cbe3e7a3a51ad5809ace03a2ec11a.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/55152a8961ac3e4315bf0e9078c201de.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/e1daf70033b4a560ea3a163b7b2901ba.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/86a0fa00f375e4b266a528d2c4cc35fd.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/71bac1bfd70aeb8d6b97eae4f4d4af67.jpg" mode="widthFix"></image>
|
||||
<image src="https://yanxuan-item.nosdn.127.net/2a536f0650b2a2cbb53373e758f0439e.jpg" mode="widthFix"></image>
|
||||
<block v-for="(item, index) in goodsObj.content" :key="index">
|
||||
<image :src="item" mode="widthFix"></image>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<!-- footer -->
|
||||
<view class="footer">
|
||||
<button class="btn" size="default">立即购买</button>
|
||||
<button class="btn" size="default" @click="buyGoods">立即购买</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { goods } from '@/apis/interfaces/goods'
|
||||
import userAuth from '@/public/userAuth'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
loding : true,
|
||||
goodsObj: {},
|
||||
identity: ''
|
||||
};
|
||||
},
|
||||
created() {
|
||||
goods(this.$Route.query.id || 16).then(res=>{
|
||||
this.loding = false
|
||||
this.goodsObj = res
|
||||
this.identity = res.identity.id || ''
|
||||
})
|
||||
},
|
||||
methods:{
|
||||
// 提交购买单
|
||||
buyGoods(){
|
||||
let token = this.$store.getters.getToken
|
||||
if(token == ''){
|
||||
let userLogin = new userAuth()
|
||||
userLogin.Login()
|
||||
return
|
||||
}
|
||||
this.$Router.push({
|
||||
name: 'Buy',
|
||||
params: {
|
||||
skuId: this.goodsObj.skus[0].sku_id,
|
||||
type : this.identity
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -102,7 +115,6 @@
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
background: #3F536E;
|
||||
width: 100%;
|
||||
padding-top: 100%;
|
||||
.swiper{
|
||||
|
||||
83
pages/goods/lists.vue
Normal file
@@ -0,0 +1,83 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="tabs">
|
||||
<view class="tabs-item" :class="{'show': tabIndex == 0}" @click="onTabs" data-index="0">最新</view>
|
||||
<view class="tabs-item" :class="{'show': tabIndex == 1}" @click="onTabs" data-index="1">
|
||||
价格
|
||||
<image
|
||||
class="icon"
|
||||
mode="widthFix" :src="require(marketType == 'low' ? '@/static/icons/market_icon_low.png': '@/static/icons/market_icon_high.png')"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="lists">
|
||||
<goods-list :list="goods" priceType="CNY" @on-goods="onGoods" />
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { list } from '@/apis/interfaces/goods'
|
||||
import goodsList from '@/components/goods-list/goods-list'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tabIndex : 0,
|
||||
marketType : 'low',
|
||||
goods : []
|
||||
};
|
||||
},
|
||||
created() {
|
||||
list().then(res=>{
|
||||
this.goods = res.data
|
||||
this.pages = res.page
|
||||
})
|
||||
},
|
||||
methods:{
|
||||
onTabs(e){
|
||||
let index = e.target.dataset.index
|
||||
if(index == 0 && index == this.tabIndex) return
|
||||
if(index == 1 && index == this.tabIndex) this.marketType = this.marketType == 'low' ? 'high': 'low'
|
||||
this.tabIndex = index
|
||||
},
|
||||
|
||||
onGoods(e){
|
||||
this.$Router.push({name: 'goodsDetails', params: {id: e.goods_id}})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.tabs{
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
background: white;
|
||||
height: 70rpx;
|
||||
line-height: 70rpx;
|
||||
text-align: center;
|
||||
.tabs-item{
|
||||
font-size: $title-size-m;
|
||||
color: $text-gray;
|
||||
.icon{
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
vertical-align: middle;
|
||||
margin-left: $margin / 3;
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
&.show{
|
||||
color: $text-price;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 列表
|
||||
.lists{
|
||||
padding-top: 70rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -52,6 +52,7 @@
|
||||
this.$Router.replace({name: "Registered"})
|
||||
return
|
||||
}
|
||||
this.$Router.back()
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
|
||||
@@ -41,6 +41,9 @@
|
||||
if(index == 1 && index == this.tabIndex) this.marketType = this.marketType == 'low' ? 'high': 'low'
|
||||
this.tabIndex = index
|
||||
}
|
||||
},
|
||||
onNavigationBarButtonTap(){
|
||||
this.$Router.push({name: "marketLogs"})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view>
|
||||
会员支付
|
||||
成交历史
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -9,14 +9,11 @@
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
284
pages/order/buy.vue
Normal file
@@ -0,0 +1,284 @@
|
||||
<template>
|
||||
<view v-if="loding">
|
||||
<!-- 订单信息 -->
|
||||
<view class="order-list" v-for="(mall, mallIndex) in detail" :key="mallIndex">
|
||||
<view class="shop-name">
|
||||
<image class="logo" :src="mall.shop.cover" mode="aspectFill"></image>
|
||||
{{mall.shop.name || '-'}}
|
||||
</view>
|
||||
<view class="item" v-for="(item, itemsIndex) in mall.items" :key="itemsIndex">
|
||||
<image class="cover" :src="item.cover" mode="aspectFill"></image>
|
||||
<view class="title">{{item.title}}</view>
|
||||
<view class="tool">
|
||||
<view class="price"><text>¥</text>{{item.price}}</view>
|
||||
<uni-number-box class="number" :min="1" :value="qty" @change="numberChange"></uni-number-box>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="amount">
|
||||
<view class="item">
|
||||
<label>订单金额</label>
|
||||
<view class="price nowrap">{{amount}}</view>
|
||||
</view>
|
||||
<block v-if="coupons.length > 0">
|
||||
<view class="item">
|
||||
<label>使用优惠券</label>
|
||||
<picker>
|
||||
<view class="picker-text nowrap">
|
||||
优惠券
|
||||
<uni-icons type="arrowright" color="#ddd"></uni-icons>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="item">
|
||||
<label>优惠金额</label>
|
||||
<view class="price nowrap">-{{couponPrice}}</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<!-- 支付方式 -->
|
||||
<radio-group class="pay-group" @change="payType">
|
||||
<view class="item" v-if="buyTypeId != 1">
|
||||
<label>
|
||||
<radio class="radio" value="eb" checked color="#c82626" />
|
||||
<view class="title">易货额支付</view>
|
||||
<view class="sub-title" v-if="payValue === 'eb'">可用:{{account.getEBBalance}} 冻结:{{account.getEBFrozen}}</view>
|
||||
</label>
|
||||
</view>
|
||||
<view class="item">
|
||||
<label>
|
||||
<radio class="radio" value="wx" color="#c82626" />
|
||||
<view class="title">微信支付</view>
|
||||
</label>
|
||||
</view>
|
||||
</radio-group>
|
||||
<!-- footer -->
|
||||
<view class="footer">
|
||||
<button size="default" @click="buyOrder">提交订单</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<!-- <uni-number-box :min="1" v-model="qty"></uni-number-box> -->
|
||||
|
||||
<script>
|
||||
import { buy } from '@/apis/interfaces/order'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loding : false,
|
||||
detail : {},
|
||||
qty : 1,
|
||||
couponPrice : 0,
|
||||
amount : 0,
|
||||
total : 0,
|
||||
coupons : [],
|
||||
account : {},
|
||||
payValue : 'eb',
|
||||
buyTypeId : ''
|
||||
}
|
||||
},
|
||||
created(){
|
||||
buy({
|
||||
goods_sku_id: this.$Route.query.skuId || 23,
|
||||
qty : this.qty,
|
||||
type : this.$Route.query.type === 1 ? 2: 1
|
||||
}, 'GET').then(res=>{
|
||||
this.loding = true
|
||||
this.buyTypeId = this.$Route.query.type
|
||||
this.payValue = this.$Route.query.type === 1 ? 'wx' : 'eb'
|
||||
this.detail = res.detail
|
||||
this.couponPrice = res.coupon_price
|
||||
this.amount = res.amount
|
||||
this.total = res.total
|
||||
this.coupons = res.coupons
|
||||
this.account = res.account
|
||||
}).catch(err =>{
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
payType(e){
|
||||
this.payValue = e.detail.value
|
||||
},
|
||||
|
||||
//数量变化
|
||||
numberChange(e){
|
||||
this.qty = e
|
||||
this.amount = this.detail[0].items[0].price * e
|
||||
},
|
||||
|
||||
// 提交订单
|
||||
buyOrder(){
|
||||
buy({
|
||||
goods_sku_id: this.$Route.query.skuId || 23,
|
||||
qty : this.qty,
|
||||
type : this.payValue == 'eb' ? 1 : 2,
|
||||
remark : 'app订单'
|
||||
}, 'POST').then(res=>{
|
||||
uni.showToast({
|
||||
title: '订单id:' + res.order_no,
|
||||
icon : 'none'
|
||||
})
|
||||
}).catch(err =>{
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
// 微信pay
|
||||
wxPay(){
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 商品统计
|
||||
.amount{
|
||||
background: white;
|
||||
margin: $margin;
|
||||
border-radius: $radius/2;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.item{
|
||||
position: relative;
|
||||
border-bottom: solid 1rpx $border-color;
|
||||
padding-left: 160rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: right;
|
||||
&:last-child{
|
||||
border-bottom: none;
|
||||
}
|
||||
label{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.number-box{
|
||||
display: inline-block;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
.price{
|
||||
color: $text-price;
|
||||
}
|
||||
.picker-text{
|
||||
font-size: $title-size-lg;
|
||||
color: $text-gray;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 支付方式
|
||||
.pay-group{
|
||||
background: white;
|
||||
margin: $margin;
|
||||
border-radius: $radius/2;
|
||||
padding: 0 $padding;
|
||||
box-sizing: border-box;
|
||||
.item{
|
||||
position: relative;
|
||||
border-bottom: solid 1rpx $border-color;
|
||||
padding: ($padding - 10) 70rpx ($padding - 10) 0;
|
||||
&:last-child{
|
||||
border-bottom: none;
|
||||
}
|
||||
.radio{
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
margin-top: -25rpx;
|
||||
}
|
||||
.sub-title{
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
line-height: 40rpx;
|
||||
}
|
||||
.title{
|
||||
font-size: $title-size-lg;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 支付按钮
|
||||
.footer{
|
||||
padding: 0 $padding $padding*2;
|
||||
button{
|
||||
background: $text-price;
|
||||
font-size: $title-size;
|
||||
color: white;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
font-weight: bold;
|
||||
border-radius: $radius/2;
|
||||
&::after{
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 订单商品列表
|
||||
.order-list{
|
||||
background: white;
|
||||
margin: $margin;
|
||||
border-radius: $radius/2;
|
||||
padding: $padding;
|
||||
box-sizing: border-box;
|
||||
.shop-name{
|
||||
position: relative;
|
||||
padding-bottom: $padding;
|
||||
font-size: $title-size-lg;
|
||||
padding-left: 68rpx;
|
||||
line-height: 48rpx;
|
||||
min-height: 48rpx;
|
||||
color: $text-color;
|
||||
.logo{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
}
|
||||
}
|
||||
.item{
|
||||
position: relative;
|
||||
padding-left: 180rpx;
|
||||
padding-bottom: $padding/2;
|
||||
padding-top: $padding/2;
|
||||
min-height: 160rpx;
|
||||
.cover{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: $padding/2;
|
||||
height: 160rpx;
|
||||
width: 160rpx;
|
||||
background: #2C405A;
|
||||
}
|
||||
.title{
|
||||
height: 110rpx;
|
||||
line-height: 40rpx;
|
||||
font-size: $title-size-lg;
|
||||
color: $text-color;
|
||||
}
|
||||
.tool{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
.price{
|
||||
font-weight: bold;
|
||||
color: $text-price;
|
||||
font-size: $title-size;
|
||||
line-height: 40rpx;
|
||||
height: 40rpx;
|
||||
text{
|
||||
font-size: 80%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,6 +1,27 @@
|
||||
<template>
|
||||
<view>
|
||||
资产
|
||||
<view class="androidwx">
|
||||
321312
|
||||
</view>
|
||||
<view class="androidwx">
|
||||
321312
|
||||
</view>
|
||||
<view class="androidwx">
|
||||
321312
|
||||
</view>
|
||||
<view class="androidwx">
|
||||
321312
|
||||
</view>
|
||||
<view class="androidwx">
|
||||
321312
|
||||
</view>
|
||||
<view class="androidwx">
|
||||
321312
|
||||
</view>
|
||||
<view class="androidwx">
|
||||
321312
|
||||
</view>
|
||||
<button type="default" @click="onOut">退出登录</button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -9,11 +30,13 @@
|
||||
data() {
|
||||
return {
|
||||
|
||||
};
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOut(){
|
||||
this.$store.commit('setToken', '')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
|
||||
406
pages/store/basics.vue
Normal file
@@ -0,0 +1,406 @@
|
||||
<template>
|
||||
<view class="ios-bottom">
|
||||
<view class="info">
|
||||
<view class="item info-logo" @click="updImg('logo', '')">
|
||||
<label>企业LOGO</label>
|
||||
<image :src="logo" mode="aspectFill"></image>
|
||||
<uni-icons class="icon" color="#999" size="18" type="arrowright"></uni-icons>
|
||||
</view>
|
||||
<view class="item info-text">
|
||||
<label>企业简介</label>
|
||||
<textarea v-model="description" placeholder="输入企业简介" />
|
||||
</view>
|
||||
</view>
|
||||
<block v-for="(module,index) in modules" :key="index">
|
||||
<view class="module-item" v-if="module.type === 1">
|
||||
<view class="module-title">
|
||||
<input class="title-input" type="text" v-model="module.title" placeholder="输入标题" />
|
||||
<view class="remove-btn" @click="removeModule(index)">删除</view>
|
||||
</view>
|
||||
<view class="module-textarea">
|
||||
<textarea placeholder="输入文字内容" v-model="module.content.content" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="module-item" v-if="module.type === 2">
|
||||
<view class="module-title">
|
||||
<input class="title-input" type="text" v-model="module.title" placeholder="输入标题" />
|
||||
<view class="remove-btn" @click="removeModule(index)">删除</view>
|
||||
</view>
|
||||
<view class="module-imgs">
|
||||
<view class="item" v-for="(item, index) in module.content.image.showpath" :key="index">
|
||||
<image class="cover" :src="item" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="item" @click="updImgs(index)">
|
||||
<view class="item-upd cover">
|
||||
<uni-icons type="plus" size="20" color="#999"/>
|
||||
<view>上传图片</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="module-hint">点击查看图片,长按删除图片</view>
|
||||
</view>
|
||||
<view class="module-item" v-if="module.type === 3">
|
||||
<view class="module-title">
|
||||
<input class="title-input" type="text" v-model="module.title" placeholder="输入标题" />
|
||||
<view class="remove-btn" @click="removeModule(index)">删除</view>
|
||||
</view>
|
||||
<view class="module-videos">
|
||||
<view class="item">
|
||||
<image class="cover" v-if="module.content.video_image.showpath != ''" :src="module.content.video_image.showpath" mode="aspectFill" />
|
||||
<view class="item-upd" @click="updImg('videoCover', index)" v-else>
|
||||
<uni-icons type="plus" size="20" color="#999"/>
|
||||
<view>上传视频封面</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<video class="cover" v-if="module.content.video_url.showpath != ''" :src="module.content.video_url.showpath" />
|
||||
<view class="item-upd" @click="updImg('video', index)" v-else>
|
||||
<uni-icons type="plus" size="20" color="#999"/>
|
||||
<view>上传视频</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="module-hint">点击查看封面/视频,长按删除封面/视频</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="add-modules" @click="addModule">
|
||||
<uni-icons class="icon" type="plus" size="18" color="#c82626"/> 添加展示模块
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { basicsInfo, basicsConfig } from '@/apis/interfaces/store'
|
||||
import { uploading, uploads } from '@/apis/interfaces/uploading'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
logo : '',
|
||||
description : '',
|
||||
modules : [],
|
||||
modulesType : []
|
||||
};
|
||||
},
|
||||
created() {
|
||||
Promise.all([basicsInfo('GET', {}), basicsConfig()]).then(res => {
|
||||
let info = res[0]
|
||||
this.logo = info.base.cover
|
||||
this.description = info.base.description
|
||||
this.modules = info.extends
|
||||
this.modulesType = res[1]
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
methods:{
|
||||
// 单图上传
|
||||
updImg(type, index){
|
||||
console.log(index)
|
||||
switch(type){
|
||||
case 'logo':
|
||||
uni.chooseImage({
|
||||
crop: {width: 300, height: 300},
|
||||
success: path=> {
|
||||
uploads([{
|
||||
name: 'logo',
|
||||
uri : path.tempFilePaths[0]
|
||||
}]).then(res => {
|
||||
this.logo = res.url[0]
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
break
|
||||
case 'videoCover':
|
||||
console.log('封面')
|
||||
uni.chooseImage({
|
||||
crop: {width: 500, height: 350},
|
||||
success: path=> {
|
||||
uploads([{
|
||||
name: 'logo',
|
||||
uri : path.tempFilePaths[0]
|
||||
}]).then(res => {
|
||||
let modulesObj = this.modules[index]
|
||||
|
||||
modulesObj.content.video_image.showpath = [...modulesObj.content.video_image.showpath, ...res.url]
|
||||
modulesObj.content.video_image.path = [...modulesObj.content.video_image.path, ...res.path]
|
||||
|
||||
this.$set(this.modules, index, modulesObj)
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
break
|
||||
case 'video':
|
||||
uni.chooseVideo({
|
||||
success: path=> {
|
||||
console.log(path)
|
||||
}
|
||||
})
|
||||
console.log('上传视频')
|
||||
break
|
||||
}
|
||||
},
|
||||
// 批量上传图片
|
||||
updImgs(index){
|
||||
uni.chooseImage({
|
||||
success: res=>{
|
||||
let path = res.tempFiles.map((val, index) => {
|
||||
return {
|
||||
name: 'uploads' + index,
|
||||
uri : val.path
|
||||
}
|
||||
})
|
||||
uploads(path).then(pathRes => {
|
||||
let modulesObj = this.modules[index]
|
||||
|
||||
modulesObj.content.image.showpath = [...modulesObj.content.image.showpath, ...pathRes.url]
|
||||
modulesObj.content.image.path = [...modulesObj.content.image.path, ...pathRes.path]
|
||||
|
||||
this.$set(this.modules, index, modulesObj)
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 添加展示模块
|
||||
addModule(){
|
||||
let modulesList = this.modulesType.map(val => {
|
||||
return val.value
|
||||
})
|
||||
|
||||
uni.showActionSheet({
|
||||
itemList: modulesList,
|
||||
success : res => {
|
||||
let content
|
||||
switch(this.modulesType[res.tapIndex].id){
|
||||
case 1:
|
||||
content = {
|
||||
content: ''
|
||||
}
|
||||
break
|
||||
case 2:
|
||||
content = {
|
||||
image: {
|
||||
showpath: [],
|
||||
path : []
|
||||
}
|
||||
}
|
||||
break
|
||||
case 3:
|
||||
content = {
|
||||
video_image: {
|
||||
showpath: '',
|
||||
path : ''
|
||||
},
|
||||
video_url : {
|
||||
showpath: '',
|
||||
path : ''
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
this.modules.push({
|
||||
type : this.modulesType[res.tapIndex].id,
|
||||
title : '',
|
||||
content : content
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 删除展示模块
|
||||
removeModule(index){
|
||||
this.modules.splice(index, 1)
|
||||
},
|
||||
|
||||
// 保存基础信息
|
||||
onNavigationBarButtonTap(e){
|
||||
console.log(this.modules)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 基础信息
|
||||
.info{
|
||||
background: white;
|
||||
padding: 0 $padding;
|
||||
.item{
|
||||
position: relative;
|
||||
padding: $padding 0 $padding 200rpx;
|
||||
&::after{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: -$padding;
|
||||
content: " ";
|
||||
height: 1rpx;
|
||||
background: #eee;
|
||||
}
|
||||
&:last-child::after{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.info-logo{
|
||||
text-align: right;
|
||||
padding-right: 40rpx;
|
||||
label{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
height: 88rpx;
|
||||
line-height: 88rpx;
|
||||
}
|
||||
image{
|
||||
width: 88rpx;
|
||||
height: 88rpx;
|
||||
border-radius: 50%;
|
||||
vertical-align: top;
|
||||
background: $border-color-lg;
|
||||
}
|
||||
.icon{
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
margin-top: -10px;
|
||||
}
|
||||
}
|
||||
.info-text{
|
||||
label{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
height: 40rpx;
|
||||
line-height: 40rpx;
|
||||
}
|
||||
textarea{
|
||||
line-height: 40rpx;
|
||||
width: 100%;
|
||||
height: 160rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 模块
|
||||
.add-modules{
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
color: $text-price;
|
||||
background: white;
|
||||
margin-top: $margin;
|
||||
.icon{
|
||||
vertical-align: middle;
|
||||
margin-right: $margin/3;
|
||||
}
|
||||
}
|
||||
// 展示模块
|
||||
.module-item{
|
||||
background: white;
|
||||
padding: $padding/2 $padding;
|
||||
margin-top: $margin;
|
||||
.module-title{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding-bottom: $padding/2;
|
||||
border-bottom: solid 1rpx $border-color;
|
||||
.title-input{
|
||||
width: calc(100% - 150rpx);
|
||||
height: 70rpx;
|
||||
font-size: $title-size;
|
||||
}
|
||||
.remove-btn{
|
||||
line-height: 70rpx;
|
||||
color: $text-price;
|
||||
text-align: right;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.module-textarea{
|
||||
padding: $padding 0 $padding/2;
|
||||
width: 100%;
|
||||
font-size: $title-size;
|
||||
line-height: 50rpx;
|
||||
height: 200rpx;
|
||||
}
|
||||
.module-imgs{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding-top: $padding/2;
|
||||
margin-left: -10rpx;
|
||||
margin-right: -10rpx;
|
||||
.item{
|
||||
position: relative;
|
||||
background: #F8F8F8;
|
||||
width: calc(25% - 20rpx);
|
||||
padding-top: calc(25% - 20rpx);
|
||||
margin: 10rpx;
|
||||
.cover{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.item-upd{
|
||||
@extend .vertical;
|
||||
text-align: center;
|
||||
font-size: $title-size-m;
|
||||
color: $text-gray-m;
|
||||
}
|
||||
}
|
||||
}
|
||||
.module-hint{
|
||||
color: $text-gray;
|
||||
font-size: $title-size-sm;
|
||||
padding: $padding/2 0;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
.module-videos{
|
||||
display: flex;
|
||||
padding: $padding 0 ($padding/2);
|
||||
margin-left: -10rpx;
|
||||
margin-right: -10rpx;
|
||||
.item{
|
||||
position: relative;
|
||||
width: calc(50% - #{$margin/2});
|
||||
padding-top: calc(35% - #{$margin/2});
|
||||
background: #f8f8f8;
|
||||
margin: 0 10rpx;
|
||||
.item-upd{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
text-align: center;
|
||||
font-size: $title-size-m;
|
||||
color: $text-gray-m;
|
||||
line-height: 40rpx;
|
||||
@extend .vertical;
|
||||
}
|
||||
.cover{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
216
pages/store/customer.vue
Normal file
@@ -0,0 +1,216 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- tabs -->
|
||||
<view class="tabs">
|
||||
<view class="item" :class="{'show': tabsIndex == 'day'}" @click="onTbas('day')">日成交</view>
|
||||
<view class="item" :class="{'show': tabsIndex == 'month'}" @click="onTbas('month')">月成交</view>
|
||||
<view class="item" :class="{'show': tabsIndex == 'year'}" @click="onTbas('year')">年成交</view>
|
||||
</view>
|
||||
<!-- 统计信息 -->
|
||||
<view class="statistics">
|
||||
<picker mode="date" :fields="tabsIndex" :value="dateValue" :end="endDate" @change="pickerDate">
|
||||
<view class="statistics-date">
|
||||
{{dateValue}}<uni-icons class="arrowdown" type="arrowdown" color="#555"></uni-icons>
|
||||
</view>
|
||||
</picker>
|
||||
<view class="statistics-text">
|
||||
<text>成交客户量 {{visitor.day}} 人</text>
|
||||
<text>累计访客量 {{visitor.all}} 人</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 数据列表 -->
|
||||
<view class="lists">
|
||||
<block v-if="orders.length > 0">
|
||||
<view class="item" v-for="(item, index) in orders" :key="index">
|
||||
<image class="cover" :src="item.user.avatar" mode="aspectFill"></image>
|
||||
<view class="title nowrap">
|
||||
{{item.user.username}}
|
||||
<view class="type">{{item.state}}</view>
|
||||
</view>
|
||||
<view class="sub-title nowrap">订单号: {{item.order_no}}</view>
|
||||
<view class="sub-title nowrap">{{item.created_at}}</view>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="list-null">
|
||||
<image class="icon" src="@/static/icons/listnull-icon.png" mode="widthFix"></image>
|
||||
<view class="sub-title">暂无相关成交客户记录</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import getDate from '@/public/date'
|
||||
import { customer } from '@/apis/interfaces/store'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tabsIndex: 'day',
|
||||
dateValue: '',
|
||||
endDate : '',
|
||||
visitor : {
|
||||
day: 0,
|
||||
all: 0
|
||||
},
|
||||
orders : [],
|
||||
pages : {}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
getDate().then(res => {
|
||||
this.dateValue = res
|
||||
this.endDate = res
|
||||
this.getLists()
|
||||
})
|
||||
},
|
||||
methods:{
|
||||
// tabs筛选
|
||||
onTbas(type){
|
||||
getDate(type).then(res => {
|
||||
this.tabsIndex = type
|
||||
this.dateValue = res
|
||||
this.getLists()
|
||||
})
|
||||
},
|
||||
// 日期筛选
|
||||
pickerDate(e){
|
||||
let dateValue = e.detail.value
|
||||
this.dateValue = dateValue
|
||||
this.getLists()
|
||||
},
|
||||
// 获取列表
|
||||
getLists(){
|
||||
customer({
|
||||
type: this.tabsIndex,
|
||||
date: this.dateValue
|
||||
}).then(res => {
|
||||
this.visitor = res.visitor
|
||||
this.orders = res.orders.data
|
||||
this.pages = res.orders.page
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
// 空提示
|
||||
.list-null{
|
||||
width: 100vw;
|
||||
height: 40vh;
|
||||
background: white;
|
||||
text-align: center;
|
||||
@extend .vertical;
|
||||
.sub-title{
|
||||
color: $text-gray;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.icon{
|
||||
width: 288rpx;
|
||||
}
|
||||
}
|
||||
// content
|
||||
.content{
|
||||
padding-top: 80rpx;
|
||||
}
|
||||
// tabs
|
||||
.tabs{
|
||||
position: fixed;
|
||||
z-index: 9;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
background: white;
|
||||
justify-content: space-around;
|
||||
line-height: 80rpx;
|
||||
font-size: $title-size-m;
|
||||
color: $text-gray;
|
||||
.item.show{
|
||||
color: $text-price;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
// 统计信息
|
||||
.statistics{
|
||||
margin-top: $margin;
|
||||
background-color: white;
|
||||
border-bottom: solid 1rpx $border-color;
|
||||
padding: $padding;
|
||||
.statistics-date{
|
||||
font-size: $title-size + 4;
|
||||
font-weight: bold;
|
||||
line-height: 60rpx;
|
||||
.arrowdown{
|
||||
margin-left: $margin/2;
|
||||
}
|
||||
}
|
||||
.statistics-text{
|
||||
font-size: $title-size-sm;
|
||||
color: gray;
|
||||
line-height: 50rpx;
|
||||
text{
|
||||
margin-left: $margin;
|
||||
&:first-child{
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 客户列表
|
||||
.lists{
|
||||
padding: $padding/2 0;
|
||||
background: white;
|
||||
.item{
|
||||
padding: ($padding - 10) $padding ($padding - 10) ($padding*2 + 68);
|
||||
position: relative;
|
||||
min-height: 68rpx;
|
||||
&::after{
|
||||
position: absolute;
|
||||
left: $padding*2 + 68;
|
||||
top: 0;
|
||||
right: 0;
|
||||
content: ' ';
|
||||
border-bottom: solid 1rpx $border-color;
|
||||
}
|
||||
&:first-child::after{
|
||||
display: none;
|
||||
}
|
||||
.cover{
|
||||
position: absolute;
|
||||
left: $padding;
|
||||
top: $padding - 10;
|
||||
width: 68rpx;
|
||||
height: 68rpx;
|
||||
border-radius: 50%;
|
||||
background-color: #eee;
|
||||
}
|
||||
.title{
|
||||
padding-right: 200rpx;
|
||||
position: relative;
|
||||
line-height: 58rpx;
|
||||
font-size: $title-size-lg;
|
||||
.type{
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 180rpx;
|
||||
text-align: right;
|
||||
color: $text-price;
|
||||
}
|
||||
}
|
||||
.sub-title{
|
||||
line-height: 40rpx;
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
19
pages/store/employees.vue
Normal file
@@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<view>
|
||||
员工
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
@@ -1,31 +1,246 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="">店铺</view>
|
||||
<!-- 登录 -->
|
||||
<button type="default" @click="login">登录</button>
|
||||
<view class="content" v-if="!loding">
|
||||
<block v-if="this.$store.state.token != ''">
|
||||
<block v-if="!certification">
|
||||
<!-- 企业认证 -->
|
||||
<view class="statusBar">
|
||||
<view class="statusBar-title">企业工具</view>
|
||||
</view>
|
||||
<view class="store-login">
|
||||
<block v-if="appliesState.code === -1">
|
||||
<image class="icon" src="@/static/icons/approve-icon.png" mode="widthFix"></image>
|
||||
<view class="sub-title">{{appliesState.message}}</view>
|
||||
<button type="default" @click="onRightBtn">认证并开通</button>
|
||||
</block>
|
||||
<block v-else-if="appliesState.code === 2">
|
||||
<image class="icon" src="@/static/icons/approve-icon.png" mode="widthFix"></image>
|
||||
<view class="title">认证失败</view>
|
||||
<view class="sub-title">{{appliesState.message}}</view>
|
||||
<button type="default" @click="$Router.push({name: 'Approve', params: {formType: 'put'}})">重新提交认证</button>
|
||||
</block>
|
||||
<block v-else-if="appliesState.code === 0">
|
||||
<image class="icon" src="@/static/icons/audit-icon.png" mode="widthFix"></image>
|
||||
<view class="sub-title">{{appliesState.message}}</view>
|
||||
</block>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="statusBar">
|
||||
<view class="statusBar-box">
|
||||
<image class="logo" :src="company.logo" mode="aspectFill"></image>
|
||||
<view class="company">
|
||||
<view class="name">{{company.name}}</view>
|
||||
<view class="faith">诚信{{company.faith}}</view>
|
||||
</view>
|
||||
<view class="btn">{{company.identity}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 老板 -->
|
||||
<boss v-if="!employee" :word-data="workbench"/>
|
||||
<!-- 员工 -->
|
||||
<staff v-if="employee"/>
|
||||
</block>
|
||||
</block>
|
||||
<!-- 登录提示 -->
|
||||
<block v-else>
|
||||
<view class="statusBar">
|
||||
<view class="statusBar-title">企业工具</view>
|
||||
</view>
|
||||
<view class="store-login">
|
||||
<image class="icon" src="@/static/icons/login-icon.png" mode="widthFix"></image>
|
||||
<view class="sub-title">一键开启您的易货之旅</view>
|
||||
<button type="default" @click="login">登录</button>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { index } from '@/apis/interfaces/store'
|
||||
import { isallow, appliesQuery } from '@/apis/interfaces/company'
|
||||
import boss from '@/components/store-boss/store-boss'
|
||||
import staff from '@/components/store-staff/store-staff'
|
||||
import userAuth from '@/public/userAuth'
|
||||
export default {
|
||||
components:{
|
||||
boss,
|
||||
staff
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
loding : true,
|
||||
appliesState : {},
|
||||
certification: false,
|
||||
employee : false,
|
||||
workbench : {},
|
||||
company : {}
|
||||
}
|
||||
},
|
||||
onShow(){
|
||||
this.getIndex()
|
||||
},
|
||||
methods: {
|
||||
// 首页数据
|
||||
getIndex(){
|
||||
if(this.$store.state.token == ''){
|
||||
this.loding = false
|
||||
return
|
||||
}
|
||||
index().then(res => {
|
||||
if(!res.is_certification){
|
||||
this.getAppliesQuery()
|
||||
return
|
||||
}
|
||||
this.company = {
|
||||
logo : res.cover,
|
||||
name : res.name,
|
||||
identity: res.company_identity,
|
||||
faith : res.integrity
|
||||
}
|
||||
this.workbench = {
|
||||
top : res.top,
|
||||
middle : res.middle,
|
||||
order : res.order
|
||||
}
|
||||
this.certification = res.is_certification
|
||||
this.employee = res.is_employee
|
||||
this.loding = false
|
||||
}).catch(err =>{
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
// 查询企业认证状态
|
||||
getAppliesQuery(){
|
||||
appliesQuery().then(res=>{
|
||||
this.appliesState = res
|
||||
this.loding = false
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
// 登录
|
||||
login(){
|
||||
let auth = new userAuth()
|
||||
|
||||
auth.Login()
|
||||
// auth.keyLogin()
|
||||
// auth.smsLogin()
|
||||
auth.Login().then(res => {
|
||||
if(res.auth) this.getIndex()
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
// 开通vip
|
||||
onRightBtn(){
|
||||
isallow().then(res =>{
|
||||
this.$Router.push({name: 'Approve'})
|
||||
}).catch(err =>{
|
||||
uni.showModal({
|
||||
title : '提示',
|
||||
content : '暂未开通商家vip无法开通店铺工具',
|
||||
confirmText : '立即开通',
|
||||
success : res=> {
|
||||
if(res.confirm){
|
||||
this.$Router.push({name: 'Vip'})
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
<style lang="scss" scoped>
|
||||
// 登录提示
|
||||
.store-login{
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
z-index: 9;
|
||||
background: white;
|
||||
text-align: center;
|
||||
@extend .vertical;
|
||||
button{
|
||||
margin-top: $margin*3;
|
||||
display: inline-block;
|
||||
width: 50%;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
border-radius: $radius/2;
|
||||
background: $text-price;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
font-size: $title-size;
|
||||
}
|
||||
.sub-title{
|
||||
color: $text-gray;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.icon{
|
||||
width: 288rpx;
|
||||
}
|
||||
}
|
||||
// Bar
|
||||
.statusBar{
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 99;
|
||||
background: $text-price;
|
||||
@extend .ios-top;
|
||||
.statusBar-box{
|
||||
min-height: 68rpx;
|
||||
position: relative;
|
||||
padding: $padding ($padding + 200) $padding ($padding + 88);
|
||||
color: white;
|
||||
.logo{
|
||||
position: absolute;
|
||||
left: $padding;
|
||||
width: 68rpx;
|
||||
height: 68rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.company{
|
||||
.name{
|
||||
line-height: 40rpx;
|
||||
@extend .nowrap;
|
||||
font-size: $title-size;
|
||||
}
|
||||
.faith{
|
||||
line-height: 28rpx;
|
||||
@extend .nowrap;
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
}
|
||||
|
||||
.btn{
|
||||
position: absolute;
|
||||
right: $padding;
|
||||
top: $padding;
|
||||
line-height: 68rpx;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
}
|
||||
.statusBar-title{
|
||||
line-height: 88rpx;
|
||||
min-height: 88rpx;
|
||||
color: white;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
.content{
|
||||
padding-top: calc(var(--status-bar-height) + #{$padding * 2} + 65rpx);
|
||||
padding-bottom: $padding;
|
||||
}
|
||||
</style>
|
||||
|
||||
203
pages/store/visitors.vue
Normal file
@@ -0,0 +1,203 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<!-- tabs -->
|
||||
<view class="tabs">
|
||||
<view class="item" :class="{'show': tabsIndex == 'day'}" @click="onTbas('day')">日成交</view>
|
||||
<view class="item" :class="{'show': tabsIndex == 'month'}" @click="onTbas('month')">月成交</view>
|
||||
<view class="item" :class="{'show': tabsIndex == 'year'}" @click="onTbas('year')">年成交</view>
|
||||
</view>
|
||||
<!-- 统计信息 -->
|
||||
<view class="statistics">
|
||||
<picker mode="date" :fields="tabsIndex" :value="dateValue" :end="endDate" @change="pickerDate">
|
||||
<view class="statistics-date">
|
||||
{{dateValue}}<uni-icons class="arrowdown" type="arrowdown" color="#555"></uni-icons>
|
||||
</view>
|
||||
</picker>
|
||||
<view class="statistics-text">
|
||||
<text>访客量 {{visitor.factor}} 人</text>
|
||||
<text>累计访客量 {{visitor.all}} 人</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 数据列表 -->
|
||||
<block v-if="orders.length > 0">
|
||||
<view class="lists">
|
||||
<view class="item" v-for="(item, index) in orders" :key="index">
|
||||
<image class="cover" :src="item.avatar" mode="aspectFill"></image>
|
||||
<view class="title">{{item.nickname || '-'}}</view>
|
||||
<view class="sub-title">{{item.date || '-'}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="list-null">
|
||||
<image class="icon" src="@/static/icons/listnull-icon.png" mode="widthFix"></image>
|
||||
<view class="sub-title">暂无相关访客记录</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { visitors } from '@/apis/interfaces/store'
|
||||
import getDate from '@/public/date'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tabsIndex: 'day',
|
||||
dateValue: '',
|
||||
endDate : '',
|
||||
visitor : {
|
||||
factor: 0,
|
||||
all: 0
|
||||
},
|
||||
orders : []
|
||||
};
|
||||
},
|
||||
created() {
|
||||
getDate().then(res => {
|
||||
this.dateValue = res
|
||||
this.endDate = res
|
||||
this.getLists()
|
||||
})
|
||||
},
|
||||
methods:{
|
||||
// tabs筛选
|
||||
onTbas(type){
|
||||
getDate(type).then(res => {
|
||||
this.tabsIndex = type
|
||||
this.dateValue = res
|
||||
this.getLists()
|
||||
})
|
||||
},
|
||||
// 日期筛选
|
||||
pickerDate(e){
|
||||
let dateValue = e.detail.value
|
||||
this.dateValue = dateValue
|
||||
this.getLists()
|
||||
},
|
||||
// 获取列表
|
||||
getLists(){
|
||||
visitors({
|
||||
type: this.tabsIndex,
|
||||
date: this.dateValue
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
this.visitor = res.total
|
||||
this.orders = res.lists.data
|
||||
this.pages = res.lists.page
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
// 空提示
|
||||
.list-null{
|
||||
width: 100vw;
|
||||
height: 40vh;
|
||||
background: white;
|
||||
text-align: center;
|
||||
@extend .vertical;
|
||||
.sub-title{
|
||||
color: $text-gray;
|
||||
font-size: $title-size-m;
|
||||
}
|
||||
.icon{
|
||||
width: 288rpx;
|
||||
}
|
||||
}
|
||||
// content
|
||||
.content{
|
||||
padding-top: 80rpx;
|
||||
}
|
||||
// tabs
|
||||
.tabs{
|
||||
position: fixed;
|
||||
z-index: 9;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
background: white;
|
||||
justify-content: space-around;
|
||||
line-height: 80rpx;
|
||||
font-size: $title-size-m;
|
||||
color: $text-gray;
|
||||
.item.show{
|
||||
color: $text-price;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
// 统计信息
|
||||
.statistics{
|
||||
margin-top: $margin;
|
||||
background-color: white;
|
||||
border-bottom: solid 1rpx $border-color;
|
||||
padding: $padding;
|
||||
.statistics-date{
|
||||
font-size: $title-size + 4;
|
||||
font-weight: bold;
|
||||
line-height: 60rpx;
|
||||
.arrowdown{
|
||||
margin-left: $margin/2;
|
||||
}
|
||||
}
|
||||
.statistics-text{
|
||||
font-size: $title-size-sm;
|
||||
color: gray;
|
||||
line-height: 50rpx;
|
||||
text{
|
||||
margin-left: $margin;
|
||||
&:first-child{
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 客户列表
|
||||
.lists{
|
||||
padding: $padding/2 0;
|
||||
background: white;
|
||||
.item{
|
||||
padding: ($padding/2) $padding ($padding/2) ($padding*2 + 68);
|
||||
position: relative;
|
||||
min-height: 68rpx;
|
||||
&::after{
|
||||
position: absolute;
|
||||
left: $padding*2 + 68;
|
||||
top: 0;
|
||||
right: 0;
|
||||
content: ' ';
|
||||
border-bottom: solid 1rpx $border-color;
|
||||
}
|
||||
&:first-child::after{
|
||||
display: none;
|
||||
}
|
||||
.cover{
|
||||
position: absolute;
|
||||
left: $padding;
|
||||
top: $padding/2;
|
||||
width: 68rpx;
|
||||
height: 68rpx;
|
||||
border-radius: 50%;
|
||||
background: #eee;
|
||||
}
|
||||
.title{
|
||||
position: relative;
|
||||
line-height: 58rpx;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.sub-title{
|
||||
line-height: 40rpx;
|
||||
font-size: $title-size-sm;
|
||||
color: $text-gray;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,22 +1,287 @@
|
||||
<template>
|
||||
<view>
|
||||
开通会员
|
||||
<view class="content" v-if="!loding">
|
||||
<!-- 会员类型 -->
|
||||
<view class="tabs">
|
||||
<view class="item" :class="{'show': index === tabsIndex}" v-for="(item, index) in identities" :key="index" @click="onTabs(index)">{{item.name}}</view>
|
||||
</view>
|
||||
<!-- 会员信息 -->
|
||||
<view class="cards">
|
||||
<view class="card">
|
||||
<view class="card-content">
|
||||
<image class="cover" src="@/static/dev/good_cover_01.png" mode="aspectFill"></image>
|
||||
<view class="user nowrap">{{user.username}}</view>
|
||||
<view class="sub-time nowrap">{{user.identity.name}}至{{user.identity.ended_at}}</view>
|
||||
<view class="btn" @click="openOrder">开通/续费</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="cards-back"></view>
|
||||
<image class="cards-angle" src="@/static/imgs/vip-angle-back.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<!-- 会员权限 -->
|
||||
<view class="privilege">
|
||||
<view class="title">开通会员享特权</view>
|
||||
<view class="privilege-box">
|
||||
<view class="item" v-for="(item, index) in rights" :key="index" @click="showRemark(item.name, item.remark)">
|
||||
<image class="icon" :src="item.cover" mode="aspectFill"></image>
|
||||
<view class="text">{{item.name}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 会员 -->
|
||||
<view class="footer">
|
||||
<button class="footer-btn" type="default" @click="openOrder">¥{{identities[tabsIndex].price}}/年 开通</button>
|
||||
</view>
|
||||
<!-- 会员服务信息 -->
|
||||
<view class="notice">
|
||||
<view class="title">开通须知</view>
|
||||
<view class="item">
|
||||
<text>{{description}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { identities, vipOrder, vipWechatPay } from '@/apis/interfaces/vip'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
loding : true,
|
||||
tabsIndex : 0,
|
||||
user : {},
|
||||
identities : [],
|
||||
rights : [],
|
||||
description : ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
identities().then(res => {
|
||||
this.loding = false
|
||||
this.user = res.user
|
||||
this.description= res.description
|
||||
this.identities = res.identities
|
||||
this.rights = res.identities[0].rights
|
||||
}).catch(err =>{
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 切换开通身份
|
||||
onTabs(index){
|
||||
if(this.tabsIndex === index) return
|
||||
this.tabsIndex = index
|
||||
this.rights = this.identities[index].rights
|
||||
},
|
||||
// 会员权益介绍
|
||||
showRemark(title, text){
|
||||
uni.showModal({
|
||||
title : title + '说明',
|
||||
content : text,
|
||||
showCancel : false
|
||||
})
|
||||
},
|
||||
// 开通会员
|
||||
openOrder(){
|
||||
let identitiesId = this.identities[this.tabsIndex].identity_id
|
||||
vipOrder(identitiesId).then(res => {
|
||||
let verifyForm = res
|
||||
this.wechatPay(res.id)
|
||||
}).catch(err =>{
|
||||
uni.showToast({
|
||||
title: err.message,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 微信支付
|
||||
wechatPay(id){
|
||||
vipWechatPay(id).then(res => {
|
||||
let payConfig = JSON.parse(res.wechat),
|
||||
payIdentity = res.identity
|
||||
uni.requestPayment({
|
||||
provider : "wxpay",
|
||||
orderInfo : payConfig,
|
||||
success : payRes => {
|
||||
console.log(payRes)
|
||||
},
|
||||
fail : payErr => {
|
||||
console.log(payErr)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content{
|
||||
min-height: 100vh;
|
||||
background: #fefaef;
|
||||
}
|
||||
// 开通须知
|
||||
.notice{
|
||||
font-size: $title-size-m;
|
||||
color: $text-gray;
|
||||
padding: $padding $padding*2 $padding*2;
|
||||
.title{
|
||||
padding-bottom: $padding/2;
|
||||
font-weight: bold;
|
||||
}
|
||||
.item{
|
||||
padding-bottom: $padding/2;
|
||||
line-height: 40rpx;
|
||||
text-align: justify;
|
||||
}
|
||||
}
|
||||
// footer
|
||||
.footer{
|
||||
padding: $padding $padding*2;
|
||||
.footer-btn{
|
||||
background-color: #201212;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
color: #f7d79c;
|
||||
font-size: $title-size;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
// 会员权限
|
||||
.privilege{
|
||||
padding: $padding;
|
||||
.title{
|
||||
font-weight: bold;
|
||||
color: #322711;
|
||||
font-size: $title-size;
|
||||
text-align: center;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
.privilege-box{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: $padding 0;
|
||||
.item{
|
||||
width: 25%;
|
||||
padding: $padding/2;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
.icon{
|
||||
width: 78rpx;
|
||||
height: 78rpx;
|
||||
background: #bd995d;
|
||||
border-radius: 50%;
|
||||
vertical-align: top;
|
||||
}
|
||||
.text{
|
||||
font-size: $title-size-sm;
|
||||
color: #201212;
|
||||
line-height: 60rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 会员卡
|
||||
.cards{
|
||||
position: relative;
|
||||
background: #1f1b1c;
|
||||
.card{
|
||||
position: relative;
|
||||
margin: 0 $margin;
|
||||
background: linear-gradient(to right, #3b3d4a, #231d1f);
|
||||
padding: 15rpx;
|
||||
border-radius: $radius/2;
|
||||
z-index: 2;
|
||||
.card-content{
|
||||
position: relative;
|
||||
border:solid 1rpx rgba($color: white, $alpha: .4);
|
||||
border-radius: $radius/2;
|
||||
padding: 30rpx 180rpx 60rpx 148rpx;
|
||||
min-height: 98rpx;
|
||||
.cover{
|
||||
position: absolute;
|
||||
left: 30rpx;
|
||||
top: 30rpx;
|
||||
width: 98rpx;
|
||||
height: 98rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.user{
|
||||
color: rgba($color: white, $alpha: .7);
|
||||
line-height: 58rpx;
|
||||
font-size: $title-size-lg;
|
||||
}
|
||||
.sub-time{
|
||||
line-height: 40rpx;
|
||||
color: #e6ce9e;
|
||||
font-size: $title-size-sm;
|
||||
}
|
||||
.btn{
|
||||
position: absolute;
|
||||
color: #261f0f;
|
||||
background: #e6ce9e;
|
||||
width: 160rpx;
|
||||
border-radius: 30rpx;
|
||||
font-size: $title-size-m;
|
||||
right: 30rpx;
|
||||
top: 50rpx;
|
||||
line-height: 58rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
.cards-angle{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
z-index: 3;
|
||||
}
|
||||
&::after{
|
||||
content: " ";
|
||||
height: 70rpx;
|
||||
background: #b29671;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
border-radius: $radius/2;
|
||||
z-index: 0;
|
||||
}
|
||||
}
|
||||
// tabs
|
||||
.tabs{
|
||||
background: #1f1b1c;
|
||||
color: white;
|
||||
padding: 0 0 $padding 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
font-size: $title-size-lg;
|
||||
.item{
|
||||
margin: 0 $margin;
|
||||
line-height: 70rpx;
|
||||
height: 70rpx;
|
||||
color: rgba($color: white, $alpha: .6);
|
||||
&.show{
|
||||
position: relative;
|
||||
font-weight: bold;
|
||||
font-size: $title-size;
|
||||
color: white;
|
||||
&::after{
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 20%;
|
||||
width: 60%;
|
||||
height: 6rpx;
|
||||
border-radius: 3rpx;
|
||||
content: " ";
|
||||
background: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
30
public/date.js
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
/**
|
||||
* Web唐明明
|
||||
* 匆匆数载恍如梦,岁月迢迢华发增。
|
||||
* 碌碌无为枉半生,一朝惊醒万事空。
|
||||
* moduleName: 日期
|
||||
*/
|
||||
|
||||
export default getDate = (type) =>{
|
||||
return new Promise((resolve, reject) => {
|
||||
const date = new Date()
|
||||
const year = date.getFullYear()
|
||||
const month = (date.getMonth() + 1) < 9 ? '0' + (date.getMonth() + 1) : date.getMonth()
|
||||
const day = date.getDate()
|
||||
|
||||
switch(type){
|
||||
case 'day':
|
||||
resolve(year + '-' + month + '-' + day)
|
||||
break
|
||||
case 'month':
|
||||
resolve(year + '-' + month)
|
||||
break
|
||||
case 'year':
|
||||
resolve(year)
|
||||
break
|
||||
default:
|
||||
resolve(year + '-' + month + '-' + day)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -7,26 +7,128 @@
|
||||
*/
|
||||
|
||||
import { router } from '../router'
|
||||
import { keyAuth } from '../apis/interfaces/auth'
|
||||
import store from '../store'
|
||||
|
||||
class userAuth {
|
||||
constructor() {
|
||||
|
||||
this.univerfyConfig = {
|
||||
fullScreen : true,
|
||||
authButton: {
|
||||
'title': '一键登录',
|
||||
'normalColor': '#c82626',
|
||||
'highlightColor': '#a61010',
|
||||
'disabledColor': '#d86767',
|
||||
'borderRadius': '0'
|
||||
},
|
||||
otherLoginButton: {
|
||||
'title': '其他手机号码',
|
||||
'borderColor': '#c82626',
|
||||
'borderRadius': '0',
|
||||
'textColor': '#c82626'
|
||||
},
|
||||
privacyTerms: {
|
||||
'checkedImage': '/static/icons/checked-icon.png',
|
||||
'uncheckedImage': '/static/icons/unchecked-icon.png',
|
||||
'textColor': '#555555',
|
||||
'termsColor': '#c82626',
|
||||
'suffix': '并使用本机号码登录/注册',
|
||||
'privacyItems': [{
|
||||
'url': 'https://www.baidu.com',
|
||||
'title': '用户隐私规格'
|
||||
},{
|
||||
'url': 'https://www.baidu.com',
|
||||
'title': '用户服务协议'
|
||||
}]
|
||||
},
|
||||
buttons: {
|
||||
'iconWidth': '45px',
|
||||
'list': [{
|
||||
"provider": '微信登录',
|
||||
"iconPath": '/static/icons/wechat.png',
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
// 预登录
|
||||
Login(){
|
||||
uni.preLogin({
|
||||
provider: "univerify",
|
||||
success : res=> {
|
||||
console.log(res)
|
||||
},
|
||||
fail : err=> {
|
||||
router.push({name: "Login"})
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.showLoading({
|
||||
title: '加载中',
|
||||
mask : true
|
||||
})
|
||||
uni.preLogin({
|
||||
provider: 'univerify',
|
||||
success : res=> {
|
||||
this.keyLogin().then(() => {
|
||||
resolve({
|
||||
auth: true
|
||||
})
|
||||
}).catch(errMsg => {
|
||||
reject(errMsg)
|
||||
})
|
||||
},
|
||||
fail : err=> {
|
||||
router.push({name: 'Login'})
|
||||
},
|
||||
complete() {
|
||||
uni.hideLoading()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
// 一键登录
|
||||
keyLogin(){
|
||||
console.log('一键登录')
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.login({
|
||||
provider : 'univerify',
|
||||
univerifyStyle : {...this.univerfyConfig},
|
||||
success: authResult => {
|
||||
keyAuth({
|
||||
access_token: authResult.authResult.access_token,
|
||||
openid : authResult.authResult.openid
|
||||
}).then(res => {
|
||||
uni.closeAuthView()
|
||||
store.commit('setToken', res.token_type + ' ' + res.access_token)
|
||||
resolve()
|
||||
if(!res.is_company){
|
||||
router.push({name: "Registered"})
|
||||
return
|
||||
}
|
||||
}).catch(err => {
|
||||
reject(err)
|
||||
})
|
||||
},
|
||||
fail : err => {
|
||||
uni.closeAuthView()
|
||||
switch(err.code){
|
||||
case 30002:
|
||||
router.push({name: "Login"})
|
||||
break
|
||||
case 30008:
|
||||
this.wechatAuth()
|
||||
break
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信登录
|
||||
*/
|
||||
wechatAuth(){
|
||||
uni.showToast({
|
||||
title: '微信登录',
|
||||
icon : 'none'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理登录状态维护
|
||||
*/
|
||||
updAuthToken(){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@ router.beforeEach((to, from, next) => {
|
||||
const token = store.getters.getToken || uni.getStorageSync('token')
|
||||
// 检查是否需要登录
|
||||
if(to.meta.auth && token === ''){
|
||||
keyPhone.keyAuth()
|
||||
return
|
||||
}
|
||||
next();
|
||||
@@ -29,6 +28,8 @@ router.afterEach((to, from) => {
|
||||
// console.log('跳转结束--暂无应用场景')
|
||||
})
|
||||
|
||||
//
|
||||
|
||||
export {
|
||||
router,
|
||||
RouterMount
|
||||
|
||||
@@ -65,5 +65,15 @@ $padding: 30rpx;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.ellipsis{
|
||||
max-width: 100%;
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
// 修改nvtab
|
||||
$mainColor: #c82626;
|
||||
$mainColor: white;
|
||||
|
||||
|
||||
BIN
static/icons/add-icon.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
static/icons/approve-icon.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
static/icons/audit-icon.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
static/icons/e-logo-white.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
static/icons/e-logo.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
static/icons/listnull-icon.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
static/icons/login-icon.png
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 2.1 KiB |
BIN
static/icons/search-icon.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
static/icons/tool_icon_00.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
static/icons/tool_icon_01.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
static/icons/tool_icon_02.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
static/icons/tool_icon_03.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
static/icons/tool_icon_04.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
static/icons/tool_icon_05.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
static/icons/tool_icon_06.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
static/icons/tool_icon_07.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
static/icons/tool_icon_08.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
BIN
static/imgs/vip-angle-back.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
@@ -478,7 +478,7 @@
|
||||
.nvTabBox{position: absolute!important;}
|
||||
.nvTab{flex-direction: column!important;align-items: center;justify-content: flex-end;margin: 0 10rpx;position: relative;}
|
||||
.nTTxt,.nTTxt-ac{padding: 0 10rpx;line-height: 88rpx;}
|
||||
.nTLine,.nTLine-ac{height: 4rpx;border-radius: 2rpx;background: transparent;position: absolute;bottom: 0;left: 0;right: 0;}
|
||||
.nTLine,.nTLine-ac{height: 4rpx;border-radius: 2rpx;background: transparent;position: absolute;bottom: 10rpx;left: 0;right: 0;}
|
||||
.nTTxt-ac{color: $mainColor;}
|
||||
.nTLine-ac{background: $mainColor;}
|
||||
.nvTabHide{width:0;height:0;margin:0;overflow:hidden;}
|
||||
|
||||
18
uni_modules/uni-number-box/changelog.md
Normal file
@@ -0,0 +1,18 @@
|
||||
## 1.1.1(2021-07-30)
|
||||
- 优化 vue3下事件警告的问题
|
||||
## 1.1.0(2021-07-13)
|
||||
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
|
||||
## 1.0.7(2021-05-12)
|
||||
- 新增 组件示例地址
|
||||
## 1.0.6(2021-04-20)
|
||||
- 修复 uni-number-box 浮点数运算不精确的 bug
|
||||
- 修复 uni-number-box change 事件触发不正确的 bug
|
||||
- 新增 uni-number-box v-model 双向绑定
|
||||
## 1.0.5(2021-02-05)
|
||||
- 调整为uni_modules目录规范
|
||||
|
||||
## 1.0.7(2021-02-05)
|
||||
- 调整为uni_modules目录规范
|
||||
- 新增 支持 v-model
|
||||
- 新增 支持 focus、blur 事件
|
||||
- 新增 支持 PC 端
|
||||
@@ -0,0 +1,203 @@
|
||||
<template>
|
||||
<view class="uni-numbox">
|
||||
<view @click="_calcValue('minus')" class="uni-numbox__minus uni-cursor-point">
|
||||
<text class="uni-numbox--text" :class="{ 'uni-numbox--disabled': inputValue <= min || disabled }">-</text>
|
||||
</view>
|
||||
<input :disabled="disabled" @focus="_onFocus" @blur="_onBlur" class="uni-numbox__value" type="number" v-model="inputValue"/>
|
||||
<view @click="_calcValue('plus')" class="uni-numbox__plus uni-cursor-point">
|
||||
<text class="uni-numbox--text" :class="{ 'uni-numbox--disabled': inputValue >= max || disabled }">+</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
/**
|
||||
* NumberBox 数字输入框
|
||||
* @description 带加减按钮的数字输入框
|
||||
* @tutorial https://ext.dcloud.net.cn/plugin?id=31
|
||||
* @property {Number} value 输入框当前值
|
||||
* @property {Number} min 最小值
|
||||
* @property {Number} max 最大值
|
||||
* @property {Number} step 每次点击改变的间隔大小
|
||||
* @property {Boolean} disabled = [true|false] 是否为禁用状态
|
||||
* @event {Function} change 输入框值改变时触发的事件,参数为输入框当前的 value
|
||||
*/
|
||||
|
||||
export default {
|
||||
name: "UniNumberBox",
|
||||
emits:['change','input','update:modelValue','blur','focus'],
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: 1
|
||||
},
|
||||
modelValue:{
|
||||
type: [Number, String],
|
||||
default: 1
|
||||
},
|
||||
min: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
max: {
|
||||
type: Number,
|
||||
default: 100
|
||||
},
|
||||
step: {
|
||||
type: Number,
|
||||
default: 1
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 0
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
value(val) {
|
||||
this.inputValue = +val;
|
||||
},
|
||||
modelValue(val){
|
||||
this.inputValue = +val;
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if(this.value === 1){
|
||||
this.inputValue = +this.modelValue;
|
||||
}
|
||||
if(this.modelValue === 1){
|
||||
this.inputValue = +this.value;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
_calcValue(type) {
|
||||
if (this.disabled) {
|
||||
return;
|
||||
}
|
||||
const scale = this._getDecimalScale();
|
||||
let value = this.inputValue * scale;
|
||||
let step = this.step * scale;
|
||||
if (type === "minus") {
|
||||
value -= step;
|
||||
if (value < (this.min * scale)) {
|
||||
return;
|
||||
}
|
||||
if (value > (this.max * scale)) {
|
||||
value = this.max * scale
|
||||
}
|
||||
}
|
||||
|
||||
if (type === "plus") {
|
||||
value += step;
|
||||
if (value > (this.max * scale)) {
|
||||
return;
|
||||
}
|
||||
if (value < (this.min * scale)) {
|
||||
value = this.min * scale
|
||||
}
|
||||
}
|
||||
|
||||
this.inputValue = (value / scale).toFixed(String(scale).length - 1);
|
||||
this.$emit("change", +this.inputValue);
|
||||
// TODO vue2 兼容
|
||||
this.$emit("input", +this.inputValue);
|
||||
// TODO vue3 兼容
|
||||
this.$emit("update:modelValue", +this.inputValue);
|
||||
},
|
||||
_getDecimalScale() {
|
||||
|
||||
let scale = 1;
|
||||
// 浮点型
|
||||
if (~~this.step !== this.step) {
|
||||
scale = Math.pow(10, String(this.step).split(".")[1].length);
|
||||
}
|
||||
return scale;
|
||||
},
|
||||
_onBlur(event) {
|
||||
this.$emit('blur', event)
|
||||
let value = event.detail.value;
|
||||
if (!value) {
|
||||
this.inputValue = this.min;
|
||||
this.$emit("change", +this.inputValue);
|
||||
return;
|
||||
}
|
||||
value = +value;
|
||||
if (value > this.max) {
|
||||
value = this.max;
|
||||
} else if (value < this.min) {
|
||||
value = this.min;
|
||||
}
|
||||
const scale = this._getDecimalScale();
|
||||
this.inputValue = value.toFixed(String(scale).length - 1);
|
||||
this.$emit("change", +this.inputValue);
|
||||
this.$emit("input", +this.inputValue);
|
||||
},
|
||||
_onFocus(event) {
|
||||
this.$emit('focus', event)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
$box-height: 50rpx;
|
||||
/* #ifdef APP-NVUE */
|
||||
$box-line-height: 50rpx;
|
||||
/* #endif */
|
||||
$box-line-height: 50rpx;
|
||||
$box-width: 50rpx;
|
||||
|
||||
.uni-numbox {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
/* #endif */
|
||||
flex-direction: row;
|
||||
height: $box-height;
|
||||
line-height: $box-height - 7rpx;
|
||||
// width: 120px;
|
||||
}
|
||||
|
||||
.uni-cursor-point {
|
||||
/* #ifdef H5 */
|
||||
cursor: pointer;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.uni-numbox__value {
|
||||
background-color: $uni-bg-color;
|
||||
width: 50px;
|
||||
height: $box-height;
|
||||
text-align: center;
|
||||
font-size: $uni-font-size-lg;
|
||||
}
|
||||
|
||||
.uni-numbox__minus {
|
||||
width: $box-width;
|
||||
height: $box-height;
|
||||
background: $border-color-lg;
|
||||
border-radius: 50%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.uni-numbox__plus {
|
||||
width: $box-width;
|
||||
height: $box-height;
|
||||
background: $border-color-lg;
|
||||
border-radius: 50%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.uni-numbox--text {
|
||||
font-size: 20px;
|
||||
color: $uni-text-color;
|
||||
}
|
||||
|
||||
.uni-numbox--disabled {
|
||||
color: $uni-text-color-disable;
|
||||
/* #ifdef H5 */
|
||||
cursor: not-allowed;
|
||||
/* #endif */
|
||||
}
|
||||
</style>
|
||||
81
uni_modules/uni-number-box/package.json
Normal file
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"id": "uni-number-box",
|
||||
"displayName": "uni-number-box 数字输入框",
|
||||
"version": "1.1.1",
|
||||
"description": "NumberBox 带加减按钮的数字输入框组件,用户可以控制每次点击增加的数值,支持小数。",
|
||||
"keywords": [
|
||||
"uni-ui",
|
||||
"uniui",
|
||||
"数字输入框"
|
||||
],
|
||||
"repository": "https://github.com/dcloudio/uni-ui",
|
||||
"engines": {
|
||||
"HBuilderX": ""
|
||||
},
|
||||
"directories": {
|
||||
"example": "../../temps/example_temps"
|
||||
},
|
||||
"dcloudext": {
|
||||
"category": [
|
||||
"前端组件",
|
||||
"通用组件"
|
||||
],
|
||||
"sale": {
|
||||
"regular": {
|
||||
"price": "0.00"
|
||||
},
|
||||
"sourcecode": {
|
||||
"price": "0.00"
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"qq": ""
|
||||
},
|
||||
"declaration": {
|
||||
"ads": "无",
|
||||
"data": "无",
|
||||
"permissions": "无"
|
||||
},
|
||||
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
|
||||
},
|
||||
"uni_modules": {
|
||||
"dependencies": [],
|
||||
"encrypt": [],
|
||||
"platforms": {
|
||||
"cloud": {
|
||||
"tcb": "y",
|
||||
"aliyun": "y"
|
||||
},
|
||||
"client": {
|
||||
"App": {
|
||||
"app-vue": "y",
|
||||
"app-nvue": "y"
|
||||
},
|
||||
"H5-mobile": {
|
||||
"Safari": "y",
|
||||
"Android Browser": "y",
|
||||
"微信浏览器(Android)": "y",
|
||||
"QQ浏览器(Android)": "y"
|
||||
},
|
||||
"H5-pc": {
|
||||
"Chrome": "y",
|
||||
"IE": "y",
|
||||
"Edge": "y",
|
||||
"Firefox": "y",
|
||||
"Safari": "y"
|
||||
},
|
||||
"小程序": {
|
||||
"微信": "y",
|
||||
"阿里": "y",
|
||||
"百度": "y",
|
||||
"字节跳动": "y",
|
||||
"QQ": "y"
|
||||
},
|
||||
"快应用": {
|
||||
"华为": "u",
|
||||
"联盟": "u"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50
uni_modules/uni-number-box/readme.md
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
|
||||
## NumberBox 数字输入框
|
||||
> **组件名:uni-number-box**
|
||||
> 代码块: `uNumberBox`
|
||||
|
||||
|
||||
带加减按钮的数字输入框。
|
||||
|
||||
### 安装方式
|
||||
|
||||
本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。
|
||||
|
||||
如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
|
||||
|
||||
### 基本用法
|
||||
|
||||
在 ``template`` 中使用组件
|
||||
|
||||
```html
|
||||
<uni-number-box></uni-number-box>
|
||||
<uni-number-box v-model = "vModelValue" />
|
||||
<uni-number-box :min="0" :max="9"></uni-number-box>
|
||||
<uni-number-box @change="bindChange"></uni-number-box>
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### NumberBox Props
|
||||
|
||||
|属性名 |类型 |默认值 |说明 |
|
||||
|:-: |:-: |:-: |:-: |
|
||||
|value/v-model|Number |0 |输入框当前值 |
|
||||
|min |Number |0 |最小值 |
|
||||
|max |Number |100 |最大值 |
|
||||
|step |Number |1 |每次点击改变的间隔大小 |
|
||||
|disabled |Boolean|false |是否为禁用状态 |
|
||||
|
||||
### NumberBox Events
|
||||
|
||||
|事件名称 |说明 |返回值 |
|
||||
|:-: |:-: |:-: |
|
||||
|change |输入框值改变时触发的事件,参数为输入框当前的 value |- |
|
||||
|focus |输入框聚焦时触发的事件,参数为 event 对象 |- |
|
||||
|blur |输入框失焦时触发的事件,参数为 event 对象 |- |
|
||||
|
||||
|
||||
## 组件示例
|
||||
|
||||
点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/number-box/number-box](https://hellouniapp.dcloud.net.cn/pages/extUI/number-box/number-box)
|
||||
BIN
unpackage/cache/apk/__UNI__CD19AAD_cm.apk
vendored
Normal file
1
unpackage/cache/apk/apkurl
vendored
Normal file
@@ -0,0 +1 @@
|
||||
https://service.dcloud.net.cn/build/download/0d7b3af0-ffd9-11eb-a971-ed46b2192340
|
||||
1
unpackage/cache/apk/cmManifestCache.json
vendored
Normal file
3
unpackage/cache/certdata
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
andrCertfile=/Users/WebTmm/Desktop/5aa9ab18b4612a21d9e4849ca1200d74.keystore
|
||||
andrCertAlias=__uni__cd19aad
|
||||
andrCertPass=Nzz4TZfsMfJreNdZgt6XDw==
|
||||
BIN
unpackage/cache/wgt/__UNI__CD19AAD/.manifest/google-keystore.keystore
vendored
Normal file
BIN
unpackage/cache/wgt/__UNI__CD19AAD/.manifest/icon-android-hdpi.png
vendored
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/.manifest/icon-android-xhdpi.png
vendored
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/.manifest/icon-android-xxhdpi.png
vendored
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/.manifest/icon-android-xxxhdpi.png
vendored
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
1
unpackage/cache/wgt/__UNI__CD19AAD/__uniappchooselocation.js
vendored
Normal file
BIN
unpackage/cache/wgt/__UNI__CD19AAD/__uniapperror.png
vendored
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
1
unpackage/cache/wgt/__UNI__CD19AAD/__uniappes6.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__CD19AAD/__uniappopenlocation.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__CD19AAD/__uniapppicker.js
vendored
Normal file
8
unpackage/cache/wgt/__UNI__CD19AAD/__uniappquill.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__CD19AAD/__uniappquillimageresize.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__CD19AAD/__uniappscan.js
vendored
Normal file
BIN
unpackage/cache/wgt/__UNI__CD19AAD/__uniappsuccess.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
25
unpackage/cache/wgt/__UNI__CD19AAD/__uniappview.html
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script>
|
||||
var __UniViewStartTime__ = Date.now();
|
||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||
CSS.supports('top: constant(a)'))
|
||||
document.write(
|
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||
</script>
|
||||
<title>View</title>
|
||||
<link rel="stylesheet" href="view.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script src="__uniappes6.js"></script>
|
||||
<script src="view.umd.min.js"></script>
|
||||
<script src="app-view.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
8
unpackage/cache/wgt/__UNI__CD19AAD/app-config-service.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
var isReady=false;var onReadyCallbacks=[];
|
||||
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
||||
var __uniConfig = {"pages":["pages/equity/index","pages/market/index","pages/store/index","pages/property/index","pages/goods/details","pages/login/login","pages/company/registered","pages/company/prompt","pages/vip/index","pages/equity/search","pages/market/logs","pages/order/buy","pages/goods/lists","pages/company/approve"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"易货","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#bababa","selectedColor":"#c82626","backgroundColor":"#FFFFFF","borderStyle":"white","list":[{"pagePath":"pages/equity/index","text":"通证权易","iconPath":"static/tabBar/tabBar_icon_00.png","selectedIconPath":"static/tabBar/tabBar_show_00.png"},{"pagePath":"pages/market/index","text":"转让市场","iconPath":"static/tabBar/tabBar_icon_01.png","selectedIconPath":"static/tabBar/tabBar_show_01.png"},{"pagePath":"pages/store/index","text":"企业工具","iconPath":"static/tabBar/tabBar_icon_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png"},{"pagePath":"pages/property/index","text":"我的资产","iconPath":"static/tabBar/tabBar_icon_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png"}]},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":false,"autoclose":true},"appname":"易品新境","compilerVersion":"3.1.22","entryPagePath":"pages/equity/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
||||
var __uniRoutes = [{"path":"/pages/equity/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationStyle":"custom","navigationBarTextStyle":"white"}},{"path":"/pages/market/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"转让市场","titleNView":{"backgroundColor":"#FFFFFF","buttons":[{"text":"成交历史","fontSize":"14","width":"80","color":"#555555"}]}}},{"path":"/pages/store/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationStyle":"custom","navigationBarTitleText":"企业工具","navigationBarTextStyle":"white","navigationBarBackgroundColor":"#c82626"}},{"path":"/pages/property/index","meta":{"isQuit":true,"isTabBar":true},"window":{}},{"path":"/pages/goods/details","meta":{},"window":{"navigationBarTitleText":"","titleNView":{"backgroundColor":"#FFFFFF","type":"transparent","buttons":[{"text":"分享","fontSize":"12","color":"#555555"}]}}},{"path":"/pages/login/login","meta":{},"window":{"navigationBarTitleText":"","navigationBarBackgroundColor":"#FFFFFF","disableScroll":true}},{"path":"/pages/company/registered","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/company/prompt","meta":{},"window":{"navigationBarTitleText":"","navigationBarBackgroundColor":"#FFFFFF","disableScroll":true,"titleNView":{"backgroundColor":"#FFFFFF","buttons":[{"text":"先逛一逛","fontSize":"14","width":"80","color":"#555555"}]}}},{"path":"/pages/vip/index","meta":{},"window":{"navigationBarTitleText":"会员","navigationBarBackgroundColor":"#1f1b1c","navigationBarTextStyle":"white","backgroundColor":"#fefaef"}},{"path":"/pages/equity/search","meta":{},"window":{"navigationBarTitleText":"搜索"}},{"path":"/pages/market/logs","meta":{},"window":{"navigationBarTitleText":"成交历史"}},{"path":"/pages/order/buy","meta":{},"window":{"navigationBarTitleText":"确认订单","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/goods/lists","meta":{},"window":{"navigationBarTitleText":"商品列表","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/company/approve","meta":{},"window":{"navigationBarTitleText":""}}];
|
||||
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});
|
||||
1
unpackage/cache/wgt/__UNI__CD19AAD/app-config.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
(function(e){function r(r){for(var n,l,i=r[0],p=r[1],a=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in p)Object.prototype.hasOwnProperty.call(p,n)&&(e[n]=p[n]);f&&f(r);while(s.length)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var p=t[i];0!==o[p]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={"app-config":0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonp"]=this["webpackJsonp"]||[],p=i.push.bind(i);i.push=r,i=i.slice();for(var a=0;a<i.length;a++)r(i[a]);var f=p;t()})([]);
|
||||
7
unpackage/cache/wgt/__UNI__CD19AAD/app-service.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__CD19AAD/app-view.js
vendored
Normal file
1
unpackage/cache/wgt/__UNI__CD19AAD/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__CD19AAD","name":"易品新境","version":{"name":"1.0.0","code":"100"},"description":"易品新境为商家提供营销引流工具","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"OAuth":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"autoclose":false,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"safearea":{"bottom":{"offset":"none"}},"distribute":{"icons":{"android":{"hdpi":"icon-android-hdpi.png","xhdpi":"icon-android-xhdpi.png","xxhdpi":"icon-android-xxhdpi.png","xxxhdpi":"icon-android-xxxhdpi.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","proapp@2x":"unpackage/res/icons/167x167.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png"},"prerendered":"false"}},"splashscreen":{"androidStyle":"common"},"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"packagename":"yh.shangkelian.app","password":"Nzz4TZfsMfJreNdZgt6XDw==","aliasname":"__uni__cd19aad","keystore":"google-keystore.keystore","custompermissions":true},"apple":{"devices":"universal"},"plugins":{"oauth":{"univerify":{}},"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}},"orientation":["portrait-primary"]},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"3.1.22","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#bababa","selectedColor":"#c82626","backgroundColor":"#FFFFFF","borderStyle":"rgba(255,255,255,0.4)","list":[{"pagePath":"pages/equity/index","text":"通证权易","iconPath":"static/tabBar/tabBar_icon_00.png","selectedIconPath":"static/tabBar/tabBar_show_00.png"},{"pagePath":"pages/market/index","text":"转让市场","iconPath":"static/tabBar/tabBar_icon_01.png","selectedIconPath":"static/tabBar/tabBar_show_01.png"},{"pagePath":"pages/store/index","text":"企业工具","iconPath":"static/tabBar/tabBar_icon_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png"},{"pagePath":"pages/property/index","text":"我的资产","iconPath":"static/tabBar/tabBar_icon_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html","adid":"125178130709"}}
|
||||
BIN
unpackage/cache/wgt/__UNI__CD19AAD/static/dev/good_cover_00.jpg
vendored
Normal file
|
After Width: | Height: | Size: 174 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/static/dev/good_cover_01.png
vendored
Normal file
|
After Width: | Height: | Size: 321 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/static/dev/good_cover_02.jpg
vendored
Normal file
|
After Width: | Height: | Size: 186 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/static/dev/good_cover_03.jpg
vendored
Normal file
|
After Width: | Height: | Size: 454 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/static/dev/good_cover_04.jpg
vendored
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/static/dev/good_cover_05.jpg
vendored
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/static/dev/good_cover_06.jpg
vendored
Normal file
|
After Width: | Height: | Size: 236 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/static/dev/good_cover_07.jpg
vendored
Normal file
|
After Width: | Height: | Size: 735 KiB |
BIN
unpackage/cache/wgt/__UNI__CD19AAD/static/dev/guide_cover_00.png
vendored
Normal file
|
After Width: | Height: | Size: 19 KiB |