初次提交被驳回逻辑优化

This commit is contained in:
丁杰 2026-06-05 15:27:42 +08:00
parent 5ac5be413b
commit 181a93e314
8 changed files with 1018 additions and 888 deletions

View File

@ -5,25 +5,14 @@
<view class="modal-title">开始服务</view>
<view class="modal-subtitle">请输入服务码</view>
<view class="code-box">
<view
v-for="(item, idx) in codeLength"
:key="idx"
<view v-for="(item, idx) in codeLength" :key="idx"
:class="['code-cell', idx === currentIndex ? 'active' : '', code[idx] ? 'filled' : '']">
<text v-if="code[idx]">{{ code[idx] }}</text>
</view>
<!-- 隐藏真实输入框 -->
<input
:adjust-position="false"
class="real-input"
type="number"
:maxlength="codeLength"
v-model="inputValue"
:focus="true"
@input="onInput"
@focus="onFocus"
@keyboardheightchange="onkeyboardheightchange"
@blur="onBlur"
cursor-spacing="100"
<input :adjust-position="false" class="real-input" type="number" :maxlength="codeLength"
v-model="inputValue" :focus="true" @input="onInput" @focus="onFocus"
@keyboardheightchange="onkeyboardheightchange" @blur="onBlur" cursor-spacing="100"
ref="realInput" />
</view>
<button class="confirm-btn" :disabled="code.length < codeLength" @click="onConfirm">确定</button>
@ -117,12 +106,13 @@
z-index: 999999;
.modal-mask {
position: absolute;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.15);
background: rgba(0, 0, 0, 0.5);
z-index: -1;
}
.modal-content {

View File

@ -32,7 +32,7 @@
<cover-view class="slider-track">
<cover-view class="slider-bg"></cover-view>
<cover-view class="slider-active" :style="activeStyle"></cover-view>
<cover-view class="slider-thumb" :style="thumbStyle"></cover-view>
<cover-view class="slider-thumb" v-if="currentTime > 0" :style="thumbStyle"></cover-view>
</cover-view>
<cover-view class="time-text">{{ formatTime(duration) }}</cover-view>
@ -143,7 +143,8 @@ export default {
iconFullscreen: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4286ef33-6849-4851-8866-4230d2523a33.png',
article: {},
recommendList: []
recommendList: [],
recommendPage: 1
}
},
computed: {
@ -301,9 +302,7 @@ export default {
this.isFavorite = data.collect_state === 1;
request.post("/sj/skill/list", {
page: 1,
limit: 10,
link_type: data.link_type,
link_id: data.link_id,
limit: 3,
skill_id: data.id
}).then((listRes) => {
if (listRes.code == 200 && listRes.data && listRes.data.list) {
@ -376,11 +375,58 @@ export default {
if (this.isRefreshing) return;
this.isRefreshing = true;
uni.showLoading({ title: '加载中' });
setTimeout(() => {
this.recommendList = this.recommendList.sort(() => Math.random() - 0.5);
// 101+1
if (this.recommendPage >= 10) {
this.recommendPage = 1;
} else {
this.recommendPage++;
}
request.post("/sj/skill/list", {
page: this.recommendPage,
limit: 3,
skill_id: this.article.id
}).then((res) => {
if (res.code == 200 && res.data && res.data.list && res.data.list.length > 0) {
this.recommendList = res.data.list.map(item => ({
id: item.id,
title: item.name || '暂无标题',
coverSrc: item.cover_img || '',
type: item.link_name || '平台课程',
views: item.browse_num || 0,
time: item.create_time ? item.create_time.split(' ')[0] : '',
typeIcon: item.link_logo || '',
video: item.video || ''
}));
} else {
// 1
this.recommendPage = 1;
request.post("/sj/skill/list", {
page: 1,
limit: 3,
skill_id: this.article.id
}).then((res2) => {
if (res2.code == 200 && res2.data && res2.data.list) {
this.recommendList = res2.data.list.map(item => ({
id: item.id,
title: item.name || '暂无标题',
coverSrc: item.cover_img || '',
type: item.link_name || '平台课程',
views: item.browse_num || 0,
time: item.create_time ? item.create_time.split(' ')[0] : '',
typeIcon: item.link_logo || '',
video: item.video || ''
}));
}
});
}
this.isRefreshing = false;
uni.hideLoading();
}, 600);
}).catch(() => {
this.isRefreshing = false;
uni.hideLoading();
});
},
injectMockData() {

View File

@ -909,8 +909,8 @@ export default {
toruzhu() {
const idType = this.userInfo.id_type;
const credentialsState = this.userInfo.credentials_state;
if (idType === 0 && credentialsState === 0) {
console.log(idType, credentialsState)
if (idType <= 0 && credentialsState === 0) {
//
uni.navigateTo({
url: '/pages/ruzhu/ruzhu'

View File

@ -123,8 +123,9 @@ export default {
},
computed: {
filterIcon() {
// CSS
return 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/e00ab2ac-bccf-42d8-820c-65727327e279.png'
return this.filterVisible
? 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/e00ab2ac-bccf-42d8-820c-65727327e279.png'
: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bfe7a104-bef8-4432-9487-42f05e3e9035.png'
}
},
onLoad() {
@ -466,13 +467,13 @@ export default {
}
.filter-icon {
width: 16rpx;
height: 10rpx;
transition: transform 0.3s ease;
width: 24rpx;
height: 24rpx;
/* 展开时图标倒转 */
/* 展开时切换为上下箭头图标,调整大小 */
&.rotate {
transform: rotate(180deg);
width: 18rpx;
height: 12rpx;
}
}
}
@ -574,7 +575,6 @@ export default {
justify-content: center;
border-radius: 12rpx;
transition: all 0.3s;
box-sizing: border-box;
/* 防止 padding 会撑大盒子 */

View File

@ -4,13 +4,8 @@
<view class="status" v-if="isLogin">
<scroll-view scroll-x class="status-tabs" :show-scrollbar="false">
<view style="padding-left: 20rpx">
<view
class="tab-item"
v-for="(item, index) in firstTabs"
:key="index"
:class="{ active: activeFirstId === item.id }"
@click="handleFirstTabClick(item)"
>
<view class="tab-item" v-for="(item, index) in firstTabs" :key="index"
:class="{ active: activeFirstId === item.id }" @click="handleFirstTabClick(item)">
{{ item.title }}
</view>
</view>
@ -18,51 +13,26 @@
<scroll-view scroll-x class="status-tabs2" :show-scrollbar="false">
<view style="padding-left: 20rpx; white-space: nowrap; padding-bottom: 20rpx;">
<view
class="tab-item2"
v-for="(item, index) in secondTabs"
:key="index"
<view class="tab-item2" v-for="(item, index) in secondTabs" :key="index"
:class="{ active: activeSecondId === item.id }"
@click="handleSecondTabClick(item.id, item.title)"
>
@click="handleSecondTabClick(item.id, item.title)">
{{ item.title }}
</view>
</view>
</scroll-view>
</view>
<CommonList
ref="groupRef"
:isLogin="isLogin"
:apiUrl="apiUrl"
:listScrollHeight="`calc(100vh - 280rpx - 100rpx)`"
@load-success="loadSuccess"
>
<CommonList ref="groupRef" :isLogin="isLogin" :apiUrl="apiUrl"
:listScrollHeight="`calc(100vh - 280rpx - 100rpx)`" @load-success="loadSuccess">
<template #listData="{ list }">
<view class="order-item-wrap" v-for="item in popList" :key="item.id">
<OrderCard
v-if="activeFirstId != 3"
:haveButton="haveButton"
:showState="false"
:dataItem="item"
:typeId="activeFirstId"
@cancel="cancelOrder($event, item)"
@start="startOrder($event, item)"
@done="endOrder($event, item)"
@goOrderDetail="goOrderDetail"
/>
<OrderCard v-if="activeFirstId != 3" :haveButton="haveButton" :dataItem="item"
:typeId="activeFirstId" @cancel="cancelOrder($event, item)" @start="startOrder($event, item)"
@done="endOrder($event, item)" @goOrderDetail="goOrderDetail" />
<WorkHourOrderCard
v-else
:showState="false"
:dataItem="item"
:typeId="activeFirstId"
@cancel="cancelOrder($event, item)"
@accept="confirmOrder($event, item)"
@start="startOrder($event, item)"
@done="endOrder($event, item)"
@goOrderDetail="goOrderDetail"
>
<WorkHourOrderCard v-else :dataItem="item" :typeId="activeFirstId"
@cancel="cancelOrder($event, item)" @accept="confirmOrder($event, item)"
@start="startOrder($event, item)" @done="endOrder($event, item)" @goOrderDetail="goOrderDetail">
</WorkHourOrderCard>
</view>
</template>
@ -87,7 +57,7 @@
</template>
<script>
import OrderCard from "@/pages/home/components/orderCard2.vue";
import OrderCard from "@/pages/shop/components/orderCard.vue";
import WorkHourOrderCard from "@/pages/home/components/workOrderCard.vue";
import CommonList from "@/components/common/CommonList.vue";
import noLogin from "@/components/noData/noLogin.vue";
@ -684,8 +654,8 @@
/* 数据列表及卡片外框样式 */
.order-item-wrap {
margin: 0 0 24rpx 0;
border-radius: 20rpx;
background-color: #fff;
border-radius: 12px;
overflow: hidden;
}

View File

@ -17,7 +17,7 @@
</view>
<view v-else-if="currentStep === 2">
<successruzhu :data="successData"></successruzhu>
<successruzhu :data="successData" @stateChange="onStateChange"></successruzhu>
</view>
<view v-else-if="currentStep === 3">
@ -25,7 +25,7 @@
</view>
<view v-else-if="currentStep === 4">
<successruzhu :data="successData"></successruzhu>
<successruzhu :data="successData" @stateChange="onStateChange"></successruzhu>
</view>
</view>
<view class="kong"></view>
@ -73,7 +73,7 @@
<!-- 步骤3: 门店信息 -->
<view v-else-if="currentStep === 3" class="step-2-buttons">
<view class="button-row">
<view class="prev-btn" @click="goPrev">
<view v-if="!isRejected" class="prev-btn" @click="goPrev">
<text class="prev-text">上一步</text>
</view>
<view class="submit-btn" @click="submitApplication">
@ -84,7 +84,15 @@
<!-- 步骤4: 资质认证成功 -->
<view v-else-if="currentStep === 4" class="step-2-buttons">
<view class="button-row">
<view v-if="isRejected" class="button-row">
<view class="prev-btn" @click="resubmit">
<text class="prev-text">重新提交</text>
</view>
<view class="showziliao1" @click="topt">
<text class="showziliaotext1">进入平台</text>
</view>
</view>
<view v-else class="button-row">
<view class="showziliao" @click="topt">
<text class="showziliaotext">进入平台</text>
</view>
@ -110,7 +118,7 @@ export default {
},
data() {
return {
currentStep: 3, //
currentStep: 0, //
isAgree: false,
identity: null,
textData: {},
@ -120,6 +128,7 @@ export default {
qualificationData: null, //
storeInfoData: null, //
successData: {}, //
isRejected: false, //
//
artisanDataCache: {
personalInfo: null,
@ -138,6 +147,10 @@ export default {
},
async onLoad(options) {
console.log(options, 'options---');
if (options.type == 0 && options.step == 3) {
this.currentStep = 3
this.isRejected = true
}
if (options.type == 1) {
this.currentStep = 4
}
@ -165,6 +178,16 @@ export default {
url: '/pages/home/home'
})
},
onStateChange(state) {
if (state === 3) {
this.isRejected = true;
}
},
resubmit() {
uni.navigateTo({
url: '/pages/ruzhu/ruzhu?type=0&step=3'
});
},
//
async getUserInfoSync() {
await request.post('/sj/userSjAuth/details', {
@ -807,6 +830,13 @@ export default {
border-radius: 49rpx;
}
.showziliao1 {
width: 400rpx;
height: 98rpx;
background: #FF4767;
border-radius: 49rpx;
}
.showziliaotext {
height: 40rpx;
font-family: PingFangSC, PingFang SC;
@ -818,4 +848,16 @@ export default {
margin: 0 0 0 281rpx;
align-items: center;
}
.showziliaotext1 {
height: 40rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #FFFFFF;
line-height: 96rpx;
font-style: normal;
margin: 0 0 0 140rpx;
align-items: center;
}
</style>

View File

@ -391,6 +391,7 @@ export default {
this.regionCitys = this.ChinaCitys[0].citys;
this.regionAreas = this.regionCitys[0].areas;
this.setupAddressListener();
await this.loadDetailsData();
},
beforeDestroy() {
this.removeAddressListener();
@ -405,6 +406,67 @@ export default {
});
},
async loadDetailsData() {
try {
const res = await request.post('/sj/userSjAuth/details', {
type: 1
});
if (res.code === 200 && res.data) {
const data = res.data;
this.$set(this.formData, 'uscc_photo', data.uscc_photo || '');
this.$set(this.formData, 'uscc_type', data.uscc_type || '');
this.$set(this.formData, 'uscc_num', data.uscc_num || '');
this.$set(this.formData, 'uscc_name', data.uscc_name || '');
this.$set(this.formData, 'uscc_dependency', data.uscc_dependency || '');
this.$set(this.formData, 'uscc_address', data.uscc_address || '');
this.$set(this.formData, 'uscc_province', data.uscc_province || '');
this.$set(this.formData, 'uscc_city', data.uscc_city || '');
this.$set(this.formData, 'uscc_area', data.uscc_area || '');
this.$set(this.formData, 'longitude', data.longitude || '');
this.$set(this.formData, 'latitude', data.latitude || '');
this.$set(this.formData, 'legal_idcard_positive', data.legal_idcard_positive || '');
this.$set(this.formData, 'legal_idcard_negative', data.legal_idcard_negative || '');
this.$set(this.formData, 'legal_name', data.legal_name || '');
this.$set(this.formData, 'legal_phone', data.legal_phone || '');
this.$set(this.formData, 'legal_idcard_num', data.legal_idcard_num || '');
// legal_idcard_expiry typestartend
if (data.legal_idcard_expiry) {
const expiry = data.legal_idcard_expiry;
if (expiry === '长久' || expiry === '长久有效') {
this.$set(this.formData, 'legal_idcard_expiry_type', '1');
this.$set(this.formData, 'legal_idcard_expiry_end', '长久有效');
} else if (expiry.includes('——') || expiry.includes('--') || expiry.includes('-')) {
const separator = expiry.includes('——') ? '——' : (expiry.includes('--') ? '--' : '-');
const [startStr, endStr] = expiry.split(separator);
const startDate = startStr.trim();
const endDate = endStr.trim();
this.$set(this.formData, 'legal_idcard_expiry_start', startDate);
if (endDate === '长久' || !endDate) {
this.$set(this.formData, 'legal_idcard_expiry_type', '1');
this.$set(this.formData, 'legal_idcard_expiry_end', '长久有效');
} else {
this.$set(this.formData, 'legal_idcard_expiry_type', '2');
this.$set(this.formData, 'legal_idcard_expiry_end', endDate);
}
}
} else {
this.$set(this.formData, 'legal_idcard_expiry_type', data.legal_idcard_expiry_type || '1');
this.$set(this.formData, 'legal_idcard_expiry_start', data.legal_idcard_expiry_start || '');
this.$set(this.formData, 'legal_idcard_expiry_end', data.legal_idcard_expiry_end || '');
}
if (data.qualifications_sector) {
this.$set(this.formData, 'qualifications_sector', typeof data.qualifications_sector === 'string' ? JSON.parse(data.qualifications_sector) : data.qualifications_sector);
}
if (data.qualifications_other) {
this.$set(this.formData, 'qualifications_other', typeof data.qualifications_other === 'string' ? JSON.parse(data.qualifications_other) : data.qualifications_other);
}
console.log('sj-info 数据回显完成:', this.formData);
}
} catch (error) {
console.error('获取详情数据失败:', error);
}
},
chooseImage(type) {
uni.chooseImage({
count: 1,

View File

@ -37,7 +37,27 @@ export default {
const res = await request.post('/sj/userSjAuth/getCustomerService');
console.log('客服接口返回:', res);
if (res && (res.state == 1 || res.code == 200)) {
if (res.data.state != 3) {
this.infoData = res.data || {};
} else {
this.infoData = {
top: '审核结果',
title: '审核失败',
photo: res.data.photo
};
this.$emit('stateChange', 3);
request.post('/sj/userSjAuth/details', {
type: 1
}).then(res => {
if (res && (res.state == 1 || res.code == 200)) {
console.log(res.data.back_text, '驳回res')
this.infoData = {
...this.infoData,
notice: res.data.back_text || '您的入驻申请未通过,请重新提交申请'
};
}
})
}
}
} catch (e) {
console.error('获取客服信息失败:', e);