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.

1828 lines
63 KiB

6 months ago
<template>
<div class="banner" v-loading.fullscreen.lock="isLoading">
<!-- <div class="nav"></div> -->
<div class="main">
<div class="tabs">
<div :class="active === 0 ? 'standard active' : 'standard'" @click="active = 0">标准下单</div>
<!-- <div :class="active === 1 ? 'standard active' : 'standard'" @click="active = 1">快速下单</div> -->
<div :class="active === 2 ? 'standard active' : 'standard'" @click="active = 2">批量下单</div>
</div>
<div v-if="active === 0" class="standard-box">
<div class="order-information">
<div class="header">订单详情</div>
<div class="form">
<div class="right">
<el-form :model="OrderDetailsRight" label-width=".625rem" :rules="OrderDetailsRightRules"
ref="OrderDetailsRulesRef">
<el-form-item label="配送类型" prop="OrderDetails" style="align-items: center">
<el-radio-group v-model="OrderDetailsRight.ShippingType" size="large">
<!-- <el-radio-button border label="1">配送</el-radio-button>
<el-radio-button border label="2">自提</el-radio-button> -->
<el-radio :label="1">送货上门</el-radio>
<el-radio :label="4">快递配送</el-radio>
<el-radio :label="2">到店自取</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="收货区域" class="receipt-region" prop="ReceivingArea">
<el-cascader placeholder="请输入收获区域" size="large" :options="ChinaArr"
v-model="OrderDetailsRight.ReceivingArea">
</el-cascader>
</el-form-item>
<el-form-item label="收货人姓名" class="locate-address" prop="consigneeName">
<el-input style="width: 399.9936px" v-model="OrderDetailsRight.consigneeName" placeholder="请输入收货人姓名"
maxlength="100" show-word-limit />
</el-form-item>
<el-form-item label="收货人电话" class="door-number" prop="consigneeNumber">
<el-input style="width: 399.9936px" v-model="OrderDetailsRight.consigneeNumber"
placeholder="请输入收货人电话号" maxlength="11" show-word-limit />
</el-form-item>
<el-form-item label="定花人姓名" class="door-number">
<el-input style="width: 399.9936px" v-model="OrderDetailsRight.FlowerFixerName" placeholder="请输入定花人姓名"
maxlength="100" show-word-limit />
</el-form-item>
<el-form-item label="定花人电话" class="door-number">
<el-input style="width: 399.9936px" v-model="OrderDetailsRight.FlowerFixerNumber"
placeholder="请输入定花人电话" maxlength="11" show-word-limit />
</el-form-item>
<!-- <el-form-item label="贺卡" class="map">
<el-input
style="width: 399.9936px"
v-model="OrderDetailsRight.greetingCard"
:rows="2"
type="textarea"
placeholder="请填写贺卡留言"
/>
</el-form-item> -->
<!-- <el-form-item label="订单备注" class="map">
<el-input
style="width: 399.9936px"
v-model="OrderDetailsRight.OrderNotes"
:rows="2"
type="textarea"
placeholder="订单备注,订单双方均可查看"
/>
</el-form-item> -->
</el-form>
</div>
<div class="left">
<el-form :model="OrderDetails" label-width=".625rem" :rules="OrderDetailsRules" ref="OrderDetailsRef">
<!-- <el-form-item label="配送类型" prop="OrderDetails">
<el-radio-group v-model="OrderDetails.ShippingType" size="large">
<el-radio-button border label="1">配送</el-radio-button>
<el-radio-button border label="2">自提</el-radio-button>
</el-radio-group>
</el-form-item> -->
<el-form-item :label="OrderDetailsRight.ShippingType != 3 ? '收货时间' : '自提时间'" class="receipt-time"
prop="ReceiptTime">
<el-config-provider :locale="locale">
<el-date-picker v-model="OrderDetails.ReceiptTime" type="date" placeholder="请选择日期"
:disabled-date="disabledDate" :locale="locale" />
</el-config-provider>
<el-select v-if="timeOutFlog" v-model="OrderDetails.ReceiptTimeRange" class="m-2" placeholder="范围">
<el-option v-for="item in ReceiptTimeOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
<el-time-select v-else v-model="OrderDetails.ReceiptTimeRange" start="08:30" step="00:15" end="18:30"
placeholder="请选择时间" />
<div class="timing-receipt" @click="timeOutFlog = !timeOutFlog">
{{ timeOutFlog ? '定时配送' : '重新选择' }}
</div>
</el-form-item>
<!-- <el-form-item label="收货区域" class="receipt-region" prop="ReceivingArea">
<el-cascader
placeholder="请输入收获区域"
size="large"
:options="ChinaArr"
v-model="OrderDetails.ReceivingArea"
>
</el-cascader>
</el-form-item> -->
<el-form-item label="定位地址" prop="locateAddress">
<el-select style="width: 399.9936px" v-model="OrderDetails.locateAddress"
:value-key="OrderDetails.locateAddress.id" filterable remote reserve-keyword placeholder="请输入定位地址"
:remote-method="remoteMethod" :loading="selectLoading" @change="selectChanged"
:disabled="selectCityDisabled">
<el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.name" />
<template #loading>
<el-icon class="is-loading">
<svg class="circular" viewBox="0 0 20 20">
<g class="path2 loading-path" stroke-width="0" style="animation: none; stroke: none">
<circle r="3.375" class="dot1" rx="0" ry="0" />
<circle r="3.375" class="dot2" rx="0" ry="0" />
<circle r="3.375" class="dot4" rx="0" ry="0" />
<circle r="3.375" class="dot3" rx="0" ry="0" />
</g>
</svg>
</el-icon>
</template>
</el-select>
</el-form-item>
<el-form-item label="门牌号" class="door-number" prop="doorNumber">
<el-input style="width: 399.9936px" v-model="OrderDetails.doorNumber" placeholder="详细地址,例如:3号楼2单元106"
maxlength="100" show-word-limit />
</el-form-item>
<el-form-item label="参考地址" class="map" v-if="OrderDetailsRight.ShippingType != 2">
<div :class="mapDialog ? 'dlaceholding fangda' : 'dlaceholding'" v-if="isMapShow">
<goods-map ref="goodsMapRef" :searchValue="searchVal" :position="position"
@mapChange="mapChangeEvent" @mapChangeCity="mapChangeCityEvent"
@writeBockCity="writeBockCityEvent" @draggingMap="draggingMapEvent" />
<div class="magnify" @click="mapMagnifyEvent" v-if="magnify">
<el-icon>
<FullScreen />
</el-icon>
</div>
</div>
</el-form-item>
<el-form-item label="地址自动识别" class="map"
:style="OrderDetailsRight.ShippingType != 2 ? { 'margin-top': '159.9936px' } : ''">
<el-input style="width: 399.9936px" v-model="AddressIdentification" :rows="2" type="textarea"
placeholder="试试粘贴收货人姓名、手机号、收货地址、可快速识别您的收货信息" @change="AddressIdentificationChange" />
</el-form-item>
</el-form>
</div>
</div>
</div>
<div class="order-information">
<div class="header">商品信息</div>
<div class="form" v-for="(item, index) in goodsInfoFormData" :key="index">
<div class="left">
<el-form :model="item.goodsInfoForm" label-width=".625rem" :rules="goodsInfoFormRules"
ref="goodsInfoFormRef">
<el-form-item label="上传商品图片" class="upload-image" prop="imageFiles">
<el-upload :limit="4" action="#" list-type="picture-card" :auto-upload="false"
v-model:file-list="item.goodsInfoForm.imageFiles">
<el-icon>
<Plus />
</el-icon>
<template #file="{ file }">
<div>
<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
<span class="el-upload-list__item-actions">
<!-- <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
<el-icon><zoom-in /></el-icon>
</span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
<el-icon><Download /></el-icon>
</span> -->
<span class="el-upload-list__item-delete" @click="handleRemove(file, index)">
<el-icon>
<Delete />
</el-icon>
</span>
</span>
</div>
</template>
<template #tip>
<div class="el-upload__tip">
<el-icon>
<InfoFilled />
</el-icon>jpgjpegpnggif1M 4
</div>
</template>
</el-upload>
<div @click="selectGoodsEvent(index)" class="select-goods"
v-if="userStore.isLogin && item.goodsInfoForm.imageFiles.length <= 2">
<el-icon>
<Goods />
</el-icon>
</div>
</el-form-item>
<el-form-item label="商品数量" class="locate-address" prop="content" style="margin-top: 49.9968px">
<el-input-number v-model="item.goodsInfoForm.content" :min="1" :max="1000" />
</el-form-item>
</el-form>
</div>
<div class="right" style="position: relative">
<el-form :model="item.goodsInfoFormRight" label-width=".625rem" :rules="goodsInfoFormRightRules"
ref="goodsInfoFormRightRef">
<el-form-item label="商品描述" class="product-description" prop="goodsDescription">
<el-input style="width: 399.9936px" v-model="item.goodsInfoFormRight.goodsDescription" :rows="2"
type="textarea" placeholder="请输入商品描述" />
<div class="tip">
<el-icon>
<InfoFilled />
</el-icon>~
</div>
<!-- <div class="add-product">加入到商品库</div>-->
</el-form-item>
</el-form>
<div @click="closeOrder(index)" v-show="goodsInfoFormData.length >= 2" class="close-order">
<el-icon>
<CloseBold />
</el-icon>
</div>
</div>
</div>
<div class="footer">
<div class="add-order-btn" @click="addGoodsItem">增加商品</div>
</div>
</div>
<div class="order-information">
<div class="header">贺卡备注信息</div>
<div class="form">
<div class="left">
<el-form>
<el-form-item label="贺卡需求" class="product-description" prop="goodsDescription">
<el-input
style="width: 2.0833rem"
v-model="OrderDetailsRight.greetingCard"
:rows="2"
type="textarea"
placeholder="请输入贺卡需求"
/>
</el-form-item>
</el-form>
</div>
<div class="right">
<el-form>
<el-form-item label="订单描述" class="product-description" prop="goodsDescription">
<el-input
style="width: 2.0833rem"
:rows="2"
v-model="OrderDetailsRight.OrderNotes"
type="textarea"
placeholder="请输入订单描述"
/>
<div class="tip" style="color: #ff4e8d">
<el-icon>
<InfoFilled />
</el-icon>~
</div>
</el-form-item>
</el-form>
</div>
</div>
</div>
<div class="order-information goods-info">
<div class="header">订单设置</div>
<div class="form">
<div class="left">
<el-form :model="OrderSettingsForm" label-width=".625rem" :rules="OrderSettingsFormRules"
ref="OrderSettingsFormRef">
<el-form-item label="订单类型" prop="orderModel">
<el-radio-group v-model="OrderSettingsFormRight.orderKind">
<el-radio-button label="1">鲜花订单</el-radio-button>
<el-radio-button label="2">蛋糕订单</el-radio-button>
<el-radio-button label="3">鲜花+蛋糕</el-radio-button>
<el-radio-button label="4">气球派对</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="其他编号">
<el-input style="width: 200.0064px" placeholder="外部商家或自定义渠道编号"
v-model="OrderSettingsForm.Third_PartyOrdersNumber"></el-input>
</el-form-item>
<el-form-item label="下单模式" class="order-mode" prop="orderModel">
<el-radio-group v-model="OrderSettingsForm.orderModel" size="large">
<el-radio label="1">发布抢单</el-radio>
<el-radio label="2">发布报价单</el-radio>
<el-radio label="3">指定店铺</el-radio>
<!-- <el-radio-button label="1">发布抢单</el-radio-button>
<el-radio-button label="2">发布报价单</el-radio-button>
<el-radio-button label="3">指定店铺</el-radio-button> -->
</el-radio-group>
<div class="tip">
<el-icon>
<InfoFilled />
</el-icon>~
</div>
</el-form-item>
<!-- <el-form-item label="销售价" class="sales-price" prop="SalesPrice">
<el-input
style="width: 150.0096px"
v-model.number="OrderSettingsForm.SalesPrice"
placeholder="0"
@change="priceChange($event, 'SalesPrice')"
/>
<div class="tail">
<el-icon><QuestionFilled /></el-icon>
<div>非必填</div>
</div>
</el-form-item> -->
<el-form-item v-if="OrderSettingsForm.orderModel != '2'" label="出价" class="bid" prop="SellingPrice">
<el-input style="width: 150.0096px" v-model.number="OrderSettingsForm.SellingPrice" placeholder="0"
@change="priceChange($event, 'SellingPrice')" type="number" />
<div class="tail">
可用余额
<div class="money">0</div>
<div class="krypton">立即充值</div>
</div>
<div class="tip">
<el-icon>
<InfoFilled />
</el-icon> <span></span>
</div>
</el-form-item>
<el-form-item v-else label="出价" class="bid" prop="SellingPrice">
<div>
<span style="color: #ff4e8d; font-weight: 600; font-size: 15.9936px">10</span><span
style="font-size: 12px">
(根据花机宝交易规则需支付订单最低金额最终金额以花店实际报价为准)</span>
</div>
</el-form-item>
<el-form-item v-if="OrderDetailsRight.ShippingType == 1" label="花图审核" prop="Audit">
<el-switch v-model="OrderSettingsForm.Audit" />
</el-form-item>
</el-form>
</div>
<div class="right">
<el-form :model="OrderSettingsFormRight" label-width=".625rem">
<el-form-item label="下单门店" v-if="OrderSettingsForm.orderModel === '3'">
<el-input
style="width: 2.0833rem"
v-model="OrderSettingsFormRight.shopId"
placeholder="请输入下单门店·"
maxlength="100"
show-word-limit
/>
</el-form-item>
<el-form-item label="商家备忘">
<el-input style="width: 399.9936px" v-model="OrderSettingsFormRight.orderRemark" :rows="2"
type="textarea" placeholder="订单备忘,仅下单方乐见" />
<el-radio-group v-model="OrderSettingsFormRight.flag">
<el-radio label="1">
<el-icon style="transform: translateY(.0104rem); color: #ed4524">
<Flag />
</el-icon>
</el-radio>
<el-radio label="2">
<el-icon style="transform: translateY(.0104rem); color: #fda917">
<Flag />
</el-icon></el-radio>
<el-radio label="3">
<el-icon style="transform: translateY(.0104rem); color: #1db728">
<Flag />
</el-icon></el-radio>
<el-radio label="4">
<el-icon style="transform: translateY(.0104rem); color: #0f78ff">
<Flag />
</el-icon></el-radio>
<el-radio label="5">
<el-icon style="transform: translateY(.0104rem); color: #e000fc">
<Flag />
</el-icon></el-radio>
<el-radio label="6">
<el-icon style="transform: translateY(.0104rem); color: #999999">
<Flag />
</el-icon></el-radio>
</el-radio-group>
<div style="width: 100%; color: #999999; font-size: .0625rem">
<el-icon>
<InfoFilled />
</el-icon>~
</div>
</el-form-item>
<!-- <el-form-item label="第三方订单号">
<el-input
style="width: 399.9936px"
v-model="OrderSettingsFormRight.Third_PartyOrdersNumber"
placeholder="请输入第三方订单号"
maxlength="100"
show-word-limit
/>
</el-form-item> -->
</el-form>
</div>
</div>
<div class="footer" v-if="OrderSettingsForm.orderModel === '3'">
<div class="vip-name">
<el-form :model="form" label-width=".625rem">
<el-form-item label="店铺会员名称">
<el-input style="width: 246.0096px" v-model="form.name" />
</el-form-item>
</el-form>
</div>
<div class="shop-info">
<div class="title">
<div class="left">
<div class="shop-name">广东省 佛山市 三水区傲梅鲜花店</div>
<div class="gradd">v2</div>
<div class="status">接单中</div>
<div class="online-status">1小时前接单</div>
</div>
<div class="right">
<div class="record">证照信息</div>
<div class="guarantee">服务保障</div>
</div>
</div>
<div class="shop-content">
<div class="left">
<div class="image"></div>
<div class="vip-info">
<ul>
<li>
<div class="label">会员名称</div>
<div class="name">明兵</div>
</li>
<li>
<div class="phone">联系电话</div>
<div class="telephone-number">12345678901</div>
</li>
<li>
<div class="qq">客服QQ</div>
<div class="qq-number">123456789</div>
</li>
<li>
<div class="contact-address">店铺地址</div>
<div class="address">心尚人鲜花店 三水区西南街道商业北二街1号109铺 </div>
<div class="icon">
<el-icon>
<MapLocation />
</el-icon>
</div>
<div class="map">查看地图</div>
</li>
</ul>
</div>
</div>
<div class="right">
<ul class="top">
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
</ul>
<ul class="bottom">
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
<li>
<div class="content">10</div>
<div class="txt">信用分</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="order-information">
<div class="settlement">
<div class="left">
<div class="item">订单类型<span>{{OrderSettingsFormRight.orderKind == 1 ? '鲜花订单' : OrderSettingsFormRight.orderKind == 2 ? '蛋糕订单' : OrderSettingsFormRight.orderKind == 3 ? '鲜花+蛋糕订单' : OrderSettingsFormRight.orderKind == 4 ? '气球派对订单' :'' }}</span></div>
<div class="item">商品数量<span>1</span></div>
<div class="item">
收货时间<span>{{ formatTime(OrderDetails.ReceiptTime) }} {{ OrderDetails.ReceiptTimeRange }}</span>
</div>
</div>
<div class="content">
订单价格
<!-- <div>{{ OrderSettingsForm.SellingPrice ? OrderSettingsForm.SellingPrice.toFixed(2) : 0 }}</div>
-->
<div>
{{ OrderSettingsForm.SellingPrice ? parseInt(OrderSettingsForm.SellingPrice).toFixed(2) : 0 }}
</div>
</div>
<div class="right" @click="submitEvent(goodsInfoFormRef)">确认无误立即下单</div>
</div>
</div>
</div>
<div v-else-if="active === 1" class="fast-box">快速下单</div>
<div v-else class="batch">
<BatchItemUI :opctions="{
header: '多电商平台订单接入',
hint: '订单接入:将多个电商平台订单自动导入花机宝后台,实现一键发布,让商户更加便捷管理订单,清晰掌握订单状态。',
footer: '立即接入'
}" @footer-cli-btn="handleBtn" :channelsData="[
{ imgUrl: '/images/xdt1.png', tit1: '美团', tit2: 'abc', click: () => console.log(1) },
{ imgUrl: '/images/xdt2.png', tit1: '饿了么', tit2: 'abc', click: () => console.log(2) },
{ imgUrl: '/images/xdt3.png', tit1: '京东到家', tit2: 'abc', click: () => console.log(3) },
{ imgUrl: '/images/xdt4.jpg', tit1: '抖店电商', tit2: 'abc', click: () => console.log(4) },
{ imgUrl: '/images/xdt5.png', tit1: '抖音来客', tit2: 'abc', click: () => console.log(5) },
{ imgUrl: '/images/xdt6_.png', tit1: '快手电商', tit2: 'abc', click: () => console.log(6) },
{ imgUrl: '/images/xdt7_.png', tit1: '美团电商', tit2: 'abc', click: () => console.log(7) },
{ imgUrl: '/images/xdt8.png', tit1: '小红书', tit2: 'abc', click: () => console.log(8) },
{ imgUrl: '/images/xdt9.jpg', tit1: '快手本地生活', tit2: 'abc', click: () => console.log(8) },
{ imgUrl: '/images/xdt10_.png', tit1: '京东电商', tit2: 'abc', click: () => console.log(8) },
{ imgUrl: '/images/xdt11.png', tit1: '拼多多电商', tit2: 'abc', click: () => console.log(8) },
{ imgUrl: '/images/xdt12.png', tit1: '淘宝电商', tit2: 'abc', click: () => console.log(8) },
{ imgUrl: '/images/xdt14.png', tit1: '天猫电商', tit2: 'abc', click: () => console.log(8) },
{ imgUrl: '/images/xdt13.png', tit1: '大众点评', tit2: 'abc', click: () => console.log(8) },
{ imgUrl: '/images/xdt15.png', tit1: '淘鲜达', tit2: 'abc', click: () => console.log(8) },
{ imgUrl: '/images/xdt16.png', tit1: 'API接入', tit2: 'abc', click: () => console.log(8) },
]" />
<BatchItemUI style="margin-top: .125rem;" :opctions="{
header: '开放平台',
hint: '花机宝开放平台,提供API对接接口,商家可以通过端口对接花机宝平台,轻松将自建平台的订单导入到花机宝后台,实现信息互通。',
footer: '接入到花机宝',
ifExc: true
}" :hintA="{ href: '#', text: '点击查看批量导入操作指南' }" @footer-cli-btn="() => { console.log(0); }">
</BatchItemUI>
</div>
</div>
</div>
<el-dialog v-if="selectGoodsDialog" v-model="selectGoodsDialog" title="从商品库中选择" width="50%"
:before-close="handleClose">
<el-form :inline="true" :model="searchGoods" class="demo-form-inline">
<el-form-item label="商品收索">
<el-input v-model="searchGoods.keyWord" placeholder="请输入商品名" clearable />
</el-form-item>
<el-form-item label="花材分类">
<el-select v-model="searchGoods.type" placeholder="请选择分类" clearable> </el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button>
</el-form-item>
</el-form>
<div class="diglog-tips">
<div class="left">最近使用</div>
<div class="right">进入商品库</div>
</div>
<div class="goods-box">
<div @click="selectItem(item.url, index)"
:class="selectItemIndex === index ? 'goods-item goods-item-active' : 'goods-item'"
v-for="(item, index) in goodsData" :key="index">
<div class="img">
<img :src="item.flatPattern" alt="" />
</div>
<div class="price">
<div class="label">出价</div>
{{ item.price }}
</div>
<div class="goods-name">
<div class="label">商品名称</div>
{{ item.name }}
</div>
<div class="miaoshu">
<div class="label">商品描述</div>
{{ item.intro }}
</div>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="cancelGoodsItemClick">取消</el-button>
<el-button type="primary" @click="addGoodsItemClick"> 确认 </el-button>
</span>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { onMounted, reactive, ref, toRefs, watch } from 'vue'
import { useCounterStore } from '@/stores/nav'
import { myProductListApi } from '~/server/goodsApi'
import { createFlowerWoodApi, loadTurnFlowerOrderApi } from '~/server/orderApi'
import { uploadImageApi } from '~/server/userApi'
import { getCouponTime, linkNavigateTo } from '~/utils/util'
import locale from 'element-plus/lib/locale/lang/zh-cn'
import { urlSplit } from '@/utils/validate'
const config = useRuntimeConfig()
// @ts-ignore
// 这是要被忽略类型检查的代码
import { regionData, CodeToText } from 'element-china-area-data'
import {
ReceiptTimeOptions,
OrderDetailsRules,
OrderDetailsRightRules,
goodsInfoFormRules,
goodsInfoFormRightRules,
OrderSettingsFormRules,
} from './dataAndRules'
import smart from 'address-smart-parse'
import { useUserStore } from '@/stores/user'
import { useRoute } from 'vue-router'
import BatchItemUI from '~/components/BatchItemUI.vue'
const route = useRoute()
const userStore = useUserStore()
const ChinaArr: any = regionData
const goodsMapRef = <any>ref(null)
const isLoading = <any>ref(false) //全局loading
// ===============================
import { ElMessage } from 'element-plus'
function handleBtn() {
if (userStore.$state.token) location.assign(`${config.public.adminUrl}/shopAuthorize/storeIntegration`)
else ElMessage({
showClose: true,
message: '您还未登录,请先登录',
type: 'warning',
})
}
// ===============================
// 订单详情
const OrderDetailsRef = <any>ref(null)
const OrderDetailsRulesRef = <any>ref(null)
const OrderDetails = <any>ref({
ReceiptTime: new Date(), //收货时间
ReceiptTimeRange: ReceiptTimeOptions[0].value, //收货时间范围
locateAddress: '', //定位地址
doorNumber: '', //门牌号
})
const OrderDetailsRight = <any>ref({
ReceivingArea: [], //收货区域
ShippingType: 1, //配送类型
consigneeName: '', //收货人姓名
consigneeNumber: '', //收货人电话
FlowerFixerName: '', // 订花人姓名
FlowerFixerNumber: '', //订花人电话
greetingCard: '', //贺卡
OrderNotes: '', //订单备注
})
const disabledDate = (time: any) => {
return time.getTime() < Date.now() - 8.64e7
}
//初次加载判断是否转单
let imageList: any = []
let position: any = {}
const isMapShow = <any>ref(false)
const loadTurnFlowerOrder = () => {
return new Promise((resolve, reject) => {
// 判断url是否携带参数
if (Object.keys(route.query).length) {
isLoading.value = true
loadTurnFlowerOrderApi(route.query.zdOrderNo)
.then((res: any) => {
// console.log(res, '1111111111')
cityList.value = [
{
address: res.street,
location: res.longitude + ',' + res.latitude,
},
]
OrderDetailsRight.value.ShippingType = res.deliveryType
OrderDetails.value.ReceiptTime = res.deliveryDate
OrderDetails.value.ReceiptTimeRange = res.deliveryTime
OrderDetailsRight.value.consigneeName = res.receiveName
OrderDetailsRight.value.consigneeNumber = res.receivePhone
OrderDetailsRight.value.FlowerFixerName = res.orderName
OrderDetailsRight.value.FlowerFixerNumber = res.orderPhone
OrderDetailsRight.value.greetingCard = res.cardInfo
OrderDetailsRight.value.OrderNotes = res.orderRemark || ''
// 处理图片
imageList = res.orderDetailsRequestList
// 订单设置回写
OrderSettingsForm.value.orderModel = res.orderMode || '1'
OrderSettingsForm.value.orderModel = OrderSettingsForm.value.orderModel.toString()
OrderSettingsForm.value.SalesPrice = res.salesPrice
OrderSettingsForm.value.SellingPrice = res.otPrice
OrderSettingsForm.value.Audit = res.audit
OrderSettingsFormRight.value.orderRemark = res.orderRemark || ''
OrderSettingsForm.value.Third_PartyOrdersNumber = res.thirdNum
OrderSettingsFormRight.value.InvoiceInformation = res.invoiceInfo
// 定位地址
position = { lat: res.latitude, lon: res.longitude }
console.log(position, 'position')
isMapShow.value = true
resolve(res) // 返回获取的数据
})
.catch((err: any) => {
isLoading.value = false
reject(err) // 返回错误信息
})
} else {
isMapShow.value = true
resolve(null) // 没有参数时返回 null
}
})
}
onMounted(() => {
// 页面加载调用回写方法
Transfers()
})
const Transfers = () => {
loadTurnFlowerOrder().then((res: any) => {
// 判断是否有单号传递过来
if (Object.keys(route.query).length) {
// 处理商品信息以及图片
imageList.forEach((item: any, index: any) => {
// 第一张图片正常执行 多张图片首先初始化数据结构
if (index != 1) {
goodsInfoFormData.value.push({
goodsInfoForm: {
imageFiles: [], //商品图片
content: 1, //商品数量
},
goodsInfoFormRight: {
goodsDescription: '', //商品描述
},
})
}
// 多张图片拆分为数组 进行处理
const imagUrl = item.sliderImage.split(',')
imagUrl.forEach((url: any) => {
getImageFileFromUrl(url, '111').then((files: any) => {
console.log(files, 'files', imagUrl)
const obj = {
raw: files,
uid: files.lastModifed,
url: URL.createObjectURL(files),
}
goodsInfoFormData.value[index].goodsInfoForm.imageFiles.push(obj)
})
})
goodsInfoFormData.value[index].goodsInfoForm.content = item.productNum
goodsInfoFormData.value[index].goodsInfoFormRight.goodsDescription = item.remark
})
isLoading.value = false
}
})
}
// loadTurnFlowerOrder()
// 子组件传递的数据 回写
const writeBockCityEvent = (item: any) => {
console.log(item, 'item,')
draggingMapEventFlog.value = true
OrderDetailsRight.value.ReceivingArea = [
item.addressComponent.adcode.substring(0, 2) + '0000',
item.addressComponent.adcode.substring(0, 4) + '00',
item.addressComponent.adcode,
]
OrderDetails.value.locateAddress = item.formattedAddress
}
// 子组件拖拽返回数据
const draggingMapEventFlog = <any>ref(null)
const draggingMapEvent = (city: any) => {
console.log(city, 'city')
draggingMapEventFlog.value = true
OrderDetailsRight.value.ReceivingArea = [
city.addressComponent.adcode.substring(0, 2) + '0000',
city.addressComponent.adcode.substring(0, 4) + '00',
city.addressComponent.adcode,
]
selectCityDisabled.value = false
OrderDetails.value.locateAddress = city.formattedAddress
console.log(OrderDetails.value, ' OrderDetails.value')
}
let timeOutFlog = <boolean>(<unknown>ref(true))
//商品信息
const goodsInfoFormRef = <any>ref(null)
const goodsInfoFormRightRef = <any>ref(null)
const goodsInfoForm = <any>ref({
imageFiles: [], //商品图片
content: 1, //商品数量
// goodsDescription:'' //商品描述
})
const goodsInfoFormData = <any>ref([
{
goodsInfoForm: {
imageFiles: [], //商品图片
content: 1, //商品数量
},
goodsInfoFormRight: {
goodsDescription: '', //商品描述
},
},
])
const addGoodsItem = () => {
goodsInfoFormData.value.push({
goodsInfoForm: {
imageFiles: [], //商品图片
content: 1, //商品数量
},
goodsInfoFormRight: {
goodsDescription: '', //商品描述
},
})
}
// 商品设置
const OrderSettingsFormRef = <any>ref(null)
const OrderSettingsForm = <any>ref({
Third_PartyOrdersNumber: '', // 地三方订单编号
orderModel: '1', //下单模式
SalesPrice: null, //销售价
SellingPrice: null, //出售价格
Audit: false, // 花图审核
})
const orderList = ref<any>([])
// 地图选择值
const mapChangeEvent = (res: any) => {
console.log(res, '地图选择值')
orderList.value = res.pois
OrderDetails.value.locateAddress = orderList.value[0].name
console.log(orderList.value, '地图选择值')
}
const cityList = <any>ref([])
const magnifyItem = <any>ref({})
const mapChangeCityEvent = (res: any) => {
cityList.value = res.pois
selectLoading.value = false
magnifyItem.value = res.pois[0]
console.log(magnifyItem.value)
}
const selectCityDisabled = ref<boolean>(true)
watch(
() => OrderDetailsRight.value.ReceivingArea,
(newVal, oldVal) => {
if (draggingMapEventFlog.value) {
return
}
console.log(newVal, oldVal)
isLoading.value = false
if (newVal) {
selectCityDisabled.value = false
}
},
)
// 监听订单类型的变化
watch(
() => OrderSettingsForm.value.orderModel,
(newVal, oldVal) => {
if (newVal == 2) {
OrderSettingsForm.value.SellingPrice = 10
} else {
OrderSettingsForm.value.SellingPrice = null
}
},
)
// 输入定位地址
const searchVal = ref<any>('')
const selectLoading = ref<boolean>(false)
const magnify = ref<any>(false) // 控制放大地图显示按钮
const selectChanged = (value: any) => {
selectLoading.value = true
searchVal.value = CodeToText[OrderDetailsRight.value.ReceivingArea[2]] + value
magnify.value = true
}
const AddressIdentification = <any>ref('') //地址识别
// 地址识别
const AddressIdentificationChange = () => {
const res = smart(AddressIdentification.value)
if (!Object.keys(res).length) return
console.log(res, 'red')
OrderDetailsRight.value.ReceivingArea = [res.provinceCode + '0000', res.cityCode + '00', res.countyCode]
OrderDetails.value.locateAddress = res.address
OrderDetailsRight.value.consigneeName = res.name
OrderDetailsRight.value.consigneeNumber = res.phone
selectChanged(res.address)
}
// 放大地图
const mapDialog = <any>ref(false)
const mapMagnifyEvent = (e: any) => {
mapDialog.value = !mapDialog.value
}
const remoteMethod = (val: any) => {
if (val === '') {
return
}
console.log(1111111111, val)
searchVal.value = CodeToText[OrderDetailsRight.value.ReceivingArea[2]] + val
}
const OrderSettingsFormRight = <any>ref({
orderRemark: '', //商家备注
InvoiceInformation: '', // 发票信息
flag: '1', //标记
orderKind:'1'
})
// 删除商品
const closeOrder = (index: any) => {
goodsInfoFormData.value.splice(index, 1)
}
// 限定商品价格
const priceChange = (val: any, eventName: any) => {
console.log(val, eventName)
if (val.length > 6) {
OrderSettingsForm.value[eventName] = Number(String(val).slice(0, 6))
}
}
// 下单前的处理
const FileData = <any>ref([])
const formatData = () => {
return new Promise((resolve, reject) => {
goodsInfoFormData.value.forEach(async (item: any, index: any) => {
const arr: any = []
// 收集 Promise 对象到一个数组中
const promises = item.goodsInfoForm.imageFiles.map((file: any) => {
const formData = new FormData()
formData.append('multipart', file.raw)
return uploadImageApi('merchant', '1', formData).then((res: any) => {
console.log(res.url, 'url', arr)
arr.push(urlSplit(res.url))
})
})
// 等待所有 Promise 执行完毕
await Promise.all(promises)
FileData.value.push({
sliderImage: arr.join(', '), // 轮播图
productNum: item.goodsInfoForm.content, // 商品数量
remark: item.goodsInfoFormRight.goodsDescription, // 备注
})
// 最后一次循环执行resolve
if (FileData.value.length === goodsInfoFormData.value.length) {
console.log('FileData:', FileData.value)
resolve(FileData.value)
}
})
})
}
//立即下单
const submitEvent = async (formEl: any) => {
if (!formEl) return
submitRulesAll()
.then(async () => {
// console.log(goodsInfoFormRefValidate())
// console.log(cityList, 'cityList')
const res = await formatData()
let data: any = {
// merId:userStore.$state.userInfos.merchantId, //商户id
deliveryType: OrderDetailsRight.value.ShippingType, //配送类型
orderTimer: timeOutFlog ? 1 : 2, //时间类型
deliveryDate: formatTime(OrderDetails.value.ReceiptTime), //时间类型
deliveryTime: OrderDetails.value.ReceiptTimeRange, //时间段
province: CodeToText[OrderDetailsRight.value.ReceivingArea[0]], //省份ID
provinceId: OrderDetailsRight.value.ReceivingArea[0], //省份ID
city: CodeToText[OrderDetailsRight.value.ReceivingArea[1]], //收货人所在市
cityId: OrderDetailsRight.value.ReceivingArea[1], //城市id
district: CodeToText[OrderDetailsRight.value.ReceivingArea[2]], //收货人所在区/县
districtId: OrderDetailsRight.value.ReceivingArea[2], //区/县id
street: cityList.value[0].address, //收货人所在街道
detail: OrderDetails.value.locateAddress, //收货人详细地址
longitude: cityList.value[0].location.split(',')[0], //经度
latitude: cityList.value[0].location.split(',')[1], //纬度
doorNumber: OrderDetails.value.doorNumber, //门牌号,
receiveName: OrderDetailsRight.value.consigneeName, //收货人姓名
receivePhone: OrderDetailsRight.value.consigneeNumber, //收货人电话
orderName: OrderDetailsRight.value.FlowerFixerName, //订货人姓名
orderPhone: OrderDetailsRight.value.FlowerFixerNumber, //订货人电话
cardInfo: OrderDetailsRight.value.greetingCard, //贺卡
orderRemark: OrderDetailsRight.value.OrderNotes, //订单备注
orderDetailsRequestList: res, //下单详情列表
orderMode: OrderSettingsForm.value.orderModel, //下单模式
price: OrderSettingsForm.value.SellingPrice, //销售价
otPrice: OrderSettingsForm.value.SellingPrice, //出 
intro: OrderSettingsFormRight.value.orderRemark, //商家备忘
thirdNum: OrderSettingsForm.value.Third_PartyOrdersNumber, //第三方订单号
invoiceInfo: OrderSettingsFormRight.value.InvoiceInformation, //发票信息
audit: OrderSettingsForm.value.Audit ? 1 : 0, //花图审核
orderKind: OrderSettingsFormRight.value.orderKind, //订单种类
flag: OrderSettingsFormRight.value.flag, //标识
shopId: OrderSettingsFormRight.value.shopId, //指定店铺
}
//console.log(data)
isLoading.value = true
createFlowerWoodApi(data)
.then((res: any) => {
console.log(res, 'res')
// linkNavigateTo(`/order/order_payment`, { orderNo: res.orderNo })
location.assign(
`${config.public.adminUrl}/placeOrder/order_management?code=` + userStore.$state.userInfos.adminToken,
)
isLoading.value = false
})
.catch((err: any) => {
console.log(1111)
isLoading.value = false
})
FileData.value = []
console.log('submit')
})
.catch((error: any) => {
console.log(23e23, error)
for (const key in error) {
console.log(
error[key].forEach((item: any) => {
console.log(item.message)
}),
)
error[key].forEach((item: any) => {
feedback.msgError(item.message)
})
}
})
}
// 下单前的校验
const submitRulesAll = () => {
const promise = goodsInfoFormRefValidate()
return Promise.all([
OrderDetailsRef.value.validate(),
OrderDetailsRulesRef.value.validate(),
...promise,
OrderSettingsFormRef.value.validate(),
])
}
// 校验商品信息
const goodsInfoFormRefValidate = () => {
const arr1 = goodsInfoFormRef.value.map((item: any) => {
return item.validate()
})
const arr2 = goodsInfoFormRightRef.value.map((item: any) => {
return item.validate()
})
const promise = [...arr1, ...arr2]
return promise
}
const userIndex = useCounterStore()
onMounted(() => {
userIndex.increment(3)
})
const active = ref<number>(0)
watch(
() => active.value,
(newVal, oldVal) => {
console.log(newVal)
switch (newVal) {
case 0:
goodsInfoFormData.value = [
{
goodsInfoForm: {
imageFiles: [], //商品图片
content: 1, //商品数量
},
goodsInfoFormRight: {
goodsDescription: '', //商品描述
},
},
]
Transfers()
break
}
},
)
const form = reactive({
name: '',
region: '',
date1: '',
date2: '',
delivery: false,
type: [],
resource: '',
desc: '',
})
const onSubmit = () => {
console.log('submit!')
}
import {
Delete,
Download,
Plus,
ZoomIn,
InfoFilled,
QuestionFilled,
MapLocation,
Goods,
CloseBold,
FullScreen,
Flag,
} from '@element-plus/icons-vue'
import type { UploadFile } from 'element-plus'
const handleRemove = (file: UploadFile, index: any) => {
console.log(file)
goodsInfoFormData.value[index].goodsInfoForm.imageFiles.splice(
goodsInfoFormData.value[index].goodsInfoForm.imageFiles.findIndex((item: any) => item.uid === file.uid),
1,
)
// console.log(file,index)
}
//上传文件
const flesIndex = <any>ref(0)
const searchGoods = <any>ref({
keyWord: '',
type: '',
})
// 选择商品
const selectGoodsDialog = <any>ref(false)
const selectGoodsEvent = (index: number) => {
flesIndex.value = index
//console.log(index)
selectGoodsDialog.value = true
}
const { data: goodsData } = await useAsyncData(async () => myProductListApi())
//模拟商品图片数据
/*const goodsData = <any>ref([
{
url: 'http://localhost:3000/_nuxt/assets/images/image64.png',
name: '测试1',
miaoshu: '没有描述',
},
{
url: 'http://localhost:3000/_nuxt/assets/images/image64.png',
name: '测试2',
miaoshu: '没有描述',
},
])*/
const selectItemIndex = <any>ref(null)
const itemData = <any>ref({})
const selectItem = (url: any, index: number) => {
getImageFileFromUrl(url, '111').then((res: any) => {
const obj = {
raw: res,
uid: res.lastModifed,
url: URL.createObjectURL(res),
}
itemData.value = obj
selectItemIndex.value = index
console.log(res, URL.createObjectURL(res))
// goodsInfoFormData.value[flesIndex.value].goodsInfoForm.imageFiles.push(obj)
})
}
const handleClose = () => {
selectGoodsDialog.value = false
selectItemIndex.value = null
}
const addGoodsItemClick = () => {
if (Object.keys(itemData.value).length === 0) {
selectGoodsDialog.value = false
return
}
goodsInfoFormData.value[flesIndex.value].goodsInfoForm.imageFiles.push(itemData.value)
selectGoodsDialog.value = false
itemData.value = {}
selectItemIndex.value = null
}
const cancelGoodsItemClick = () => {
selectGoodsDialog.value = false
selectItemIndex.value = null
}
const getImageFileFromUrl = (url: any, imageName: any) => {
return new Promise((resolve, reject) => {
var blob = null
var xhr = new XMLHttpRequest()
xhr.open('GET', url)
xhr.setRequestHeader('Accept', 'image/jpeg')
xhr.responseType = 'blob'
xhr.onload = () => {
blob = xhr.response
let imgFile = new File([blob], imageName, { type: 'image/jpeg' })
resolve(imgFile)
}
xhr.onerror = (e) => {
reject(e)
}
xhr.send()
})
}
//格式化时间
const formatTime = (time: any) => {
const date = new Date(time)
const year = date.getFullYear()
const minutes = date.getMonth()
const day = date.getDate()
return `${year}-${minutes + 1}-${day}`
}
</script>
<style lang="scss" scoped>
.banner {
width: 100%;
background-color: #fff;
padding-bottom: 188.0064px;
.nav {
height: 351.9936px;
width: 100%;
background-color: skyblue;
}
.main {
width: 1200px;
margin: 0 auto;
.tabs {
width: 100%;
height: 39.9936px;
background-color: #f3f4f8;
display: flex;
margin-top: 45.0048px;
margin-bottom: 24.9984px;
.standard {
width: 140.0064px;
height: 100%;
color: #252b3a;
font-size: 13.9968px;
text-align: center;
line-height: 39.9936px;
border-radius: 6.0096px;
cursor: pointer;
}
.active {
color: #fff;
background: linear-gradient(90deg, #ff94d4 0%, #ffddbe 100%);
}
}
.order-information {
width: 100%;
// height: 670.0032px;
border: .0052rem dashed #aaa;
margin-top: 30.0096px;
.header {
background-color: #f3f4f8;
height: 39.9936px;
color: #252b3a;
font-size: 15.9936px;
line-height: 39.9936px;
padding: 0 49.9968px;
display: flex;
align-items: center;
}
.header::before {
content: ' ';
display: block;
background-color: #ff4e8d;
width: 2.9952px;
height: 15.9936px;
margin-right: 4.992px;
}
.form {
display: flex;
height: 100%;
.left,
.right {
flex: 1;
padding: 20.0064px;
}
.left {
.timing-receipt {
width: 72px;
height: 34.0032px;
background-color: #f3f4f8;
font-size: 13.9968px;
text-align: center;
line-height: 34.0032px;
border-radius: 14.9952px;
color: #8a8e99;
margin-left: 4.992px;
cursor: pointer;
}
.map {
.dlaceholding {
position: absolute;
z-index: 1;
width: 399.9936px;
height: 140.0064px;
background-color: #d9d9d9;
transition: all 0.3s; /* 添加过渡效果 */
.magnify {
position: absolute;
top: 0;
right: 0;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
width: 30.0096px;
height: 30.0096px;
cursor: pointer;
}
}
.fangda {
position: fixed;
top: 50%;
left: 50%;
width: 70vw;
transform: translate(-50%, -50%);
height: 2.7292rem;
box-shadow: 3.4px 3.4px 2.7px rgba(0, 0, 0, 0.022), 8.7px 8.7px 6.9px rgba(0, 0, 0, 0.031),
17.7px 17.7px 14.2px rgba(0, 0, 0, 0.039), 36.5px 36.5px 29.2px rgba(0, 0, 0, 0.048),
100px 100px 80px rgba(0, 0, 0, 0.07);
transition: all 0.3s;
z-index: 999;
}
}
.upload-image {
::v-deep .el-upload-list__item {
width: 92.0064px;
height: 92.0064px;
}
::v-deep .el-upload {
width: 92.0064px;
height: 92.0064px;
}
::v-deep .el-upload__tip {
position: absolute;
.el-icon {
top: .0104rem;
}
}
}
.select-goods {
width: 92.0064px;
height: 92.0064px;
border-radius: 4.992px;
border: .0052rem dashed #cdd0d6;
margin-left: 10.0032px;
display: flex;
justify-content: center;
align-items: center;
font-size: 25.9968px;
cursor: pointer;
i {
color: #909399;
}
}
.select-goods:hover {
border-color: #ff4e8d;
}
.order-mode {
.tip {
width: 100%;
color: #999999;
font-size: .0625rem;
.el-icon {
top: .0104rem;
}
}
}
.sales-price {
.tail {
display: flex;
align-items: center;
color: #999999;
i {
margin: 0 4.992px;
}
}
}
.bid {
.tail {
color: #999999;
display: flex;
.money {
color: #e1a130;
// margin-left: 4.992px;
}
.krypton {
color: #43a7e5;
text-decoration: underline;
cursor: pointer;
margin-left: 4.992px;
}
}
.tip {
width: 100%;
color: #999999;
font-size: .0625rem;
.el-icon {
top: .0104rem;
}
span {
color: #43a7e5;
text-decoration: underline;
cursor: pointer;
margin-left: 4.992px;
}
}
}
}
.right {
.product-description {
.tip {
width: 100%;
color: #424447;
font-size: .0625rem;
.el-icon {
top: .0104rem;
}
}
.add-product {
width: 180px;
height: 30.0096px;
background-color: #f3f4f8;
color: #101010;
font-size: 12px;
text-align: center;
line-height: 30.0096px;
margin-top: 45.0048px;
}
}
}
}
.settlement {
height: 126.0096px;
padding: 15.9936px 40.992px;
display: flex;
justify-content: space-between;
align-items: center;
.left {
display: flex;
flex-direction: column;
// align-items: center;
justify-content: space-around;
height: 100%;
color: #575d6c;
font-size: 15.9936px;
span {
color: #252b3a;
}
}
.content {
display: flex;
align-items: center;
color: #252b3a;
font-size: 18.0096px;
div {
color: #ff4e8d;
font-size: 25.9968px;
font-weight: 700;
}
}
.right {
width: 240px;
height: 39.9936px;
text-align: center;
line-height: 39.9936px;
color: #fff;
background: linear-gradient(90deg, #ff99bd 0%, #ffddbe 100%);
border-radius: 10.0032px;
font-size: 15.9936px;
cursor: pointer;
}
}
.footer {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 66.0096px;
border: .0052rem solid transparent;
background: linear-gradient(white, white) padding-box,
repeating-linear-gradient(-45deg, #ccc 0, #ccc 0.5em, white 0, white 0.75em);
.add-order-btn {
width: 138.0096px;
height: 39.9936px;
border: .0052rem solid #ff4e8d;
color: #ff4e8d;
text-align: center;
line-height: 39.9936px;
font-size: 13.9968px;
cursor: pointer;
}
}
.close-order {
position: absolute;
top: 50%;
right: 20.0064px;
font-size: 22.0032px;
color: red;
cursor: pointer;
}
}
.goods-info {
.footer {
display: block !important;
height: auto;
.vip-name {
margin-top: 24px;
}
.shop-info {
padding: 24px 22.0032px;
.title {
display: flex;
justify-content: space-between;
.left {
display: flex;
align-items: center;
.shop-name {
color: #252b3a;
font-size: 15.9936px;
font-weight: 600;
}
.gradd {
margin-left: 10.0032px;
}
.status {
width: 49.9968px;
height: 19.008px;
background-color: #fceced;
text-align: center;
line-height: 19.008px;
font-size: 12px;
color: #ff4e8d;
margin-left: 15.9936px;
}
.online-status {
color: #ff4e8d;
font-size: 13.9968px;
margin-left: 30.0096px;
font-weight: 600;
}
}
.right {
display: flex;
.record,
.guarantee {
width: 82.0032px;
height: 19.008px;
text-align: center;
line-height: 19.008px;
}
.record {
border: .0052rem solid #ff4e8d;
color: #ff4e8d;
}
.guarantee {
border: .0052rem solid #1aa48d;
color: #1aa48d;
margin-left: 10.0032px;
}
}
}
.shop-content {
padding: 14.9952px 22.0032px 0 14.9952px;
display: flex;
justify-content: space-between;
.left {
display: flex;
.image {
height: 108px;
width: 108px;
background-color: #c4c4c4;
}
.vip-info {
padding: 10.0032px;
ul {
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
li {
list-style: none;
display: flex;
.label,
.phone,
.qq,
.contact-address {
font-size: 12px;
color: #8a8e99;
}
.name,
.telephone-number,
.qq-number,
.address {
font-size: 12px;
color: #333333;
}
.icon {
font-size: .0729rem;
color: #dd323c;
}
.map {
font-size: 12px;
color: #8a8e99;
}
}
}
}
}
.right {
display: flex;
flex-direction: column;
justify-content: space-between;
ul {
display: flex;
border: .0052rem solid #e1e1e3;
border-radius: 4.992px;
li {
position: relative;
list-style: none;
width: 75.9936px;
height: 49.9968px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.content {
color: #ff4e8d;
font-size: 15.9936px;
}
.txt {
font-size: 12px;
color: #575d6c;
}
}
li:nth-child(n + 2)::after {
content: ' ';
display: block;
width: .0052rem;
height: 30.0096px;
background-color: #e1e1e3;
position: absolute;
left: 0;
// position: absolute;
// background-color: pink;
}
}
.bottom {
// margin-top: 10.0032px;
}
}
}
}
}
}
}
::v-deep .el-date-editor.el-input,
.el-date-editor.el-input__wrapper {
width: 120px;
}
::v-deep .el-input__prefix {
display: none;
}
.receipt-time {
::v-deep .el-input {
width: 128.0064px;
margin-left: 4.992px;
}
}
::v-deep .el-radio-button__original-radio:checked+.el-radio-button__inner {
color: #ff518f;
background: none;
}
// ::v-deep .el-radio-button:last-child .el-radio-button__inner {
// width: 128.0064px;
// // height:34.0032px;
// }
// ::v-deep .el-radio-button:first-child .el-radio-button__inner {
// width: 128.0064px;
// margin-right: 4.992px;
// }
}
.diglog-tips {
display: flex;
justify-content: space-between;
.left {
font-size: 18.0096px;
}
.right {
color: #1890ff;
}
}
.goods-box {
box-sizing: border-box;
margin-top: 20.0064px;
display: flex;
.goods-item {
width: 150.0096px;
height: 200.0064px;
padding: 10.0032px;
border: .0052rem solid #ebebeb;
cursor: pointer;
.img {
width: 100%;
height: 80.0064px;
img {
width: 100%;
height: 100%;
}
}
.price {
color: red;
font-size: 15.9936px;
display: flex;
}
.label {
color: #101010;
font-size: 13.9968px;
}
.goods-name {
display: flex;
color: #101010;
font-size: 13.9968px;
}
.miaoshu {
display: flex;
color: #101010;
font-size: 13.9968px;
}
}
.goods-item-active {
border-color: red;
}
}
::v-deep .el-form-item__content {
align-items: normal;
}
</style>