210 lines
9.2 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="container">
<!-- 顶部进度条 -->
<view class="step-bar">
<view class="step-pill active">填写信息</view>
<view class="step-pill">提交审核</view>
<view class="step-pill">入驻成功</view>
</view>
<view class="confirm-head">请确认以下信息</view>
<!-- 基本信息 -->
<view class="cf-group">
<view class="cf-group-title">基本信息</view>
<view class="cf-row"><text class="cf-k">门店名称</text><text class="cf-v">{{ d.merchant_name || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">所在地区</text><text class="cf-v">{{ d._region_label || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">详细地址</text><text class="cf-v">{{ d.address || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">商家类目</text><text class="cf-v">{{ d._cate_name || '—' }}</text></view>
<view class="cf-row" v-if="d._biz_status_label"><text class="cf-k">营业状态</text><text class="cf-v">{{ d._biz_status_label }}</text></view>
<view class="cf-row"><text class="cf-k">负责人姓名</text><text class="cf-v">{{ d.contact_name || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">负责人手机</text><text class="cf-v">{{ d.phone || '—' }}</text></view>
</view>
<!-- 资质信息 -->
<view class="cf-group">
<view class="cf-group-title">资质信息</view>
<view class="cf-row"><text class="cf-k">执照名称</text><text class="cf-v">{{ d.license_name || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">信用代码</text><text class="cf-v">{{ d.credit_code || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">营业执照</text><text class="cf-v">{{ d.license_is_forever === 1 ? '永久有效' : (d.license_valid_until || '—') }}</text></view>
<view class="cf-row" v-if="d.industry_name"><text class="cf-k">证书名称</text><text class="cf-v">{{ d.industry_name }}</text></view>
<view class="cf-row" v-if="d.industry_cert_no"><text class="cf-k">证书编号</text><text class="cf-v">{{ d.industry_cert_no }}</text></view>
<view class="cf-row" v-if="d.industry_name"><text class="cf-k">资质有效期</text><text class="cf-v">{{ d.industry_is_forever === 1 ? '永久有效' : (d.industry_valid_until || '') }}</text></view>
<view class="cf-row"><text class="cf-k">法人姓名</text><text class="cf-v">{{ d.legal_person || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">身份证号</text><text class="cf-v">{{ d.id_card_no || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">证件有效期</text><text class="cf-v">{{ d.id_is_forever === 1 ? '永久有效' : (d.id_valid_until || '—') }}</text></view>
</view>
<!-- 结算信息 -->
<view class="cf-group">
<view class="cf-group-title">结算信息</view>
<view class="cf-row"><text class="cf-k">银行开户名</text><text class="cf-v">{{ d.account_name || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">{{ d.account_type === 2 ? '对公账号' : '银行卡号' }}</text><text class="cf-v">{{ d.bank_card || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">开户银行</text><text class="cf-v">{{ d.bank_name || '—' }}</text></view>
<view class="cf-row"><text class="cf-k">开户支行</text><text class="cf-v">{{ d.bank_branch || '—' }}</text></view>
<view class="cf-row" v-if="d._bank_region_label"><text class="cf-k">银行所在地</text><text class="cf-v">{{ d._bank_region_label }}</text></view>
<view class="cf-row" v-if="d.bank_union_no"><text class="cf-k">联行号</text><text class="cf-v">{{ d.bank_union_no }}</text></view>
</view>
<!-- 文件资料 -->
<view class="cf-group">
<view class="cf-group-title">文件资料</view>
<view class="cf-file-row">
<text class="cf-k">营业执照</text>
<view class="cf-thumbs">
<image v-for="(u, i) in licenseUrls" :key="i" :src="u" class="cf-thumb" mode="aspectFill" @click="preview(licenseUrls, i)" />
<text v-if="!licenseUrls.length" class="cf-empty">未上传</text>
</view>
</view>
<view class="cf-file-row">
<text class="cf-k">行业资质</text>
<view class="cf-thumbs">
<image v-for="(u, i) in industryUrls" :key="i" :src="u" class="cf-thumb" mode="aspectFill" @click="preview(industryUrls, i)" />
<text v-if="!industryUrls.length" class="cf-empty">未上传</text>
</view>
</view>
<view class="cf-file-row">
<text class="cf-k">法人证件</text>
<view class="cf-thumbs">
<image v-for="(u, i) in idUrls" :key="i" :src="u" class="cf-thumb" mode="aspectFill" @click="preview(idUrls, i)" />
<text v-if="!idUrls.length" class="cf-empty">未上传</text>
</view>
</view>
<view class="cf-file-row">
<text class="cf-k">门头环境</text>
<view class="cf-thumbs">
<image v-for="(u, i) in facadeUrls" :key="i" :src="u" class="cf-thumb" mode="aspectFill" @click="preview(facadeUrls, i)" />
<text v-if="!facadeUrls.length" class="cf-empty">未上传</text>
</view>
</view>
<view class="cf-file-row">
<text class="cf-k">店内环境</text>
<view class="cf-thumbs">
<image v-for="(u, i) in interiorUrls" :key="i" :src="u" class="cf-thumb" mode="aspectFill" @click="preview(interiorUrls, i)" />
<text v-if="!interiorUrls.length" class="cf-empty">未上传</text>
</view>
</view>
</view>
<!-- 协议勾选 -->
<view class="agreement">
<view class="agreement-check" @click="agreeProtocol = !agreeProtocol">
<u-icon :name="agreeProtocol ? 'checkmark-circle-fill' : 'checkmark-circle'" :color="agreeProtocol ? '#FF370B' : '#ccc'" size="36"></u-icon>
</view>
<view class="agreement-text">
我已阅读并同意<text class="agreement-link" @click.stop="viewProtocol">商家入驻协议</text>
</view>
</view>
<view class="bottom-bar">
<view class="btn-secondary" @click="goBack">返回修改</view>
<view class="btn-primary" @click="submit">提交审核</view>
</view>
</view>
</template>
<script>
import { apiArr } from '../../../api/v2local';
import { request, picUrl, NavgateTo } from '../../../utils';
import { signPrivateView } from '../../../utils/uploadOSS.js';
export default {
data() {
return {
picUrl,
d: {},
agreeProtocol: false,
licenseUrls: [],
industryUrls: [],
idUrls: [],
facadeUrls: [],
interiorUrls: [],
submitting: false,
}
},
onLoad(options) {
if (options && options.itemObj) {
try {
this.d = JSON.parse(decodeURIComponent(options.itemObj))
} catch (e) {
console.error('解析确认页参数失败:', e)
this.d = {}
}
}
// 门头环境 / 店内环境:公开 bucket直接拼 URL
this.facadeUrls = (this.d.facade_photo || '').split(',').filter(Boolean).map(p => this.picUrl + p)
this.interiorUrls = (this.d.interior_photo || '').split(',').filter(Boolean).map(p => this.picUrl + p)
// 营业执照 / 行业资质 / 身份证:私密 bucket需要签名
this.signList(this.d.license_photo, 'licenseUrls')
this.signList(this.d.industry_photo, 'industryUrls')
this.signList([this.d.id_card_front, this.d.id_card_back].filter(Boolean).join(','), 'idUrls')
},
methods: {
async signList(paths, key) {
const list = (paths || '').split(',').filter(Boolean)
const result = []
for (const p of list) {
try {
const r = await signPrivateView(p)
result.push(r.url)
} catch (e) {
console.error('签发私密 URL 失败:', p, e)
}
}
this[key] = result
},
preview(urls, current) {
if (!urls || !urls.length) return
uni.previewImage({ urls, current: urls[current] })
},
viewProtocol() {
uni.showModal({
title: '商家入驻协议',
content: '本协议是您与平台之间关于商家入驻服务的法律协议。入驻后您需遵守平台规则,按时提供商品或服务,保证信息真实有效。平台有权对违规商家进行处罚。',
showCancel: false,
confirmText: '我知道了'
})
},
goBack() {
uni.navigateBack()
},
submit() {
if (!this.agreeProtocol) {
uni.showToast({ title: '请先阅读并同意商家入驻协议', icon: 'none' })
return
}
if (this.submitting) return
this.submitting = true
// 剥离仅用于展示的下划线字段,避免传给后端
const params = {}
Object.keys(this.d).forEach(k => {
if (!k.startsWith('_')) params[k] = this.d[k]
})
request(apiArr.createStore, "POST", params).then(res => {
// 审核页仅需少量字段;用 reLaunch 清空页面栈,避免返回到表单/确认页造成二次提交
const auditItem = {
status: 1,
create_time: new Date().toLocaleString('sv-SE').replace('T', ' '),
handle_time: '',
remark: ''
}
uni.reLaunch({
url: "/packages/shopEnter/auditStatus/index?itemObj=" + encodeURIComponent(JSON.stringify(auditItem))
})
}).catch(res => {
this.submitting = false
const msg = res && res.message ? res.message : '提交失败,请稍后重试'
if (msg.includes("agent_nil")) {
uni.showModal({ title: '提交失败', content: '未找到对应的代理商信息,请联系平台', showCancel: false })
return
}
uni.showModal({ title: '提交失败', content: msg, showCancel: false })
})
}
}
}
</script>
<style>
@import url("./index.css");
</style>