Csqqqqq 4 months ago
parent 23847d31a5
commit 7a87624e53

@ -0,0 +1,16 @@
{ // launch.json configurations app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtypelocalremote, localremote
"version": "0.0",
"configurations": [{
"default" :
{
"launchtype" : "local"
},
"mp-weixin" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
]
}

@ -0,0 +1,18 @@
<script>
export default {
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style lang="scss">
/*每个页面公共css */
@import "@/uni_modules/uview-ui/index.scss";
</style>

@ -0,0 +1,294 @@
<!--
上传图片组件 基于uview upload
:action STring 上传文件的接口 可以不传 会有当前默认的参数
:maxSize String 最大尺寸
:maxNum String 最大数量
:upHeaderFild String 请求后端字段头
:echoPicList Array 回显图片列表
:headerWithJti Object 请求头 可以不传 会有当前默认的参数
:showProgress Boolean 是否显示进度条
:limitTypeList Array 限制文件类型 ['png', 'jpg', 'jpeg']
:showTipsNumber Boolean 是否显示上传数量限制
@okCallBack fn 回调上传列表
:oneNumberStyle Boolean 当图片最大值为1时可以通过次来使数量显示紧挨后面
-->
<template>
<view style="display: flex;flex-wrap: wrap;" :class="{agreementImage:oneNumberStyle}" class="agreementImage">
<span v-for="(item,index) in value" :key="index" :style="{width:width,height:height,marginRight: (value.length == index + 1 )? '' : '16rpx',marginBottom:(value.length == index + 1 )? '' : '10rpx',position:'relative'}" >
<u-image :fade="false" :src="item[filePath]" width="100%" height="100%" @click="imageClick(item,index)">
<image slot="loading" :style="{width:width,height:height}" :src="loadSrcFn(item[filePath])"></image>
</u-image>
<view class="del-icon" v-if="delIcon" @tap.stop="deleteItem(item,index)">
<u-icon name="close" color="#fff" size="15" ></u-icon>
</view>
</span>
<u-upload ref="uUpload"
:width="width"
:height="height"
:action="actionCompute"
:max-size="maxSize * 1024 * 1024"
:max-count="maxNum - value.length"
:show-upload-list="false"
:name="upHeaderFild"
:file-list="oldList"
:header="headerWithJtiCompute"
:show-progress='showProgress'
:uploadText="uploadText"
defaultMaxCountFlag
echoFlag
@on-uploaded="loadShow = false"
@on-error="upError"
@on-success="imageSuccess"
@on-choose-complete="imageComplete"
:limitType="limitTypeList"
></u-upload>
<view class="number-tips end" v-if="showTipsNumber">
({{value.length}}/{{maxNum}})
</view>
<my-loading :load-show="loadShow" ref="auiLoading" :mask="true"></my-loading>
</view>
</template>
<script>
// import "common/lixing-pbulic.scss"
export default{
data(){
return{
//
certificatesNum:"0",
//
nowList:[],
//
oldList:[],
//
removeList:[],
loadShow:false,
lists:[],//
}
},
computed:{
actionCompute(){
if(!this.action){
return this.$baseURL.baseURL + '/base/file/upload'
}else{
return this.action
}
},
headerWithJtiCompute(){
if(!this.headerWithJti){
return {
"jti":this.vuex_user.jti // token
}
}else{
return this.headerWithJti
}
}
},
props:{
value:{
type: Array,
default:() => {
return []
}
},
width:{
type:String,
default:'200rpx'
},
height:{
type:String,
default:'200rpx'
},
// id key key
fileId: {
type: String,
default: "fileId",
},
// path key key
filePath: {
type: String,
default: "filePath",
},
thumbnailPath:{
type: String,
default: "thumbnailPath",
},
//
delIcon:{
type:Boolean,
default:true
},
// sort
sortFlag:{
type:Boolean,
default:true
},
//
thumbnailFlag:{
type:Boolean,
default:false
},
loadSrc:{
type:String,
default:"http://file.hecrab.com/crab-net/yxs-loading.gif"
},
//
action:{
type:String,
default:''
},
//
maxSize:{
type:[String,Number],
default: '5' //'5 * 1024 * 1024'
},
//
maxNum:{
type:[String,Number],
default:'1'
},
//
upHeaderFild:{
type:String,
default:'multipartFile'
},
//
echoPicList:{
type:Array,
default:()=>{
return []
}
},
//
headerWithJti:{
type:Object,
default:()=>{
return null
}
},
//
showProgress:{
type:Boolean,
default:true
},
//
limitTypeList:{
type:Array,
default:()=>{
return ['png', 'jpg', 'jpeg']
}
},
//
showTipsNumber:{
type:Boolean,
default:true
},
oneNumberStyle:{
type:Boolean,
default:false
},
//
uploadText: {
type: String,
default: '选择图片'
},
},
methods:{
upload(){
this.$refs.uUpload.upload()
},
//
deleteItem(item, index){
uni.showModal({
title:"提示",
content:"您确定要删除此项吗",
success:res=>{
if(res.confirm){
let list = JSON.parse(JSON.stringify(this.value))
list.splice(index , 1);
this.$emit('input', list)
}
}
})
},
//
imageSuccess(res, index, file, name) {
if(!res.flag){
// this.loadShow = false
return this.myError(res.msg);
}
if(this.value.length >= this.maxNum) return this.$u.toast("超出上传图片数量!")
let successImg = {
[this.fileId]: res.data.id,
[this.filePath]: res.data.fullPath,
}
if(this.sortFlag)successImg.sort = this.value.length
if(this.thumbnailFlag){
successImg[this.thumbnailPath] = res.data.thumbnailPath
}
let list = JSON.parse(JSON.stringify(this.value))
list.push(successImg)
this.$emit('input', list)
// this.loadShow = false
this.$emit("okCallBack" , list);
this.lists = file
console.log(file)
},
imageComplete(){
this.removeList=[]
this.loadShow = true
},
imageClick(item,index){
let list = this.value.map((item) => {
return item[this.filePath]
});
uni.previewImage({
urls: list,
current:index
});
},
//
upError(res, index, lists, name){
this.loadShow = false
// this.$u.toast(res)
},
//
loadSrcFn(path){
let index = this.lists.findIndex(item=>{
return item.response && item.response.data && item.response.data.fullPath == path
})
return index > -1 ? this.lists[index].url || this.loadSrc : this.loadSrc
}
}
}
</script>
<style lang="scss" scoped>
.number-tips{
font-size: 28rpx;
color: #999999;
text-align: right;
}
.del-icon{
position: absolute;
top: 0;
right: 0;
width: 34rpx;
height: 34rpx;
background-color: #fa3534;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
}
.agreementImage{
display: flex;
.end{
display: flex;
align-items: flex-end;
flex: 1;
justify-content: flex-end;
}
}
</style>

@ -0,0 +1,65 @@
<template>
<view>
<u-tabbar
class="tabBar"
:value="current?current:0"
@change="changeTab"
fixed="true"
safeAreaInsetBottom="true"
active-color="#4D5566"
inactive-color="#848FA5"
>
<u-tabbar-item v-for="(item,index) in list" :key="index" :text="item.text">
<image class="tabBarBtn" :src="item.iconPath" slot="inactive-icon"></image>
<image class="tabBarBtn" :src="item.selectedIconPath" slot="active-icon"></image>
</u-tabbar-item>
</u-tabbar>
</view>
</template>
<script>
export default {
name:"TabBar",
props:{
current:Number
},
data(){
return{
list:[{
iconPath:"/static/img/home.png",
selectedIconPath:"/static/img/homeHL.png",
pagePath:"pages/cloudStore/cloudStoreList",
text:"主页",
customIcon:false
},
{
iconPath:"/static/img/user.png",
selectedIconPath:"/static/img/userHL.png",
pagePath:"pages/index/index",
text:'我的',
customIcon:false
}]
}
},
methods:{
//
changeTab(e){
//console.log(e)
uni.switchTab({
url:'/'+this.list[e].pagePath
})
}
}
}
</script>
<style lang="scss">
.tabBar{
font-size: 20rpx;
color: #0066D6;
}
.tabBarBtn{
width: 36rpx;
height: 39rpx;
}
</style>

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<script>
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></title>
<!--preload-links-->
<!--app-context-->
</head>
<body>
<div id="app"><!--app-html--></div>
<script type="module" src="/main.js"></script>
</body>
</html>

@ -0,0 +1,26 @@
export default {
cloudStoreList:[{
pagePath: "/pages/cloudStore/cloudStoreList",
iconPath: "/static/img/yxs-index.png",
selectedIconPath: "/static/img/yxs-index_act.png",
customIcon: false,
text: '首页',
count: 0,
id: 1,
activeColor: "#4D5566",
inactiveColor: "#848FA5"
},
{
pagePath: "/pages/index/index",
iconPath: "/static/img/yxs-index.png",
selectedIconPath: "/static/img/yxs-index_act.png",
customIcon: false,
// 如果使用自定义扩展的图标库字体需配置此值为true
// 自定义字体图标库教程https://www.uviewui.com/guide/customIcon.html
text: '我的',
count: 0,
id: 1,
activeColor: "#4D5566",
inactiveColor: "#848FA5"
}]
}

@ -0,0 +1,24 @@
import App from './App'
import uView from '@/uni_modules/uview-ui'
Vue.use(uView)
// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
// #endif
// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
// #endif

@ -0,0 +1,72 @@
{
"name" : "3",
"appid" : "",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
/* 5+App */
"app-plus" : {
"usingComponents" : true,
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
/* */
"modules" : {},
/* */
"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.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_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_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.WRITE_SETTINGS\"/>"
]
},
/* ios */
"ios" : {},
/* SDK */
"sdkConfigs" : {}
}
},
/* */
"quickapp" : {},
/* */
"mp-weixin" : {
"appid" : "",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
},
"uniStatistics" : {
"enable" : false
},
"vueVersion" : "2"
}

@ -0,0 +1,50 @@
{
"easycom": {
"^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue"
},
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "uni-app"
}
},
{
"path": "pages/cloudStore/apply",
"style": {
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/cloudStore/cloudStoreList",
"style": {
"navigationBarTitleText": "全部云拣仓",
"enablePullDownRefresh": true
}
},
{
"path": "pages/cloudStore/cloudStoreDetail",
"style": {
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
},
"uniIdRouter": {},
"tabBar": {
"custom":true,
"list":[{
"pagePath": "pages/index/index"
},
{
"pagePath": "pages/cloudStore/cloudStoreList"
}]
}
}

@ -0,0 +1,408 @@
<template>
<view class="apply">
<u-navbar title="云拣仓代理申请" height="108rpx" :bgColor="background" placeholder="true" :titleStyle="{color: '#FFF', fontSize: '32rpx'}" leftIconColor="#FFF"></u-navbar>
<view class="shop-detail">
<shop-card-deatil></shop-card-deatil>
</view>
<view class="main-body">
<u-form :model='model' :rules="rules" ref="uForm" :label-style="{'color':'#000000',fontWeight:600,lineHeight:1.2,fontSize:'32rpx'}" >
<view class="item-con">
<u-form-item
label="姓名"
labelWidth="280rpx"
prop="name"
label-position="top"
required
:border-bottom="false"
>
<u-input placeholder="请输入您的姓名" maxlength="40" v-model="model.name" placeholderStyle="color:#999" border="none"></u-input>
</u-form-item>
</view>
<view class="item-con">
<u-form-item
label="手机号"
labelWidth="280rpx"
prop="phone"
label-position="top"
required
:border-bottom="false"
>
<u-input placeholder="请输入您的手机号" maxlength="40" v-model="model.phone" placeholderStyle="color:#999" border="none"></u-input>
</u-form-item>
</view>
<view class="item-con">
<u-form-item
label="身份证号"
labelWidth="280rpx"
prop="idCard"
label-position="top"
required
:border-bottom="false"
>
<u-input placeholder="请输入您的身份证号" maxlength="40" v-model="model.idCard" placeholderStyle="color:#999" border="none"></u-input>
</u-form-item>
<u-form-item
label="补充身份证照片"
labelWidth="280rpx"
prop="idCardImage"
label-position="top"
required
:border-bottom="false"
>
<view class="idCardCon">
<view class="idCardItem">
<u-upload
:fileList="idCardList"
@afterRead="afterRead"
@delete="deletePic"
name="idCardList"
:maxCount="1"
>
<image class="idCardImg" src="http://file.hecrab.com/crab-net/yxs-yxsSfzQ.png"></image>
</u-upload>
<text class="idCardText">点击上传头像面</text>
</view>
<view class="idCardItem">
<u-upload
:fileList="idCardUpList"
@afterRead="afterRead"
@delete="deletePic"
name="idCardUpList"
:maxCount="1"
>
<image class="idCardImg" src="http://file.hecrab.com/crab-net/yxs-yxsSfzH.png"></image>
</u-upload>
<text class="idCardText">点击上传国徽面</text>
</view>
</view>
</u-form-item>
<!-- <u-form-item
label="补充身份证照片"
labelWidth="280rpx"
prop="idCardImage"
label-position="top"
required
:border-bottom="false">
<view class="idCardCon">
<image class="idCardImg" src="http://file.hecrab.com/crab-net/yxs-yxsSfzQ.png"
mode="aspectFit"></image>
<file-upload :maxNum="1" uploadText="身份证人像面" v-model="idCardList"
:showTipsNumber="false" @okCallBack="uploadSuccess(1)"></file-upload>
</view>
<view class="idCardCon">
<image class="idCardImg" src="http://file.hecrab.com/crab-net/yxs-yxsSfzH.png"
mode="aspectFit"></image>
<file-upload :maxNum="1" uploadText="身份证国徽面" v-model="idCardUpList" :showTipsNumber="false"
@okCallBack="uploadSuccess(2)"></file-upload>
</view>
</u-form-item> -->
</view>
<view class="item-con">
<u-form-item
label="预计销量(万年/年)"
labelWidth="280rpx"
prop="sales"
label-position="top"
required
:border-bottom="false"
>
<u-input placeholder="请输入你的每年预计销量" maxlength="40" v-model="model.sales" placeholderStyle="color:#999" border="none"></u-input>
</u-form-item>
</view>
<view class="item-con">
<u-form-item
label="选择你的销售渠道(多选)"
labelWidth="630rpx"
prop=""
label-position="top"
required
:border-bottom="false"
>
<view class="Item" >
<view class="Con" v-for="(item,index) in channelList" :key="index" :class="item.checked?'checked':''" :data-id="item.num" @tap="selectChannel">{{item.name}}</view>
</view>
</u-form-item>
</view>
<view class="item-con">
<u-form-item
label="选择你的分销模式(多选)"
labelWidth="630rpx"
prop=""
label-position="top"
required
:border-bottom="false"
>
<view class="Item" >
<view class="Con" v-for="(item,index) in modelList" :key="index" :class="item.checked?'checked':''" :data-id="item.num" @tap="selectModel">{{item.name}}</view>
</view>
</u-form-item>
</view>
</u-form>
</view>
<view class="bottom">
<button class="saveBtn" @click="saveClick"></button>
</view>
</view>
</template>
<script>
import list from "../../uni_modules/uview-ui/libs/config/props/list";
import shopCardDeatil from "./components/shopDetailCard.vue"
export default{
components:{shopCardDeatil},
data() {
return{
background:'transparent',
model:{
name:'',
phone:'',
idCard:'',
sales:'',
salesChannels:'',
salesModel:''
},
rules:{
name:[{
required:true,
message:'请输入代理商姓名',
trigger:['change','blur']
}],
phone:[{
required:true,
message:'请输入代理商手机号',
trigger:['change','blur']
},
{
validator:(rule,value,callback)=>{
//true,false
return uni.$u.test.mobile(value);
},
message:'手机号码不正确',
trigger:['change'],
}],
idCard:[{
required:true,
message:"请输入代理商身份证号",
trigger:['change','blur']
},
{
validator:(rule,value,callback)=>{
return uni.$u.test.idCard(value);
},
message:'身份证号不正确',
trigger:['change']
}],
sales:[{
required:true,
message:"请输入预计年销量",
trigger:['change','blur']
}],
},
idCardList:[],
idCardUpList:[],
channelList:[{
name:"微信",
num:'1',
checked:false
},
{
name:"淘宝",
num:'2',
checked:false
},
{
name:"抖音",
num:'3',
checked:false
},
{
name:"京东",
num:'4',
checked:false
},
{
name:"实体店",
num:'5',
checked:false
}],
modelList:[{
name:"卡券代理",
num:'1',
checked:false
},
{
name:"批发",
num:'2',
checked:false
},
{
name:"一键代发(通用包装)",
num:'3',
checked:false
},
{
name:"一键代发(自有包装)",
num:'4',
checked:false
}]
}
},
onReady() {
this.$refs.uForm.setRules(this.rules)
},
methods:{
//
deletePic(event){
this['${event.name}'].splice(event.index,1)
},
//
async afterRead(event){
//multipletruefile
let lists = [].concat(event.file)
let fileListLen = this['${event.name}'].length
lists.map((item)=>{
this['${event.name}'].push({
...item,
status: 'uploading',
message: '上传中'
})
})
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFilePromise(lists[i].url)
console.log(result, '上传图像result');
let item = this[`${event.name}`][fileListLen]
this[`${event.name}`].splice(fileListLen, 1, Object.assign(item, {
status: result.status,
message: result.status == 'failed' ? '上传失败' : '',
url: result.url
}))
fileListLen++
}
},
//
saveClick() {
this.$refs.uForm.validate(isOk => {
if (isOk) {
if (!this.idCardList.length) return this.$u.toast("请上传身份证人像面!")
if (!this.idCardUpList.length) return this.$u.toast("请上传身份证国徽面!")
// if (!this.channelChecked.length) return this.$u.toast("")
// if (!this.distributionChecked.length) return this.$u.toast("")
this.request()
}
})
},
//
selectChannel:function(e){
var this_checked = e.currentTarget.dataset.id //id
var parameterList = this.channelList //Json
console.log(this_checked)
if(parameterList[this_checked-1].checked){
parameterList[this_checked-1].checked = false
}else{
parameterList[this_checked-1].checked=true;
}
this.channelList=parameterList;
},
selectModel:function(e){
var this_checked = e.currentTarget.dataset.id //id
var parameterList = this.modelList //Json
console.log(this_checked)
if(parameterList[this_checked-1].checked){
parameterList[this_checked-1].checked = false
}else{
parameterList[this_checked-1].checked=true;
}
this.modelList=parameterList;
},
}
}
</script>
<style lang="scss" scoped>
.apply{
height: 100vh;
background: linear-gradient( 270deg, #3975F1 0%, #4AA4F5 100%);
display: flex;
flex-direction: column;
.shop-detail{
border-radius: 20rpx;
display: flex;
justify-content: center;
margin-bottom: 24rpx;
}
.main-body{
box-sizing: border-box;
background: #F5F6FA;
border-radius: 20rpx 20rpx 0rpx 0rpx;
padding: 36rpx;
flex: 1;
overflow: auto;
.item-con{
background: #FFFFFF;
border-radius: 20rpx;
padding: 4rpx 24rpx;
margin-bottom: 16rpx;
}
.idCardCon{
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin-top: 12rpx;
.idCardImg{
width: 300rpx;
height: 200rpx;
border-radius: 8rpx;
object-fit: cover;
}
.idCardText{
font-weight: 400;
font-size: 24rpx;
color: #999999;
margin-left: 58rpx;
}
}
}
.bottom{
height: 180rpx;
background: #FFFFFF;
.saveBtn{
width: 678rpx;
height: 92rpx;
background: linear-gradient( 91deg, #43A1FF 0%, #2F80F9 100%);
border-radius: 24rpx;
font-size: 28rpx;
color: #FFFFFF;
padding-top: 12rpx;
}
}
.Item{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.Con{
width: 284rpx;
height: 84rpx;
background: #F7F7F7;
border-radius: 8rpx;
margin-top: 16rpx;
font-weight: 400;
font-size: 28rpx;
display: flex;
align-items: center;
padding-left: 24rpx;
}
.checked{
background: #E9F0FE;
color: #2E6BF6;
}
}
}
</style>

@ -0,0 +1,254 @@
<template>
<view class="cloudStoreDeatil">
<u-navbar
fixed="true"
leftIconColor="#FFF"
:bgColor="background"
></u-navbar>
<view class="topImgCon">
<image src="https://wx1.sinaimg.cn/large/006WYq6ngy1hrj1dubvugj30u00u0n09.jpg" class="topBg" mode="aspectFill"></image>
</view>
<view class="shopTip">
<view class="left">
<image src="https://wx3.sinaimg.cn/large/006TzZ4Ugy1hs3zsj97f8j31jk1jkqep.jpg"></image>
</view>
<view class="right">
<view class="box1">啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊</view>
<view class="box2">
<u-rate :count="count" v-model="value" allowHalf="true"></u-rate>
<text class="rateValue"> {{value}}</text>
</view>
<view class="box3">
<view class="label1">
<image src="https://files.hecrab.com/crab-net/cloud-store-list-5.png" mode="aspectFit"></image>
<text>三码合一</text>
</view>
<view class="label2">
<image src="https://files.hecrab.com/crab-net/cloud-store-list-1.png" mode="aspectFit"></image>
<text>验蟹师品质保</text>
</view>
</view>
</view>
</view>
<view class="shopBody">
<view class="bodyHeader">
<view v-for="(item,index) in tabList" :key="item.value" class="itemBox" @click="clickTab(item)" :class="index==activeID ? 'active'+activeID : ''">{{item.name}}</view>
</view>
<view class="body">
<dropshipping v-if="activeID==0"></dropshipping>
<coupons-act v-if="activeID==1"></coupons-act>
<whole-sales v-if="activeID==2"></whole-sales>
<shop-introduce v-if="activeID==3"></shop-introduce>
</view>
</view>
</view>
</template>
<script>
import dropshipping from './components/dropshipping.vue';
import couponsAct from './components/couponsAct.vue';
import wholeSales from './components/wholeSales.vue'
import shopIntroduce from './components/shopIntroduce.vue';
export default {
components:{dropshipping,couponsAct,wholeSales,shopIntroduce},
data(){
return{
background:'transparent',
count:5,
value:4.5,
tabList:[{
name:'一键代发',
value:'0'
},
{
name:'卡券激活',
value:'1'
},
{
name:'批量采购',
value:'2'
},
{
name:'商家介绍',
value:'3'
}],
activeID:2
}
},
methods:{
clickTab(item){
this.activeID = item.value;
// console.log(item.value);
// console.log("activeID",this.activeID);
}
}
}
</script>
<style lang="scss">
.cloudStoreDeatil{
min-height: 100vh;
background: #F5F5F6;
}
.topImgCon{
height: 300rpx;
width: 752rpx;
overflow-y: hidden;
}
.topBg{
width: 752rpx;
position: relative;
}
.shopTip{
width: 678rpx;
height: 176rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
display: flex;
margin: 0 auto;
position: absolute;
top: 248rpx;
right: 0;
left: 0;
padding: 16rpx;
box-sizing: border-box;
.left>image{
width: 144rpx;
height: 144rpx;
background: #FFFFFF;
border-radius: 20rpx;
border: 2rpx solid rgba(0,0,0,0.1);
margin-right: 12rpx;
}
.right{
display: flex;
flex-direction: column;
justify-content: space-between;
.box1{
font-weight: 500;
font-size: 32rpx;
color: #000000;
width: 490rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.box2{
display: flex;
}
.box3{
display: flex;
.label1{
width: 156rpx;
height: 42rpx;
border-radius: 12rpx;
border: 2rpx solid rgba(6,115,237,0.3);
display: flex;
box-sizing: border-box;
padding-top: 1rpx;
justify-content: center;
>image{
width: 32rpx;
height: 32rpx;
}
>text{
font-weight: 500;
font-size: 24rpx;
color: #0673ED;
}
}
.label2{
width: 204rpx;
height: 42rpx;
border-radius: 8rpx;
border: 2rpx solid rgba(155,118,56,0.3);
display: flex;
box-sizing: border-box;
padding-top: 1rpx;
justify-content: center;
>image{
width: 32rpx;
height: 32rpx;
}
>text{
font-weight: 500;
font-size: 24rpx;
color: #9B7638;
}
}
}
}
}
.shopBody{
position: absolute;
top: 452rpx;
background: #FFFFFF;
left: 0;
right: 0;
border-radius: 18rpx;
}
.bodyHeader{
border-radius: 20rpx 20rpx 0rpx 0rpx;
background: linear-gradient( 91deg, #43A1FF 0%, #2F80F9 100%);
display: flex;
.itemBox{
width: 196rpx;
font-weight: 400;
font-size: 32rpx;
text-align: center;
padding-top: 36rpx;
box-sizing: border-box;
color: #FFFFFF;
}
.active0{
font-weight: 600;
font-size: 32rpx;
color: #0066D6;
text-align: center;
background-image: url("https://files.hecrab.com/crab-net/yxs-cloudStore-rate-tab-left.png");
background-size: cover;
width: 198rpx;
height: 104rpx;
}
.active0{
font-weight: 600;
font-size: 32rpx;
color: #0066D6;
text-align: center;
background-image: url("https://files.hecrab.com/crab-net/yxs-cloudStore-rate-tab-left.png");
background-size: cover;
width: 224rpx;
height: 104rpx;
}
.active1{
font-weight: 600;
font-size: 32rpx;
color: #0066D6;
text-align: center;
background-image: url("https://files.hecrab.com/crab-net/yxs-cloudStore-rate-tab-center.png");
background-size: cover;
width: 224rpx;
height: 104rpx;
}
.active2{
font-weight: 600;
font-size: 32rpx;
color: #0066D6;
text-align: center;
background-image: url("https://files.hecrab.com/crab-net/yxs-cloudStore-rate-tab-center.png");
background-size: cover;
width: 224rpx;
height: 104rpx;
}
.active3{
font-weight: 600;
font-size: 32rpx;
color: #0066D6;
text-align: center;
background-image: url("https://files.hecrab.com/crab-net/yxs-cloudStore-rate-tab-right.png");
background-size: cover;
width: 224rpx;
height: 104rpx;
}
}
</style>

@ -0,0 +1,60 @@
<template>
<view class="cloudStoreList">
<view class="shopItemIcon" v-for="(item) in shopList" >
<shop-item-vue :shopName="item.shopName" :shopIcon="item.shopIcon" :value="item.likeValue"></shop-item-vue>
</view>
<tabBar :current="0"></tabBar>
</view>
</template>
<script>
import tabBar from '@/components/tab-bar.vue'
import shopItemVue from './components/shopItem.vue'
export default {
components:{
tabBar,
shopItemVue
},
data(){
return{
shopList:[{
shopName:"susu",
shopIcon:'https://wx2.sinaimg.cn/large/00754ABFgy1hrslrtgykuj318g18gwph.jpg',
likeValue:2
},{
shopName:"宋鱼鱼",
shopIcon:'https://wx2.sinaimg.cn/large/00754ABFgy1hrslrlxs7sj318g18gk2g.jpg',
likeValue:3
},{
shopName:"信号灯塔",
shopIcon:'https://wx2.sinaimg.cn/large/00754ABFgy1hrslrrlp2jj30ze0zejt3.jpg',
likeValue:3.5
},{
shopName:"abcdef",
shopIcon:'https://wx3.sinaimg.cn/large/005UJ76vgy1hs2x7gyhsyj30m80m8jty.jpg',
likeValue:4
}]
}
},
//
onLoad() {
},
//
onPullDownRefresh() {
this.getnewsList();
},
//
onReachBottom(){
},
methods:{
}
}
</script>
<style>
.cloudStoreList{
min-height:100vh;
background: #F5F5F5;
}
</style>

@ -0,0 +1,32 @@
<template>
<view class="coupousAct">
<view class="activeCode">
<u-input shape="square" maxlength="-1" placeholder="输入激活码"></u-input>
<view ></view>
</view>
<view class="cardBody">
<view class="card">
<view class="left"></view>
<view class="right"></view>
</view>
</view>
</view>
</template>
<script>
export default {
data(){
return{
}
}
}
</script>
<style>
.coupousAct{
width: 750rpx;
min-height: 100vh;
background: #FFFFFF;
border-radius: 20rpx 20rpx 0rpx 0rpx;
}
</style>

@ -0,0 +1,150 @@
<template>
<view class="dropshipping">
<view class="searchTop">
<u-search placeholder="搜索商品" shape="round" height="56rpx" style="width: 270rpx;" :showAction="false" ></u-search>
<view :class="['filter-item',{act:activeId === item.value}]" v-for="item in filterList" :key="item.value" @clear="getData" @click="filterClick(item)" >
<text class="filter-name">{{item.name}}</text>
<u-icon name="arrow-down-fill" size="10"></u-icon>
</view>
</view>
<view class="detail">
<view class="goodsBox"v-for="(item,index) in 10">
<image src="https://wx4.sinaimg.cn/large/006TzZ4Ugy1hs3zsjzgkfj31jk1jkwvr.jpg"></image>
<text class="goodsName">商品名称</text>
<view class="bottom">
<text class="goodsPrice">0.60</text>
<text class="sales">销量470,000+</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data(){
return{
searchKeyword:"",
filterList:[
{name:"综合",value:0},
{name:"价格",value:1},
{name:"筛选",value:2},
],
activeId:0,
dataList:[],
searchForm: {
//
pageNum: 1,
//
pageSize: 4,
// 1 2 es使
sortType: 1,
//
goodsName:'',
// id
flagshipShopId: '1',
//
bottomPrice:'',
//
topPrice:'',
//
priceOrderFlag:'',
},
scrollTop: 636,
}
},
methods:{
filterClick(item){
this.activeId = item.value
}
}
}
</script>
<style lang="scss">
.dropshipping{
min-height: 100vh;
background: #FFFFFF;
border-radius: 20rpx 20rpx 0rpx 0rpx;
.searchTop{
width: 750rpx;
height: 92rpx;
display: flex;
align-items: center;
padding: 2rpx;
box-sizing: border-box;
.filter-item{
width: 124rpx;
height: 56rpx;
border-radius: 12rpx;
background: #F8FAFB;
font-size: 28rpx;
color: #868A9B;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: 0 18rpx;
margin-left: 8rpx ;
&.act{
color: #222222;
background: #EDEEEF;
font-weight: 600;
}
}
}
.detail{
padding: 36rpx;
display: flex;
justify-content: space-around;
flex-wrap: wrap;
}
.goodsBox{
width: 328rpx;
height: 422rpx;
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
margin-bottom: 22rpx;
margin-right: 10rpx;
>image{
width: 328rpx;
height: 320rpx;
}
.goodsName{
font-weight: 500;
font-size: 32rpx;
}
.bottom{
display: flex;
height: 42rpx;