You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1416 lines
36 KiB

<template>
<page-meta
:page-style="`overflow:${
isShowService || isShowHospital || isShowTime || isShowArchive
? 'hidden'
: 'visible'
};`"
></page-meta>
<view class="page">
<image
class="bkg"
mode="aspectFill"
src="~@/package_sub/static/AddOrder/bkg.png"
></image>
<view class="container">
<view class="step">
<view
class="step-item"
v-for="(i, index) in stepList"
:class="{ 'is-active': index <= currentStep }"
:key="index"
>
<view class="step-item__dot">
<u-icon
v-show="index <= currentStep"
:name="index === currentStep ? 'more-dot-fill' : 'checkbox-mark'"
color="#fff"
size="16"
></u-icon>
</view>
<view class="step-item__text">{{ i.name }}</view>
</view>
</view>
<view
v-if="
form.pay_status === 0 ||
form.pay_status === 1 ||
form.pay_status === 3
"
>
<view class="switch-service">
<view class="switch-service__icon">
<u-icon
:name="
accompanyProduct.cover
? accompanyProduct.cover.url
: vuex_default_icon
"
size="30"
></u-icon>
</view>
<view class="switch-service__name">
{{ accompanyProduct.name || "未选择" }}
</view>
<view
v-if="!orderId"
class="switch-service__btn"
@click="isShowService = true"
>
<image src="~@/static/switch.png" mode="aspectFit"></image>
<text>更换服务</text>
</view>
</view>
<u-form
:model="form"
:rules="rules"
ref="uForm"
:label-width="178"
:error-type="['toast']"
>
<view class="form-card form-card-1">
<u-form-item label="就诊医院" prop="hospital" required>
<u-input
:type="!!orderId ? 'input' : 'select'"
placeholder="请选择就诊医院"
:value="hospital.name"
:select-open="isShowHospital"
@click="orderId ? false : (isShowHospital = true)"
/>
</u-form-item>
<u-form-item label="就诊时间" prop="time" required>
<u-input
:type="!!orderId ? 'input' : 'select'"
placeholder="请选择就诊时间"
v-model="form.time"
:select-open="isShowTime"
@click="orderId ? false : (isShowTime = true)"
/>
</u-form-item>
<u-form-item label="就诊人" prop="user_archive_id" required>
<u-input
:type="!!orderId ? 'input' : 'select'"
placeholder="请选择就诊人"
:value="archive.name"
:select-open="isShowArchive"
@click="orderId ? false : (isShowArchive = true)"
/>
</u-form-item>
<u-form-item label="是否可以自理">
<view slot="right">
<u-input
v-if="!!orderId"
disabled
:value="form.my_provide ? '是' : '否'"
/>
<u-radio-group
v-else
v-model="form.my_provide"
active-color="#c20d12"
>
<u-radio :name="1">是</u-radio>
<u-radio :name="0">否</u-radio>
</u-radio-group>
</view>
</u-form-item>
<u-form-item label="预约人" prop="appoint_name" required>
<u-input
v-model="form.appoint_name"
:disabled="!!orderId"
placeholder="请填写预约人"
/>
</u-form-item>
<u-form-item label="预约人电话" prop="appoint_mobile" required>
<u-input
:disabled="!!orderId"
v-model="form.appoint_mobile"
placeholder="请填写预约人电话"
type="number"
/>
</u-form-item>
<u-form-item label="选择陪诊师性别" :border-bottom="false">
<view slot="right">
<u-input
v-if="!!orderId"
disabled
placeholder="请选择陪诊师性别"
:value="sex(form.accompany_sex)"
/>
<u-radio-group
v-else
:disabled="!!orderId"
v-model="form.accompany_sex"
active-color="#c20d12"
>
<u-radio :name="1">男</u-radio>
<u-radio :name="2">女</u-radio>
<u-radio :name="0">任意</u-radio>
</u-radio-group>
</view>
</u-form-item>
</view>
<view class="form-card form-card-2">
<view class="title">
<view class="title__left">
<text>上传资料</text>
<text>(就诊卡、病例等)</text>
</view>
<!-- <view class="title__right">
点击查看示例
</view> -->
</view>
<view>
<u-upload
v-if="!orderId"
:action="action"
ref="uUpload"
:header="{
['Authorization']: `Bearer ${token}`,
}"
></u-upload>
<image v-else v-for="img in fileList" :src="img.url" :key="img.url" mode="aspectFit" style="max-width: 200rpx;max-height: 180rpx;"></image>
</view>
</view>
<view class="form-card form-card-3">
<view class="title"> 其他服务需求 </view>
<u-form-item :label-width="0" :border-bottom="false">
<u-input
:disabled="!!orderId"
border
:custom-style="{ 'letter-spacing': '2rpx' }"
border-color="#dad9d9"
placeholder="请简单描述您要就诊的科室及就诊内容(内容加密保护)"
v-model="form.content"
type="textarea"
></u-input>
</u-form-item>
</view>
</u-form>
</view>
<!-- 服务完成 -->
<view v-if="form.pay_status === 3">
<view class="switch-service">
<view class="switch-service__icon">
<u-icon :name="vuex_default_icon" size="30"></u-icon>
</view>
<view class="switch-service__name">
<view>医康养 就医省心</view>
<view style="font-size: 24rpx; color: #999999"
>期待下次为您服务</view
>
</view>
<view
class="switch-service__btn"
style="font-size: 24rpx; color: #999999"
>
订单已完成
</view>
</view>
<view class="desc-card">
<view class="desc-card__title"> 预约信息 </view>
<view class="desc-card__content">
<view class="desc-card__content--title"> 就诊城市 </view>
<view class="desc-card__content--value">
{{ hospital.site ? hospital.site.name : "" }}
</view>
<br />
<view class="desc-card__content--title"> 就诊医院 </view>
<view class="desc-card__content--value"> {{ hospital.name }} </view>
<br />
<view class="desc-card__content--title"> 就诊时间 </view>
<view class="desc-card__content--value"> {{ form.time }} </view>
<br />
<view class="desc-card__content--title"> 预约人 </view>
<view class="desc-card__content--value">
{{ form.appoint_name }}
</view>
<br />
<view class="desc-card__content--title"> 预约人电话 </view>
<view class="desc-card__content--value">
{{ form.appoint_mobile }}
</view>
<br />
<view class="desc-card__content--title"> 陪诊师性别 </view>
<view class="desc-card__content--value">
{{ sex(form.accompany_sex) }}
</view>
<br />
<view class="desc-card__content--title"> 服务需求 </view>
<view class="desc-card__content--value"> {{ form.content || ' ' }} </view>
</view>
</view>
<view class="desc-card">
<view class="desc-card__title"> 就诊人信息 </view>
<view class="desc-card__content">
<view class="desc-card__content--title"> 姓名 </view>
<view class="desc-card__content--value"> {{ archive.name || ' ' }} </view>
<br />
<view class="desc-card__content--title"> 身份证 </view>
<view class="desc-card__content--value"> {{ archive.idcard || ' ' }} </view>
<br />
<view class="desc-card__content--title"> 地址 </view>
<view class="desc-card__content--value"> {{ archive.address || ' ' }} </view>
<br />
<view class="desc-card__content--title"> 手机号 </view>
<view class="desc-card__content--value"> {{ archive.mobile || ' ' }} </view>
<br />
<view class="desc-card__content--title"> 行动能力 </view>
<view class="desc-card__content--value"> {{ archive.is_move ? '无障碍' : '有障碍' }} </view>
</view>
</view>
<view class="desc-card">
<view class="desc-card__title"> 订单信息 </view>
<view class="desc-card__content">
<view class="desc-card__content--title"> 服务内容 </view>
<view class="desc-card__content--value">
{{ accompanyProduct.name }}
</view>
<br />
<!-- <view class="desc-card__content&#45;&#45;title"> 服务标价 </view>-->
<!-- <view class="desc-card__content&#45;&#45;value"> ¥ 288 </view>-->
<!-- <br />-->
<view class="desc-card__content--title"> 订单金额 </view>
<view class="desc-card__content--value">
¥ {{ accompanyProduct.price }}
</view>
<br />
<view class="desc-card__content--title"> 订单编号 </view>
<view class="desc-card__content--value"> {{ form.no }} </view>
<br />
<view class="desc-card__content--title"> 下单日期 </view>
<view class="desc-card__content--value">
{{ form.created_at }}
</view>
</view>
</view>
</view>
</view>
<view class="bottom-bar" v-if="form.pay_status === 0">
<view class="price">
<text>实付:</text>
<text>¥ {{ accompanyProduct.price }}</text>
</view>
<u-button
shape="circle"
ripple
:custom-style="payBtnStyle"
:throttle-time="2000"
@click="pay"
>立即下单</u-button
>
</view>
<!-- 服务列表 -->
<u-popup
v-model="isShowService"
mode="bottom"
safe-area-inset-bottom
closeable
:border-radius="10"
:height="800"
>
<view class="service-list">
<view
class="service-list-item"
v-for="(item, i) in list_service"
:key="i"
@click="changeService(item)"
>
<view class="service-list-item__icon">
<!-- <u-icon name="integral" size="30"></u-icon> -->
<image
style="width: 70rpx; height: 70rpx"
:src="item.cover.url"
></image>
</view>
<view class="service-list-item__name">
{{ item.name }}
</view>
<view class="service-list-item__price"> ¥{{ item.price }} </view>
</view>
</view>
</u-popup>
<!-- 选择就诊人,可以新增 -->
<u-popup
v-model="isShowArchive"
mode="bottom"
safe-area-inset-bottom
closeable
:border-radius="10"
:height="800"
>
<view class="service-list" style="padding-bottom: 120rpx">
<view
class="service-list-item"
v-for="(item, i) in list_archive"
:key="i"
@click="confirmArchive(item)"
>
<view class="service-list-item__namewrap">
<view class="service-list-item__name">
{{ item.name }}
</view>
<view class="service-list-item__price">
{{ item.mobile }}
</view>
</view>
<view class="service-list-item__address">
{{ item.address }}
</view>
</view>
</view>
<view class="service-list-btn">
<u-button
shape="circle"
ripple
:custom-style="payBtnStyle"
@click="addArchive"
>新增就诊人</u-button
>
</view>
</u-popup>
<!-- 新增就诊人 -->
<service-archive
ref="serviceArchive"
@addSuccess="addSuccess"
></service-archive>
<!-- 选择 站点下的医院 -->
<u-select
v-model="isShowHospital"
value-name="id"
@confirm="confirmHospital"
label-name="name"
:list="list_hospital"
></u-select>
<!-- 服务时间 -->
<u-picker
v-model="isShowTime"
:params="{
year: true,
month: true,
day: true,
hour: true,
minute: true,
second: false,
}"
mode="time"
@confirm="confirmTime"
></u-picker>
<!-- 优惠,不显示先 -->
<u-popup
v-model="isShowPayPopup"
class="pay-popup"
mode="bottom"
closeable
:z-index="10073"
:close-icon-size="40"
close-icon="close-circle"
:border-radius="20"
:height="800"
>
<view class="pay-popup-container">
<view class="service">
<view class="service__icon">
<u-icon name="integral" size="40"></u-icon>
</view>
<view class="service__text">
<view class="service__text--price">¥600.00</view>
<view class="service__text--name">专享半天陪诊</view>
</view>
</view>
<view class="row">
<view class="row__title"> 平台保障 </view>
<view class="row__content d-flex ai-center cards">
<view class="cards__icon d-flex jc-center ai-center">
<u-icon name="integral" size="30"></u-icon>
</view>
<view style="padding-left: 18rpx" class="flex-1">
<view class="d-flex ai-center">
<view style="font-size: 28rpx">半天陪诊·3次卡</view>
<view class="d-flex ai-center" style="margin-left: auto">
<text
style="
font-size: 24rpx;
padding-right: 22rpx;
font-weight: bold;
"
>¥ 600</text
>
<u-checkbox
:value="false"
shape="circle"
active-color="#c20d12"
/>
</view>
</view>
<view class="d-flex ai-center">
<view style="color: #999; font-size: 24rpx"
>本次预约可直接抵扣1次</view
>
<view
style="
font-size: 16rpx;
color: #999;
font-weight: 500;
margin-left: auto;
"
>低至¥246/次
</view>
</view>
</view>
</view>
</view>
<view class="row">
<view class="row__title"> 平台保障 </view>
<view class="row__content d-flex jc-center">
<view class="row__content--first">险</view>
<view class="row__content--name">陪诊服务险</view>
<view class="d-flex ai-center" style="margin-left: auto">
<text
style="
font-size: 24rpx;
padding-right: 22rpx;
font-weight: bold;
"
>¥ 600</text
>
<u-checkbox
:value="false"
shape="circle"
active-color="#c20d12"
/>
</view>
</view>
</view>
<view class="row">
<view class="row__title"> 本单优惠 </view>
<view class="row__content d-flex jc-center">
<view class="row__content--first" style="background: #c31014"
>券</view
>
<view class="row__content--name" style="color: #999"
>请选择优惠券</view
>
<view style="margin-left: auto">
<u-icon name="arrow-down" :size="24"></u-icon>
</view>
</view>
</view>
<view class="row use-card"> 新人优惠券 20 服务满1元可用 </view>
<view class="row">
<view class="row__content d-flex jc-center">
<view class="row__content--first" style="background: #c31014"
></view
>
<view class="row__content--name">无忧赠险保障</view>
<view style="margin-left: auto; color: #c31014"> -25 </view>
</view>
</view>
<view class="is-auth">
<u-checkbox v-model="isAuth" shape="circle" active-color="#c20d12">
<text style="padding-left: 10rpx">我已认真阅读预约相关</text>
<text style="color: #c20d12" @click.stop.prevent
>《服务条款同意书》</text
>
</u-checkbox>
</view>
</view>
</u-popup>
<u-top-tips :z-index="10080" ref="uTips"></u-top-tips>
</view>
</template>
<script>
import serviceArchive from "@/component/serviceArchive/service-archive.vue";
import { ROOTPATH as baseUrl } from "@/common/config.js";
export default {
components: {
serviceArchive,
},
data() {
return {
payBtnStyle: {
"background-image":
"linear-gradient(-90deg, #e26165 0%, #c10d12 94%, #c10d12 100%)",
"font-weight": "500",
"font-size": "28rpx",
color: "#fff",
width: "288rpx",
"margin-right": "25rpx",
},
// service
isShowService: false,
// step
stepList: [
{
name: "填写预约",
},
{
name: "在线支付",
},
{
name: "专人陪诊",
},
{
name: "服务完成",
},
],
//
// form
fileList: [],
isShowHospital: false,
isShowTime: false,
isShowArchive: false,
list_service: [],
list_hospital: [],
list_archive: [],
orderId: "",
form: {
type: 1,
is_show: false,
accompany_product_id: "",
user_archive_id: "",
city: "",
hospital: "",
time: "",
my_provide: 1,
appoint_name: "",
appoint_mobile: "",
accompany_sex: "",
file_ids: "",
content: "",
pay_status: 0,
no: "",
},
rules: {
user_archive_id: [
{
type: "number",
required: true,
message: "请选择就诊人",
trigger: ["blur", "change"],
},
],
time: [
{
required: true,
message: "请选择就诊时间",
trigger: ["blur", "change"],
},
],
hospital: [
{
type: "number",
required: true,
message: "请选择就诊医院",
trigger: ["blur", "change"],
},
],
appoint_name: [
{
required: true,
message: "请输入预约人",
trigger: ["blur", "change"],
},
],
appoint_mobile: [
{
required: true,
message: "请输入预约人电话",
trigger: ["blur", "change"],
},
{
// 自定义验证函数,见上说明
validator: (rule, value, callback) => {
return this.$u.test.mobile(value);
},
message: "预约人电话不正确",
// 触发器可以同时用blur和change
trigger: ["change", "blur"],
},
],
},
action: `${baseUrl}/api/mobile/upload-file`,
isAuth: false,
//
// pay popup
isShowPayPopup: false,
};
},
onReady() {
this.$refs.uForm.setRules(this.rules);
},
onLoad(option) {
this.form.accompany_product_id = option.id ? Number(option.id) : "";
this.form.type = option.type;
this.getList(option.type);
this.getHospital(option.site_id);
this.getUserArchive();
if (!this.orderId && option.order_id) {
this.orderId = option.order_id;
this.getDetail();
}
},
methods: {
// 获取产品列表
async getList(type) {
const res = await this.$u.api.accompanyProduct({
type: type,
page: 1,
page_size: 999,
});
this.list_service = res.data;
},
async getDetail(id) {
console.log(id, this.orderId);
await this.$u.api
.accompanyOrdersDetail({
id: id || this.orderId,
})
.then((res) => {
for (const key in this.form) {
if (res.hasOwnProperty(key)) {
this.form[key] = res[key];
}
}
this.form['created_at'] = res['created_at']
this.fileList = res.files.map(i => ({
url: i.url
}))
});
},
async getHospital(site_id) {
const res = await this.$u.api.listHospital({
site_id: site_id,
page: 1,
page_size: 999,
});
this.list_hospital = res.data;
},
async getUserArchive() {
const res = await this.$u.api.userArchive({
page: 1,
page_size: 999,
});
this.list_archive = res.data;
},
changeService(item) {
this.info = item;
this.form.accompany_product_id = item.id;
this.getHospital(item.site_id);
this.isShowService = false;
this.form.hospital = "";
},
confirmHospital(e) {
this.form.hospital = e[0].value;
},
confirmTime(e) {
this.form.time = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:00`;
},
// 服务对象
confirmArchive(e) {
this.form.user_archive_id = e.id;
this.isShowArchive = false;
},
addArchive() {
this.$refs.serviceArchive.isShow = true;
},
addSuccess(e) {
if (e) {
this.getUserArchive();
}
},
pay() {
if (!this.orderId) {
this.$refs.uForm.validate(async (valid) => {
if (valid) {
console.log("验证通过");
this.form.file_ids =
this.$refs.uUpload?.lists
?.filter((val) => {
return val.progress === 100;
})
?.map((i) => i.response?.id) || [];
const res = await this.$u.api.accompanyProductOrder(this.form);
if (res) {
this.orderId = res.id;
uni.showModal({
title: "下单成功",
content: "下单成功,是否立即支付?",
success: (status) => {
if (status.confirm) {
this.payOrder(res);
} else {
this.$u.route({
url: "/pages/order/order",
type: "tab",
});
}
},
fail: () => {
this.$u.route({
url: "/pages/order/order",
type: "tab",
});
},
});
}
} else {
console.log("验证失败");
}
});
} else {
this.payOrder(this.form);
}
// if (!this.isShowPayPopup) {
// this.isShowPayPopup = true
// return
// }
// if (!this.isAuth && this.currentStep === 0) {
// this.$refs.uTips.show({
// title: '请认真阅读《服务条款同意书》',
// type: 'warning',
// duration: '2000'
// })
// return
// }
// this.isShowPayPopup = false
// this.currentStep = 3
},
async payOrder(re) {
try {
const { config } = await this.$u.api.accompanyPay({
no: re.no,
});
const [err, res] = await uni.requestPayment({
provider: "wxpay",
timeStamp: config.timestamp,
nonceStr: config.nonceStr,
package: config.package,
signType: config.signType,
paySign: config.paySign,
});
if (err) {
uni.showToast({
title: "支付失败",
icon: "none",
});
}
if (res) {
uni.showToast({
title: "支付成功",
icon: "none",
});
await this.getDetail();
}
} catch (err) {
uni.showToast({
title: "支付失败",
icon: "none",
});
}
},
},
computed: {
currentStep() {
if (!this.orderId) {
return 0;
}
if (this.form.pay_status === 0) {
return 1;
}
if (this.form.pay_status === 1) {
return 2;
}
if (this.form.pay_status === 2) {
return 3;
}
if (this.form.pay_status === 3) {
return 4;
}
},
sex() {
return function (val) {
if (val === 1) {
return "男";
} else if (val === 2) {
return "女";
} else {
return "都可以";
}
};
},
token() {
return this.vuex_token
? this.vuex_token
: uni.getStorageSync("lifeData")?.vuex_token;
},
accompanyProduct() {
return (
this.list_service.find(
(i) => i.id === this.form.accompany_product_id
) || {}
);
},
hospital() {
return this.list_hospital.find((i) => i.id == this.form.hospital) || {};
},
archive() {
return (
this.list_archive.find((i) => i.id === this.form.user_archive_id) || {}
);
},
},
};
</script>
<style lang="scss">
.d-flex {
display: flex;
}
.jc-center {
justify-content: center;
}
.ai-center {
align-items: center;
}
.flex-1 {
flex: 1;
}
.pay-popup > .u-drawer {
bottom: calc(
constant(safe-area-inset-bottom) + 80rpx + 28rpx + 27rpx
) !important;
bottom: calc(env(safe-area-inset-bottom) + 80rpx + 28rpx + 27rpx) !important;
}
.pay-popup > .u-drawer .u-drawer-bottom {
overflow: initial !important;
background: #f4efee;
&::before {
font: normal normal normal 14px / 1 uicon-iconfont;
content: "\e65f 陪诊有保障,就医更安心";
font-size: 24rpx;
line-height: 70rpx;
color: #ffffff;
font-weight: 500;
box-sizing: border-box;
background: linear-gradient(
90deg,
#c10d12 0%,
#c10d12 4%,
#e16265 99%,
#e16265 100%
);
position: absolute;
width: 100%;
height: 100rpx;
padding-left: 70rpx;
border-radius: 20rpx 20rpx 0 0;
top: -70rpx;
left: 0;
}
}
.pay-popup > .u-drawer .u-mask {
bottom: calc(constant(safe-area-inset-bottom) + 80rpx + 28rpx) !important;
bottom: calc(env(safe-area-inset-bottom) + 80rpx + 28rpx) !important;
}
.pay-popup > .u-drawer .u-drawer__scroll-view {
position: relative;
background: #f4efee;
}
.pay-popup {
&-container {
padding-bottom: 20rpx;
.service {
border-radius: 10rpx;
padding: 28rpx 39rpx;
margin: 32rpx 25rpx 0;
display: flex;
align-items: center;
&__icon {
display: flex;
justify-content: center;
align-items: center;
background: #f1e7d9;
padding: 20rpx;
width: 124rpx;
height: 122rpx;
}
&__text {
padding-left: 12rpx;
font-weight: 500;
&--price {
font-size: 40rpx;
color: #c20d12;
font-weight: 500;
}
&--name {
font-size: 24rpx;
color: #333333;
font-weight: 500;
}
}
}
.row {
margin: 30rpx 46rpx 0;
&__title {
padding-left: 22rpx;
font-size: 28rpx;
line-height: 40rpx;
color: #000000;
font-weight: 500;
}
&__content {
margin-top: 26rpx;
padding: 22rpx;
background: #fff;
border-radius: 5rpx;
&--first {
width: 51rpx;
height: 47rpx;
border-radius: 15rpx;
line-height: 47rpx;
text-align: center;
font-size: 30rpx;
color: #fff;
background-color: #e1a664;
}
&--name {
font-size: 28rpx;
line-height: 47rpx;
color: #000000;
font-weight: 500;
padding-left: 16rpx;
}
}
.u-checkbox__label {
margin: 0;
}
}
.cards {
&__icon {
width: 90rpx;
height: 83rpx;
background: #f3e7d8;
border-radius: 10rpx;
}
}
.use-card {
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 570rpx;
margin: 30rpx auto 0;
height: 66rpx;
line-height: 66rpx;
font-size: 28rpx;
color: #e1a664;
font-weight: 500;
background: #f1e7d9;
}
.is-auth {
padding-left: 56rpx;
margin-top: 22rpx;
}
}
}
</style>
<style lang="scss" scoped>
.page {
position: relative;
.bkg {
width: 100vw;
z-index: 0;
height: 550rpx;
position: absolute;
top: 0;
left: 0;
}
.container {
z-index: 1;
position: relative;
padding-bottom: calc(27rpx * 2 + 80rpx + 20rpx);
padding-bottom: calc(
constant(safe-area-inset-bottom) + 27rpx * 2 + 80rpx + 20rpx
);
padding-bottom: calc(
env(safe-area-inset-bottom) + 27rpx * 2 + 80rpx + 20rpx
);
.step {
display: flex;
justify-content: space-evenly;
padding: 64rpx 37rpx 0;
position: relative;
&::before {
content: "";
height: 12rpx;
background: #fff;
border-radius: 6rpx;
position: absolute;
left: 37rpx;
right: 37rpx;
top: calc(26rpx / 2 + 64rpx - 6rpx);
}
&-item {
&__dot {
width: 30rpx;
height: 30rpx;
border-radius: 100%;
filter: drop-shadow(0 0 10rpx rgba(211, 32, 2, 0.3));
background-color: #9b9c9c;
border: 2rpx solid #ffffff;
margin: auto;
display: flex;
align-items: center;
justify-content: center;
}
&__text {
font-size: 24rpx;
color: #333333;
font-weight: 500;
margin-top: 30rpx;
}
}
.is-active {
.step-item__dot {
filter: drop-shadow(4.384px 8.988px 10px rgba(211, 32, 2, 0.57));
background-image: linear-gradient(
-90deg,
#e26165 0%,
#c10d12 94%,
#c10d12 100%
);
transform: scale(2, 2);
}
.step-item__text {
color: #c20d12;
}
}
}
.switch-service {
border-radius: 10rpx;
background-color: #ffffff;
margin: 60rpx 25rpx 0;
padding: 28rpx 39rpx;
display: flex;
align-items: center;
&__icon {
display: flex;
justify-content: center;
align-items: center;
background: #f9f5e9;
padding: 20rpx;
}
&__name {
padding-left: 14rpx;
font-size: 28rpx;
color: #333333;
font-weight: 500;
}
&__btn {
display: flex;
align-items: center;
margin-left: auto;
& > image {
width: 31rpx;
height: 27rpx;
}
& > text {
font-size: 24rpx;
color: #999999;
padding-left: 20rpx;
}
}
}
.form-card {
border-radius: 10rpx;
background-color: #ffffff;
padding: 36rpx 38rpx;
margin: 0 25rpx;
&-1 {
margin-top: 44rpx;
}
&-2 {
margin-top: 24rpx;
.title {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 24rpx;
margin-bottom: 26rpx;
&__left text:nth-child(1) {
color: #333;
}
&__left text:nth-child(2) {
color: #999;
}
&__right {
color: #c20d12;
}
}
::v-deep .u-add-wrap {
background: #fff;
border: 2rpx dashed #999999;
}
}
&-3 {
margin-top: 20rpx;
.title {
font-size: 24rpx;
color: #333333;
margin-bottom: 22rpx;
}
}
}
.is-auth {
padding-left: 56rpx;
margin-top: 22rpx;
}
::v-deep .form-card-1 .u-input__input {
text-align: right;
}
.desc-card {
border-bottom: 2rpx solid #efefef;
padding: 48rpx 70rpx 46rpx;
&__title {
font-size: 28rpx;
color: #000000;
font-weight: bold;
position: relative;
padding-left: 24rpx;
&::before {
content: "";
background: linear-gradient(
0deg,
#c10d12 0%,
#c10d12 6%,
#e26165 100%
);
border-radius: 4rpx;
width: 6rpx;
position: absolute;
top: 0;
left: 0;
bottom: 0;
}
}
&__content {
line-height: 65rpx;
margin-top: 34rpx;
&--title {
display: inline-block;
width: 240rpx;
padding-right: 64rpx;
font-size: 24rpx;
color: #999999;
font-weight: 500;
}
&--value {
display: inline-block;
font-size: 24rpx;
color: #333333;
font-weight: 500;
}
}
}
}
}
.bottom-bar {
background: #fff;
position: fixed;
padding-top: 27rpx;
padding-bottom: 27rpx;
padding-bottom: calc(constant(safe-area-inset-bottom) + 27rpx);
padding-bottom: calc(env(safe-area-inset-bottom) + 27rpx);
width: 100vw;
left: 0;
bottom: 0;
z-index: 10074;
display: flex;
align-items: center;
justify-content: space-between;
filter: drop-shadow(0 2rpx 6rpx #00000020);
.price {
margin-left: 50rpx;
color: #c20d12;
& > text:nth-child(1) {
font-size: 24rpx;
}
& > text:nth-child(2) {
color: #c20d12;
font-weight: 500;
font-size: 40rpx;
}
}
}
.service-list {
padding-top: 80rpx;
&-item {
border: 2rpx solid #e6e6eb;
border-radius: 10rpx;
background-color: #ffffff;
margin: 0 25rpx;
padding: 28rpx 39rpx;
display: flex;
align-items: center;
flex-wrap: wrap;
&__namewrap {
display: flex;
align-items: center;
width: 100%;
}
&__address {
width: 100%;
padding-left: 14rpx;
}
&__icon {
display: flex;
justify-content: center;
align-items: center;
// background: #f9f5e9;
// padding: 20rpx;
}
&__name {
padding-left: 14rpx;
font-size: 28rpx;
color: #333333;
font-weight: 500;
}
&__price {
color: #c20d12;
font-weight: 500;
margin-left: auto;
}
}
&-btn {
position: fixed;
bottom: 40rpx;
left: calc(50% - 144rpx);
}
&-item + &-item {
margin-top: 20rpx;
}
}
</style>