yujialong 10 months ago
parent 2e65e574c4
commit 4a3790dd3b
  1. 3
      apis/modules/user.js
  2. 1
      components/sideSelect/sideSelect.vue
  3. 2
      config/request.js
  4. 63
      other/addGoods/addGoods.vue
  5. 17
      other/clue/clue.vue
  6. 24
      other/goods/goods.vue
  7. 155
      other/goodsDetail/goodsDetail.vue
  8. 23
      other/procureDetail/procureDetail.vue
  9. 1
      other/registeredActivity/registeredActivity.vue
  10. 52
      other/supplierDetail/supplierDetail.vue
  11. 20
      other/vouchers/vouchers.vue
  12. 9
      pages.json
  13. 20
      pages/index/index.vue
  14. 17
      pages/login/login.vue
  15. 20
      pages/person/person.vue
  16. 57
      pages/supplier/supplier.vue
  17. 3
      styles/common.scss
  18. 30
      team/info/info.vue
  19. 21
      team/infoEdit/infoEdit.vue
  20. 6
      team/qrcode/qrcode.vue

@ -7,6 +7,9 @@ export const login = (data) => {
export const kindergartenWeChatApplication = (data) => { export const kindergartenWeChatApplication = (data) => {
return post('nakadai/kindergarten/platformTeamAccount/kindergartenWeChatApplication', data) return post('nakadai/kindergarten/platformTeamAccount/kindergartenWeChatApplication', data)
} }
export const loginWithPhoneNumber = (data) => {
return post('nakadai/kindergarten/platformTeamAccount/loginWithPhoneNumber', data)
}
export const realNameAuthentication = (data) => { export const realNameAuthentication = (data) => {
return post(`nakadai/users/autonym/realNameAuthentication`, data) return post(`nakadai/users/autonym/realNameAuthentication`, data)
} }

@ -32,6 +32,7 @@
min-width: 200rpx; min-width: 200rpx;
font-size: 28rpx; font-size: 28rpx;
text-align: center; text-align: center;
background-color: #fff;
.item { .item {
padding: 20rpx 0; padding: 20rpx 0;
} }

@ -5,7 +5,7 @@
*/ */
export default { export default {
// baseURL: 'http://192.168.31.217:10010/', // baseURL: 'http://192.168.31.51:10010/',
baseURL: 'http://124.71.79.122/', baseURL: 'http://124.71.79.122/',
headers: { headers: {
'Content-Type': 'application/json;charset=UTF-8' 'Content-Type': 'application/json;charset=UTF-8'

@ -31,7 +31,7 @@
</view> </view>
<view class="title">产品规格</view> <view class="title">产品规格</view>
<view v-for="(item, i) in form.skuList" :key="i" class="block"> <view v-for="(item, i) in form.skuList" :key="i" class="block sku-item">
<view class="form-list edit-form"> <view class="form-list edit-form">
<view class="line"> <view class="line">
<view class="name">规格名称</view> <view class="name">规格名称</view>
@ -39,13 +39,18 @@
</view> </view>
<view class="line"> <view class="line">
<view class="name">价格</view> <view class="name">价格</view>
<view class="price-select" @click="showPrice(item)">{{ item.price || '请选择' }}</view> <view class="prices" @click="showPrice(item)">
<view v-if="item.price">售价{{ item.price }}</view>
<view v-if="item.oriPrice" class="oriPrice">市场价{{ item.oriPrice }}</view>
<template v-if="!item.price && !item.oriPrice">面议</template>
</view>
</view> </view>
<view class="line"> <view class="line">
<view class="name">库存</view> <view class="name">库存</view>
<uni-number-box v-model.number="item.stocks" :max="100" :min="1"></uni-number-box> <uni-number-box v-model.number="item.stocks" :max="100" :min="1"></uni-number-box>
</view> </view>
</view> </view>
<uni-icons class="del" type="closeempty" size="18" color="#b3b3b3" @click="delSku(i)"></uni-icons>
</view> </view>
<view class="plus-sku"> <view class="plus-sku">
<uni-icons class="icon" type="plus" size="30" color="#007eff" @click="addSku"></uni-icons> <uni-icons class="icon" type="plus" size="30" color="#007eff" @click="addSku"></uni-icons>
@ -56,12 +61,12 @@
<view class="btn publish" @click="submit(1)">发布</view> <view class="btn publish" @click="submit(1)">发布</view>
</view> </view>
<uni-popup ref="popup" background-color="#fff" type="bottom"> <uni-popup ref="popup" background-color="#fff" type="bottom" @change="popupChange">
<view class="block"> <view class="block">
<view class="form-list edit-form"> <view class="form-list edit-form">
<view class="line"> <view class="line">
<view class="name">售价</view> <view class="name">售价</view>
<input type="text" placeholder="请输入售价" v-model="curSku.price" /> <input ref="price" :focus="showPopup" type="text" placeholder="请输入售价" v-model="curSku.price" />
</view> </view>
<view class="line"> <view class="line">
<view class="name">市场价</view> <view class="name">市场价</view>
@ -96,8 +101,8 @@
status: 1, status: 1,
oriPrice: '', oriPrice: '',
price: '', price: '',
skuName: '', skuName: '默认',
stocks: 0, stocks: 9999,
} }
], ],
}, },
@ -108,6 +113,7 @@
submiting: false, submiting: false,
uploading: false, uploading: false,
classifications: [], classifications: [],
showPopup: false,
} }
}, },
onShow() { onShow() {
@ -179,6 +185,13 @@
this.curSku = item this.curSku = item
this.$refs.popup.open() this.$refs.popup.open()
}, },
popupChange(e) {
this.showPopup = e.show
},
// sku
delSku(i) {
this.form.skuList.splice(i, 1)
},
// sku // sku
addSku() { addSku() {
this.form.skuList.push(this.originSku) this.form.skuList.push(this.originSku)
@ -188,8 +201,9 @@
if (this.submiting) return false if (this.submiting) return false
const form = JSON.parse(JSON.stringify((this.form))) const form = JSON.parse(JSON.stringify((this.form)))
if (!form.prodName) return this.$util.errMsg(`请输入商品名称!`) if (!form.prodName) return this.$util.errMsg(`请输入商品名称!`)
if (status === 1) {
if (!this.pic.length) return this.$util.errMsg(`请上传封面图片!`) if (!this.pic.length) return this.$util.errMsg(`请上传封面图片!`)
if (!form.brief) return this.$util.errMsg(`请输入商品描述!`) // if (!form.brief) return this.$util.errMsg(``)
form.skuList = form.skuList.filter(e => e.skuName) form.skuList = form.skuList.filter(e => e.skuName)
if (!form.skuList.length) return this.$util.errMsg(`请输入产品规格!`) if (!form.skuList.length) return this.$util.errMsg(`请输入产品规格!`)
let invalid = 0 let invalid = 0
@ -198,20 +212,21 @@
this.$util.errMsg(`请输入规格名称!`) this.$util.errMsg(`请输入规格名称!`)
invalid = 1 invalid = 1
} }
if (!e.price) { // if (!e.price) {
this.$util.errMsg(`请输入售价!`) // this.$util.errMsg(``)
invalid = 1 // invalid = 1
} // }
if (!e.oriPrice) { // if (!e.oriPrice) {
this.$util.errMsg(`请输入市场价!`) // this.$util.errMsg(``)
invalid = 1 // invalid = 1
} // }
if (!e.stocks) { if (!e.stocks) {
this.$util.errMsg(`请输入库存!`) this.$util.errMsg(`请输入库存!`)
invalid = 1 invalid = 1
} }
} }
if (invalid) return false if (invalid) return false
}
this.submiting = true this.submiting = true
form.pic = this.pic.map(e => e.url).join() form.pic = this.pic.map(e => e.url).join()
form.imgs = this.imgs.map(e => e.url).join() form.imgs = this.imgs.map(e => e.url).join()
@ -257,9 +272,14 @@
padding: 0; padding: 0;
} }
} }
.price-select { .prices {
font-size: 24rpx; display: inline-flex;
align-items: center;
font-size: 28rpx;
color: #333; color: #333;
.oriPrice {
margin-left: 20rpx;
}
} }
.title { .title {
margin: 40rpx 24rpx 24rpx; margin: 40rpx 24rpx 24rpx;
@ -267,6 +287,15 @@
font-weight: 600; font-weight: 600;
color: #333; color: #333;
} }
.sku-item {
position: relative;
.del {
z-index: 10;
position: absolute;
top: 15rpx;
right: 15rpx;
}
}
.plus-sku { .plus-sku {
text-align: center; text-align: center;
} }

@ -2,7 +2,7 @@
<view> <view>
<view class="page"> <view class="page">
<view class="search-wrap"> <view class="search-wrap">
<uni-search-bar class="search" radius="30" placeholder="请输入幼儿园名称、订单编号" v-model="keyword" clearButton="auto" cancelButton="none" @confirm="initList" /> <uni-search-bar class="search" radius="30" placeholder="请输入客户名称、线索编号进行搜索" v-model="keyword" clearButton="auto" cancelButton="none" @confirm="initList" />
<view> <view>
<uni-icons type="notification" size="20"></uni-icons> <uni-icons type="notification" size="20"></uni-icons>
</view> </view>
@ -19,13 +19,14 @@
<view class="date">提交时间{{ item.createTime }}</view> <view class="date">提交时间{{ item.createTime }}</view>
</view> --> </view> -->
<view class="pro-name"> <view class="pro-name">
<image class="icon" :src="item.logo ? item.logo : Common.shopIcon"></image> <image v-if="item.logo" class="icon logo" :src="item.logo"></image>
<image v-else class="icon" :src="Common.shopIcon"></image>
{{ item.purchasingPerson }} {{ item.purchasingPerson }}
</view> </view>
<view class="info"> <view class="info">
<view class="texts"> <view class="texts">
<view class="meta">采购内容{{ item.content || '' }}</view> <view class="meta">采购内容{{ item.content || '' }}</view>
<view class="meta">数量{{ item.num || 0 }}</view> <view class="meta">数量{{ item.num ? item.num + '个' : '待沟通' }}</view>
<view class="meta">编号{{ item.orderNumber }}</view> <view class="meta">编号{{ item.orderNumber }}</view>
<view class="meta">提交时间{{ item.createTime }}</view> <view class="meta">提交时间{{ item.createTime }}</view>
</view> </view>
@ -181,11 +182,13 @@
color: #333; color: #333;
border-bottom: 1px solid #E6E8ED; border-bottom: 1px solid #E6E8ED;
.icon { .icon {
width: 66rpx; width: 80rpx;
min-width: 66rpx; min-width: 80rpx;
height: 66rpx; height: 80rpx;
margin-right: 20rpx; margin-right: 20rpx;
border-radius: 4px; }
.logo {
border-radius: 50%;
} }
} }
.meta { .meta {

@ -1,12 +1,15 @@
<template> <template>
<view>
<view class="page"> <view class="page">
<view class="search-wrap">
<uni-search-bar class="search" radius="30" placeholder="请输入产品名称" v-model="keyword" clearButton="auto" cancelButton="none" @confirm="initList" @clear="clearKeyword" />
</view>
<ul class="tab"> <ul class="tab">
<li :class="{active: curTab === ''}" @click="tabChange('')">全部</li> <li :class="{active: curTab === ''}" @click="tabChange('')">全部</li>
<li :class="{active: curTab === 1}" @click="tabChange(0)">已上架({{ status1 }})</li> <li :class="{active: curTab === 1}" @click="tabChange(0)">已上架({{ status1 }})</li>
<li :class="{active: curTab === 2}" @click="tabChange(2)">已下架({{ status2 }})</li> <li :class="{active: curTab === 2}" @click="tabChange(2)">已下架({{ status2 }})</li>
<li :class="{active: curTab === 3}" @click="tabChange(3)">草稿({{ status3 }})</li> <li :class="{active: curTab === 3}" @click="tabChange(3)">草稿({{ status3 }})</li>
<li :class="{active: curTab === 4}" @click="tabChange(4)">审核中({{ status4 }})</li> <!-- <li :class="{active: curTab === 4}" @click="tabChange(4)">审核中({{ status4 }})</li> -->
<li class="disabled">审核中({{ status4 }})</li>
</ul> </ul>
<template v-if="list.length"> <template v-if="list.length">
@ -29,7 +32,6 @@
<!-- 已售500 --> <!-- 已售500 -->
</view> </view>
<view class="btns"> <view class="btns">
<!-- <view class="btn" @click.stop="toDetail(item)">查看</view> -->
<template v-if="item.status === 2 || item.status === 3"> <template v-if="item.status === 2 || item.status === 3">
<view class="btn del" @click.stop="del(item)">删除</view> <view class="btn del" @click.stop="del(item)">删除</view>
<view class="btn" @click.stop="toEdit(item)">编辑</view> <view class="btn" @click.stop="toEdit(item)">编辑</view>
@ -46,7 +48,6 @@
<uni-icons class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../addGoods/addGoods')"></uni-icons> <uni-icons class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../addGoods/addGoods')"></uni-icons>
</view> </view>
</view>
</template> </template>
<script> <script>
@ -111,6 +112,7 @@
page({ page({
status: this.curTab, status: this.curTab,
current: this.page, current: this.page,
prodName: this.keyword,
}).then(({ page, productCount }) => { }).then(({ page, productCount }) => {
// //
const status1 = productCount.find(e => e.status === 1) const status1 = productCount.find(e => e.status === 1)
@ -146,6 +148,11 @@
this.reachBottom = 0 this.reachBottom = 0
this.getList() this.getList()
}, },
// keyword
clearKeyword() {
this.keyword = ''
this.initList()
},
// tab // tab
tabChange(id) { tabChange(id) {
this.curTab = id this.curTab = id
@ -182,7 +189,7 @@
}, },
// //
toDetail(item) { toDetail(item) {
this.$util.to(`../addGoods/addGoods?prodId=${item.prodId}&show=1`) this.$util.to(`../goodsDetail/goodsDetail?prodId=${item.prodId}`)
}, },
// //
toEdit(item) { toEdit(item) {
@ -193,9 +200,6 @@
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.page {
padding-bottom: 90px;
}
.list { .list {
margin-top: 20rpx; margin-top: 20rpx;
padding: 20rpx; padding: 20rpx;
@ -208,7 +212,9 @@
.metas { .metas {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-bottom: 20rpx; padding-bottom: 10rpx;
margin-bottom: 10rpx;
border-bottom: 1px dashed #eaeaea;
} }
.time { .time {
font-size: 24rpx; font-size: 24rpx;

@ -0,0 +1,155 @@
<template>
<view class="wrap">
<view class="banner">
<uni-swiper-dot class="swiper" v-if="pic.length" :current="curPic" :info="pic" field="id" mode="round" :dotsStyles="dotsStyles">
<swiper class="swiper-box" autoplay @change="picChange">
<swiper-item v-for="(item, i) in pic" :key="i">
<image class="pic" :src="item"></image>
</swiper-item>
</swiper>
</uni-swiper-dot>
</view>
<view class="detail">
<view class="prices">
<text class="price">售价 {{ info.price }}</text>
<text class="oriPrice">市场价 {{ info.oriPrice }}</text>
</view>
<view class="name">{{ info.prodName }}</view>
<view class="sku">
<view class="item">
<text></text>
</view>
</view>
</view>
<view class="detail">
<view class="title">商品详情</view>
<mp-html :content="info.brief"/>
</view>
</view>
</template>
<script>
import { info } from '@/apis/modules/goods.js'
import Util from '@/libs/util'
export default {
data() {
return {
prodId: '',
curPic: 0,
pic: [],
imgs: [],
dotsStyles: {
backgroundColor: 'rgba(83, 200, 249,0.3)',
border: '1px rgba(83, 200, 249,0.3) solid',
color: '#fff',
selectedBackgroundColor: 'rgba(83, 200, 249,0.9)',
selectedBorder: '1px rgba(83, 200, 249,0.9) solid'
},
info: {
brief: '',
categoryId: '',
content: '',
pic: '',
imgs: '',
price: '',
prodName: '',
skuList: [
{
prodName: '',
status: 1,
oriPrice: '',
price: '',
skuName: '默认',
stocks: 9999,
}
],
},
coverUrl: [],
mpStyle: {
p: 'font-size: 25rpx !important;font-family: Microsoft Yahei !important;font-weight: 400 !important;color: #333 !important;',
span: 'font-size: 25rpx !important;font-family: Microsoft Yahei !important;font-weight: 400 !important;color: #333 !important;'
},
}
},
onShow() {
const pages = getCurrentPages()
const { options } = pages[pages.length - 1]
this.prodId = options.prodId
this.getInfo()
},
methods: {
//
async getInfo() {
uni.showLoading({
title: '加载中'
})
const { data } = await info({
prodId: this.prodId
})
if (data) {
if (data.pic) {
this.pic = data.pic.split(',')
}
if (data.imgs) {
this.imgs = data.imgs.split(',')
}
this.info = data
}
uni.hideLoading()
},
//
picChange(e) {
this.curBanner = e.detail.current;
},
}
}
</script>
<style scoped lang="scss">
.banner {
position: relative;
.pic {
width: 100%;
height: 420rpx;
}
swiper {
height: 420rpx;
}
}
.detail {
padding: 34rpx 32rpx;
margin: 20rpx;
border-radius: 20px;
background-color: #fff;
.title {
margin-bottom: 20rpx;
font-size: 30rpx;
font-weight: 600;
color: #333;
}
.prices {
display: flex;
justify-content: space-between;
align-items: center;
.price {
font-size: 38rpx;
font-weight: 600;
color: #f70000;
}
.oriPrice {
font-size: 24rpx;
color: #a0a0a0;
text-decoration: line-through;
}
}
.name {
margin: 20rpx 0;
font-size: 32rpx;
font-weight: 600;
color: #333;
}
}
</style>

@ -3,7 +3,9 @@
<view class="block"> <view class="block">
<view class="title">编号{{ id }}</view> <view class="title">编号{{ id }}</view>
<view class="shop"> <view class="shop">
<image class="logo" :src="info.shopLogo ? info.shopLogo : Common.shopIcon"></image> <image v-if="item.shopLogo" class="icon logo" :src="item.shopLogo"></image>
<image v-else class="icon" :src="Common.shopIcon"></image>
{{ info.shopName }} {{ info.shopName }}
<view class="status">{{ info.authentication }}</view> <view class="status">{{ info.authentication }}</view>
</view> </view>
@ -23,7 +25,7 @@
</view> </view>
<view v-if="info.remarks" class="block"> <view v-if="info.remarks" class="block">
<view class="title">备注</view> <view class="title">客户留言</view>
<view class="remarks">{{ info.remarks }}</view> <view class="remarks">{{ info.remarks }}</view>
</view> </view>
@ -51,7 +53,7 @@
<text>{{ info.createTime }}</text> <text>{{ info.createTime }}</text>
</view> </view>
<view class="line"> <view class="line">
<text class="field">幼儿园是否已认证/是否已实名</text> <text class="field">{{ info.orderType === 1 ? '个人是否已实名' : '是否已认证' }}</text>
<text>{{ info.authentication }}</text> <text>{{ info.authentication }}</text>
</view> </view>
</view> </view>
@ -113,6 +115,7 @@
.title { .title {
margin-bottom: 20rpx; margin-bottom: 20rpx;
font-size: 30rpx; font-size: 30rpx;
font-weight: 600;
color: #333; color: #333;
} }
.shop { .shop {
@ -121,13 +124,16 @@
align-items: center; align-items: center;
font-size: 28rpx; font-size: 28rpx;
color: #333; color: #333;
.logo { .icon {
width: 66rpx; width: 80rpx;
min-width: 66rpx; min-width: 80rpx;
height: 66rpx; height: 80rpx;
margin-right: 20rpx; margin-right: 20rpx;
border-radius: 4px; border-radius: 4px;
} }
.logo {
border-radius: 50%;
}
.status { .status {
position: absolute; position: absolute;
bottom: 0; bottom: 0;
@ -148,6 +154,9 @@
align-items: center; align-items: center;
padding-bottom: 10rpx; padding-bottom: 10rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
&:last-child {
margin-bottom: 0;
}
} }
.prod { .prod {
max-width: 70%; max-width: 70%;

@ -62,6 +62,7 @@
export default { export default {
data() { data() {
return { return {
openId: uni.getStorageSync('openId'),
tabs: [], tabs: [],
popup: false, popup: false,
curTab: '', curTab: '',

@ -4,6 +4,11 @@
<view class="name">{{ form.classificationName }}</view> <view class="name">{{ form.classificationName }}</view>
<image class="logo" :src="form.logoUrl ? form.logoUrl : Common.shopIcon"></image> <image class="logo" :src="form.logoUrl ? form.logoUrl : Common.shopIcon"></image>
<view v-if="form.slogan" class="slogan">{{ form.slogan }}</view> <view v-if="form.slogan" class="slogan">{{ form.slogan }}</view>
<view class="star" @click.stop="collect">
<uni-icons class="star-icon" color="#ffcf47" :type="collectInfo.whetherAttention ? 'star-filled' : 'star'" size="25"></uni-icons>
{{ collectInfo.whetherAttention ? '取消关注' : '关注' }}
</view>
</view> </view>
<ul class="tab"> <ul class="tab">
@ -60,6 +65,7 @@
</template> </template>
<script> <script>
import { collect, cancelCollection } from '@/apis/modules/supplier.js'
import { queryTeamInfo } from '@/apis/modules/user.js' import { queryTeamInfo } from '@/apis/modules/user.js'
import { page } from '@/apis/modules/goods.js' import { page } from '@/apis/modules/goods.js'
import Common from '@/config/common' import Common from '@/config/common'
@ -68,8 +74,12 @@
return { return {
Common, Common,
teamId: '', teamId: '',
accountId: '',
curTab: 0, curTab: 0,
form: { form: {
collectionInformation: {
whetherAttention: 0
},
classificationName: '', classificationName: '',
slogan: '', slogan: '',
briefIntroduction: '', briefIntroduction: '',
@ -95,6 +105,8 @@
page: 1, page: 1,
pageSize: 5, pageSize: 5,
total: 0, total: 0,
submiting: false,
collectInfo: {},
} }
}, },
// //
@ -116,6 +128,7 @@
const pages = getCurrentPages() const pages = getCurrentPages()
const { options } = pages[pages.length - 1] const { options } = pages[pages.length - 1]
this.teamId = options.teamId this.teamId = options.teamId
this.accountId = options.accountId
this.getInfo() this.getInfo()
this.getGoods() this.getGoods()
}, },
@ -135,6 +148,7 @@
this.desPics = data.pictureUrl.split(',') this.desPics = data.pictureUrl.split(',')
} }
} }
this.collectInfo = res.collectionInformation
this.form = data this.form = data
uni.hideLoading() uni.hideLoading()
}, },
@ -160,6 +174,33 @@
tabChange(id) { tabChange(id) {
this.curTab = id this.curTab = id
}, },
//
async collect() {
if (this.submiting) return false
this.submiting = true
if (this.collectInfo.whetherAttention) {
const that = this
uni.showModal({
title: '提示',
content: '确定要取消关注吗?',
async success(res) {
if (res.confirm) {
await cancelCollection(that.collectInfo.attentionId)
that.submiting = false
that.$util.sucMsg('取消关注成功')
that.getInfo()
}
}
})
} else {
const res = await collect({
supplierAccountId: this.accountId
})
this.submiting = false
this.getInfo()
}
},
} }
} }
</script> </script>
@ -196,6 +237,17 @@
font-size: 28rpx; font-size: 28rpx;
color: #333; color: #333;
} }
.star {
display: flex;
justify-content: flex-end;
align-items: center;
margin-top: 20rpx;
font-size: 28rpx;
color: #333;
.star-icon {
margin-right: 10rpx;
}
}
} }
.detail { .detail {
padding: 40rpx; padding: 40rpx;

@ -10,9 +10,9 @@
<view v-for="(item, i) in list" :key="i" class="item"> <view v-for="(item, i) in list" :key="i" class="item">
<view class="texts"> <view class="texts">
<view class="name">{{ item.competitionName }}</view> <view class="name">{{ item.competitionName }}</view>
<view class="meta">有效期 {{ item.playEndTime.substr(0, 16) }}</view> <view class="meta">{{ item.status === 1 ? '未生效 |' : '' }} 有效期 {{ item.playEndTime.substr(0, 16) }}</view>
</view> </view>
<view :class="['use', {ing: item.playing}]" @click.stop="use(item)">使用</view> <view :class="['use', {ing: item.status}]" @click.stop="use(item)">{{ item.status === 1 ? '电子入场券' : '使用' }}</view>
</view> </view>
</view> </view>
@ -124,15 +124,17 @@
}, },
// //
handleStatus (item) { handleStatus (item) {
let playing = 0 let status = 0
const playStartTime = new Date(item.playStartTime) // const playStartTime = new Date(item.playStartTime) //
const playEndTime = new Date(item.playEndTime) // const playEndTime = new Date(item.playEndTime) //
const { now } = this const { now } = this
// (whetherToSignUp 0 1)
if (now > playStartTime && now < playEndTime) { if (now < playStartTime) { //
playing = 1 status = 1
} else if (now < playEndTime) { //
status = 2
} }
this.$set(item, 'playing', playing) this.$set(item, 'status', status)
}, },
initList() { initList() {
this.page = 1 this.page = 1
@ -155,7 +157,7 @@
}, },
// //
use(row) { use(row) {
if (row.playing) { if (row.status) {
this.curRow = row this.curRow = row
this.$refs.popup.open() this.$refs.popup.open()
} }
@ -220,7 +222,7 @@
.sign-popup { .sign-popup {
position: relative; position: relative;
width: 80vw; width: 80vw;
padding: 40rpx 0 20rpx; padding: 40rpx 0;
text-align: center; text-align: center;
box-sizing: border-box; box-sizing: border-box;
background-color: #fff; background-color: #fff;

@ -12,6 +12,7 @@
"path" : "pages/index/index", "path" : "pages/index/index",
"style" : "style" :
{ {
"navigationStyle": "custom",
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
}, },
@ -140,6 +141,14 @@
"navigationBarTitleText" : "我的关注", "navigationBarTitleText" : "我的关注",
"enablePullDownRefresh" : true "enablePullDownRefresh" : true
} }
},
{
"path" : "goodsDetail/goodsDetail",
"style" :
{
"navigationBarTitleText" : "商品详情",
"enablePullDownRefresh" : false
}
} }
] ]
}, },

@ -1,11 +1,9 @@
<template> <template>
<view :class="[{oh: !per}]"> <view :class="[{oh: !per}]">
<view class="page"> <view class="page">
<view class="search-wrap"> <!-- <view class="bg"></view> -->
<view class="search-wrap" :style="{paddingRight: menuBtnInfo.width + 8 + 'px', paddingTop: menuBtnInfo.top + 'px'}">
<uni-search-bar class="search" radius="30" placeholder="请输入" v-model="keyword" clearButton="auto" cancelButton="none" @confirm="initList" /> <uni-search-bar class="search" radius="30" placeholder="请输入" v-model="keyword" clearButton="auto" cancelButton="none" @confirm="initList" />
<view>
<uni-icons type="notification" size="20"></uni-icons>
</view>
</view> </view>
<view class="banner"> <view class="banner">
@ -115,6 +113,8 @@
submiting: false, submiting: false,
tabs: [], tabs: [],
scrollLeft: 0, scrollLeft: 0,
headerTop: 0,
menuBtnInfo: {},
} }
}, },
// //
@ -133,6 +133,11 @@
} }
}, },
onShow() { onShow() {
// #ifdef MP-WEIXIN
console.log(33, uni.getMenuButtonBoundingClientRect())
this.menuBtnInfo = uni.getMenuButtonBoundingClientRect()
// .top + 8 + 'px'
// #endif
// uni.setStorageSync('token', 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNzA0Nzg1NDg5LCJleHAiOjE3MDU2NDk0ODksImFjY291bnRJZCI6IjQ5ODMiLCJzaG9wSWQiOjYsInBsYXRmb3JtSWQiOjV9.B0gXKl9gOEi9oSNZl8M_gGcqFXf9hAYbqtVHygDoYxM') // uni.setStorageSync('token', 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNzA0Nzg1NDg5LCJleHAiOjE3MDU2NDk0ODksImFjY291bnRJZCI6IjQ5ODMiLCJzaG9wSWQiOjYsInBsYXRmb3JtSWQiOjV9.B0gXKl9gOEi9oSNZl8M_gGcqFXf9hAYbqtVHygDoYxM')
// uni.setStorageSync('openId', 'o3hKk60jbhAuLm4K3weIgQGFmv2g') // uni.setStorageSync('openId', 'o3hKk60jbhAuLm4K3weIgQGFmv2g')
this.keyword = '' this.keyword = ''
@ -344,6 +349,13 @@
border-top-left-radius: 16px; border-top-left-radius: 16px;
border-top-right-radius: 16px; border-top-right-radius: 16px;
} }
/deep/.search-wrap {
padding-bottom: 30rpx;
background-color: $uni-primary;
.uni-searchbar {
padding: 0 10rpx !important;
}
}
.banner { .banner {
position: relative; position: relative;
.pic { .pic {

@ -56,7 +56,7 @@
</template> </template>
<script> <script>
import { login, userBinding, getSessionKey, kindergartenWeChatApplication, saveCertification } from '@/apis/modules/user.js' import { login, userBinding, getSessionKey, kindergartenWeChatApplication, saveCertification, loginWithPhoneNumber } from '@/apis/modules/user.js'
import WXBizDataCrypt from '@/libs/WXBizDataCrypt' import WXBizDataCrypt from '@/libs/WXBizDataCrypt'
export default { export default {
data() { data() {
@ -150,7 +150,7 @@
} }
}, },
// //
onGetPhoneNumber(e){ async onGetPhoneNumber(e){
if (this.submiting) return false if (this.submiting) return false
const { encryptedData, iv } = e.detail const { encryptedData, iv } = e.detail
// 1.使js2.使 // 1.使js2.使
@ -162,8 +162,21 @@
const phone = data.phoneNumber const phone = data.phoneNumber
this.phone = phone this.phone = phone
if (this.isReg) { // if (this.isReg) { //
//
const res = await loginWithPhoneNumber({
code: this.code,
openId: this.openid,
phone
})
if (res.data && res.data.platformId) {
uni.setStorageSync('token', res.data.token)
uni.setStorageSync('platformId', +res.data.platformId)
uni.setStorageSync('openId', res.data.openId)
// uni.setStorageSync('teamId', data.teamId)
} else {
this.submiting = false this.submiting = false
this.$refs.popup.open('bottom') this.$refs.popup.open('bottom')
}
} else { // } else { //
userBinding({ userBinding({
openid: this.openid, openid: this.openid,

@ -90,7 +90,10 @@
<view class="title">我是{{ platformName }}</view> <view class="title">我是{{ platformName }}</view>
<view v-if="!isMember" class="badge">{{ platformName }}负责人</view> <view v-if="!isMember" class="badge">{{ platformName }}负责人</view>
</view> </view>
<view class="auth">{{ auditStatus }}</view> <view class="auth">
{{ auditStatus }}
<uni-icons class="icon" type="right" size="16" color="#4876f9"></uni-icons>
</view>
</view> </view>
<view class="identity-bg"> <view class="identity-bg">
<image v-if="isPreschool" class="pic" src="http://124.71.79.122/images/miniProgram/preschool1.png" mode="widthFix" /> <image v-if="isPreschool" class="pic" src="http://124.71.79.122/images/miniProgram/preschool1.png" mode="widthFix" />
@ -101,8 +104,6 @@
</view> </view>
</view> </view>
<view class="title">工作台</view>
<ul class="func"> <ul class="func">
<li @click="toEnterAuth(platformId)"> <li @click="toEnterAuth(platformId)">
<image src="http://124.71.79.122/images/miniProgram/icon7.png" /> <image src="http://124.71.79.122/images/miniProgram/icon7.png" />
@ -450,7 +451,6 @@
.func { .func {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
margin-top: 15rpx;
li { li {
width: 25%; width: 25%;
margin-bottom: 30rpx; margin-bottom: 30rpx;
@ -487,8 +487,18 @@
border-radius: 10px; border-radius: 10px;
} }
.auth { .auth {
display: inline-flex;
align-items: center;
padding: 4rpx 16rpx;
margin-left: 20rpx;
font-size: 24rpx; font-size: 24rpx;
color: #9c9c9c; color: $uni-primary;
white-space: nowrap;
border: 1px solid #8ca5eb;
border-radius: 20px;
.icon {
color: $uni-primary;
}
} }
} }
.company-name { .company-name {

@ -11,21 +11,22 @@
<view class="list"> <view class="list">
<view class="item" v-for="(item, i) in list" :key="i" @click.stop="toDetail(item)"> <view class="item" v-for="(item, i) in list" :key="i" @click.stop="toDetail(item)">
<view class="pro-name"> <view class="pro-name">
<image class="icon" :src="item.logoUrl ? item.logoUrl : Common.shopIcon"></image> <image v-if="item.logoUrl" class="icon logo" :src="item.logoUrl"></image>
<image v-else class="icon" :src="Common.shopIcon"></image>
{{ item.companyName }} {{ item.companyName }}
</view> </view>
<view class="info"> <view class="info">
<view v-if="item.briefIntroduction" class="intro"> <view v-if="item.briefIntroduction" class="intro">
<image class="icon" src="http://124.71.79.122/images/miniProgram/intro.png" mode="widthFix" /> <image class="icon" src="http://124.71.79.122/images/miniProgram/intro1.png" mode="widthFix" />
<view class="text ell">{{ item.briefIntroduction }}</view> <view class="text ell">{{ item.briefIntroduction }}</view>
</view> </view>
<view v-if="item.province || item.city" class="meta"> <view v-if="item.province || item.city" class="meta">
<image class="icon" src="http://124.71.79.122/images/miniProgram/address1.png" mode="widthFix" /> <image class="icon" src="http://124.71.79.122/images/miniProgram/address2.png" mode="widthFix" />
{{ item.province }}-{{ item.city }} {{ item.province }}-{{ item.city }}
</view> </view>
<view class="actions"> <view class="actions">
<view class="star" @click.stop="collect(item)"> <view class="star" @click.stop="collect(item)">
<uni-icons class="star-icon" color="#ffcf47" :type="item.whetherAttention ? 'star' : 'star-filled'" size="25" @click.stop="collect(item)"></uni-icons> <uni-icons class="star-icon" color="#ffcf47" :type="item.whetherAttention ? 'star-filled' : 'star'" size="25"></uni-icons>
{{ item.whetherAttention ? '取消关注' : '关注' }} {{ item.whetherAttention ? '取消关注' : '关注' }}
</view> </view>
<view class="order" @click.stop="toOrder(item)">我想采购</view> <view class="order" @click.stop="toOrder(item)">我想采购</view>
@ -68,40 +69,6 @@
per: true, // per: true, //
teamId: uni.getStorageSync('teamId') || '', teamId: uni.getStorageSync('teamId') || '',
platformId: uni.getStorageSync('platformId'), platformId: uni.getStorageSync('platformId'),
menus: [
{
id: '',
name: '全部'
},
{
id: 1,
name: '服装'
},
{
id: 2,
name: '教具'
},
{
id: 3,
name: '课程'
},
{
id: 4,
name: '家具'
},
{
id: 5,
name: '设备'
},
{
id: 6,
name: '服务'
},
{
id: 7,
name: '其它'
},
],
list: [], list: [],
reachBottom: 0, // 0->,1->,-1-> reachBottom: 0, // 0->,1->,-1->
status: 'more', // more|loading|noMore status: 'more', // more|loading|noMore
@ -136,7 +103,7 @@
this.active = '' this.active = ''
this.keyword = '' this.keyword = ''
this.typeVisible = false this.typeVisible = false
this.per = this.platformId !== 6 // // this.per = this.platformId !== 6 //
this.per && this.initList() this.per && this.initList()
}, },
methods: { methods: {
@ -199,7 +166,7 @@
}, },
// //
toDetail(item) { toDetail(item) {
this.$util.to('/other/supplierDetail/supplierDetail?teamId=' + item.teamId) this.$util.to(`/other/supplierDetail/supplierDetail?teamId=${item.teamId}&accountId=${item.accountId}`)
}, },
// //
menuClick(tab) { menuClick(tab) {
@ -275,11 +242,13 @@
color: #333; color: #333;
border-bottom: 1px solid #E6E8ED; border-bottom: 1px solid #E6E8ED;
.icon { .icon {
width: 66rpx; width: 80rpx;
min-width: 66rpx; min-width: 80rpx;
height: 66rpx; height: 80rpx;
margin-right: 20rpx; margin-right: 20rpx;
border-radius: 4px; }
.logo {
border-radius: 50%;
} }
} }
.info { .info {

@ -185,6 +185,9 @@ ul {
.sort { .sort {
@include sort; @include sort;
} }
.disabled {
color: #a9a9a9;
}
} }
.plus { .plus {
position: fixed; position: fixed;

@ -43,29 +43,29 @@
<view class="py"> <view class="py">
<image v-for="(item, i) in pictureUrl" :key="i" class="pic" :src="item"></image> <image v-for="(item, i) in pictureUrl" :key="i" class="pic" :src="item"></image>
</view> </view>
<view class="line"> <view v-if="info.qrCodeOneName" class="line">
<view class="name">二维码描述</view> <view class="name">二维码描述1</view>
<view class="val">{{ info.qrCodeOneName }}</view> <view class="val">{{ info.qrCodeOneName }}</view>
</view> </view>
<view class="line"> <view v-if="info.qrCodeOneUrl" class="line">
<view class="name">二维码</view> <view class="name">二维码1</view>
<image v-if="info.qrCodeOneUrl" class="qrcode" :src="info.qrCodeOneUrl" mode="widthFix"></image> <image class="qrcode" :src="info.qrCodeOneUrl" mode="widthFix"></image>
</view> </view>
<view class="line"> <view v-if="info.qrCodeTwoName" class="line">
<view class="name">二维码描述</view> <view class="name">二维码描述2</view>
<view class="val">{{ info.qrCodeTwoName }}</view> <view class="val">{{ info.qrCodeTwoName }}</view>
</view> </view>
<view class="line"> <view v-if="info.qrCodeTwoUrl" class="line">
<view class="name">二维码</view> <view class="name">二维码2</view>
<image v-if="info.qrCodeTwoUrl" class="qrcode" :src="info.qrCodeTwoUrl" mode="widthFix"></image> <image class="qrcode" :src="info.qrCodeTwoUrl" mode="widthFix"></image>
</view> </view>
<view class="line"> <view v-if="info.qrCodeThreeName" class="line">
<view class="name">二维码描述</view> <view class="name">二维码描述3</view>
<view class="val">{{ info.qrCodeThreeName }}</view> <view class="val">{{ info.qrCodeThreeName }}</view>
</view> </view>
<view class="line"> <view v-if="info.qrCodeThreeUrl" class="line">
<view class="name">二维码</view> <view class="name">二维码3</view>
<image v-if="info.qrCodeThreeUrl" class="qrcode" :src="info.qrCodeThreeUrl" mode="widthFix"></image> <image class="qrcode" :src="info.qrCodeThreeUrl" mode="widthFix"></image>
</view> </view>
</view> </view>
</view> </view>

@ -54,12 +54,11 @@
<view class="block"> <view class="block">
<view class="form-list edit-form"> <view class="form-list edit-form">
<view class="line with-arrow no-bd"> <view class="line with-arrow no-bd">
<view class="name">二维码描述一</view> <view class="name">二维码描述1</view>
<input type="text" placeholder="输入二维码描述一" v-model="form.qrCodeOneName" /> <input type="text" placeholder="请输入二维码描述" v-model="form.qrCodeOneName" />
<uni-icons type="right" size="18" color="#ababab"></uni-icons>
</view> </view>
<view class="py"> <view class="py">
<uni-file-picker v-model="qrCodeOne" limit="1" title="上传二维码一" :auto-upload="false" @select="e => uploadQrcode(e, 'qrCodeOne')" ></uni-file-picker> <uni-file-picker v-model="qrCodeOne" limit="1" title="二维码1" :auto-upload="false" @select="e => uploadQrcode(e, 'qrCodeOne')" ></uni-file-picker>
</view> </view>
</view> </view>
</view> </view>
@ -67,12 +66,11 @@
<view class="block"> <view class="block">
<view class="form-list edit-form"> <view class="form-list edit-form">
<view class="line with-arrow no-bd"> <view class="line with-arrow no-bd">
<view class="name">二维码描述二</view> <view class="name">二维码描述2</view>
<input type="text" placeholder="输入二维码描述二" v-model="form.qrCodeTwoName" /> <input type="text" placeholder="请输入二维码描述" v-model="form.qrCodeTwoName" />
<uni-icons type="right" size="18" color="#ababab"></uni-icons>
</view> </view>
<view class="py"> <view class="py">
<uni-file-picker v-model="qrCodeTwo" limit="1" title="上传二维码二" :auto-upload="false" @select="e => uploadQrcode(e, 'qrCodeTwo')" ></uni-file-picker> <uni-file-picker v-model="qrCodeTwo" limit="1" title="二维码2" :auto-upload="false" @select="e => uploadQrcode(e, 'qrCodeTwo')" ></uni-file-picker>
</view> </view>
</view> </view>
</view> </view>
@ -80,12 +78,11 @@
<view class="block"> <view class="block">
<view class="form-list edit-form"> <view class="form-list edit-form">
<view class="line with-arrow no-bd"> <view class="line with-arrow no-bd">
<view class="name">二维码描述三</view> <view class="name">二维码描述3</view>
<input type="text" placeholder="输入二维码描述三" v-model="form.qrCodeThreeName" /> <input type="text" placeholder="请输入二维码描述" v-model="form.qrCodeThreeName" />
<uni-icons type="right" size="18" color="#ababab"></uni-icons>
</view> </view>
<view class="py"> <view class="py">
<uni-file-picker v-model="qrCodeThree" limit="1" title="上传二维码三" :auto-upload="false" @select="e => uploadQrcode(e, 'qrCodeThree')" ></uni-file-picker> <uni-file-picker v-model="qrCodeThree" limit="1" title="二维码3" :auto-upload="false" @select="e => uploadQrcode(e, 'qrCodeThree')" ></uni-file-picker>
</view> </view>
</view> </view>
</view> </view>

@ -6,7 +6,7 @@
<image class="avatar" :src="info.userAvatars" mode=""></image> <image class="avatar" :src="info.userAvatars" mode=""></image>
<view class="text"> <view class="text">
<view class="invite"> <view class="invite">
<text class="name">{{ my.info.userName }}</text> 邀请你加入城市合伙人计划 <text class="name">{{ my.info.userName }}</text> 邀请你加入组织
</view> </view>
</view> </view>
</view> </view>
@ -61,8 +61,8 @@
generateInvitationCode(this.platformId).then(({ expireTime }) => { generateInvitationCode(this.platformId).then(({ expireTime }) => {
const date = new Date(Date.now() + expireTime * 1000) // *1000 const date = new Date(Date.now() + expireTime * 1000) // *1000
this.expireTime = `${date.getFullYear()}-${this.$util.preZero(date.getMonth() + 1)}-${this.$util.preZero(date.getDate())} ${this.$util.preZero(date.getHours())}:${this.$util.preZero(date.getMinutes())}:${this.$util.preZero(date.getMinutes())}` this.expireTime = `${date.getFullYear()}-${this.$util.preZero(date.getMonth() + 1)}-${this.$util.preZero(date.getDate())} ${this.$util.preZero(date.getHours())}:${this.$util.preZero(date.getMinutes())}:${this.$util.preZero(date.getMinutes())}`
// this.link = `https://huorantech.cn/#/join?accountId=${team.accountId}&id=${this.teamId}&isTeam=0&teamName=${this.info.userName}` this.link = `http://124.71.79.122/#/join?accountId=${team.accountId}&id=${this.teamId}&isTeam=0&teamName=${this.info.userName}&platformId=${this.platformId}`
this.link = `http://192.168.31.125:8098/#/join?accountId=${team.accountId}&id=${this.teamId}&isTeam=0&teamName=${this.info.userName}` // this.link = `http://192.168.31.125:8098/#/join?accountId=${team.accountId}&id=${this.teamId}&isTeam=0&teamName=${this.info.userName}&platformId=${this.platformId}`
}).catch(e => {}) }).catch(e => {})
}, },
// imageimage // imageimage

Loading…
Cancel
Save