修复若干bug

This commit is contained in:
丁杰 2026-06-04 15:00:22 +08:00
parent 5c42041cbd
commit adf6cea0b7
9 changed files with 3102 additions and 2782 deletions

View File

@ -165,7 +165,7 @@
v-if="userInfo.credentials_state === 0"> v-if="userInfo.credentials_state === 0">
</image> </image>
<text style="margin-right: 16rpx;" <text style="margin-right: 16rpx;"
:style="{ color: userInfo.credentials_state === 0 ? '#ec5d57' : userInfo.credentials_state === 1 ? '#e59e45' : '#c9c9c9' }"> :style="{ color: userInfo.credentials_state === 0 ? '#ec5d57' : userInfo.credentials_state === 1 ? '#e59e45' : '#389930' }">
{{ userInfo.credentials_state === 0 ? '待完善' : userInfo.credentials_state === 1 ? '审核中' : {{ userInfo.credentials_state === 0 ? '待完善' : userInfo.credentials_state === 1 ? '审核中' :
'已认证' }} '已认证' }}
</text> </text>
@ -640,12 +640,17 @@ export default {
url: '/pages/ruzhu/ruzhu' url: '/pages/ruzhu/ruzhu'
}); });
} else if (idType > 0 && credentialsState === 0) { } else if (idType > 0 && credentialsState === 0) {
// + // +
uni.navigateTo({ uni.navigateTo({
url: '/pages/shop/qualification_sj_change' url: '/pages/shop/qualification_sj_change'
}); });
} else if (idType > 0 && credentialsState === 1) { } else if (idType > 0 && credentialsState === 1) {
// + // +
uni.navigateTo({
url: '/pages/shop/qualification_sj_change'
});
} else if (idType > 0 && credentialsState === 2) {
// +
uni.navigateTo({ uni.navigateTo({
url: '/pages/shop/qualification_sj_change' url: '/pages/shop/qualification_sj_change'
}); });

View File

@ -6,7 +6,7 @@
<view class="header-section"> <view class="header-section">
<view class="user-info" @tap="handleLoginRedirect"> <view class="user-info" @tap="handleLoginRedirect">
<image class="avatar" :src="currentAvatar"></image> <image mode="aspectFill" class="avatar" :src="currentAvatar"></image>
<view class="info-text"> <view class="info-text">
<view class="name">{{ currentName }}</view> <view class="name">{{ currentName }}</view>
<view class="desc">欢迎登录美融融商家版</view> <view class="desc">欢迎登录美融融商家版</view>
@ -117,7 +117,7 @@
</image> </image>
</view> </view>
</view> </view>
<view class="stats-content"> <view class="stats-content" @tap="goToOrderList">
<view class="stat-item"> <view class="stat-item">
<text class="num">{{ orderBasic.waitStart }}</text> <text class="num">{{ orderBasic.waitStart }}</text>
<text class="label">待开始</text> <text class="label">待开始</text>

View File

@ -133,6 +133,70 @@
</template> </template>
</view> </view>
<view class="setup-modal-mask" v-if="showSetupModal" catchtouchmove="true">
<view class="setup-modal-content">
<image class="modal-bg"
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ac2cb4aa-a7c5-4776-98f4-b77e9c0cfa85.png">
</image>
<view class="modal-header">
<text>温馨提示</text>
</view>
<view class="modal-body">
<text class="modal-subtitle">发布服务请完善以下资料</text>
<view class="missing-list">
<view class="missing-item" v-if="!hasBusinessTime">
<view class="item-left">
<image class="item-icon"
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21b26b44-5e36-4291-8900-705a3d5bfa90.png">
</image>
<view class="item-texts">
<text class="item-title">营业时间未配置</text>
<text class="item-desc">请完善店铺的营业时间</text>
</view>
</view>
<view class="item-right orange" @tap="goToBusinessTime">去配置</view>
</view>
<view class="missing-item" v-if="!hasServiceSkill">
<view class="item-left">
<image class="item-icon"
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21b26b44-5e36-4291-8900-705a3d5bfa90.png">
</image>
<view class="item-texts">
<text class="item-title">服务技能未配置</text>
<text class="item-desc">请完善服务技能</text>
</view>
</view>
<view class="item-right orange" @tap="goToServiceSkill">去配置</view>
</view>
<view class="missing-item" v-if="!isCertified">
<view class="item-left">
<image class="item-icon"
:src="isUnderReview ? 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25c444be-a66e-45d6-b50d-922149ff059f.png' : 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21b26b44-5e36-4291-8900-705a3d5bfa90.png'">
</image>
<view class="item-texts">
<text class="item-title" :class="{ 'blue-text': isUnderReview }">{{ isUnderReview ?
'资质认证中' : '资质未认证' }}</text>
<text class="item-desc">请完成资质认证</text>
</view>
</view>
<view class="item-right" :class="isUnderReview ? 'grey' : 'light-green'" @tap="goToAuth">
{{ isUnderReview ? '查看进度' : '去认证' }}
</view>
</view>
</view>
</view>
<view class="modal-footer">
<view class="btn-know" @tap="closeSetupModal">知道了</view>
</view>
</view>
</view>
<tipsPopup2 :show="tipShow" @closePopup="closePopup" sureText="确认" @okBtn="okBtn"> <tipsPopup2 :show="tipShow" @closePopup="closePopup" sureText="确认" @okBtn="okBtn">
{{ tipsText }} {{ tipsText }}
</tipsPopup2> </tipsPopup2>
@ -325,6 +389,8 @@ export default {
inviteList: [], inviteList: [],
// //
stopUseModal: false, stopUseModal: false,
showSetupModal: false,
authDetails: null,
}; };
}, },
onPageScroll(e) { onPageScroll(e) {
@ -343,6 +409,37 @@ export default {
return this.userInfo?.is_ok === 2; return this.userInfo?.is_ok === 2;
}, },
// (> 0 )
isCertified() {
if (!this.isLogin || typeof this.userInfo.id_type === 'undefined') return false;
return this.userInfo.id_type > 0;
},
//
isSettled() {
if (!this.isLogin || typeof this.userInfo.id_type === 'undefined') return false;
return this.userInfo.id_type !== 0;
},
//
isUnderReview() {
if (!this.isLogin) return false;
if (this.authDetails && Object.keys(this.authDetails).length > 0) {
return true;
}
return false;
},
//
hasServiceSkill() {
const fromUser = this.userInfo && Array.isArray(this.userInfo.servers_kill) && this.userInfo.servers_kill.length > 0;
const fromAuth = this.authDetails && Array.isArray(this.authDetails.servers_kill) && this.authDetails.servers_kill.length > 0;
return this.isLogin && (fromUser || fromAuth);
},
//
hasBusinessTime() {
const timeFromUser = this.userInfo && this.userInfo.business_time;
const timeFromAuth = this.authDetails && this.authDetails.business_time;
return this.isLogin && !!(timeFromUser || timeFromAuth);
},
currentCardList() { currentCardList() {
return this.cardList return this.cardList
.filter((card) => this.checkShow(card)) .filter((card) => this.checkShow(card))
@ -671,9 +768,24 @@ export default {
"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4b558456-2e38-4185-8713-d1f0e6645820.png"; "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4b558456-2e38-4185-8713-d1f0e6645820.png";
} }
} }
//
if (this.isSettled) {
this.fetchAuthDetails();
}
}); });
this.getInviteList(); this.getInviteList();
}, },
//
fetchAuthDetails() {
request.post("/sj/userSjAuth/details", {
type: 1,
id_type: '1'
}).then(res => {
if (res.code == 200 && res.data) {
this.authDetails = res.data;
}
});
},
async goLogin() { async goLogin() {
// 访 // 访
if (this.isAccountDisabled) { if (this.isAccountDisabled) {
@ -761,11 +873,8 @@ export default {
url: `${item.path}?type=${item.type}`, url: `${item.path}?type=${item.type}`,
}); });
} else { } else {
if (item.go_id_type == 1 && this.userInfo?.id_type == 0) { if (item.go_id_type == 1 && (!this.isCertified || !this.hasBusinessTime || !this.hasServiceSkill)) {
uni.showToast({ this.showSetupModal = true;
title: `您暂未入驻,无法使用${item.title}`,
icon: "none",
});
return; return;
} }
if (!this.isLogin && item.go_id_type) { if (!this.isLogin && item.go_id_type) {
@ -803,12 +912,17 @@ export default {
url: '/pages/ruzhu/ruzhu' url: '/pages/ruzhu/ruzhu'
}); });
} else if (idType > 0 && credentialsState === 0) { } else if (idType > 0 && credentialsState === 0) {
// + // +
uni.navigateTo({ uni.navigateTo({
url: '/pages/shop/qualification_sj_change' url: '/pages/shop/qualification_sj_change'
}); });
} else if (idType > 0 && credentialsState === 1) { } else if (idType > 0 && credentialsState === 1) {
// + // +
uni.navigateTo({
url: '/pages/shop/qualification_sj_change'
});
} else if (idType > 0 && credentialsState === 2) {
// +
uni.navigateTo({ uni.navigateTo({
url: '/pages/shop/qualification_sj_change' url: '/pages/shop/qualification_sj_change'
}); });
@ -819,6 +933,39 @@ export default {
}); });
} }
}, },
closeSetupModal() {
this.showSetupModal = false;
},
goToBusinessTime() {
this.showSetupModal = false;
uni.navigateTo({
url: '/pages/shop/business-time'
});
},
goToServiceSkill() {
this.showSetupModal = false;
uni.navigateTo({
url: '/pages/shop/service-skills'
});
},
goToAuth() {
this.showSetupModal = false;
if (this.isUnderReview) {
uni.navigateTo({
url: '/pages/ruzhu/ruzhu?type=1'
});
} else {
if (this.isSettled) {
uni.navigateTo({
url: '/pages/ruzhu/ruzhu?step=3'
});
} else {
uni.navigateTo({
url: '/pages/ruzhu/ruzhu'
});
}
}
},
goToInviteList() { goToInviteList() {
// 访 // 访
if (this.isAccountDisabled) { if (this.isAccountDisabled) {
@ -1562,4 +1709,151 @@ button::after {
width: 100%; width: 100%;
} }
} }
/* ============ 提示弹窗样式 ============ */
.setup-modal-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
.setup-modal-content {
width: 630rpx;
height: 775rpx;
background: #FFFFFF;
border-radius: 32rpx;
position: relative;
display: flex;
flex-direction: column;
.modal-bg {
position: absolute;
top: 0;
left: 0;
width: 630rpx;
height: 265rpx;
z-index: 0;
}
.modal-header {
position: relative;
z-index: 1;
height: 150rpx;
display: flex;
align-items: flex-end;
justify-content: center;
padding-bottom: 20rpx;
text {
font-size: 36rpx;
font-weight: bold;
color: #333333;
letter-spacing: 2rpx;
}
}
.modal-body {
position: relative;
z-index: 1;
flex: 1;
padding: 24rpx 40rpx;
.modal-subtitle {
font-size: 28rpx;
color: #333333;
margin-bottom: 40rpx;
display: block;
}
.missing-list {
display: flex;
flex-direction: column;
gap: 46rpx;
.missing-item {
display: flex;
justify-content: space-between;
align-items: center;
.item-left {
display: flex;
align-items: flex-start;
.item-icon {
width: 32rpx;
height: 32rpx;
margin-right: 16rpx;
flex-shrink: 0;
margin-top: 6rpx;
}
.item-texts {
display: flex;
flex-direction: column;
.item-title {
font-size: 30rpx;
color: #333333;
font-weight: 500;
margin-bottom: 8rpx;
&.blue-text {
color: #2b85e4;
}
}
.item-desc {
font-size: 24rpx;
color: #999999;
}
}
}
.item-right {
font-size: 26rpx;
font-weight: 400;
margin-top: -45rpx;
&.orange {
color: #FF7B00;
}
&.grey {
color: #999999;
}
&.light-green {
color: #5CAC81;
}
}
}
}
}
.modal-footer {
position: relative;
z-index: 1;
padding: 0 50rpx 50rpx;
.btn-know {
width: 100%;
height: 88rpx;
background: #FF4767;
border-radius: 44rpx;
color: #FFFFFF;
font-size: 32rpx;
font-weight: 500;
display: flex;
align-items: center;
justify-content: center;
}
}
}
}
</style> </style>

View File

@ -95,13 +95,13 @@
</template> </template>
<script> <script>
import request from '../../utils/request'; import request from '../../utils/request';
import StepTab from '@/components/step-tab/step-tab.vue'; import StepTab from '@/components/step-tab/step-tab.vue';
import QualificationInfo from './qualification_sj.vue'; import QualificationInfo from './qualification_sj.vue';
import StoreInfo from './sj-info.vue'; import StoreInfo from './sj-info.vue';
import successruzhu from './successruzhu.vue'; import successruzhu from './successruzhu.vue';
export default { export default {
components: { components: {
StepTab, StepTab,
QualificationInfo, QualificationInfo,
@ -110,7 +110,7 @@
}, },
data() { data() {
return { return {
currentStep: 0, // currentStep: 3, //
isAgree: false, isAgree: false,
identity: null, identity: null,
textData: {}, textData: {},
@ -623,62 +623,62 @@
} }
}, },
} }
} }
</script> </script>
<style> <style>
/* ...与原来一致的代码... */ /* ...与原来一致的代码... */
.ruzhu-page { .ruzhu-page {
background: #f5f5f5; background: #f5f5f5;
} }
.content { .content {
padding: 20rpx 20rpx 50rpx 20rpx; padding: 20rpx 20rpx 50rpx 20rpx;
box-sizing: border-box; box-sizing: border-box;
} }
.xieyi_content { .xieyi_content {
padding: 20rpx; padding: 20rpx;
background: #ffffff; background: #ffffff;
border-radius: 20rpx; border-radius: 20rpx;
} }
.ruzhu-cont { .ruzhu-cont {
padding: 24rpx; padding: 24rpx;
background-color: #fff; background-color: #fff;
} }
.ruzhu-text { .ruzhu-text {
font-size: 28rpx; font-size: 28rpx;
color: #3D3D3D; color: #3D3D3D;
font-weight: 400; font-weight: 400;
} }
.kong { .kong {
width: 100vw; width: 100vw;
height: 180rpx; height: 180rpx;
} }
/* 底部按钮区域样式 */ /* 底部按钮区域样式 */
.bottom-fixed { .bottom-fixed {
position: fixed; position: fixed;
left: 0; left: 0;
bottom: 0; bottom: 0;
right: 0; right: 0;
background-color: #ffffff; background-color: #ffffff;
padding: 24rpx 0; padding: 24rpx 0;
} }
/* 步骤0按钮布局 */ /* 步骤0按钮布局 */
.step-0-buttons { .step-0-buttons {
display: flex; display: flex;
flex-flow: column nowrap; flex-flow: column nowrap;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
/* 步骤0中的下一步按钮*/ /* 步骤0中的下一步按钮*/
.step-0-buttons .next-btn { .step-0-buttons .next-btn {
width: 702rpx; width: 702rpx;
height: 98rpx !important; height: 98rpx !important;
display: flex; display: flex;
@ -686,24 +686,24 @@
align-items: center; align-items: center;
background: #FF4767; background: #FF4767;
border-radius: 49rpx; border-radius: 49rpx;
} }
.step-0-buttons .next-text { .step-0-buttons .next-text {
color: #ffffff; color: #ffffff;
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
} }
/* 步骤1和步骤2按钮布局 */ /* 步骤1和步骤2按钮布局 */
.step-1-buttons, .step-1-buttons,
.step-2-buttons { .step-2-buttons {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
/* 步骤1中的按钮 */ /* 步骤1中的按钮 */
.step-1-buttons .next-btn { .step-1-buttons .next-btn {
flex: 1; flex: 1;
height: 98rpx; height: 98rpx;
display: flex; display: flex;
@ -711,16 +711,16 @@
align-items: center; align-items: center;
background: #FF4767; background: #FF4767;
border-radius: 49rpx; border-radius: 49rpx;
} }
.step-1-buttons .next-text { .step-1-buttons .next-text {
color: #ffffff; color: #ffffff;
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
} }
/* 步骤2中的提交按钮 */ /* 步骤2中的提交按钮 */
.step-2-buttons .submit-btn { .step-2-buttons .submit-btn {
flex: 1; flex: 1;
height: 98rpx; height: 98rpx;
display: flex; display: flex;
@ -728,16 +728,16 @@
align-items: center; align-items: center;
background: linear-gradient(180deg, #ff8e9d 0%, #FF4767 100%); background: linear-gradient(180deg, #ff8e9d 0%, #FF4767 100%);
border-radius: 49rpx; border-radius: 49rpx;
} }
.step-2-buttons .submit-text { .step-2-buttons .submit-text {
color: #ffffff; color: #ffffff;
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
} }
/* 上一步按钮 - 统一所有步骤中的样式 */ /* 上一步按钮 - 统一所有步骤中的样式 */
.prev-btn { .prev-btn {
width: 249rpx; width: 249rpx;
height: 98rpx; height: 98rpx;
display: flex; display: flex;
@ -745,69 +745,69 @@
align-items: center; align-items: center;
background-color: #f8f8f8; background-color: #f8f8f8;
border-radius: 60rpx; border-radius: 60rpx;
} }
.prev-text { .prev-text {
color: #FF4767; color: #FF4767;
font-size: 36rpx; font-size: 36rpx;
font-weight: 500; font-weight: 500;
} }
.button-row { .button-row {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
width: 702rpx; width: 702rpx;
height: 147rpx; height: 147rpx;
gap: 20rpx; gap: 20rpx;
} }
.agree { .agree {
display: flex; display: flex;
flex-flow: row nowrap; flex-flow: row nowrap;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin-bottom: 24rpx; margin-bottom: 24rpx;
} }
.agree-btn { .agree-btn {
width: 32rpx; width: 32rpx;
height: 32rpx; height: 32rpx;
margin-right: 13rpx; margin-right: 13rpx;
} }
.agree-tip { .agree-tip {
font-size: 26rpx; font-size: 26rpx;
font-weight: 400; font-weight: 400;
color: #666666; color: #666666;
} }
.next-text { .next-text {
color: #ffffff; color: #ffffff;
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
} }
.prev-text { .prev-text {
color: #333; color: #333;
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
} }
.submit-text { .submit-text {
color: #ffffff; color: #ffffff;
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
} }
.showziliao { .showziliao {
width: 690rpx; width: 690rpx;
height: 98rpx; height: 98rpx;
background: #FF4767; background: #FF4767;
border-radius: 49rpx; border-radius: 49rpx;
} }
.showziliaotext { .showziliaotext {
height: 40rpx; height: 40rpx;
font-family: PingFangSC, PingFang SC; font-family: PingFangSC, PingFang SC;
font-weight: 500; font-weight: 500;
@ -817,5 +817,5 @@
font-style: normal; font-style: normal;
margin: 0 0 0 281rpx; margin: 0 0 0 281rpx;
align-items: center; align-items: center;
} }
</style> </style>

View File

@ -138,7 +138,7 @@
<view class="detail-textarea-wrap"> <view class="detail-textarea-wrap">
<textarea class="detail-textarea" v-model="detailForm.effect" placeholder="请输入服务内容" <textarea class="detail-textarea" v-model="detailForm.effect" placeholder="请输入服务内容"
placeholder-class="placeholder" maxlength="200"></textarea> placeholder-class="placeholder" maxlength="200"></textarea>
<text class="detail-count">{{(detailForm.effect || '').length}}/200</text> <text class="detail-count">{{ (detailForm.effect || '').length }}/200</text>
</view> </view>
</view> </view>
@ -148,7 +148,7 @@
<textarea class="detail-textarea" v-model="detailForm.crowd" <textarea class="detail-textarea" v-model="detailForm.crowd"
placeholder="请输入不适用人群,例如:未成年人/孕妇不适用" placeholder-class="placeholder" placeholder="请输入不适用人群,例如:未成年人/孕妇不适用" placeholder-class="placeholder"
maxlength="200"></textarea> maxlength="200"></textarea>
<text class="detail-count">{{(detailForm.crowd || '').length}}/200</text> <text class="detail-count">{{ (detailForm.crowd || '').length }}/200</text>
</view> </view>
</view> </view>
@ -157,7 +157,7 @@
<view class="detail-textarea-wrap"> <view class="detail-textarea-wrap">
<textarea class="detail-textarea" v-model="detailForm.product" placeholder="请输入产品清单" <textarea class="detail-textarea" v-model="detailForm.product" placeholder="请输入产品清单"
placeholder-class="placeholder" maxlength="200"></textarea> placeholder-class="placeholder" maxlength="200"></textarea>
<text class="detail-count">{{(detailForm.product || '').length}}/200</text> <text class="detail-count">{{ (detailForm.product || '').length }}/200</text>
</view> </view>
</view> </view>
@ -166,7 +166,7 @@
<view class="detail-textarea-wrap"> <view class="detail-textarea-wrap">
<textarea class="detail-textarea" v-model="detailForm.scope" placeholder="请输入使用时间/适用人数" <textarea class="detail-textarea" v-model="detailForm.scope" placeholder="请输入使用时间/适用人数"
placeholder-class="placeholder" maxlength="200"></textarea> placeholder-class="placeholder" maxlength="200"></textarea>
<text class="detail-count">{{(detailForm.scope || '').length}}/200</text> <text class="detail-count">{{ (detailForm.scope || '').length }}/200</text>
</view> </view>
</view> </view>
@ -175,7 +175,7 @@
<view class="detail-textarea-wrap"> <view class="detail-textarea-wrap">
<textarea class="detail-textarea" v-model="detailForm.tips" placeholder="请输入其他注意事项" <textarea class="detail-textarea" v-model="detailForm.tips" placeholder="请输入其他注意事项"
placeholder-class="placeholder" maxlength="200"></textarea> placeholder-class="placeholder" maxlength="200"></textarea>
<text class="detail-count">{{(detailForm.tips || '').length}}/200</text> <text class="detail-count">{{ (detailForm.tips || '').length }}/200</text>
</view> </view>
</view> </view>
</view> </view>
@ -282,20 +282,20 @@
</template> </template>
<script> <script>
import request from "../../utils/request"; import request from "../../utils/request";
import PopupPicker from "@/components/popup-picker/popup-picker.vue"; import PopupPicker from "@/components/popup-picker/popup-picker.vue";
import PopupPickerMy from "@/components/popup-picker/PopupPickerMy.vue"; import PopupPickerMy from "@/components/popup-picker/PopupPickerMy.vue";
import CircleProgress from "@/components/circle-progress/circle-progress.vue"; import CircleProgress from "@/components/circle-progress/circle-progress.vue";
import sparkMD5 from "spark-md5"; // MD5 import sparkMD5 from "spark-md5"; // MD5
import { import {
debounce debounce
} from "@/utils/debounce.js"; } from "@/utils/debounce.js";
import AliOssUploader from "../../components/ali-oss-uploader/ali-oss-uploader.vue"; import AliOssUploader from "../../components/ali-oss-uploader/ali-oss-uploader.vue";
import permissionUtils from "../../utils/per"; import permissionUtils from "../../utils/per";
import locationService from "../../utils/locationService"; import locationService from "../../utils/locationService";
import _public from "../../utils/public"; import _public from "../../utils/public";
export default { export default {
components: { components: {
PopupPicker, PopupPicker,
CircleProgress, CircleProgress,
@ -534,7 +534,7 @@
uploadVideoSuc(file) { uploadVideoSuc(file) {
this.formData.video = file; this.formData.video = file;
}, },
uploadVideoErr() {}, uploadVideoErr() { },
uploadVideoDel() { uploadVideoDel() {
this.formData.video = null; this.formData.video = null;
}, },
@ -587,7 +587,7 @@
getUserInfo() { getUserInfo() {
const type = this.artisanType == 1 ? 2 : this.artisanType == 2 ? 3 : 1; const type = this.artisanType == 1 ? 2 : this.artisanType == 2 ? 3 : 1;
request request
.post("/user/getuser", { .post("/sj/user/getuser", {
type: type, type: type,
}) })
.then((result) => { .then((result) => {
@ -641,7 +641,7 @@
}, },
// 稿 // 稿
saveDraft: debounce(function() { saveDraft: debounce(function () {
if (this.isDraft) return; if (this.isDraft) return;
this.syncDetailForm(); this.syncDetailForm();
const { const {
@ -723,7 +723,7 @@
}, 500), }, 500),
// //
submitForm: debounce(function() { submitForm: debounce(function () {
if (this.isAdd) return; if (this.isAdd) return;
this.syncDetailForm(); this.syncDetailForm();
// //
@ -942,20 +942,20 @@
this.category = selectedCategory.title; this.category = selectedCategory.title;
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.add-service { .add-service {
padding: 24rpx 24rpx 0; padding: 24rpx 24rpx 0;
box-sizing: border-box; box-sizing: border-box;
} }
.form-container { .form-container {
margin-top: 20rpx; margin-top: 20rpx;
} }
.form-item { .form-item {
background-color: #fff; background-color: #fff;
padding: 24rpx; padding: 24rpx;
display: flex; display: flex;
@ -965,9 +965,9 @@
box-sizing: border-box; box-sizing: border-box;
border-radius: 10rpx; border-radius: 10rpx;
margin-bottom: 24rpx; margin-bottom: 24rpx;
} }
.price-tip { .price-tip {
width: 100%; width: 100%;
margin-top: 40rpx; margin-top: 40rpx;
@ -980,38 +980,38 @@
color: #EE4853; color: #EE4853;
line-height: 33rpx; line-height: 33rpx;
} }
} }
.shopsale-box { .shopsale-box {
flex-flow: column; flex-flow: column;
justify-content: space-between; justify-content: space-between;
align-items: space-between; align-items: space-between;
} }
.shopsale-change { .shopsale-change {
display: flex; display: flex;
flex-flow: row nowrap; flex-flow: row nowrap;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-top: 24rpx; margin-top: 24rpx;
} }
.shopsale-option { .shopsale-option {
display: flex; display: flex;
flex-flow: row nowrap; flex-flow: row nowrap;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.shopsale-option:last-child { .shopsale-option:last-child {
margin-left: 220rpx; margin-left: 220rpx;
} }
.option-text { .option-text {
padding-left: 16rpx; padding-left: 16rpx;
} }
.form-item-up { .form-item-up {
background-color: #fff; background-color: #fff;
padding: 24rpx; padding: 24rpx;
display: flex; display: flex;
@ -1021,69 +1021,69 @@
box-sizing: border-box; box-sizing: border-box;
border-radius: 10rpx; border-radius: 10rpx;
margin-bottom: 24rpx; margin-bottom: 24rpx;
} }
.form-label { .form-label {
font-size: 28rpx; font-size: 28rpx;
color: #333333; color: #333333;
} }
.form-input { .form-input {
flex: 1; flex: 1;
height: 40rpx; height: 40rpx;
font-size: 28rpx; font-size: 28rpx;
color: #333333; color: #333333;
align-items: center; align-items: center;
text-align: center; text-align: center;
} }
.form-right { .form-right {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.form-value { .form-value {
font-size: 28rpx; font-size: 28rpx;
color: #333333; color: #333333;
margin-right: 16rpx; margin-right: 16rpx;
} }
.placeholder { .placeholder {
font-weight: 400; font-weight: 400;
font-size: 28rpx; font-size: 28rpx;
color: #999999; color: #999999;
} }
.textarea-item { .textarea-item {
padding-bottom: 30rpx; padding-bottom: 30rpx;
} }
.form-textarea { .form-textarea {
flex: 1; flex: 1;
height: 198rpx; height: 198rpx;
font-size: 28rpx; font-size: 28rpx;
color: #333333; color: #333333;
line-height: 1.5; line-height: 1.5;
margin-left: 32rpx; margin-left: 32rpx;
} }
.upload-item { .upload-item {
padding-bottom: 30rpx; padding-bottom: 30rpx;
} }
.upload-tip { .upload-tip {
font-size: 24rpx; font-size: 24rpx;
color: #999999; color: #999999;
margin-left: 10rpx; margin-left: 10rpx;
} }
.upload-content { .upload-content {
margin-top: 20rpx; margin-top: 20rpx;
position: relative; position: relative;
} }
.progress-box { .progress-box {
width: 204rpx; width: 204rpx;
height: 204rpx; height: 204rpx;
background-color: rgba(0, 0, 0, 0.5); background-color: rgba(0, 0, 0, 0.5);
@ -1096,58 +1096,58 @@
flex-flow: column nowrap; flex-flow: column nowrap;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.progress-text { .progress-text {
font-size: 42rpx; font-size: 42rpx;
color: #ffffff; color: #ffffff;
font-weight: 500; font-weight: 500;
} }
.progress-lable { .progress-lable {
font-size: 28rpx; font-size: 28rpx;
color: #ffffff; color: #ffffff;
} }
.progress-box progress { .progress-box progress {
/* width: 204rpx; */ /* width: 204rpx; */
position: absolute; position: absolute;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
} }
.video-preview, .video-preview,
.image-preview, .image-preview,
.upload-btn { .upload-btn {
width: 200rpx; width: 200rpx;
height: 200rpx; height: 200rpx;
margin-right: 10rpx; margin-right: 10rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
position: relative; position: relative;
} }
.preview-video, .preview-video,
.preview-image { .preview-image {
width: 200rpx; width: 200rpx;
height: 200rpx; height: 200rpx;
border-radius: 8rpx; border-radius: 8rpx;
} }
.upload-btn { .upload-btn {
border: 2rpx dashed #dddddd; border: 2rpx dashed #dddddd;
border-radius: 8rpx; border-radius: 8rpx;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.plus-icon { .plus-icon {
font-size: 60rpx; font-size: 60rpx;
color: #999999; color: #999999;
} }
.delete-btn { .delete-btn {
position: absolute; position: absolute;
top: -20rpx; top: -20rpx;
right: -20rpx; right: -20rpx;
@ -1160,9 +1160,9 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
font-size: 32rpx; font-size: 32rpx;
} }
.bottom-buttons { .bottom-buttons {
/* position: fixed; /* position: fixed;
left: 0; left: 0;
right: 0; right: 0;
@ -1174,10 +1174,10 @@
flex-flow: row nowrap; flex-flow: row nowrap;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.btn-draft, .btn-draft,
.btn-submit { .btn-submit {
width: 334rpx; width: 334rpx;
height: 76rpx; height: 76rpx;
line-height: 76rpx; line-height: 76rpx;
@ -1185,49 +1185,49 @@
font-size: 28rpx; font-size: 28rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin: 0 24rpx; margin: 0 24rpx;
} }
.btn-draft { .btn-draft {
background-color: #ffffff; background-color: #ffffff;
color: #FF4767; color: #FF4767;
border: 2rpx solid #FF4767; border: 2rpx solid #FF4767;
box-sizing: border-box; box-sizing: border-box;
} }
.btn-submit { .btn-submit {
background-color: #FF4767; background-color: #FF4767;
color: #ffffff; color: #ffffff;
width: 705rpx; width: 705rpx;
height: 76rpx; height: 76rpx;
} }
.form-step { .form-step {
background-color: #fff; background-color: #fff;
margin-bottom: 24rpx; margin-bottom: 24rpx;
} }
.form-step .form-item { .form-step .form-item {
margin-bottom: 0; margin-bottom: 0;
} }
.step { .step {
display: flex; display: flex;
flex-flow: row nowrap; flex-flow: row nowrap;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 0 24rpx 24rpx; padding: 0 24rpx 24rpx;
} }
.step-inp { .step-inp {
flex: 1; flex: 1;
font-size: 28rpx; font-size: 28rpx;
color: #333333; color: #333333;
margin-left: 38rpx; margin-left: 38rpx;
padding: 0 24rpx; padding: 0 24rpx;
background-color: rgba(230, 230, 230, 0.5); background-color: rgba(230, 230, 230, 0.5);
} }
.step-textarea { .step-textarea {
font-size: 24rpx; font-size: 24rpx;
flex: 1; flex: 1;
height: 70rpx; height: 70rpx;
@ -1235,10 +1235,10 @@
margin-left: 38rpx; margin-left: 38rpx;
padding: 24rpx; padding: 24rpx;
background-color: rgba(230, 230, 230, 0.5); background-color: rgba(230, 230, 230, 0.5);
} }
/* 选择器触发按钮样式 */ /* 选择器触发按钮样式 */
.picker-trigger { .picker-trigger {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@ -1246,85 +1246,85 @@
background-color: #ffffff; background-color: #ffffff;
border-radius: 12rpx; border-radius: 12rpx;
margin-bottom: 24rpx; margin-bottom: 24rpx;
} }
.picker-label { .picker-label {
font-size: 28rpx; font-size: 28rpx;
color: #333333; color: #333333;
} }
.picker-value { .picker-value {
font-size: 28rpx; font-size: 28rpx;
color: #666666; color: #666666;
} }
.picker-arrow { .picker-arrow {
width: 32rpx; width: 32rpx;
height: 32rpx; height: 32rpx;
margin-left: 16rpx; margin-left: 16rpx;
} }
.delete-icon { .delete-icon {
width: 32rpx; width: 32rpx;
height: 32rpx; height: 32rpx;
margin-left: 24rpx; margin-left: 24rpx;
} }
.form-detail { .form-detail {
position: relative; position: relative;
} }
.required::before { .required::before {
content: "*"; content: "*";
color: #ff0000; color: #ff0000;
margin-right: 4rpx; margin-right: 4rpx;
} }
.step-inp, .step-inp,
.form-input { .form-input {
height: 60rpx; height: 60rpx;
} }
// //
.detail-card { .detail-card {
background: #ffffff; background: #ffffff;
border-radius: 20rpx; border-radius: 20rpx;
padding: 0 24rpx 8rpx; padding: 0 24rpx 8rpx;
margin-bottom: 24rpx; margin-bottom: 24rpx;
box-sizing: border-box; box-sizing: border-box;
overflow: hidden; overflow: hidden;
} }
.detail-title { .detail-title {
padding: 24rpx 0 25rpx; padding: 24rpx 0 25rpx;
} }
.detail-title .form-label { .detail-title .form-label {
font-size: 30rpx; font-size: 30rpx;
font-weight: 500; font-weight: 500;
color: #333; color: #333;
line-height: 40rpx; line-height: 40rpx;
} }
.detail-row { .detail-row {
padding: 0 0 36rpx; padding: 0 0 36rpx;
} }
.detail-row .form-label { .detail-row .form-label {
display: block; display: block;
margin-bottom: 20rpx; margin-bottom: 20rpx;
line-height: 40rpx; line-height: 40rpx;
} }
.detail-textarea-wrap { .detail-textarea-wrap {
position: relative; position: relative;
background: #f7f7f7; background: #f7f7f7;
border-radius: 16rpx; border-radius: 16rpx;
padding: 24rpx 24rpx 52rpx; padding: 24rpx 24rpx 52rpx;
box-sizing: border-box; box-sizing: border-box;
} }
.detail-textarea { .detail-textarea {
width: 100%; width: 100%;
height: 108rpx; height: 108rpx;
min-height: 108rpx; min-height: 108rpx;
@ -1336,55 +1336,55 @@
line-height: 40rpx; line-height: 40rpx;
color: #333333; color: #333333;
box-sizing: border-box; box-sizing: border-box;
} }
.detail-count { .detail-count {
position: absolute; position: absolute;
right: 24rpx; right: 24rpx;
bottom: 16rpx; bottom: 16rpx;
font-size: 22rpx; font-size: 22rpx;
color: #999999; color: #999999;
line-height: 32rpx; line-height: 32rpx;
} }
/* 平台特定样式 */ /* 平台特定样式 */
/* #ifdef H5 */ /* #ifdef H5 */
.form-input, .form-input,
.form-textarea { .form-textarea {
outline: none; outline: none;
} }
.upload-btn { .upload-btn {
cursor: pointer; cursor: pointer;
} }
/* #endif */ /* #endif */
/* #ifdef APP-PLUS */ /* #ifdef APP-PLUS */
.form-input { .form-input {
height: 90rpx; height: 90rpx;
} }
.permission.transform { .permission.transform {
top: calc(var(--status-bar-height) + 88rpx + 30rpx); top: calc(var(--status-bar-height) + 88rpx + 30rpx);
opacity: 1; opacity: 1;
visibility: visible; visibility: visible;
} }
/* #endif */ /* #endif */
/* #ifdef MP-WEIXIN */ /* #ifdef MP-WEIXIN */
.form-input { .form-input {
height: 80rpx; height: 80rpx;
} }
.bottom-buttons { .bottom-buttons {
padding-bottom: env(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom);
} }
/* #endif */ /* #endif */
.tip { .tip {
padding: 20rpx 30rpx; padding: 20rpx 30rpx;
background: #feefec; background: #feefec;
font-weight: 400; font-weight: 400;
@ -1402,20 +1402,20 @@
margin-right: 10rpx; margin-right: 10rpx;
transform: translateY(6rpx); transform: translateY(6rpx);
} }
} }
/* 淡入淡出动画 */ /* 淡入淡出动画 */
.fade-enter-active, .fade-enter-active,
.fade-leave-active { .fade-leave-active {
transition: opacity 0.3s; transition: opacity 0.3s;
} }
.fade-enter, .fade-enter,
.fade-leave-to { .fade-leave-to {
opacity: 0; opacity: 0;
} }
.popup-mask2 { .popup-mask2 {
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
@ -1426,59 +1426,59 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.popup-content2 { .popup-content2 {
width: 600rpx; width: 600rpx;
background-color: #ffffff; background-color: #ffffff;
border-radius: 20rpx; border-radius: 20rpx;
overflow: hidden; overflow: hidden;
padding: 40rpx 30rpx; padding: 40rpx 30rpx;
box-sizing: border-box; box-sizing: border-box;
} }
.popup-title { .popup-title {
font-size: 36rpx; font-size: 36rpx;
font-weight: 600; font-weight: 600;
color: #333333; color: #333333;
text-align: center; text-align: center;
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
.popup-message { .popup-message {
font-size: 30rpx; font-size: 30rpx;
color: #666666; color: #666666;
text-align: center; text-align: center;
margin-top: 40rpx; margin-top: 40rpx;
margin-bottom: 30rpx; margin-bottom: 30rpx;
line-height: 1.5; line-height: 1.5;
} }
.popup-buttons { .popup-buttons {
display: flex; display: flex;
flex-flow: row nowrap; flex-flow: row nowrap;
justify-content: space-between; justify-content: space-between;
padding: 20rpx 0 0 0; padding: 20rpx 0 0 0;
gap: 60rpx; gap: 60rpx;
} }
.popup-btn { .popup-btn {
flex: 1; flex: 1;
height: 80rpx; height: 80rpx;
line-height: 80rpx; line-height: 80rpx;
text-align: center; text-align: center;
font-size: 26rpx; font-size: 26rpx;
border-radius: 40rpx; border-radius: 40rpx;
} }
.popup-btn-know { .popup-btn-know {
background-color: #FF4767; background-color: #FF4767;
color: #ffffff; color: #ffffff;
} }
.popup-btn-notshow { .popup-btn-notshow {
background-color: #ffffff; background-color: #ffffff;
color: #FF4767; color: #FF4767;
border: 1rpx #FF4767 solid; border: 1rpx #FF4767 solid;
} }
</style> </style>

View File

@ -169,16 +169,14 @@
<view class="radio-group"> <view class="radio-group">
<view class="radio-item" @click="editable && setIdcardValidType('permanent')"> <view class="radio-item" @click="editable && setIdcardValidType('permanent')">
<view class="radio" :class="{ checked: displayData.legal_idcard_expiry_type === 1 }"> <view class="radio" :class="{ checked: displayData.legal_idcard_expiry_type === 1 }">
<image v-if="displayData.legal_idcard_expiry_type === 1" <image v-if="displayData.legal_idcard_expiry_type === 1" src="/static/images/agree_y.png"
src="/static/images/agree_y.png"
class="radio-icon-image" mode="aspectFit"></image> class="radio-icon-image" mode="aspectFit"></image>
</view> </view>
<text class="radio-label">长久有效</text> <text class="radio-label">长久有效</text>
</view> </view>
<view class="radio-item" @click="editable && setIdcardValidType('date')"> <view class="radio-item" @click="editable && setIdcardValidType('date')">
<view class="radio" :class="{ checked: displayData.legal_idcard_expiry_type === 2 }"> <view class="radio" :class="{ checked: displayData.legal_idcard_expiry_type === 2 }">
<image v-if="displayData.legal_idcard_expiry_type === 2" <image v-if="displayData.legal_idcard_expiry_type === 2" src="/static/images/agree_y.png"
src="/static/images/agree_y.png"
class="radio-icon-image" mode="aspectFit"></image> class="radio-icon-image" mode="aspectFit"></image>
</view> </view>
<text class="radio-label">指定日期有效</text> <text class="radio-label">指定日期有效</text>
@ -313,8 +311,7 @@
<view class="radio-item" v-for="(item, index) in merchantTypeList" :key="index" <view class="radio-item" v-for="(item, index) in merchantTypeList" :key="index"
@click="selectMerchantType(item)"> @click="selectMerchantType(item)">
<view class="radio" :class="{ checked: displayData.uscc_type === item.value }"> <view class="radio" :class="{ checked: displayData.uscc_type === item.value }">
<image v-if="displayData.uscc_type === item.value" <image v-if="displayData.uscc_type === item.value" src="/static/images/agree_y.png"
src="/static/images/agree_y.png"
class="radio-icon-image" mode="aspectFit"></image> class="radio-icon-image" mode="aspectFit"></image>
</view> </view>
<text class="radio-label">{{ item.label }}</text> <text class="radio-label">{{ item.label }}</text>
@ -2724,23 +2721,40 @@ export default {
.popup-footer { .popup-footer {
margin-top: 32rpx; margin-top: 32rpx;
display: flex;
justify-content: space-between;
padding: 0 28rpx;
} }
.popup-btn { .popup-btn {
width: 280rpx;
height: 88rpx; height: 88rpx;
border-radius: 44rpx; border-radius: 44rpx;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
}
.popup-btn.confirm {
background: linear-gradient(180deg, #ff8e9d 0%, #FF4767 100%); background: linear-gradient(180deg, #ff8e9d 0%, #FF4767 100%);
} }
.popup-btn .btn-text { .popup-btn.cancel {
border: 2rpx solid #FF4767;
}
.popup-btn.confirm .btn-text {
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
color: #FFFFFF; color: #FFFFFF;
} }
.popup-btn.cancel .btn-text {
font-size: 32rpx;
font-weight: 500;
color: #FF4767;
}
.cancel-text, .cancel-text,
.confirm-text { .confirm-text {
font-size: 32rpx; font-size: 32rpx;

View File

@ -1,7 +1,7 @@
<template> <template>
<view class="container"> <view class="container">
<custom-navbar title="添加员工" :leftImg="'/static/images/back.png'" :showUser="true" <custom-navbar title="添加员工" :leftImg="'/static/images/back.png'" :showUser="true" backgroundColor="transparent"
backgroundColor="transparent" titleColor="#000" borderBottom="none"> titleColor="#000" borderBottom="none">
<template #right> <template #right>
<view class="navbar-right" @click="goRecord"> <view class="navbar-right" @click="goRecord">
<image class="navbar-right-img" src="/static/images/icons/record.png"></image> <image class="navbar-right-img" src="/static/images/icons/record.png"></image>
@ -9,10 +9,10 @@
</view> </view>
</template> </template>
</custom-navbar> </custom-navbar>
<searchBox placeholder="请输入员工手机号" class="searchBox" v-model="queryData.phone" bgClor="transparent" @confirm="search" <searchBox placeholder="请输入员工手机号" class="searchBox" v-model="queryData.phone" bgClor="transparent"
@search="search"> @confirm="search" @search="search">
</searchBox> </searchBox>
<scroll-view scroll-y :style="{ height:`calc(100vh - ${statusBarHeight + 200}rpx)`} "> <scroll-view scroll-y :style="{ height: `calc(100vh - ${statusBarHeight + 200}rpx)` }">
<view class="page-container" v-if="sryDetail && sryDetail.id"> <view class="page-container" v-if="sryDetail && sryDetail.id">
<!-- 个人信息栏 --> <!-- 个人信息栏 -->
<view class="user-info"> <view class="user-info">
@ -74,7 +74,8 @@
</view> </view>
<view class="" style="height: 200rpx;"></view> <view class="" style="height: 200rpx;"></view>
<view class="agreement-footer" @click="sjinvitesyr" v-if="sryDetail && sryDetail.id && sryDetail.bind_state!=1"> <view class="agreement-footer" @click="sjinvitesyr"
v-if="sryDetail && sryDetail.id && sryDetail.bind_state != 1">
<view class="agreement-btn">邀请员工</view> <view class="agreement-btn">邀请员工</view>
</view> </view>
</scroll-view> </scroll-view>
@ -83,9 +84,9 @@
</template> </template>
<script> <script>
import request from "@/utils/request"; import request from "@/utils/request";
import searchBox from "./components/search-box.vue"; import searchBox from "./components/search-box.vue";
export default { export default {
name: "addStaff", name: "addStaff",
components: { components: {
searchBox, searchBox,
@ -95,8 +96,8 @@
queryData: { queryData: {
phone: "", phone: "",
}, },
statusBarHeight:0, statusBarHeight: 0,
isSubmit:false, isSubmit: false,
sryDetail: {}, sryDetail: {},
serversList: {}, serversList: {},
}; };
@ -104,7 +105,7 @@
async onLoad(options) { async onLoad(options) {
this.statusBarHeight = this.getRpxStatusBarHeight(); this.statusBarHeight = this.getRpxStatusBarHeight();
let type = 3; let type = 3;
let result = await request.post("/user/getuser", { let result = await request.post("/sj/user/getuser", {
type, type,
}); });
this.userInfo = result.data; this.userInfo = result.data;
@ -146,7 +147,7 @@
this.sryDetail.servers_kill_arr_text = this.sryDetail.servers_kill_arr_text =
this.sryDetail.servers_kill_arr.join("、"); this.sryDetail.servers_kill_arr.join("、");
} }
}else{ } else {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
duration: 2000, duration: 2000,
@ -174,7 +175,7 @@
syr_id: this.sryDetail.id, syr_id: this.sryDetail.id,
service_data: this.mergeServiceList.map(item => item.id), service_data: this.mergeServiceList.map(item => item.id),
} }
if(this.isSubmit){ if (this.isSubmit) {
return return
} }
this.isSubmit = true this.isSubmit = true
@ -190,13 +191,13 @@
}); });
} }
}); });
}else{ } else {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
icon: "none", icon: "none",
}); });
} }
}).finally(()=>{ }).finally(() => {
this.isSubmit = false this.isSubmit = false
}); });
}, },
@ -211,11 +212,11 @@
}); });
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.container { .container {
position: relative; position: relative;
background-image: url("/static/images/background/bj2.png"); background-image: url("/static/images/background/bj2.png");
background-size: 100% auto; background-size: 100% auto;
@ -256,9 +257,9 @@
padding: 18rpx 24rpx 0 20rpx; padding: 18rpx 24rpx 0 20rpx;
} }
} }
} }
.page-container { .page-container {
padding: 0rpx 20rpx 0 20rpx; padding: 0rpx 20rpx 0 20rpx;
// //
@ -422,15 +423,16 @@
} }
} }
} }
} }
.agreement-footer { .agreement-footer {
padding: 20rpx 20rpx 50rpx 20rpx; padding: 20rpx 20rpx 50rpx 20rpx;
position: fixed; position: fixed;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
background-color: #ffffff; background-color: #ffffff;
.agreement-btn { .agreement-btn {
width: 710rpx; width: 710rpx;
height: 98rpx; height: 98rpx;
@ -446,16 +448,16 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
} }
::v-deep .right-area { ::v-deep .right-area {
width: 120rpx !important; width: 120rpx !important;
height: auto !important; height: auto !important;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} }
.navbar-right { .navbar-right {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column; flex-direction: column;
@ -476,13 +478,13 @@
font-style: normal; font-style: normal;
white-space: nowrap; white-space: nowrap;
} }
} }
.searchBox{ .searchBox {
padding: 18rpx 30rpx 30rpx 30rpx; padding: 18rpx 30rpx 30rpx 30rpx;
} }
::v-deep .navbar-content .title{ ::v-deep .navbar-content .title {
margin-left: 20rpx!important; margin-left: 20rpx !important;
} }
</style> </style>

View File

@ -1,7 +1,8 @@
<template> <template>
<view class="container"> <view class="container">
<custom-navbar title="给员工分配服务" :leftImg="'/static/images/whiteBack.png'" :showUser="true" <custom-navbar title="给员工分配服务" :leftImg="'/static/images/whiteBack.png'" :showUser="true"
backgroundColor="linear-gradient( 134deg, #F52540 0%, #FF4767 100%)" titleColor="#fff" borderBottom="none"></custom-navbar> backgroundColor="linear-gradient( 134deg, #F52540 0%, #FF4767 100%)" titleColor="#fff"
borderBottom="none"></custom-navbar>
<searchBox placeholder="服务名称" v-model="queryData.title" :showAdd="false" @confirm="search" @search="search"> <searchBox placeholder="服务名称" v-model="queryData.title" :showAdd="false" @confirm="search" @search="search">
</searchBox> </searchBox>
<view class="container-tip flex-row-center"> <view class="container-tip flex-row-center">
@ -22,8 +23,8 @@
</view> </view>
<view class="flex-row-center"> <view class="flex-row-center">
<text class="item-left-text2" style="color: #FF4767">¥</text> <text class="item-left-text2" style="color: #FF4767">¥</text>
<text class="item-left-text2" <text class="item-left-text2" style="color: #FF4767; font-size: 28rpx">{{
style="color: #FF4767; font-size: 28rpx">{{ item.server_price }}</text> item.server_price }}</text>
</view> </view>
</view> </view>
</view> </view>
@ -43,10 +44,10 @@
</template> </template>
<script> <script>
import request from "@/utils/request"; import request from "@/utils/request";
import searchBox from "./components/search-box.vue"; import searchBox from "./components/search-box.vue";
import CommonList from "@/components/common/CommonList.vue"; import CommonList from "@/components/common/CommonList.vue";
export default { export default {
components: { components: {
searchBox, searchBox,
CommonList, CommonList,
@ -62,7 +63,7 @@
}, },
async onLoad(options) { async onLoad(options) {
let type = 3; let type = 3;
let result = await request.post("/user/getuser", { let result = await request.post("/sj/user/getuser", {
type, type,
}); });
this.userInfo = result.data; this.userInfo = result.data;
@ -82,11 +83,11 @@
}); });
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.container { .container {
.container-tip { .container-tip {
width: 750rpx; width: 750rpx;
padding: 27rpx 16rpx 22rpx 32rpx; padding: 27rpx 16rpx 22rpx 32rpx;
@ -180,19 +181,19 @@
} }
} }
} }
} }
.common-list { .common-list {
background: #f5f5f5 !important; background: #f5f5f5 !important;
border-radius: 30rpx !important; border-radius: 30rpx !important;
padding-bottom: 0 !important; padding-bottom: 0 !important;
} }
::v-deep .list-container { ::v-deep .list-container {
padding: 0 !important; padding: 0 !important;
} }
::v-deep .list-scroll { ::v-deep .list-scroll {
margin-top: 0 !important; margin-top: 0 !important;
} }
</style> </style>

View File

@ -4,8 +4,8 @@
backgroundColor="linear-gradient( 134deg, #F52540 0%, #FF4767 100%)" backgroundColor="linear-gradient( 134deg, #F52540 0%, #FF4767 100%)"
headleSrc="/static/images/recruit/guide.png" :showHeadle="false" titleColor="#fff" borderBottom="none" headleSrc="/static/images/recruit/guide.png" :showHeadle="false" titleColor="#fff" borderBottom="none"
@onHeadleClick="openPop"></custom-navbar> @onHeadleClick="openPop"></custom-navbar>
<searchBox placeholder="手艺人名字/手机号" v-model="queryData.nameorphone" :showAdd="true" @confirm="search" @search="search" <searchBox placeholder="手艺人名字/手机号" v-model="queryData.nameorphone" :showAdd="true" @confirm="search"
@add="goAddStaff"> @search="search" @add="goAddStaff">
</searchBox> </searchBox>
<!-- Tab 内容区域 --> <!-- Tab 内容区域 -->
@ -20,20 +20,22 @@
:listScrollHeight="`calc(100vh - ${statusBarHeight + 350}rpx)`"> :listScrollHeight="`calc(100vh - ${statusBarHeight + 350}rpx)`">
<template #listData="{ list }"> <template #listData="{ list }">
<view class="scoll-lists"> <view class="scoll-lists">
<view class="list-item" v-for="(item, index) in list" :key="index" @click="goDetail(item)" v-if="item.syr"> <view class="list-item" v-for="(item, index) in list" :key="index" @click="goDetail(item)"
v-if="item.syr">
<view class="item-left"> <view class="item-left">
<image :src="item.syr.head_photo" class="item-left-img" mode="aspectFill"></image> <image :src="item.syr.head_photo" class="item-left-img" mode="aspectFill"></image>
<view class="item-left-tab flex-row-center-center" :class="{noTab:item.state==2}">{{ typName(item.state) }}</view> <view class="item-left-tab flex-row-center-center" :class="{ noTab: item.state == 2 }">{{
typName(item.state) }}</view>
</view> </view>
<view class="item-right"> <view class="item-right">
<view class="item-right-text1 flex-row-center-between"> <view class="item-right-text1 flex-row-center-between">
<text>{{ item.syr.name }}</text> <text>{{ item.syr.name }}</text>
<view class="switch-box" @click.stop="handleSwitchChange(item)" <view class="switch-box" @click.stop="handleSwitchChange(item)"
:class="{ disswitch: item.sj_state!=1 }" v-if="item.state==1"> :class="{ disswitch: item.sj_state != 1 }" v-if="item.state == 1">
<text class="switch-text" v-if="item.sj_state==1">接单</text> <text class="switch-text" v-if="item.sj_state == 1">接单</text>
<view class="switch-yuan"></view> <view class="switch-yuan"></view>
<text class="switch-text" v-if="item.sj_state!=1">不接单</text> <text class="switch-text" v-if="item.sj_state != 1">不接单</text>
</view> </view>
</view> </view>
<view class="item-right-text2">绑定时间: {{ item.bind_time }}</view> <view class="item-right-text2">绑定时间: {{ item.bind_time }}</view>
@ -75,17 +77,17 @@
</template> </template>
<script> <script>
import request from "@/utils/request"; import request from "@/utils/request";
import searchBox from "./components/search-box.vue"; import searchBox from "./components/search-box.vue";
import CommonList from "@/components/common/CommonList.vue"; import CommonList from "@/components/common/CommonList.vue";
export default { export default {
components: { components: {
searchBox, searchBox,
CommonList, CommonList,
}, },
data() { data() {
return { return {
isSubmit:false,// isSubmit: false,//
queryData: { queryData: {
nameorphone: "", nameorphone: "",
sjid: null, sjid: null,
@ -127,7 +129,7 @@
}, },
async onLoad(options) { async onLoad(options) {
let type = 3; let type = 3;
let result = await request.post("/user/getuser", { let result = await request.post("/sj/user/getuser", {
type, type,
}); });
this.userInfo = result.data; this.userInfo = result.data;
@ -138,15 +140,15 @@
}); });
}, },
onShow() { onShow() {
if(this.queryData.sjid){ if (this.queryData.sjid) {
this.$nextTick(() => { this.$nextTick(() => {
this.search(); this.search();
}); });
} }
}, },
methods: { methods: {
goDetail(item){ goDetail(item) {
uni.$uv.throttle(()=>{ uni.$uv.throttle(() => {
uni.navigateTo({ uni.navigateTo({
url: `/pages/shop/staff/detail?syrid=${item.syr?.id}`, url: `/pages/shop/staff/detail?syrid=${item.syr?.id}`,
}); });
@ -155,20 +157,20 @@
}, },
handleSwitchChange(item) { handleSwitchChange(item) {
let obj = { let obj = {
sjid:this.userInfo.id, sjid: this.userInfo.id,
syrid: item.syr_id syrid: item.syr_id
} }
request.post("/sj/isaccept", obj).then((res) => { request.post("/sj/isaccept", obj).then((res) => {
if(res.code==200){ if (res.code == 200) {
item.sj_state ===1?item.sj_state=2:item.sj_state=1; item.sj_state === 1 ? item.sj_state = 2 : item.sj_state = 1;
}else{ } else {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
icon: 'none', icon: 'none',
duration: 2000 duration: 2000
}); });
} }
}).catch((error)=>{ }).catch((error) => {
uni.showToast({ uni.showToast({
title: '网络异常,请稍后重试', title: '网络异常,请稍后重试',
icon: 'none', icon: 'none',
@ -232,15 +234,15 @@
this.$refs.popup.close(); this.$refs.popup.close();
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
page { page {
background: linear-gradient(to bottom, #ffffff, #f5f5f5) !important; background: linear-gradient(to bottom, #ffffff, #f5f5f5) !important;
} }
.container { .container {
.tab-nav { .tab-nav {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -279,9 +281,9 @@
} }
} }
} }
} }
.pop-content { .pop-content {
width: 620rpx; width: 620rpx;
background-image: url("/static/images/background/selfOperatedTip.png"); background-image: url("/static/images/background/selfOperatedTip.png");
background-position: top; background-position: top;
@ -349,9 +351,9 @@
justify-content: center; justify-content: center;
} }
} }
} }
.scoll-lists { .scoll-lists {
padding: 0 20rpx; padding: 0 20rpx;
margin-top: 20rpx; margin-top: 20rpx;
@ -387,7 +389,8 @@
bottom: 0; bottom: 0;
left: 4rpx; left: 4rpx;
} }
.noTab{
.noTab {
background: #C1C1C1; background: #C1C1C1;
} }
} }
@ -422,7 +425,8 @@
line-height: 33rpx; line-height: 33rpx;
text-align: left; text-align: left;
font-style: normal; font-style: normal;
.item-right-text3-icon{
.item-right-text3-icon {
width: 8rpx; width: 8rpx;
height: 16rpx; height: 16rpx;
margin-left: 6rpx; margin-left: 6rpx;
@ -430,32 +434,32 @@
} }
} }
} }
} }
::v-deep .right-area { ::v-deep .right-area {
width: 31rpx !important; width: 31rpx !important;
height: 31rpx !important; height: 31rpx !important;
} }
::v-deep .icon-headle { ::v-deep .icon-headle {
width: 31rpx !important; width: 31rpx !important;
height: 31rpx !important; height: 31rpx !important;
} }
.common-list { .common-list {
background: #f5f5f5 !important; background: #f5f5f5 !important;
border-radius: 30rpx !important; border-radius: 30rpx !important;
} }
::v-deep .list-container { ::v-deep .list-container {
padding: 0 !important; padding: 0 !important;
} }
::v-deep .list-scroll { ::v-deep .list-scroll {
margin-top: 0 !important; margin-top: 0 !important;
} }
.switch-box { .switch-box {
/* width: 126rpx; */ /* width: 126rpx; */
height: 52rpx; height: 52rpx;
line-height: 52rpx; line-height: 52rpx;
@ -484,9 +488,9 @@
text-align: right; text-align: right;
font-style: normal; font-style: normal;
} }
} }
.disswitch { .disswitch {
padding: 0 12rpx 0 8rpx; padding: 0 12rpx 0 8rpx;
background-color: #cecfd5; background-color: #cecfd5;
@ -498,5 +502,5 @@
.switch-text { .switch-text {
color: #A0A0A0; color: #A0A0A0;
} }
} }
</style> </style>