|
|
@@ -0,0 +1,645 @@
|
|
|
+<script setup lang="ts">
|
|
|
+import CalendarDate from '@/components/DateRange/src/components/CalendarDate.vue'
|
|
|
+import AutoSelect from '@/components/AutoSelect/src/AutoSelect.vue'
|
|
|
+import NewbookingTable from './components/NewbookingTable.vue'
|
|
|
+import AddNewAddress from './images/default_add_address@2x.png'
|
|
|
+import NotAvailable from './images/default_destination_not_available@2x.png'
|
|
|
+import NotShipment from './images/default_no_shipment@2x.png'
|
|
|
+import { useUserStore } from '@/stores/modules/user'
|
|
|
+
|
|
|
+const userStore = useUserStore()
|
|
|
+
|
|
|
+const CreateNewBOokingSearch = ref('')
|
|
|
+const VesselName = ref([])
|
|
|
+const isFocused = ref(false)
|
|
|
+const isataFocused = ref(false)
|
|
|
+const isetaFocused = ref(false)
|
|
|
+const ManageVisible = ref(false)
|
|
|
+const AddNewAddressVisible = ref(false)
|
|
|
+const NoPermissionVisible = ref(false)
|
|
|
+const NoEligibleVisible = ref(true)
|
|
|
+const ATATimeList = ref(null)
|
|
|
+const ETATimeList = ref(null)
|
|
|
+const Addressradio = ref()
|
|
|
+const LocationName = ref('')
|
|
|
+const AddressLine1 = ref('')
|
|
|
+const AddressLine2 = ref('')
|
|
|
+const PostalCode = ref('')
|
|
|
+const ContactPerson = ref('')
|
|
|
+const ContactNumber = ref('')
|
|
|
+const instructions = ref('')
|
|
|
+const NewBookingColumnsList = ref([
|
|
|
+ {
|
|
|
+ field: 'HBOLNo',
|
|
|
+ title: 'HBOL No.',
|
|
|
+ type: '',
|
|
|
+ formatter: ''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'ContainerNo',
|
|
|
+ title: 'Container No.',
|
|
|
+ type: '',
|
|
|
+ formatter: ''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'ServiceType',
|
|
|
+ title: 'Service Type',
|
|
|
+ type: '',
|
|
|
+ formatter: ''
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'ETD',
|
|
|
+ title: 'ETD',
|
|
|
+ type: '',
|
|
|
+ formatter: 'date'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'ETA',
|
|
|
+ title: 'ETA',
|
|
|
+ type: '',
|
|
|
+ formatter: 'date'
|
|
|
+ }
|
|
|
+])
|
|
|
+const modetypeValue = ref('Truck')
|
|
|
+const Requirements = ref('')
|
|
|
+const ModeType = ref([
|
|
|
+ {
|
|
|
+ label: 'Truck',
|
|
|
+ value: 'Truck'
|
|
|
+ }
|
|
|
+])
|
|
|
+
|
|
|
+// 设置无法点击
|
|
|
+const isNotClickAddress = computed(() => {
|
|
|
+ return NoPermissionVisible.value || NoEligibleVisible.value
|
|
|
+})
|
|
|
+
|
|
|
+const ManageAddressList = ref([
|
|
|
+ {
|
|
|
+ title: 'Main Distribution Center',
|
|
|
+ Address1: '160#BEIJING ROAD, JINGAN District,',
|
|
|
+ Address2: 'Shenzhen, China',
|
|
|
+ Contact: 'Contact: John Doe (+65 9123 4567)'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: 'Main Distribution Center2',
|
|
|
+ Address1: '160#BEIJING ROAD, JINGAN District,',
|
|
|
+ Address2: 'Shenzhen, China',
|
|
|
+ Contact: 'Contact: John Doe (+65 9123 4567)'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: 'Main Distribution Center3',
|
|
|
+ Address1: '160#BEIJING ROAD, JINGAN District,',
|
|
|
+ Address2: 'Shenzhen, China',
|
|
|
+ Contact: 'Contact: John Doe (+65 9123 4567)'
|
|
|
+ }
|
|
|
+])
|
|
|
+// 需要特殊样式的日期列表
|
|
|
+const specialDates = ref([
|
|
|
+ '2025-05-27',
|
|
|
+ '2025-05-28',
|
|
|
+]);
|
|
|
+
|
|
|
+
|
|
|
+const DateRangeChangeETA = (val:any) => {
|
|
|
+ ETATimeList.value = val.data
|
|
|
+}
|
|
|
+
|
|
|
+const DateRangeChangeATA = (val:any) => {
|
|
|
+ ATATimeList.value = val.data
|
|
|
+}
|
|
|
+
|
|
|
+const showLabel = computed(() => {
|
|
|
+ return VesselName.value.length!= 0 || isFocused.value
|
|
|
+})
|
|
|
+
|
|
|
+const showataLabel = computed(() => {
|
|
|
+ return ATATimeList.value != null || isataFocused.value
|
|
|
+})
|
|
|
+
|
|
|
+const showETAlabel = computed(() => {
|
|
|
+ return ETATimeList.value != null || isetaFocused.value
|
|
|
+})
|
|
|
+
|
|
|
+const changeFocus = (val: boolean) => {
|
|
|
+ isFocused.value = val
|
|
|
+}
|
|
|
+
|
|
|
+const DateChangeFocusATA = (val: boolean) => {
|
|
|
+ isataFocused.value = val
|
|
|
+}
|
|
|
+const DateChangeFocusETA = (val: boolean) => {
|
|
|
+ isetaFocused.value = val
|
|
|
+}
|
|
|
+
|
|
|
+// 特殊日期样式
|
|
|
+const getCurrentStyle = (current: any) => {
|
|
|
+ const dateString = current.format('YYYY-MM-DD');
|
|
|
+ if (specialDates.value.includes(dateString)) {
|
|
|
+ return {
|
|
|
+ background: '#b3e5d4',
|
|
|
+ borderRadius: '6px',
|
|
|
+ color: `var(--color-neutral-1)`
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ // 默认样式
|
|
|
+ return {};
|
|
|
+}
|
|
|
+
|
|
|
+// 点击按钮
|
|
|
+const handleclickbutton = (val: any) => {
|
|
|
+ Requirements.value = Requirements.value + val
|
|
|
+}
|
|
|
+
|
|
|
+const selectedAddressList = ref()
|
|
|
+const isselectedAddress = ref(null)
|
|
|
+const changeAddressRadio = () => {
|
|
|
+ ManageVisible.value = false
|
|
|
+ if(Addressradio.value != undefined) {
|
|
|
+ isselectedAddress.value = Addressradio.value
|
|
|
+
|
|
|
+ }
|
|
|
+ selectedAddressList.value = ManageAddressList.value[Addressradio.value]
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <div class="Title">
|
|
|
+ <div>Create New Booking</div>
|
|
|
+ <div class="flex">
|
|
|
+ <el-button class="el-button--default create-button"><span class="font_family icon-icon_return_b"></span> Cancel</el-button>
|
|
|
+ <el-button :disabled="isNotClickAddress" class="el-button--main create-button"><span class="font_family icon-icon_submit_b"></span> Submit</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- Select Shipments -->
|
|
|
+ <div class="select_shipments">
|
|
|
+ <div><span class="stars_red">*</span>Select Shipments</div>
|
|
|
+ <div class="flex shipments_search">
|
|
|
+ <el-input
|
|
|
+ placeholder="Enter Booking/HBL/PO/Carrier Booking No. "
|
|
|
+ v-model="CreateNewBOokingSearch"
|
|
|
+ class="log_input"
|
|
|
+ >
|
|
|
+ <template #prefix>
|
|
|
+ <span class="iconfont_icon">
|
|
|
+ <svg class="iconfont icon_search" aria-hidden="true">
|
|
|
+ <use xlink:href="#icon-icon_search_b"></use>
|
|
|
+ </svg>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ <div class="input-with-label">
|
|
|
+ <CalendarDate style="margin: 0 8px;" :isNeedFooter="false" :isETA="true" @DateRangeChange="DateRangeChangeETA" @DateChangeFocus="DateChangeFocusETA"></CalendarDate>
|
|
|
+ <span v-if="showETAlabel" class="border-label">ETA</span>
|
|
|
+ </div>
|
|
|
+ <div class="input-with-label">
|
|
|
+ <CalendarDate :isNeedFooter="false" @DateRangeChange="DateRangeChangeATA" @DateChangeFocus="DateChangeFocusATA"></CalendarDate>
|
|
|
+ <span v-if="showataLabel" class="border-label">ATA</span>
|
|
|
+ </div>
|
|
|
+ <div class="input-with-label" style="margin: 0 8px;">
|
|
|
+ <AutoSelect ASPlaceholder="Input Vessel Name" :ASValue="VesselName" @changeFocus="changeFocus"></AutoSelect>
|
|
|
+ <span v-if="showLabel" class="border-label">Vessel Name</span>
|
|
|
+ </div>
|
|
|
+ <el-button class="el-button--dark create-button">Search</el-button>
|
|
|
+ </div>
|
|
|
+ <NewbookingTable :ColumnsList="NewBookingColumnsList"></NewbookingTable>
|
|
|
+ </div>
|
|
|
+ <!-- Delivery Information -->
|
|
|
+ <div class="Delivery">Delivery Information</div>
|
|
|
+ <div class="delivery_address">
|
|
|
+ <div class="deliverty_flex">
|
|
|
+ <div><span class="stars_red">*</span>Delivery Address</div>
|
|
|
+ <el-button :disabled="isNotClickAddress" @click="ManageVisible = true" class="el-button--noborder--configuration"><span class="font_family icon-icon_location_b"></span> Address Book</el-button>
|
|
|
+ </div>
|
|
|
+ <div class="empty_address" v-if="isselectedAddress == null">
|
|
|
+ <img :src="AddNewAddress" width="48" style="margin-bottom: 8px;" />
|
|
|
+ <el-button :disabled="isNotClickAddress" class="el-button--main" @click="AddNewAddressVisible = true"> + Add New Address</el-button>
|
|
|
+ </div>
|
|
|
+ <div v-else class="addressradio">
|
|
|
+ <el-radio>
|
|
|
+ <div>
|
|
|
+ <div class="radio_top">
|
|
|
+ <div class="radio_title">{{ selectedAddressList.title }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="radio_content">
|
|
|
+ <div class="radio_content_text">{{ selectedAddressList.Address1 }}</div>
|
|
|
+ <div class="radio_content_text">{{ selectedAddressList.Address2 }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="radio_bottom radio_content_text">
|
|
|
+ {{ selectedAddressList.Contact }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-radio>
|
|
|
+ </div>
|
|
|
+ <div class="delivery_type">
|
|
|
+ <div style="margin-right: 12px;">
|
|
|
+ <div class="delivery_type_title"><span class="stars_red">*</span>Mode Type</div>
|
|
|
+ <el-select
|
|
|
+ v-model="modetypeValue"
|
|
|
+ placeholder="Select"
|
|
|
+ :disabled="isNotClickAddress"
|
|
|
+ style="width: 240px"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in ModeType"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <div class="delivery_type_title"><span class="stars_red">*</span>Preferred Delivery Date</div>
|
|
|
+ <a-date-picker
|
|
|
+ :disabled="isNotClickAddress"
|
|
|
+ :showToday="false"
|
|
|
+ style="width: 240px;"
|
|
|
+ :format="userStore.dateFormat"
|
|
|
+ placeholder="Please Select Date"
|
|
|
+ valueFormat="MM/DD/YYYY"
|
|
|
+ >
|
|
|
+ <template #renderExtraFooter>
|
|
|
+ <div class="recommended"><div class="recommend_color"></div>Recommended delivery date</div>
|
|
|
+ </template>
|
|
|
+ <template #dateRender="{ current }">
|
|
|
+ <div class="ant-picker-cell-inner" :style="getCurrentStyle(current)">
|
|
|
+ {{ current.date() }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </a-date-picker>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="delivery_type_title">Special Requirements</div>
|
|
|
+ <div class="flex" style="margin-top: 8px;">
|
|
|
+ <el-button :disabled="isNotClickAddress" class="el-button--grey" @click="handleclickbutton('Tail Lift Required')">Tail Lift Required</el-button>
|
|
|
+ <el-button :disabled="isNotClickAddress" class="el-button--grey" @click="handleclickbutton('Side Loading')">Side Loading</el-button>
|
|
|
+ <el-button :disabled="isNotClickAddress" class="el-button--grey" @click="handleclickbutton('Forklift Required')">Forklift Required</el-button>
|
|
|
+ <el-button :disabled="isNotClickAddress" class="el-button--grey" @click="handleclickbutton('Special Equipment')">Special Equipment</el-button>
|
|
|
+ </div>
|
|
|
+ <el-input :disabled="isNotClickAddress" v-model="Requirements" placeholder="Eenter any additional requirements or notes..." type="textarea" style="margin-top: 8px;" :rows="4"></el-input>
|
|
|
+ </div>
|
|
|
+ <el-dialog
|
|
|
+ v-model="ManageVisible"
|
|
|
+ width="640"
|
|
|
+ class="ManageDialog"
|
|
|
+ :show-close="false"
|
|
|
+ >
|
|
|
+ <el-radio-group v-model="Addressradio">
|
|
|
+ <el-radio v-for="(item, index) in ManageAddressList" :key="index" :value="index">
|
|
|
+ <div class="addressradio">
|
|
|
+ <div class="radio_top">
|
|
|
+ <div class="radio_title">{{ item.title }}</div>
|
|
|
+ <div>
|
|
|
+ <el-button class="el-button--blue"><span class="font_family icon-icon_edit_b"></span></el-button>
|
|
|
+ <el-button class="el-button--blue"><span class="font_family icon-icon_delete_b"></span></el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="radio_content">
|
|
|
+ <div class="radio_content_text">{{ item.Address1 }}</div>
|
|
|
+ <div class="radio_content_text">{{ item.Address2 }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="radio_bottom radio_content_text">
|
|
|
+ {{ item.Contact }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ <template #header>
|
|
|
+ <div class="my-header">
|
|
|
+ <div class="header_Title">Manage Address</div>
|
|
|
+ <el-button @click="AddNewAddressVisible = true" class="el-button--noborder--configuration">+ Add New Address</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button class="el-button--default dialog-button" @click="ManageVisible = false">Cancel</el-button>
|
|
|
+ <el-button class="el-button--dark dialog-button" @click="changeAddressRadio">
|
|
|
+ OK
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog
|
|
|
+ v-model="AddNewAddressVisible"
|
|
|
+ width="640"
|
|
|
+ title="Add New Delivery Address"
|
|
|
+ :show-close="false"
|
|
|
+ >
|
|
|
+ <div class="diaolog_add_title"><span class="stars_red">*</span>Location Name</div>
|
|
|
+ <el-input class="inputmargin" placeholder="Enter location name" v-model="LocationName"></el-input>
|
|
|
+ <div class="diaolog_add_title"><span class="stars_red">*</span>Address Line 1</div>
|
|
|
+ <el-input class="inputmargin" placeholder="Street address, P.O. Box, or company name" v-model="AddressLine1"></el-input>
|
|
|
+ <div class="diaolog_add_title">Address Line 2</div>
|
|
|
+ <el-input class="inputmargin" placeholder="Unit number, floor, etc. (optional)" v-model="AddressLine2"></el-input>
|
|
|
+ <div class="flex">
|
|
|
+ <div style="margin-right: 9px;width: 50%;">
|
|
|
+ <div class="diaolog_add_title"><span class="stars_red">*</span>Country/City</div>
|
|
|
+ <el-input class="inputmargin" placeholder="Unit number, floor, etc. (optional)" v-model="AddressLine2"></el-input>
|
|
|
+ </div>
|
|
|
+ <div style="width: 50%;">
|
|
|
+ <div class="diaolog_add_title"><span class="stars_red">*</span>Postal Code</div>
|
|
|
+ <el-input class="inputmargin" placeholder="Enter postal code" v-model="PostalCode"></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="diaolog_add_title_bold">Contact Information</div>
|
|
|
+ <div class="flex">
|
|
|
+ <div style="margin-right: 9px;width: 50%;">
|
|
|
+ <div class="diaolog_add_title"><span class="stars_red">*</span>Contact Person</div>
|
|
|
+ <el-input class="inputmargin" placeholder="Name" v-model="ContactPerson"></el-input>
|
|
|
+ </div>
|
|
|
+ <div style="width: 50%;">
|
|
|
+ <div class="diaolog_add_title"><span class="stars_red">*</span>Contact Number</div>
|
|
|
+ <el-input class="inputmargin" placeholder="Mobile Numer" v-model="ContactNumber"></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="diaolog_add_title" style="margin-bottom: 4px;">Additional Notes</div>
|
|
|
+ <el-input type="textarea" :rows="3" placeholder="Ddelivery instructions, landmarks,etc. (optional)" v-model="instructions"></el-input>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button class="el-button--default dialog-button" @click="AddNewAddressVisible = false">Cancel</el-button>
|
|
|
+ <el-button class="el-button--dark dialog-button" @click="AddNewAddressVisible = false">
|
|
|
+ Save Address
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ <!-- 无站点权限弹框 -->
|
|
|
+ <el-dialog
|
|
|
+ v-model="NoPermissionVisible"
|
|
|
+ :show-close="false"
|
|
|
+ align-center
|
|
|
+ class="notDialog"
|
|
|
+ width="480"
|
|
|
+ >
|
|
|
+ <div class="flex_center">
|
|
|
+ <img :src="NotAvailable" width="100" />
|
|
|
+ <div class="alert_title">Destination Delivery Service Not Available</div>
|
|
|
+ <div class="alert_text">Destination delivery service is not yet available for your shipment destinations. To request this service, please contact the destination office first.</div>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button style="width: 80px;" class="el-button--dark" @click="NoPermissionVisible = false">OK</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ <!-- 无符合条件弹框 -->
|
|
|
+ <el-dialog
|
|
|
+ v-model="NoEligibleVisible"
|
|
|
+ :show-close="false"
|
|
|
+ align-center
|
|
|
+ class="notDialog"
|
|
|
+ width="480"
|
|
|
+ >
|
|
|
+ <div class="flex_center">
|
|
|
+ <img :src="NotShipment" width="100" />
|
|
|
+ <div class="alert_title">No Eligible Shipments for Booking</div>
|
|
|
+ <div class="alert_text">Your shipments are currently outside the booking window. Eligible shipments will appear here when booking window opens.</div>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button style="width: 80px;" class="el-button--dark" @click="NoEligibleVisible = false">OK</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.Title {
|
|
|
+ display: flex;
|
|
|
+ height: 68px;
|
|
|
+ border: 1px solid var(--color-border);
|
|
|
+ border-top: none;
|
|
|
+ border-width: 1px 0 1px 0;
|
|
|
+ font-size: var(--font-size-6);
|
|
|
+ font-weight: 700;
|
|
|
+ padding: 0 24px;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+}
|
|
|
+.flex {
|
|
|
+ display: flex;
|
|
|
+}
|
|
|
+.deliverty_flex {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-bottom: 4px;
|
|
|
+}
|
|
|
+.con-icon_submit_b {
|
|
|
+ transform: rotate(-45deg);
|
|
|
+}
|
|
|
+.create-button {
|
|
|
+ width: 115px;
|
|
|
+ height: 40px;
|
|
|
+}
|
|
|
+.select_shipments {
|
|
|
+ border: 1px solid var(--color-border);
|
|
|
+ margin: 32px 24px 12px 24px;
|
|
|
+ padding: 9px 16px 16px 16px;
|
|
|
+ border-radius: 12px;
|
|
|
+}
|
|
|
+.delivery_address {
|
|
|
+ border: 1px solid var(--color-border);
|
|
|
+ margin: 0 24px 12px 24px;
|
|
|
+ padding: 9px 16px 16px 16px;
|
|
|
+ border-radius: 12px;
|
|
|
+}
|
|
|
+.stars_red {
|
|
|
+ color: var(--color-danger);
|
|
|
+}
|
|
|
+.shipments_search {
|
|
|
+ margin: 16px 0 8px 0;
|
|
|
+}
|
|
|
+:deep(.log_input .el-input__wrapper) {
|
|
|
+ box-shadow: 0 0 0 1px var(--color-select-border) inset;
|
|
|
+ border-radius: 6px;
|
|
|
+}
|
|
|
+.input-with-label {
|
|
|
+ position: relative;
|
|
|
+ display: inline-block;
|
|
|
+ width: 35%;
|
|
|
+}
|
|
|
+.border-label {
|
|
|
+ position: absolute;
|
|
|
+ top: -7px;
|
|
|
+ left: 10px;
|
|
|
+ background: white; /* 用背景色覆盖边框 */
|
|
|
+ padding: 0 5px;
|
|
|
+ font-size: 12px;
|
|
|
+ color: var(--color-neutral-2);
|
|
|
+ z-index: 1;
|
|
|
+}
|
|
|
+.vessel_input {
|
|
|
+ height: 40px;
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+:deep(.el-select__wrapper.is-filterable) {
|
|
|
+ height: 40px;
|
|
|
+}
|
|
|
+.Delivery {
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 700;
|
|
|
+ margin: 11px 0 14px 24px;
|
|
|
+}
|
|
|
+.empty_address {
|
|
|
+ height: 122px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ flex-direction: column;
|
|
|
+ border-radius: 12px;
|
|
|
+ border: 2px dashed #ED6D00;
|
|
|
+ background: rgba(237, 109, 0, 0.05);
|
|
|
+}
|
|
|
+.delivery_type {
|
|
|
+ display: flex;
|
|
|
+ margin: 16px 0;
|
|
|
+}
|
|
|
+.delivery_type_title {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 700;
|
|
|
+ margin-bottom: 4px;
|
|
|
+}
|
|
|
+.recommended {
|
|
|
+ background: #F5F7FA;
|
|
|
+ border-bottom: 1px solid var(--color-border);
|
|
|
+ height: 24px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding-left: 16px;
|
|
|
+ font-size: 10px;
|
|
|
+ color: var(--color-neutral-2);
|
|
|
+}
|
|
|
+.recommend_color {
|
|
|
+ width: 8px;
|
|
|
+ height: 8px;
|
|
|
+ border-radius: 1px;
|
|
|
+ opacity: 0.3;
|
|
|
+ background: #00A870;
|
|
|
+ margin-right: 4px;
|
|
|
+}
|
|
|
+.reco_button {
|
|
|
+ height: 56px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: end;
|
|
|
+ padding: 0 16px;
|
|
|
+}
|
|
|
+.recomend-button {
|
|
|
+ width: 80px;
|
|
|
+ height: 40px;
|
|
|
+}
|
|
|
+.el-button--grey {
|
|
|
+ padding: 10px 16px;
|
|
|
+ border-radius: 15px;
|
|
|
+}
|
|
|
+:deep(.el-textarea) {
|
|
|
+ .el-textarea__inner {
|
|
|
+ resize: none; // 去除右下角图标
|
|
|
+ padding: 5px 7px 5px 10px;
|
|
|
+ box-shadow: 0 0 0 1px var(--color-select-border) inset;
|
|
|
+ color: var(--color-neutral-1);
|
|
|
+ }
|
|
|
+}
|
|
|
+.dialog-button {
|
|
|
+ width: 115px;
|
|
|
+ height: 40px;
|
|
|
+}
|
|
|
+.my-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ height: 48px;
|
|
|
+}
|
|
|
+:deep(.ManageDialog .el-dialog__header) {
|
|
|
+ padding: 0 16px;
|
|
|
+ height: 48px;
|
|
|
+}
|
|
|
+.header_Title {
|
|
|
+ font-size: 18px;
|
|
|
+}
|
|
|
+.addressradio {
|
|
|
+ background-color: #F8F9FD;
|
|
|
+ border-radius: 12px;
|
|
|
+ padding: 13px 8px 16px 16px;
|
|
|
+}
|
|
|
+.radio_top {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+}
|
|
|
+.radio_title {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+.radio_content_text {
|
|
|
+ color: var(--color-neutral-2);
|
|
|
+ font-size: 14px;
|
|
|
+ height: 21px;
|
|
|
+}
|
|
|
+.radio_content {
|
|
|
+ margin-bottom: 8px;
|
|
|
+}
|
|
|
+:deep(.el-radio-group) {
|
|
|
+ display: block;
|
|
|
+}
|
|
|
+:deep(.el-radio) {
|
|
|
+ display: flex;
|
|
|
+ min-height: 32px;
|
|
|
+ margin-bottom: 8px;
|
|
|
+ border-radius: 12px;
|
|
|
+ margin-right: 0;
|
|
|
+ height: fit-content;
|
|
|
+ line-height: 32px;
|
|
|
+ align-items: baseline;
|
|
|
+}
|
|
|
+.el-button--blue {
|
|
|
+ width: 24px;
|
|
|
+ height: 24px;
|
|
|
+}
|
|
|
+.diaolog_add_title {
|
|
|
+ color: var(--color-neutral-2);
|
|
|
+ font-size: 12px;
|
|
|
+}
|
|
|
+:deep(.el-input__wrapper) {
|
|
|
+ height: 40px;
|
|
|
+}
|
|
|
+.inputmargin {
|
|
|
+ margin: 4px 0 16px 0;
|
|
|
+}
|
|
|
+.diaolog_add_title_bold {
|
|
|
+ color: var(--color-neutral-1);
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 700;
|
|
|
+ margin-bottom: 11px;
|
|
|
+}
|
|
|
+.dialog-footer {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+.flex_center {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ flex-direction: column;
|
|
|
+ padding: 0 19px;
|
|
|
+}
|
|
|
+.alert_title {
|
|
|
+ text-align: center;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+.alert_text {
|
|
|
+ text-align: center;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 21px;
|
|
|
+ margin-top: 8px;
|
|
|
+}
|
|
|
+:deep(.notDialog .el-dialog__header) {
|
|
|
+ display: none;
|
|
|
+}
|
|
|
+</style>
|