yujialong 11 months ago
parent b675fda8c9
commit f8863f5d14
  1. 3
      apis/modules/activity.js
  2. 6
      apis/modules/supplier.js
  3. 4
      config/request.js
  4. 44
      other/activityDetail/activityDetail.vue
  5. 55
      other/supplierDetail/supplierDetail.vue
  6. 74
      pages/index/index.vue
  7. 9
      pages/login/login.vue
  8. 16
      pages/person/person.vue
  9. 64
      pages/supplier/supplier.vue
  10. 2
      styles/common.scss
  11. 2
      team/auth/auth.vue
  12. 16
      team/info/info.vue
  13. 29
      team/infoEdit/infoEdit.vue

@ -22,3 +22,6 @@ export const competitionUserDel = (data) => {
export const cancelRegistration = (id) => {
return post(`competition/competition/registration/cancelRegistration?competitionId=${id}`)
}
export const categoryList = (id) => {
return post(`competition/competitionClassification/categoryList`)
}

@ -4,3 +4,9 @@ const { get, post } = request
export const selectEnterpriseCertificationList = (data) => {
return post('nakadai/enterprise/certification/selectEnterpriseCertificationList', data)
}
export const treeStructureList = () => {
return post('nakadai/supplierClassification/treeStructureList')
}
export const saveSupplierClassification = (data) => {
return post('nakadai/supplierClassificationConfig/save', data)
}

@ -6,8 +6,8 @@
export default {
// baseURL: 'https://huorantech.cn/',
// baseURL: 'http://192.168.31.217:10010/',
baseURL: 'http://124.71.79.122/',
baseURL: 'http://192.168.31.217:10010/',
// baseURL: 'http://124.71.79.122/',
headers: {
'Content-Type': 'application/json;charset=UTF-8'
},

@ -55,7 +55,7 @@
<view class="btns">
<view class="btn share">分享</view>
<view :class="['btn sign', {disabled: !form.signing}]" @click="presign">立刻报名</view>
<view :class="['btn sign', {signed: form.signed, disabled: !form.signing}]" @click="presign">{{ form.signed ? '取消报名' : '立刻报名' }}</view>
</view>
<uni-popup ref="popup" type="dialog">
@ -65,7 +65,7 @@
</template>
<script>
import { getCompetition, individualEventRegistration, queryRegistrationByCondition } from '@/apis/modules/activity.js'
import { getCompetition, individualEventRegistration, queryRegistrationByCondition, cancelRegistration } from '@/apis/modules/activity.js'
import Util from '@/libs/util'
import Common from '@/config/common'
export default {
@ -96,6 +96,7 @@
timer: null,
now: '',
invitationCode: '',
submiting: false,
}
},
//
@ -110,7 +111,7 @@
if (this.reachBottom >= 0) {
this.reachBottom = 1
this.status = 'loading'
this.getList()
this.getRegList()
}
},
onShow() {
@ -131,6 +132,7 @@
this.now = await Util.getNow()
this.statusInterval()
clearInterval(this.timer)
this.timer = setInterval(() => {
this.now = new Date(this.now.setSeconds(this.now.getSeconds() + 1))
this.statusInterval()
@ -149,15 +151,18 @@
//
handleStatus () {
const data = this.form
let signing = 0
let signing = 0 //
let signed = 0 //
const signUpStartTime = new Date(data.signUpStartTime) //
const signUpEndTime = new Date(data.signUpEndTime) //
const { now } = this
// (whetherToSignUp 10)
if (!data.competitionRegistration && now > signUpStartTime && now < signUpEndTime) {
if (now > signUpStartTime && now < signUpEndTime) {
signing = 1
if (data.competitionRegistration) signed = 1
}
this.$set(this.form, 'signing', signing)
this.$set(this.form, 'signed', signed)
},
//
getRegList() {
@ -191,11 +196,35 @@
},
//
async presign() {
if (this.form.competitionRegistration) return this.$util.errMsg('你已经报名过该活动!')
if (!this.form.signing) return this.$util.errMsg('现在不在报名时间!')
if (this.form.competitionRegistration) { //
this.cancelSign()
} else { //
this.invitationCode = ''
//
this.form.isNeedCode ? this.$refs.popup.open() : this.sign()
}
},
//
cancelSign() {
if (this.submiting) return false
this.submiting = true
const that = this
uni.showModal({
title: '提示',
content: '确定要取消报名吗?',
success(res) {
if (res.confirm) {
cancelRegistration(that.form.id).then(res => {
that.$util.sucMsg('取消报名成功')
that.getInfo()
that.submiting = false
}).catch(res => {})
} else {
that.submiting = false
}
}
})
},
//
async sign() {
@ -312,6 +341,9 @@
background-color: $uni-primary;
border-top-right-radius: 40rpx;
border-bottom-right-radius: 40rpx;
&.signed {
background-color: #ff7b32;
}
&.disabled {
background-color: #d7d7d7;
}

@ -58,8 +58,28 @@
<view class="block">
<view class="title">联系我们</view>
<view class="">
<view class="info address">
<image class="icon" src="https://occupationlab.com/images/preschoolEdu/address.png" mode="widthFix" />
地址{{ form.address }}
</view>
<view class="info">
<image class="icon" src="https://occupationlab.com/images/preschoolEdu/tel.png" mode="widthFix" />
联系电话{{ form.phone }}
</view>
<view class="qrcodes">
<view v-if="form.qrCodeOneUrl" class="qrcode">
<image class="pic" :src="form.qrCodeOneUrl" />
<view class="text">{{ form.qrCodeOneName }}</view>
</view>
<view v-if="form.qrCodeTwoUrl" class="qrcode">
<image class="pic" :src="form.qrCodeTwoUrl" />
<view class="text">{{ form.qrCodeTwoName }}</view>
</view>
<view v-if="form.qrCodeThreeUrl" class="qrcode">
<image class="pic" :src="form.qrCodeThreeUrl" />
<view class="text">{{ form.qrCodeThreeName }}</view>
</view>
</view>
</view>
</view>
@ -75,7 +95,9 @@
form: {
classificationName: '',
slogan: '',
briefIntroduction: ''
briefIntroduction: '',
address: '',
phone: ''
},
desPics: [],
curPic: 0,
@ -190,6 +212,35 @@
line-height: 1.6;
}
}
.info {
display: flex;
align-items: center;
font-size: 28rpx;
color: #333;
&.address {
margin: 30rpx 0 20rpx;
}
.icon {
width: 40rpx;
margin-right: 10rpx;
}
}
.qrcodes {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 50rpx;
text-align: center;
.pic {
width: 200rpx;
height: 200rpx;
}
.text {
margin-top: 20rpx;
font-size: 24rpx;
color: #333;
}
}
.list {
display: flex;
flex-wrap: wrap;

@ -23,9 +23,17 @@
<view class="module">
<view class="title">活动速递</view>
<ul class="tab">
<li v-for="(tab, i) in tabs" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.name }}</li>
<ul class="tab-wrap">
<view class="tab">
<li :class="{active: curTab === ''}" @click="tabChange('')">全部</li>
</view>
<scroll-view scroll-x :scroll-left="scrollLeft" class="tab tab-scroll">
<li v-for="(tab, i) in tabs" :key="i" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.classificationName }}</li>
</scroll-view>
</ul>
<view class="list">
<view v-for="(item, i) in list" :key="i" class="item" @click="toDetail(item)">
<image class="pic" :src="item.coverUrl"></image>
@ -35,7 +43,7 @@
<view class="meta ell">主办方{{ item.sponsor }}</view>
<view v-if="item.whetherToShowApplicants === '1'" class="meta ell">{{ item.applicantNum }}/{{ item.quantityLimit }}人已报名</view>
<view v-if="item.signing" class="sign" @click.stop="presign(item)">报名</view>
<view v-if="!item.whetherToSignUp" class="sign signed" @click.stop="cancelSign(item)">取消报名</view>
<view v-if="!item.whetherToSignUp" class="signed">报名</view>
</view>
</view>
</view>
@ -50,7 +58,7 @@
</template>
<script>
import { postLoginActivity, individualEventRegistration, cancelRegistration } from '@/apis/modules/activity.js'
import { postLoginActivity, individualEventRegistration, cancelRegistration, categoryList } from '@/apis/modules/activity.js'
import Util from '@/libs/util'
export default {
data() {
@ -64,38 +72,14 @@
page: 1,
pageSize: 5,
total: 0,
curTab: 0,
curTab: '',
curItem: null,
timer: null,
now: '',
invitationCode: '',
submiting: false,
tabs: [
{
name: '全部',
id: 0
},
{
name: '会议',
id: 1
},
{
name: '论坛',
id: 2
},
{
name: '讲座',
id: 3
},
{
name: '展会',
id: 4
},
{
name: '培训',
id: 5
}
],
tabs: [],
scrollLeft: 0,
}
},
//
@ -117,7 +101,9 @@
// uni.setStorageSync('token', 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNzAzNDk1ODY2LCJleHAiOjE3MDQzNTk4NjYsImFjY291bnRJZCI6IjQ5MzEifQ.A5tQewZlfVz3yiQCjPscWXvyXjOJmWzheG5b82siZl4')
// uni.setStorageSync('openId', 'o3hKk686kGjgMygKdPTJd5KQQ7CA')
this.keyword = ''
this.curTab = ''
this.per = true
this.getCategory()
this.initList()
},
methods: {
@ -136,6 +122,7 @@
pageSize: this.pageSize,
listType: 0,
keyWord: this.keyword,
classificationId: this.curTab,
platformSource: ''
}).then(async ({ data }) => {
this.list = this.reachBottom > 0 ? [...this.list, ...data.records] : data.records
@ -168,12 +155,17 @@
const signUpStartTime = new Date(item.signUpStartTime) //
const signUpEndTime = new Date(item.signUpEndTime) //
const { now } = this
// (whetherToSignUp 10)
// (whetherToSignUp 0 1)
if (item.whetherToSignUp && now > signUpStartTime && now < signUpEndTime) {
signing = 1
}
this.$set(item, 'signing', signing)
},
//
async getCategory() {
const { page } = await categoryList()
this.tabs = page
},
// keyword
clearKeyword() {
this.keyword = ''
@ -187,7 +179,7 @@
// tab
tabChange(tab) {
this.curTab = tab.id
// this.initList()
this.initList()
},
//
async presign(item) {
@ -253,6 +245,16 @@
width: 100%;
}
}
.tab-wrap {
display: flex;
.tab-scroll {
width: calc(100% - 100rpx);
white-space: nowrap;
li {
display: inline-block;
}
}
}
.hot {
width: 100%;
height: 300rpx;
@ -313,7 +315,11 @@
border-radius: 4px;
}
.signed {
background-color: #ff7b32;
position: absolute;
bottom: 0;
right: 0;
font-size: 28rpx;
color: #ff7b32;
}
}
</style>

@ -128,6 +128,7 @@
uni.setStorageSync('token', data.token)
uni.setStorageSync('platformId', data.platformId)
uni.setStorageSync('openId', e.openid)
this.handleTab(data.platformId)
this.toIndex()
}
}).catch(e => {
@ -225,6 +226,7 @@
companyName: this.teamName
})
}
this.handleTab(platformId)
this.toIndex()
} catch(e) {
this.submiting = false
@ -233,6 +235,13 @@
toAgreement(id) {
this.$util.openFile(id)
},
// tab
handleTab(platformId) {
platformId == 6 && uni.setTabBarItem({
index: 1,
visible: false
})
},
//
toIndex() {
uni.reLaunch({

@ -44,14 +44,14 @@
<image src="https://occupationlab.com/images/preschoolEdu/icon3.png" />
<view class="text ell">已报名活动</view>
</li>
<li @click="tips">
<!-- <li @click="tips">
<image src="https://occupationlab.com/images/preschoolEdu/icon4.png" />
<view class="text ell">我的发票</view>
</li>
<li @click="tips">
</li> -->
<!-- <li @click="tips">
<image src="https://occupationlab.com/images/preschoolEdu/icon5.png" />
<view class="text ell">我的订单</view>
</li>
</li> -->
<li @click="tips">
<image src="https://occupationlab.com/images/preschoolEdu/icon6.png" />
<view class="text ell">发布采购</view>
@ -116,10 +116,10 @@
<image src="https://occupationlab.com/images/preschoolEdu/icon9.png" />
<view class="text ell">团队管理</view>
</li>
<li @click="tips">
<!-- <li @click="tips">
<image src="https://occupationlab.com/images/preschoolEdu/icon10.png" />
<view class="text ell">{{ isSupplier ? '订单管理' : '我的订单' }}</view>
</li>
</li> -->
<li v-if="isSupplier" @click="tips">
<image src="https://occupationlab.com/images/preschoolEdu/icon11.png" />
<view class="text ell">活动管理</view>
@ -137,10 +137,10 @@
<image src="https://occupationlab.com/images/preschoolEdu/icon14.png" />
<view class="text ell">商机线索</view>
</li>
<li @click="tips">
<!-- <li @click="tips">
<image src="https://occupationlab.com/images/preschoolEdu/icon15.png" />
<view class="text ell">发票管理</view>
</li>
</li> -->
</template>
</ul>
</view>

@ -3,12 +3,11 @@
<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" />
<uni-icons class="icon" custom-prefix="iconfont" type="icon-filter" size="22" color="#007eff" @click="typeVisible = true"></uni-icons>
</view>
<image class="banner" src="https://occupationlab.com/images/preschoolEdu/supplier-banner.jpg" mode="widthFix"></image>
<view class="wrap">
<sideSelect :menus="menus" @menuClick="menuClick" />
<!-- <sideSelect :menus="menus" @menuClick="menuClick" /> -->
<view class="list">
<view class="item" v-for="(item, i) in list" :key="i" @click="toDetail(item)">
<view class="pro-name">
@ -24,11 +23,28 @@
</view>
</view>
<view v-if="!per" class="per-mask">功能升级中敬请期待...</view>
<view :class="['type-popup', {active: typeVisible}]">
<uni-icons class="close" type="closeempty" size="20" color="#757575" @click="closeType"></uni-icons>
<template v-for="(item, i) in classifications">
<template v-if="item.children.length">
<view :key="i" class="title">{{ item.classificationName }}</view>
<view class="types">
<view v-for="(child, j) in item.children" :key="j" :class="['item', {active: active == child.id}]" @click="classificationClick(child)">{{ child.classificationName }}</view>
</view>
</template>
<view v-else class="types">
<view :class="['item', {active: active == item.id}]" @click="classificationClick(item)">{{ item.classificationName }}</view>
</view>
</template>
</view>
</view>
</template>
<script>
import { selectEnterpriseCertificationList } from '@/apis/modules/supplier.js'
import { selectEnterpriseCertificationList, treeStructureList } from '@/apis/modules/supplier.js'
export default {
data() {
return {
@ -72,23 +88,14 @@
reachBottom: 0, // 0->,1->,-1->
status: 'more', // more|loading|noMore
keyword: '',
tags: [],
hotProducts: [],
offcialProducts: [],
page: 1,
pageSize: 5,
total: 0,
curTab: 0,
tabs: [
{
name: '全部',
id: 0
},
{
name: '论坛',
id: 1
}
],
tabs: [],
classifications: [],
active: '',
typeVisible: false,
}
},
//
@ -109,12 +116,14 @@
onShow() {
this.keyword = ''
this.per = true
this.typeVisible = false
this.initList()
},
methods: {
initList() {
this.page = 1
this.reachBottom = 0
this.getCategory()
this.getList()
},
//
@ -140,6 +149,21 @@
uni.hideLoading()
})
},
//
async getCategory() {
const { list } = await treeStructureList()
this.classifications = list[0].children
},
//
classificationClick(item, query) {
this.active = item.id
query && this.initList()
},
//
closeType() {
this.typeVisible = false
this.initList()
},
// keyword
clearKeyword() {
this.keyword = ''
@ -149,10 +173,10 @@
toDetail(item) {
this.$util.to('/other/supplierDetail/supplierDetail?teamId=' + item.teamId)
},
// tab
tabChange(tab) {
//
menuClick(tab) {
this.curTab = tab.id
// this.initList()
this.initList()
},
}
}

@ -251,7 +251,7 @@ ul {
right: 50rpx;
}
.title {
margin: 150rpx 20rpx 30rpx;
margin: 50rpx 20rpx 30rpx;
font-size: 30rpx;
color: #333;
}

@ -50,7 +50,7 @@
},
platformId: '',
businessLicensePicture: '',
licenseForRunningSchool: ''
licenseForRunningSchool: '',
}
},
computed: {

@ -12,6 +12,10 @@
<view class="name">幼儿园名称</view>
<view class="val">{{ info.classificationName }}</view>
</view>
<view class="line">
<view class="name">供应商分类</view>
<view class="val">{{ typeName }}</view>
</view>
<view class="line">
<view class="name">幼儿园slogan</view>
<view class="val">{{ info.slogan }}</view>
@ -81,7 +85,8 @@
isTeam: uni.getStorageSync('team').isTeam == 1, //
teamId: uni.getStorageSync('teamId'),
info: {},
pictureUrl: []
pictureUrl: [],
typeName: ''
}
},
onShow() {
@ -95,6 +100,15 @@
}).then(res => {
const data = res.teamInfo
if (!data.logoUrl) data.logoUrl = Common.avatar
//
const type = res.supplierClassification
if (type && type.length) {
this.typeName = type[0].supplierClassificationName
} else {
this.typeName = ''
}
if (data.pictureUrl) this.pictureUrl = data.pictureUrl.split(',')
this.info = data
}).catch(e => {})

@ -10,6 +10,12 @@
<view class="name">{{ platformName }}名称</view>
<input type="text" :placeholder="'请输入' + platformName + '幼儿园名称'" v-model="form.classificationName" :disabled="info.authenticationStatus !== 0" />
</view>
<view v-if="info.platformSource === '6'" class="line with-arrow">
<view class="name">供应商分类</view>
<view class="inline">
<uni-data-picker class="picker-input" :clear-icon="false" placeholder="请选择供应商分类" popup-title="请选择供应商分类" preload :localdata="classifications" :map="{text: 'classificationName', value: 'id'}" v-model="classificationId"></uni-data-picker>
</view>
</view>
<view class="line textarea-line">
<view class="name">{{ platformName }}slogan</view>
<textarea :placeholder="'请输入' + platformName + 'slogan'" v-model="form.slogan"></textarea>
@ -92,6 +98,7 @@
<script>
import { queryProvince, queryCity, queryTeamInfo, updateTeamInfo, enterpriseCertificationStatus } from '@/apis/modules/user.js'
import { treeStructureList, saveSupplierClassification } from '@/apis/modules/supplier.js'
import OSS from '@/libs/Oss/upload'
import Common from '@/config/common'
export default {
@ -125,6 +132,8 @@
desPics: [],
submiting: false,
uploading: false,
classifications: [],
classificationId: ''
}
},
computed: {
@ -143,6 +152,7 @@
const { data } = await enterpriseCertificationStatus(this.openId)
if (data) {
this.info = data
data.platformSource === '6' && this.getClassification()
}
},
//
@ -153,6 +163,12 @@
const data = res.teamInfo
if (!data.logoUrl) data.logoUrl = Common.avatar
//
const type = res.supplierClassification
if (type && type.length) {
this.classificationId = type[0].supplierClassificationId
}
if (data.pictureUrl) {
const pics = data.pictureUrl.split(',')
const result = []
@ -187,6 +203,11 @@
})
}).catch(e => {})
},
//
async getClassification() {
const { list } = await treeStructureList()
this.classifications = list
},
//
async getProvince() {
const { list } = await queryProvince()
@ -244,6 +265,14 @@
form.qrCodeTwoUrl = this.qrCodeTwo.length ? this.qrCodeTwo[0].url : ''
form.qrCodeThreeUrl = this.qrCodeThree.length ? this.qrCodeThree[0].url : ''
try {
//
if (this.classificationId) {
form.supplierClassificationConfigs = [
{
classificationId: this.classificationId
}
]
}
await updateTeamInfo(form)
this.$util.sucMsg('保存成功!')

Loading…
Cancel
Save