合并代码

This commit is contained in:
sx 2025-01-10 10:51:21 +08:00
parent 27cf489cbc
commit 4da270f860
15 changed files with 766 additions and 257 deletions

View File

@ -47,7 +47,7 @@ const api = {
getArticle(param) {
return util.request({
url: '/user/protocol/inquire',
path: param.path,
query: param.query,
method: 'GET',
})
},
@ -62,6 +62,29 @@ const api = {
method: 'GET',
})
},
/**
* 获取省市区
* @param {Object} param
*/
getRegion() {
return util.request({
url: '/shopify/region/all',
method: 'GET',
})
},
/**
* 获取分类字典数据
* @param {Object} param
*/
getDict(param) {
return util.request({
url: '/system/dict/data/type',
path: param.path,
method: 'GET',
})
},
}
export default api

View File

@ -3,6 +3,72 @@ import util from '@/common/js/util.js'
// 商品
const shop = {
/**
* 商家入驻状态
* @param {Object} param
*/
getShopStatus(param) {
return util.request({
url: `/shopify/appDeposits/settleStatus`,
method: 'GET',
})
},
/**
* 商家缴纳押金
* @param {Object} param
*/
depositsPay(param) {
return util.request({
url: `/shopify/appDeposits/depositsPay`,
method: 'POST',
})
},
/**
* 商户分类
* @param {Object} param
*/
categoryAll(param) {
return util.request({
url: `/shopify/merchantCategory/categoryAll`,
method: 'GET',
})
},
/**
* 商家申请
* @param {Object} param
*/
application(param) {
return util.request({
url: `/shopify/appApplication/saveApplication`,
data: param.data,
method: 'POST',
})
},
/**
* 获取商家申请信息
* @param {Object} param
*/
getStoreDetail(param) {
return util.request({
url: `/shopify/appApplication/getDetail`,
method: 'GET',
})
},
/**
* 获取商家申请信息
* @param {Object} param
*/
outDepositsPay(param) {
return util.request({
url: `/shopify/appDeposits/outDepositsPay`,
method: 'POST',
})
},
/**
* 商品列表
* @param {Object} param
@ -16,7 +82,7 @@ const shop = {
},
/**
* 商品列表
* 商品分类列表
* @param {Object} param
*/
getCategory(param) {

View File

@ -614,15 +614,8 @@ const util = {
file: item.path,
mode: 'img',
success(res) {
// 上传成功
if (res.code === 200) {
const result = res.data.url;
// 补全路径赋值
if (obj.type == 2) {
obj.value.push(result);
} else if (obj.type == 1) {
obj.value = result;
}
obj.success && obj.success({
value: result,
});

View File

@ -102,13 +102,21 @@
let result = []
//
if (userinfo.value.userId) {
if (userinfo.value.id) {
result.push({
name: '发布视频',
img: '/static/footerMenu1.png',
url: '/pages/release/video',
})
}
// 1
if(userinfo.value.isShop == 1) {
result.push({
name: '发布商品',
img: '/static/footerMenu1.png',
url: '/pages/release/commodity',
})
}
//
// result.push({
// name: '',

View File

@ -0,0 +1,231 @@
<script setup>
import {
ref,
getCurrentInstance,
reactive,
computed,
defineEmits,
defineExpose,
} from 'vue'
//
import util from '@/common/js/util.js';
import {
onLoad
} from '@dcloudio/uni-app'
// api
import api from '@/api/index.js';
//
const {
proxy
} = getCurrentInstance()
const emit = defineEmits(['change'])
//
const props = defineProps({
province: {
type: [String,Number],
},
city: {
type: [String,Number],
},
area: {
type: [String,Number],
},
})
//
const region = reactive([])
//
const regionIndex = reactive([0, 0, 0])
//
const regionIndexLast = reactive([0, 0, 0])
//
const province = computed(() => {
return region[regionIndex[0]]
})
//
const city = computed(() => {
return province.value && province.value.children[regionIndex[1]]
})
//
const area = computed(() => {
return city.value && city.value.children[regionIndex[2]]
})
//
const loading = ref(false);
onLoad(() => {
//
getRegion()
})
//
function initRegionIndex() {
console.log('props', props)
if (props.province) {
const provinceIndex = region.findIndex(item => item.id == props.province);
regionIndex[0] = provinceIndex;
if (props.city) {
const cityIndex = region[provinceIndex].children.findIndex(item => item.id == props.city);
regionIndex[1] = cityIndex;
if (props.area) {
const areaIndex = region[provinceIndex].children[cityIndex].children.findIndex(item => item.id ==
props.area);
regionIndex[2] = areaIndex;
}
}
}
}
//
function getRegion() {
loading.value = true;
try {
//
api.getRegion().then(res => {
if (res.code === 200) {
region.length = 0
region.push(...res.data)
loading.value = false;
//
initRegionIndex()
return
}
util.alert({
content: res.msg,
showCancel: false,
})
loading.value = false;
})
} catch (error) {
console.error('Error occurred while fetching region data:', error);
loading.value = false;
}
}
/**
* 切换
* @param {Object} value 具体的值
* @param {Object} index 下标
*/
function handleIndex(value, index) {
if (index >= 0 && index < regionIndex.length) {
regionIndex[index] = value;
}
}
//
function open() {
console.log('open', proxy.$refs)
proxy.$refs.selection.open()
}
//
function close() {
proxy.$refs.selection.close()
setTimeout(() => {
//
Object.assign(regionIndex, regionIndexLast.slice());
//
regionIndexLast = regionIndex.slice();
}, 500)
}
//
function handleCancel() {
close();
}
//
function handleSubmit() {
Object.assign(regionIndexLast, regionIndex.slice());
if (province.value && city.value && area.value) {
emit('change', {
province: province.value,
city: city.value,
area: area.value,
});
}
proxy.$refs.selection.close()
}
//
defineExpose({
open,
close,
initRegionIndex,
})
</script>
<template>
<template v-if="province">
<text>{{province.regionName}}</text>
<text>{{city.regionName}}</text>
<text>{{area.regionName}}</text>
</template>
<template v-else>
<text class="placeholderStyle">请选择产品所在地</text>
</template>
<uni-popup ref="selection" type="bottom">
<view class="selectionAlt popBot bfff">
<view class="header rows plr30">
<view class="option ptb30 f28" @click="handleCancel">取消</view>
<view class="title f32">选择省市区</view>
<view class="option ptb30 f28" @click="handleSubmit">确认</view>
</view>
<view class="main df plr10 plr10">
<scroll-view scroll-y="true" class="scroll province">
<view class="list">
<view class="item ptb20 tac" v-for="(item, index) in region" :key="index"
:class="{'active': index == regionIndex[0]}" @click="handleIndex(index,0)">
{{ item.regionName }}
</view>
</view>
</scroll-view>
<scroll-view scroll-y="true" class="scroll city" v-if="province">
<view class="list">
<view class="item ptb20 tac" v-for="(item, index) in province.children" :key="index"
:class="{'active': index == regionIndex[1]}" @click="handleIndex(index,1)">
{{ item.regionName }}
</view>
</view>
</scroll-view>
<scroll-view scroll-y="true" class="scroll area" v-if="city">
<view class="list">
<view class="item ptb20 tac" v-for="(item, index) in city.children" :key="index"
:class="{'active': index == regionIndex[2]}" @click="handleIndex(index,2)">
{{ item.regionName }}
</view>
</view>
</scroll-view>
<view v-if="loading" class="loading">Loading...</view>
</view>
</view>
</uni-popup>
</template>
<style lang="scss" scoped>
//
.selectionAlt {
//
.main {
height: 500rpx;
background-color: #f8f8f8;
.item {
color: #999;
&.active {
color: #333;
}
}
}
}
.loading {
text-align: center;
padding: 20rpx;
}
</style>

View File

@ -30,7 +30,9 @@
//
function getDetail() {
api.getArticle({
path: [wrapId.value]
query: {
agreementId: 4,
},
}).then(rs => {
if (rs.code == 200) {
Object.assign(wrap, rs.data)

View File

@ -41,6 +41,7 @@
else showHeader.value = false
})
//
function link(url) {
uni.navigateTo({
url,
@ -170,7 +171,7 @@
</view>
</template>
<template v-else>
<view class="item ver" @click="link('/pages/shop/settle')">
<view class="item ver" @click="link('/pages/shop/settle')" >
<image src="/static/mine-ruzhushangjia.png" mode="aspectFit" class="wh50" />
<text class="txt mt10 wsn">店铺管理</text>
</view>

View File

@ -161,7 +161,8 @@
<view class="searchBox ptb20 bfff">
<view class="search rows mlr20 ptb10 plr30 bar">
<uni-icons type="search" />
<input type="text" v-model="keyword" placeholder="输入手机号/账号" class="f1 ml10" confirm-type="search" />
<input type="text" focus="true" v-model="keyword" placeholder="输入手机号/账号" class="f1 ml10"
confirm-type="search" />
<view class="btn bar sm colourful w120" @click="refreshFriendList">搜索</view>
</view>
</view>

View File

@ -1,96 +0,0 @@
<script setup>
/**
* 选择好友
*/
import {
useStore,
} from 'vuex'
import {
ref,
computed,
reactive,
onMounted,
inject,
getCurrentInstance,
watch,
} from 'vue'
//
import util from '@/common/js/util.js'
//
import TencentCloudChat from '@tencentcloud/chat';
//
import api from '@/api/index.js'
//
const props = defineProps({
//
list: {
type: Array,
},
})
const {
proxy
} = getCurrentInstance();
// id
const ids = defineModel('ids')
//
const store = useStore()
const userinfo = computed(() => {
let result = store.state.userinfo
return result
})
/**
* 点击用户
* @param {Object} item 当前用户信息
*/
function handleUser(item) {
console.log('handleUser', item)
const findIndex = ids.value.findIndex(node => node == item.userID)
if (findIndex >= 0) ids.value.splice(findIndex, 1)
else ids.value.push(item.userID)
}
</script>
<template>
<view class="firendBox pr">
<view class="list bfff">
<view class="li" v-for="(item, index) in list" :key="index" @click="handleUser(item)">
<view class="item rows ptb20 pl30 pr50">
<image class="wh80 avatar cir" :src="item.profile.avatar" mode="aspectFill" />
<view class="name thd f1 ml20 c333 f32">{{item.remark || item.profile.nick}}</view>
<uni-icons type="circle-filled" size="40rpx" color="#20D200" v-if="ids.includes(item.userID)" />
<uni-icons type="circle" size="40rpx" color="#ccc" v-else />
</view>
</view>
</view>
<view class="mtb20 nomore">到底啦~</view>
</view>
</template>
<style lang="scss" scoped>
//
.firendBox {
height: 100%;
.scroll {
height: 100%;
}
//
.li {
.letter {
background-color: #eee;
}
}
//
.child {
.item+.item {
border-top: 2rpx solid #eee;
}
}
}
</style>

View File

@ -15,12 +15,12 @@
} from '@dcloudio/uni-app'
//
import util from '@/common/js/util.js'
//
import book from './book'
//
import apex from '@/components/header/apex.vue'
//
import TencentCloudChat from '@tencentcloud/chat';
// api
import api from '@/api/index.js'
const store = useStore()
// id
@ -42,25 +42,31 @@
//
function getFriendList() {
// sdk
let isReady = uni.$chat.isReady();
if (!isReady) {
setTimeout(function() {
getFriendList()
}, 200);
return
}
uni.$chat.getFriendList().then(rs => {
if (rs.code == 0) {
api.news.getFriendList().then(rs => {
if (rs.code == 200) {
const result = rs.data
list.length = 0
//
list.push(...result)
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
/**
* 点击用户
* @param {Object} item 当前用户信息
*/
function handleUser(item) {
const findIndex = ids.value.findIndex(node => node == item.userId)
if (findIndex >= 0) ids.value.splice(findIndex, 1)
else ids.value.push(item.userId)
}
//
function handleCreateGroup() {
if (!name.value) {
@ -101,7 +107,21 @@
<uni-search-bar placeholder="请输入群聊名称" v-model="name" style="background: #fff;" />
<view class="jy-chat-box mt30">
<book :list="list" v-model:ids="ids" />
<view class="firendBox pr">
<view class="list bfff">
<view class="li" v-for="(item, index) in list" :key="index" @click="handleUser(item)">
<view class="item rows ptb20 pl30 pr50">
<image class="wh80 avatar cir" :src="item.avatar" mode="aspectFill" />
<view class="name thd f1 ml20 c333 f32">{{item.remark || item.userNickname}}</view>
<uni-icons type="circle-filled" size="40rpx" color="#20D200"
v-if="ids.includes(item.userID)" />
<uni-icons type="circle" size="40rpx" color="#ccc" v-else />
</view>
</view>
</view>
<view class="mtb20 nomore">到底啦~</view>
</view>
</view>
<view class="fill" style="height: 120rpx;"></view>
@ -113,5 +133,26 @@
</template>
<style scoped lang="scss">
//
//
.firendBox {
height: 100%;
.scroll {
height: 100%;
}
//
.li {
.letter {
background-color: #eee;
}
}
//
.child {
.item+.item {
border-top: 2rpx solid #eee;
}
}
}
</style>

View File

@ -1,5 +1,28 @@
<script setup>
//
import {
ref,
reactive
} from 'vue'
//
import {
onLoad
} from '@dcloudio/uni-app'
//
const form = reactive({
//
})
onLoad((options) => {
//
})
//
function handleSubmit() {
const data = {
...form
}
}
</script>
<template>
@ -57,18 +80,24 @@
<input type="text" placeholder="输入时间" placeholder-class="placeholderStyle" />
</view>
</view>
<view class="line rows ptb20">
<view class="title w150">运费</view>
<view class="col f1">
<input type="text" placeholder="输入价格" placeholder-class="placeholderStyle" />
</view>
</view>
<view class="line rows ptb20">
<view class="title w150">所在地</view>
<view class="col f1">
<input type="text" placeholder="输入所在地" placeholder-class="placeholderStyle" />
</view>
</view>
<view class="line rows ptb20">
<view class="title w150">详细所在地</view>
<view class="col f1">
<input type="text" placeholder="输入详细所在地" placeholder-class="placeholderStyle" />
</view>
</view>
<view class="line rows ptb20">
<view class="title w150">出让佣金</view>
<view class="col f1">
<input type="text" placeholder="输入价格" placeholder-class="placeholderStyle" />
</view>
</view>
</view>
<view class="main area">

View File

@ -62,6 +62,7 @@
function getDetail() {
api.shop.productDetail({
query: {
// id
productionId: id.value
}
}).then(rs => {

View File

@ -9,30 +9,203 @@
*/
import {
ref,
reactive
reactive,
computed,
getCurrentInstance,
} from 'vue';
import durianapi from '@/api/durian.js';
//
import {
onLoad,
onReady,
} from '@dcloudio/uni-app';
// vuex
import {
useStore
} from 'vuex'
//
import api from '@/api/index.js';
//
import util from '@/common/js/util.js'
//
import regionSelection from '@/components/public/regionSelection/regionSelection.vue';
//
const store = useStore()
const {
proxy
} = getCurrentInstance();
//
const form = reactive({
shopHeader: '',
shopName: '',
contact: '',
productLocation: '',
productCategory: '',
customer: '',
idcard: '',
idcard2: '',
businessLicense: [],
status: 3
rectangleLogo: '',
qualificationPicture: [],
idCardFront: '',
idCardBack: '',
})
// notice wait fail form success
const mode = ref('notice')
//
const text = ref(
`<p>会员可选择从九亿平台入驻申请成为商家</p><br><p>1. 押金,在成为商家前需要先缴纳押金才可以申请成为商家,如果不想成为商家,可以选择退回押金取消商家分身,如果作为商家并且有进行中的订单,则需要等待订单完成才可以进行退回押金。</p><br><p>2. 申请,填写商家身份信息,商家头像,名称,联系方式,发货地点,商品分类,负责人身份信息作为材料申请,需经过九亿平台审核,才可以选择成为商家。</p><br><p>3. 审核,为保护平台公平性竞争,创造美好合作共赢的平台,九亿有权对您提交的店铺信息,发布的商品信息做审核,驳回,下架等行为,并且会及时通知到会员。</p><p>会员通过审核成为商家后,仍可以对自己的店铺信息做修改,并且平台会重新审核您的店铺信息,不得允许虚假等不良行为出现。</p><br><p>4. 商品,成为商家后,会员可以选在在平台发布自己的商品,可以发布视频对自己的商品做链接并进行投流推广,别人浏览到您的视频,可以选择点赞,评论等行为,增加您的视频热度,也可以通过收藏您的视频,对您的视频进行投流推广,让您的商品和视频可以受到更多人的关注,请会员尽情发挥想法,让自己的视频内容更受欢迎</p><br><p>5. 钱包,商家的商品产生订单后,其他会员付款会产生待入账的资金和榴莲果到您的钱包,当订单取消或平台申诉退款等行为,您的待入账的资产会原路退回到该订单用户中,当您的订单结束,已完成且无售后问题,您订单对应的待入账的信息将会进入到进的钱包中</p><br><p>6. 客服,您可以选择联系九亿平台咨询您想了解的任何问题,也可以通过消息联系用户通过店铺发起的订单咨询,以便于您更好的了解平台以及和其他会员的联系。</p><br><p>7. 运营,为保证平台公平、公正、公开,平台会不定期的复查,审核您的商户信息,请会员完善正确的信息,不得出现虚假,欺骗,等不良行为对平台或其他会员造成损失,否则平台有权对您的行为做出对应的行为。</p><p>平台会不定期更新商户的规则,请会员及时阅读。</p><br><p>平台祝每一位会员生活美满~</p>`
)
// code 01234 form
const mode = reactive({
code: 0,
})
//
const content = ref({})
//
const dictList = reactive([])
//
const dictIndex = ref('')
//
const userinfo = computed(() => {
return store.state.userinfo
})
onLoad(() => {
//
getShopStatus()
})
onReady(() => {
// proxy.$refs.regionSelectionRef.open()
})
//
function getForm() {
Promise.all([getDetail(), getDict()]).then(rs => {
//
const detail = rs[0]
//
const dict = rs[1]
if (!detail) return
form.id = detail.id
form.rectangleLogo = detail.rectangleLogo
form.qualificationPicture = detail.qualificationPicture.split(',')
form.idCardFront = detail.idCardFront
form.idCardBack = detail.idCardBack
form.name = detail.name
form.phone = detail.phone
form.addressDetail = detail.addressDetail
form.categoryId = detail.categoryId
form.province = detail.province
form.city = detail.city
form.district = detail.district
//
dictIndex.value = dict.findIndex(item => item.id == detail.categoryId)
})
}
//
function getDetail() {
return new Promise((resolve, reject) => {
api.shop.getStoreDetail().then(rs => {
if (rs.code == 200) {
resolve(rs.data)
return
}
util.alert({
showCancel: false,
content: rs.msg,
})
})
})
}
// code
function handleModeCode(code) {
//
mode.code = code
switch (code) {
case 0:
//
getarticle()
break;
case 1:
//
getarticle()
break;
case 'form':
//
getForm()
break;
}
}
//
function getDict() {
return new Promise((resolve, reject) => {
api.shop.categoryAll({}).then(rs => {
if (rs.code == 200) {
resolve(rs.data)
dictList.length = 0
dictList.push(...rs.data)
resolve()
return
}
util.alert({
showCancel: false,
content: rs.msg,
})
})
})
}
//
function getShopStatus() {
api.shop.getShopStatus().then(rs => {
if (rs.code == 200) {
Object.assign(mode, rs.data)
handleModeCode(mode.code)
return
}
util.alert({
showCancel: false,
content: rs.msg,
})
})
}
//
function depositsPay() {
api.shop.depositsPay().then(rs => {
if (rs.code == 200) {
//
mode.code = 1
return
}
util.alert({
showCancel: false,
content: rs.msg,
})
})
}
//
function depositsCancel() {
api.shop.depositsCancel().then(rs => {
if (rs.code == 200) {
//
mode.code = 0
return
}
util.alert({
showCancel: false,
content: rs.msg,
})
})
}
//
function getarticle() {
api.getArticle({
query: {
agreementId: 4,
},
}).then(rs => {
if (rs.code == 200) {
content.value = rs.data
return
}
util.alert({
showCancel: false,
content: rs.msg,
})
})
}
/**
* 上传图片
@ -42,11 +215,18 @@
function uploadImg(key, type) {
util.upload_image({
value: form[key],
type: type || 1,
success: rs => {
//
if (type != 2) form[key] = rs.value
}
switch (type) {
case 1:
form[key] = rs.value
break
case 2:
console.log('form[key]', form[key])
form[key].push(rs.value)
console.log('form[key]', form[key])
break
}
},
})
}
@ -63,71 +243,81 @@
})
}
//
/**
* 选择省市区
* @param {Object} ev
*/
function handleRegion(ev) {
console.log('handleRegion', ev)
form.province = ev.province.id
form.city = ev.city.id
form.district = ev.area.id
}
/**
* 切换产品分类
* @param {Object} ev 默认事件
*/
function handleDict(ev) {
if (!ev || typeof ev.detail.value === 'undefined') {
console.error('Invalid event object or missing value');
return
}
const index = ev.detail.value;
if (index === dictIndex.value) return;
if (index >= 0 && index < dictList.length) {
dictIndex.value = index;
form.categoryId = dictList[index].id;
} else {
console.error('Invalid index:', index);
}
}
//
function handleSubmit() {
const data = {
...form
}
console.log('data', data)
//
if (!data.shopHeader) {
if (!data.rectangleLogo) {
util.alert('商家头像不能为空')
return
}
if (!data.shopName) {
if (!data.name) {
util.alert('商家名称不能为空')
return
}
if (!data.contact) {
if (!data.phone) {
util.alert('联系方式不能为空')
return
}
if (!data.productLocation) {
if (!data.province) {
util.alert('产品所在地不能为空')
return
}
if (!data.productCategory) {
if (!data.categoryId) {
util.alert('产品类别不能为空')
return
}
if (!data.customer) {
util.alert('客服电话不能为空')
return
}
if (!data.businessLicense[0]) {
if (!data.qualificationPicture[0]) {
util.alert('营业执照不能为空')
return
}
if (!data.idcard) {
if (!data.idCardFront) {
util.alert('身份证正面不能为空')
return
}
if (!data.idcard2) {
if (!data.idCardBack) {
util.alert('身份证反面不能为空')
return
}
//
data.qualificationPicture = data.qualificationPicture.join(',')
//
data.shopHeader = util.replace_url(data.shopHeader)
data.businessLicense = data.businessLicense.map(node => {
return util.replace_url(node)
}).join(',')
data.idcard = util.replace_url(data.idcard)
data.idcard2 = util.replace_url(data.idcard2)
durianapi.shopApply({
data: {
shopHeader: data.shopHeader,
shopName: data.shopName,
contact: data.contact,
productLocation: data.productLocation,
productCategory: data.productCategory,
customer: data.customer,
idcard: data.idcard,
idcard2: data.idcard2,
businessLicense: data.businessLicense,
status: 3
}
api.shop.application({
data: data,
}).then(rs => {
if (rs.code === 200) {
util.alert({
@ -144,40 +334,60 @@
}
})
}
// 退
function outDepositsPay() {
util.alert({
content: '确认缴纳押金并放弃商家身份?',
}).then(rs => {
if (rs.confirm) return
api.shop.outDepositsPay().then(rs => {
if (rs.code == 200) {
//
handleModeCode(0)
return
}
util.alert({
showCancel: false,
content: rs.msg,
})
})
})
}
</script>
<template>
<!-- 须知 -->
<template v-if="mode == 'notice'">
<template v-if="[0,1].includes(mode.code)">
<view class="app">
<view class="notice oh mtb30 mlr30 plr30 ptb20 bfff br20">
<view class="title tac f34 c333 b">商家入驻须知</view>
<view class="content mtb50">
<rich-text :nodes="text"></rich-text>
<rich-text :nodes="content.content"></rich-text>
</view>
</view>
<view class="tac c666 f28">继续即代表同意商家入驻须知</view>
<view class="fill" style="height: 160rpx;"></view>
<view class="fill" style="height: 160rpx;" />
<view class="footer plr30 bfff shadow">
<!-- 未缴纳押金 -->
<template v-if="0">
<view class="btn black">缴纳押金</view>
<template v-if="mode.code == 0">
<view class="btn black" @click="depositsPay">缴纳押金</view>
</template>
<template v-else>
<view class="rows">
<view class="btn cancel plr30">退回押金</view>
<view class="btn colourful f1" @click="mode = 'form'">申请入驻</view>
<view class="btn cancel plr30" @click="outDepositsPay">退回押金</view>
<view class="btn colourful f1" @click="handleModeCode('form')">申请入驻</view>
</view>
</template>
</view>
</view>
</template>
<!-- 审核 -->
<template v-else-if="mode == 'wait'">
<!-- 审核 -->
<template v-else-if="mode.code == 2">
<view class="app">
<view class="result ver">
<uni-icons type="checkbox-filled" color="#20D200" size="160rpx" />
@ -190,20 +400,20 @@
<view class="fill" style="height: 160rpx;"></view>
<view class="footer rows plr30 bfff shadow">
<view class="btn cancel f1">取消申请并退回押金</view>
<view class="btn cancel f1" @click="outDepositsPay">取消申请并退回押金</view>
</view>
</view>
</template>
<!-- 审核驳回 -->
<template v-else-if="mode == 'fail'">
<template v-else-if="mode.code == 4">
<view class="app">
<view class="result ver">
<uni-icons type="clear" color="#ff0000" size="160rpx" />
<view class="title mtb30 f34">审核驳回</view>
<view class="value f30">
<text class="c666">驳回原因</text>
<text class="c333">身份证照片不清晰</text>
<text class="c333">{{mode.msg}}</text>
</view>
<view class="reject mtb30 c666 f28">
<view>驳回结果异议 可在个人中心-设置里面联系我们</view>
@ -213,46 +423,35 @@
<view class="fill" style="height: 160rpx;"></view>
<view class="footer rows plr30 bfff shadow">
<view class="btn cancel plr30">退回押金</view>
<view class="btn colourful f1" @click="mode = 'form'">修改信息</view>
<view class="btn cancel plr30" @click="outDepositsPay">退回押金</view>
<view class="btn colourful f1" @click="handleModeCode('form')">修改信息</view>
</view>
</view>
</template>
<!-- 申请成功 -->
<template v-else-if="mode == 'success'">
<template v-else-if="mode.code == 3">
<view class="app">
<view class="result ver">
<uni-icons type="checkbox-filled" color="#20D200" size="160rpx" />
<view class="title mtb30 f34">恭喜您您已成为商家</view>
</view>
<!-- <view class="menu oh mtb30 mlr30 plr20 c333 f30 bfff br10">
<view class="line rows">
<view class="key">商家主页</view>
<uni-icons type="right"></uni-icons>
</view>
<view class="fill" style="height: 160rpx;"></view>
<view class="line rows">
<view class="key">发布产品</view>
<uni-icons type="right"></uni-icons>
</view>
<view class="line rows">
<view class="key">修改信息</view>
<uni-icons type="right"></uni-icons>
</view>
</view> -->
<view class="footer plr30 bfff shadow">
<view class="btn cancel plr30" @click="outDepositsPay">退回押金并放弃商家身份</view>
</view>
</view>
</template>
<!-- 表单申请 -->
<template v-else-if="mode == 'form'">
<template v-else-if="mode.code == 'form'">
<view class="appbw plr30">
<!-- 头像 -->
<view class="avatarBox ver mt50">
<view class="avatar oh pr wh220 br20" @click="uploadImg('shopHeader')">
<image class="img br20" :src="form.shopHeader" mode="aspectFill" v-if="form.shopHeader" />
<view class="avatar oh pr wh220 br20" @click="uploadImg('rectangleLogo',1)">
<image class="img br20" :src="form.rectangleLogo" mode="aspectFill" v-if="form.rectangleLogo" />
<view class="pfull fmid" v-else>
<uni-icons type="plusempty" color="#999" size="80rpx" />
</view>
@ -267,48 +466,55 @@
<view class="item rows ptb20">
<view class="key c666">店铺名称</view>
<view class="value f1 ml20 tar">
<input v-model="form.shopName" type="text" placeholder="请输入店铺名称" />
<input v-model="form.name" type="text" placeholder="请输入店铺名称" />
</view>
</view>
<view class="item rows ptb20">
<view class="key c666">联系方式</view>
<view class="value f1 ml20 tar">
<input v-model="form.contact" type="text" placeholder="请输入联系方式" />
<input v-model="form.phone" type="number" placeholder="请输入联系方式" />
</view>
</view>
<view class="item rows ptb20">
<view class="item rows ptb20" @click="$refs.regionSelectionRef.open()">
<view class="key c666">产品所在地</view>
<view class="value f1 ml20 tar">
<input v-model="form.productLocation" type="text" placeholder="请选择产品所在地" />
<!-- 省市区选择 -->
<regionSelection ref="regionSelectionRef" :province="form.province" :city="form.city"
:area="form.district" @change="handleRegion" />
</view>
</view>
<view class="item rows ptb20">
<view class="key c666">产品类别</view>
<view class="key c666">详细所在地</view>
<view class="value f1 ml20 tar">
<input v-model="form.productCategory" type="text" placeholder="请选择产品类别" />
<input v-model="form.addressDetail" type="text" placeholder="请选择产品所在地" />
</view>
</view>
<view class="item rows ptb20">
<view class="key c666">客服联系电话</view>
<view class="value f1 ml20 tar">
<input v-model="form.customer" type="text" placeholder="请输入客服联系电话" />
</view>
<view class="item ptb20">
<picker :range="dictList" range-key="name" :vlaue="dictIndex" @change="handleDict">
<view class="rows">
<view class="key c666">产品类别</view>
<view class="value f1 ml20 tar">
<text class="placeholderStyle" v-if="dictIndex === ''">请选择产品类别</text>
<text v-else>{{dictList[dictIndex].name}}</text>
</view>
</view>
</picker>
</view>
<view class="item ptb20">
<view class="key c666">营业执照</view>
<view class="value imgList f1 mt20 tar">
<view class="imgs wh200" v-for="(item, index) in form.businessLicense" :key="index">
<view class="imgs wh200" v-for="(item, index) in form.qualificationPicture" :key="index">
<image class="img br10" :src="item" mode="aspectFill" />
<view class="close" @click="removeMedia(index,'businessLicense')">
<view class="close" @click="removeMedia(index,'qualificationPicture')">
<uni-icons type="clear" size="50rpx" color="#f00" />
</view>
</view>
<view class="upload imgs fmid wh200 br10" @click="uploadImg('businessLicense',2)">
<view class="upload imgs fmid wh200 br10" @click="uploadImg('qualificationPicture',2)">
<uni-icons type="plusempty" color="#E8E8E8" size="80rpx" />
</view>
</view>
@ -317,10 +523,10 @@
<view class="item ptb20">
<view class="key c666">身份证正面</view>
<view class="value imgList f1 mt20 tar">
<view class="imgs wh200" v-if="form.idcard" @click="uploadImg('idcard',1)">
<image class="img br10" :src="form.idcard" mode="aspectFill" />
<view class="imgs wh200" v-if="form.idCardFront" @click="uploadImg('idCardFront',1)">
<image class="img br10" :src="form.idCardFront" mode="aspectFill" />
</view>
<view class="upload imgs fmid wh200 br10" v-else @click="uploadImg('idcard',1)">
<view class="upload imgs fmid wh200 br10" v-else @click="uploadImg('idCardFront',1)">
<uni-icons type="plusempty" color="#E8E8E8" size="80rpx" />
</view>
</view>
@ -329,10 +535,10 @@
<view class="item ptb20">
<view class="key c666">身份证反面</view>
<view class="value imgList f1 mt20 tar">
<view class="imgs wh200" v-if="form.idcard2" @click="uploadImg('idcard2')">
<image class="img br10" :src="form.idcard2" mode="aspectFill" />
<view class="imgs wh200" v-if="form.idCardBack" @click="uploadImg('idCardBack',1)">
<image class="img br10" :src="form.idCardBack" mode="aspectFill" />
</view>
<view class="upload imgs fmid wh200 br10" v-else @click="uploadImg('idcard2')">
<view class="upload imgs fmid wh200 br10" v-else @click="uploadImg('idCardBack',1)">
<uni-icons type="plusempty" color="#E8E8E8" size="80rpx" />
</view>
</view>
@ -344,11 +550,10 @@
<view class="footer plr30 bfff shadow">
<view class="rows">
<view class="btn cancel plr30">退回押金</view>
<view class="btn cancel plr30" @click="outDepositsPay">退回押金</view>
<view class="btn colourful f1" @click="handleSubmit">申请入驻</view>
</view>
</view>
</template>
</template>

View File

@ -377,5 +377,7 @@ call_type 通话类型 2为视频1是音频
type
0 非好友
1 好友

View File

@ -9,32 +9,34 @@ export default defineConfig({
host: "0.0.0.0",
port: 5173,
proxy: {
"/system": {
// target: "http://192.168.0.104:8080",
target: "http://192.168.0.107:8080",
changeOrigin: true,
},
"/shopify": {
target: "https://3w823u8516.vicp.fun",
// target: "http://192.168.0.104:8080",
target: "http://192.168.0.107:8080",
changeOrigin: true,
},
"/user": {
// target: "http://192.168.0.129:8080",
// target: "http://192.168.1.199:8080",
target: "http://192.168.0.133:8080",
// target: "http://192.168.0.104:8080",
target: "http://192.168.0.107:8080",
changeOrigin: true,
},
"/coreplay": {
// target: "http://192.168.0.129:8080",
// target: "http://192.168.1.199:8080",
target: "http://192.168.0.133:8080",
// target: "http://192.168.0.104:8080",
target: "http://192.168.0.107:8080",
changeOrigin: true,
},
"/file": {
// target: "http://192.168.0.129:8080",
// target: "http://192.168.1.199:8080",
target: "http://192.168.0.133:8080",
// target: "http://192.168.0.104:8080",
target: "http://192.168.0.107:8080",
changeOrigin: true,
},
"/video": {
// target: "http://192.168.0.129:8080",
// target: "http://192.168.1.199:8080",
target: "http://192.168.0.133:8080",
// target: "http://192.168.0.104:8080",
target: "http://192.168.0.107:8080",
changeOrigin: true,
},
}