|
|
|
|
<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>支持jpg,jpeg,png,gif格式,小于1M的图片 最多上传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>
|