|
|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
- <el-drawer v-model="drawer" :title="dialogTitle" size="35%">
|
|
|
- <div>
|
|
|
+ <el-drawer v-model="drawer" :title="dialogTitle" size="35%">
|
|
|
+ <div v-if="DetailData">
|
|
|
<el-descriptions :title="t('mall.receivingInfoOne')" :column="2" v-if="DetailData.orderType == 'takeout'">
|
|
|
<el-descriptions-item :label="t('mall.userNickname')">{{ nickname }}</el-descriptions-item>
|
|
|
<el-descriptions-item :label="t('mall.consignee')">{{ DetailData.realName }}</el-descriptions-item>
|
|
|
@@ -8,79 +8,107 @@
|
|
|
<el-descriptions-item :label="t('mall.receivingAddress')">{{ DetailData.userAddress }}</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
<el-descriptions title="" :column="1" v-if="DetailData.orderType != 'due'">
|
|
|
- <el-descriptions-item>
|
|
|
- <template #label>
|
|
|
- <div class="mylabel">
|
|
|
- {{ t('mall.dishDetails') }}
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <div>
|
|
|
- <div style="background: linear-gradient(to bottom, #e9f1ee, #fcfcf4);padding: 20px 30px;margin: 10px 0;border-radius: 20px;" v-for="(item, index) in DetailData.appDeskOrderVo" :key="index">
|
|
|
- <div class="flex align-center">
|
|
|
- <div><el-avatar :size="50" :src="item.uavatar" /></div>
|
|
|
- <div class="flex flex-1 justify-between font-size-sm text-color-assist">
|
|
|
- <div class="flex flex-column ml-2">
|
|
|
- <span>{{item.unickname}}</span>
|
|
|
- <span>{{formatDate(item.addTime) }}</span>
|
|
|
- </div>
|
|
|
- <div style="">
|
|
|
- <span style="color: #9acafc;font-weight: bold;">{{item.uidType == 'user' ? t('mall.userOrdering') : t('mall.staffOrderingOnBehalf')}}</span>
|
|
|
- <span style="color: #5ac725;">({{item.isOrder == 0 ? t('mall.mealNotServed') : t('mall.mealServed')}})</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>
|
|
|
+ <div class="mylabel">
|
|
|
+ {{ t('mall.dishDetails') }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div>
|
|
|
+ <div
|
|
|
+ style="background: linear-gradient(to bottom, #e9f1ee, #fcfcf4); padding: 20px 30px; margin: 10px 0; border-radius: 20px"
|
|
|
+ v-for="(item, index) in DetailData.appDeskOrderVo"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <div class="flex align-center">
|
|
|
+ <div><el-avatar :size="50" :src="item.uavatar" /></div>
|
|
|
+ <div class="flex flex-1 justify-between font-size-sm text-color-assist">
|
|
|
+ <div class="flex flex-column ml-2">
|
|
|
+ <span>{{ item.unickname }}</span>
|
|
|
+ <span>{{ formatDate(item.addTime) }}</span>
|
|
|
</div>
|
|
|
- <el-divider />
|
|
|
- <div class="flex align-center" v-for="(good,index2) in item.appDeskOrderGoodsVos" :key="index2">
|
|
|
- <div><el-image :src="convertImageUrl(good.image)" style="width: 70px;height: 70px;" /></div>
|
|
|
- <div class="flex flex-1 flex-column ml-2 font-size-sm">
|
|
|
- <div class="flex justify-between"><span class="font-weight-bolder">{{good.title}}</span><span style="color: #f56c6c;">{{good.spec}}</span></div>
|
|
|
- <div class="flex justify-between mt-1"><span>¥{{good.price}}</span><span>x{{good.number}}</span></div>
|
|
|
- </div>
|
|
|
+ <div style="">
|
|
|
+ <span style="color: #9acafc; font-weight: bold">{{
|
|
|
+ item.uidType == 'user' ? t('mall.userOrdering') : t('mall.staffOrderingOnBehalf')
|
|
|
+ }}</span>
|
|
|
+ <span style="color: #5ac725">({{ item.isOrder == 0 ? t('mall.mealNotServed') : t('mall.mealServed') }})</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ </div>
|
|
|
+ <el-divider />
|
|
|
+ <div class="flex align-center" v-for="(good, index2) in item.appDeskOrderGoodsVos" :key="index2">
|
|
|
+ <div><el-image :src="convertImageUrl(good.image)" style="width: 70px; height: 70px" /></div>
|
|
|
+ <div class="flex flex-1 flex-column ml-2 font-size-sm">
|
|
|
+ <div class="flex justify-between"
|
|
|
+ ><span class="font-weight-bolder">{{ good.title }}</span
|
|
|
+ ><span style="color: #f56c6c">{{ good.spec }}</span></div
|
|
|
+ >
|
|
|
+ <div class="flex justify-between mt-1"
|
|
|
+ ><span>¥{{ good.price }}</span
|
|
|
+ ><span>x{{ good.number }}</span></div
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </el-descriptions-item>
|
|
|
+ </div>
|
|
|
+ </el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
<el-descriptions :title="t('mall.productDetails')" :column="1" v-else>
|
|
|
- <el-descriptions-item :label="t('mall.reserveTable')">
|
|
|
- <table width="100%">
|
|
|
- <tr style="font-weight:bold;height:50px">
|
|
|
- <td>{{t('mall.picture')}}</td>
|
|
|
- <td>{{t('mall.name')}}</td>
|
|
|
- <td>{{t('mall.price')}}</td>
|
|
|
- <td>{{t('mall.quantity')}}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td><el-image style="width: 40px; height: 40px" :src="DetailData.shopDeskDO.image" :fit="fit" /></td>
|
|
|
- <td>{{ DetailData.shopDeskDO.title}}</td>
|
|
|
- <td>¥0.00</td>
|
|
|
- <td>x 1</td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('mall.reserveTable')">
|
|
|
+ <table width="100%">
|
|
|
+ <tr style="font-weight: bold; height: 50px">
|
|
|
+ <td>{{ t('mall.picture') }}</td>
|
|
|
+ <td>{{ t('mall.name') }}</td>
|
|
|
+ <td>{{ t('mall.price') }}</td>
|
|
|
+ <td>{{ t('mall.quantity') }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td><el-image style="width: 40px; height: 40px" :src="DetailData.shopDeskDO.image" fit="fill" /></td>
|
|
|
+ <td>{{ DetailData.shopDeskDO.title }}</td>
|
|
|
+ <td>¥0.00</td>
|
|
|
+ <td>x 1</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
<el-descriptions :title="t('mall.orderInfo')" :column="2">
|
|
|
<template #title>
|
|
|
{{ t('mall.orderInfo') }}
|
|
|
- <el-tag type="danger" v-if="DetailData.orderType=='desk'">{{ t('mall.dineIn') }}</el-tag>
|
|
|
- <el-tag type="danger" v-if="DetailData.orderType=='takeout'">{{t('mall.takeOut')}}</el-tag>
|
|
|
- <el-tag type="danger" v-if="DetailData.orderType=='takein'">{{t('mall.pickup')}}</el-tag>
|
|
|
- <el-tag type="danger" v-if="DetailData.orderType=='due'">{{ t('mall.reservation') }}</el-tag>
|
|
|
+ <el-tag type="danger" v-if="DetailData.orderType == 'desk'">{{ t('mall.dineIn') }}</el-tag>
|
|
|
+ <el-tag type="danger" v-if="DetailData.orderType == 'takeout'">{{ t('mall.takeOut') }}</el-tag>
|
|
|
+ <el-tag type="danger" v-if="DetailData.orderType == 'takein'">{{ t('mall.pickup') }}</el-tag>
|
|
|
+ <el-tag type="danger" v-if="DetailData.orderType == 'due'">{{ t('mall.reservation') }}</el-tag>
|
|
|
</template>
|
|
|
<el-descriptions-item :label="t('mall.store')">{{ DetailData.shopName }}</el-descriptions-item>
|
|
|
- <el-descriptions-item :label="t('mall.pickupNumber')" v-if="DetailData.orderType != 'due'">{{ DetailData.numberId }}</el-descriptions-item>
|
|
|
- <el-descriptions-item :label="t('mall.tableNumber')">{{ DetailData.deskNumber ? DetailData.deskNumber : t('public.none') }}</el-descriptions-item>
|
|
|
- <el-descriptions-item :label="t('mall.numberOfDiners')" v-if="DetailData.orderType != 'due'">{{ DetailData.deskPeople ? DetailData.deskPeople : t('public.none') }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('mall.pickupNumber')" v-if="DetailData.orderType != 'due'">{{
|
|
|
+ DetailData.numberId
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('mall.tableNumber')">{{
|
|
|
+ DetailData.deskNumber ? DetailData.deskNumber : t('public.none')
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('mall.numberOfDiners')" v-if="DetailData.orderType != 'due'">{{
|
|
|
+ DetailData.deskPeople ? DetailData.deskPeople : t('public.none')
|
|
|
+ }}</el-descriptions-item>
|
|
|
<el-descriptions-item :label="t('mall.orderNo')">{{ DetailData.orderId }}</el-descriptions-item>
|
|
|
- <el-descriptions-item :label="t('mall.reservationTime')" v-if="DetailData.orderType == 'due'">{{ formatDate(DetailData.dueTime) }}</el-descriptions-item>
|
|
|
- <el-descriptions-item :label="t('mall.arrivalTime')" v-if="DetailData.orderType == 'due'">{{ DetailData.reachTime }}</el-descriptions-item>
|
|
|
- <el-descriptions-item :label="t('mall.reservationPerson')" v-if="DetailData.orderType == 'due'">{{ DetailData.realName }}</el-descriptions-item>
|
|
|
- <el-descriptions-item :label="t('mall.reservationPhone')" v-if="DetailData.orderType == 'due'">{{ DetailData.userPhone }}</el-descriptions-item>
|
|
|
- <el-descriptions-item :label="t('mall.orderStatus')" v-if="DetailData.orderType != 'due'">{{ DetailData.statusStr }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('mall.reservationTime')" v-if="DetailData.orderType == 'due'">{{
|
|
|
+ formatDate(DetailData.dueTime)
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('mall.arrivalTime')" v-if="DetailData.orderType == 'due'">{{
|
|
|
+ DetailData.reachTime
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('mall.reservationPerson')" v-if="DetailData.orderType == 'due'">{{
|
|
|
+ DetailData.realName
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('mall.reservationPhone')" v-if="DetailData.orderType == 'due'">{{
|
|
|
+ DetailData.userPhone
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('mall.orderStatus')" v-if="DetailData.orderType != 'due'">{{
|
|
|
+ DetailData.statusStr
|
|
|
+ }}</el-descriptions-item>
|
|
|
<el-descriptions-item :label="t('mall.reservationStatus')" v-if="DetailData.orderType == 'due'">
|
|
|
- <span v-if="DetailData.dueStatus == 1">{{t('mall.reserving')}}</span>
|
|
|
- <span v-else-if="DetailData.dueStatus == 2">{{t('mall.cancelled')}}</span>
|
|
|
- <span v-else>{{t('mall.completed')}}</span>
|
|
|
+ <span v-if="DetailData.dueStatus == 1">{{ t('mall.reserving') }}</span>
|
|
|
+ <span v-else-if="DetailData.dueStatus == 2">{{ t('mall.cancelled') }}</span>
|
|
|
+ <span v-else>{{ t('mall.completed') }}</span>
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item :label="t('mall.totalProductQuantity')">{{ DetailData.totalNum }}</el-descriptions-item>
|
|
|
<el-descriptions-item :label="t('mall.totalProductPrice')">{{ DetailData.totalPrice }}</el-descriptions-item>
|
|
|
@@ -89,36 +117,31 @@
|
|
|
<el-descriptions-item :label="t('mall.pointsDeduction')">{{ DetailData.useIntegral }}</el-descriptions-item>
|
|
|
<el-descriptions-item :label="t('mall.actualPayment')">{{ DetailData.payPrice }}</el-descriptions-item>
|
|
|
<el-descriptions-item :label="t('mall.bonusPoints')">{{ DetailData.gainIntegral }}</el-descriptions-item>
|
|
|
- <el-descriptions-item :label="t('public.createTime')">{{ formatDate(DetailData.createTime)}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item :label="t('public.createTime')">{{ formatDate(DetailData.createTime) }}</el-descriptions-item>
|
|
|
<el-descriptions-item :label="t('mall.paymentTime')">{{ formatDate(DetailData.payTime) }}</el-descriptions-item>
|
|
|
<el-descriptions-item :label="t('mall.paymentMethod')">{{ DetailData.payType }}</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
- <div style="margin-top:50px;text-align:center">
|
|
|
- <el-button type="primary" @click="openHelp()">{{t('mall.assistWithOrdering')}}</el-button>
|
|
|
- <el-button type="success" @click="handlePay(DetailData.id)">{{t('mall.confirmCollection')}}</el-button>
|
|
|
- <el-button type="danger" @click="handlePrint(DetailData.orderId)">{{t('mall.issueOrderAndPrintReceipt')}}</el-button>
|
|
|
+ <div style="margin-top: 50px; text-align: center">
|
|
|
+ <el-button type="primary" @click="openHelp()">{{ t('mall.assistWithOrdering') }}</el-button>
|
|
|
+ <el-button type="success" @click="handlePay(DetailData.id)">{{ t('mall.confirmCollection') }}</el-button>
|
|
|
+ <el-button type="danger" @click="handlePrint(DetailData.orderId)">{{ t('mall.issueOrderAndPrintReceipt') }}</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-drawer>
|
|
|
<helpOrder ref="helpOrderRef" />
|
|
|
-
|
|
|
+
|
|
|
<!-- 支付方式选择对话框 -->
|
|
|
- <el-dialog
|
|
|
- v-model="showPaymentDialog"
|
|
|
- :title="t('mall.confirmOfflineCollection')"
|
|
|
- width="400px"
|
|
|
- class="payment-dialog"
|
|
|
- >
|
|
|
+ <el-dialog v-model="showPaymentDialog" :title="t('mall.confirmOfflineCollection')" width="400px" class="payment-dialog">
|
|
|
<el-radio-group v-model="selectedPayment" class="payment-methods">
|
|
|
- <el-radio label="cash" size="large" border>{{ t('mall.cashPayment') }}</el-radio>
|
|
|
- <el-radio label="paypay" size="large" border>PayPay</el-radio>
|
|
|
- <el-radio label="credit_card" size="large" border>{{ t('mall.creditCard') }}</el-radio>
|
|
|
- <el-radio label="suica" size="large" border>Suica</el-radio>
|
|
|
- <el-radio label="id" size="large" border>ID</el-radio>
|
|
|
- <el-radio label="quick_pay" size="large" border>QuickPay</el-radio>
|
|
|
- <el-radio label="rakuten_pay" size="large" border>{{ t('mall.rakutenPay') }}</el-radio>
|
|
|
+ <el-radio :value="EPAY_TYPE.CASH" label="cash" size="large" border>{{ t('mall.cashPayment') }}</el-radio>
|
|
|
+ <el-radio :value="EPAY_TYPE.PAYPAY" label="paypay" size="large" border>PayPay</el-radio>
|
|
|
+ <el-radio :value="EPAY_TYPE.CREDIT" label="credit_card" size="large" border>{{ t('mall.creditCard') }}</el-radio>
|
|
|
+ <el-radio :value="EPAY_TYPE.SUICA" label="suica" size="large" border>Suica</el-radio>
|
|
|
+ <el-radio :value="EPAY_TYPE.ID" label="id" size="large" border>ID</el-radio>
|
|
|
+ <el-radio :value="EPAY_TYPE.QUICKPAY" label="quick_pay" size="large" border>QuickPay</el-radio>
|
|
|
+ <el-radio :value="EPAY_TYPE.RAKUTENPAY" label="rakuten_pay" size="large" border>{{ t('mall.rakutenPay') }}</el-radio>
|
|
|
</el-radio-group>
|
|
|
-
|
|
|
+
|
|
|
<template #footer>
|
|
|
<span class="dialog-footer">
|
|
|
<el-button @click="showPaymentDialog = false">{{ t('common.cancel') }}</el-button>
|
|
|
@@ -134,10 +157,11 @@ import * as StoreOrderApi from '@/api/mall/order/storeOrder'
|
|
|
import { formatDate } from '@/utils/formatTime'
|
|
|
import helpOrder from '@/views/mall/cashier/help.vue'
|
|
|
import * as CashierApi from '@/api/mall/cashier'
|
|
|
-import { ElMessage } from 'element-plus'
|
|
|
-import { ref } from 'vue'
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
+import { ref } from 'vue'
|
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
|
-import type { PaymentData } from '@/api/mall/order/storeOrder'
|
|
|
+import { EPAY_TYPE, IOrder, StoreOrderCartInfoDO } from '@/api/mall/order/storeOrder'
|
|
|
+import { convertImageUrl } from '@/utils/image-helper'
|
|
|
import { ElRadioGroup, ElRadio } from 'element-plus'
|
|
|
//const message = useMessage() // 消息弹窗
|
|
|
|
|
|
@@ -145,41 +169,40 @@ const { t } = useI18n() // 国际化
|
|
|
const message = useMessage() // 消息弹窗
|
|
|
const dialogTitle = ref('') // 弹窗的标题
|
|
|
const drawer = ref(false)
|
|
|
-const DetailData = ref({})
|
|
|
+const DetailData = ref<IOrder>()
|
|
|
const nickname = ref('')
|
|
|
const logisticResult = ref({})
|
|
|
-const product = ref([])
|
|
|
+const product = ref<StoreOrderCartInfoDO[]>([])
|
|
|
const addProductMark = ref(0)
|
|
|
const deskInfo = ref({})
|
|
|
-const selectedPayment = ref('cash')
|
|
|
+const selectedPayment = ref<EPAY_TYPE>(EPAY_TYPE.CASH)
|
|
|
const showPaymentDialog = ref(false)
|
|
|
const currentOrderId = ref<number | null>(null)
|
|
|
/** 打开弹窗 */
|
|
|
const open = async (desk) => {
|
|
|
drawer.value = true
|
|
|
deskInfo.value = desk
|
|
|
- dialogTitle.value = "桌台:" + desk.number
|
|
|
+ dialogTitle.value = '桌台:' + desk.number
|
|
|
DetailData.value = await StoreOrderApi.getStoreOrderInfo(desk.lastOrderNo)
|
|
|
nickname.value = DetailData.value.userRespVO ? DetailData.value.userRespVO.nickname : '--'
|
|
|
product.value = DetailData.value.storeOrderCartInfoDOList
|
|
|
//获取加餐数量
|
|
|
- if(DetailData.value.storeOrderCartInfoDOList && DetailData.value.storeOrderCartInfoDOList.length > 0){
|
|
|
+ if (DetailData.value.storeOrderCartInfoDOList && DetailData.value.storeOrderCartInfoDOList.length > 0) {
|
|
|
addProductMark.value = DetailData.value.storeOrderCartInfoDOList[DetailData.value.storeOrderCartInfoDOList.length - 1].addProductMark
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- console.log('addProductMark.value:',addProductMark.value )
|
|
|
+ console.log('addProductMark.value:', addProductMark.value)
|
|
|
}
|
|
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
|
|
|
|
|
const helpOrderRef = ref()
|
|
|
const openHelp = () => {
|
|
|
drawer.value = false
|
|
|
- helpOrderRef.value.open(deskInfo.value,DetailData.value)
|
|
|
+ helpOrderRef.value.open(deskInfo.value, DetailData.value)
|
|
|
}
|
|
|
|
|
|
const handlePay = async (id: number) => {
|
|
|
- if(!id) {
|
|
|
+ if (!id) {
|
|
|
message.error(t('mall.pleasePlaceAnOrderFirst'))
|
|
|
return
|
|
|
}
|
|
|
@@ -192,9 +215,17 @@ const confirmPayment = async () => {
|
|
|
ElMessage.error(t('mall.pleaseSelectPaymentMethod'))
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+ // PAYPAY("paypay","Paypay支付"),
|
|
|
+ // CREDIT("credit_card", "信用卡支付"),
|
|
|
+ // SUICA("suica","西瓜卡支付"),
|
|
|
+ // ID("id","ID支付"),
|
|
|
+ // QUICKPAY("quick_pay","日本快捷支付"),
|
|
|
+ // RAKUTENPAY("rekuten_pay", "乐天支付");
|
|
|
try {
|
|
|
- await StoreOrderApi.payStoreOrder(currentOrderId.value!)
|
|
|
+ await StoreOrderApi.payStoreOrderWithPayType({
|
|
|
+ id: currentOrderId.value!,
|
|
|
+ payType: selectedPayment.value
|
|
|
+ })
|
|
|
message.success(t('common.updateSuccess'))
|
|
|
showPaymentDialog.value = false
|
|
|
drawer.value = false
|
|
|
@@ -204,7 +235,7 @@ const confirmPayment = async () => {
|
|
|
}
|
|
|
|
|
|
const handlePrint = async (id) => {
|
|
|
- if(!id) {
|
|
|
+ if (!id) {
|
|
|
message.error(t('mall.pleasePlaceAnOrderFirst'))
|
|
|
return
|
|
|
}
|
|
|
@@ -212,28 +243,42 @@ const handlePrint = async (id) => {
|
|
|
//await message.confirm('确定下线收款')
|
|
|
//await StoreOrderApi.payStoreOrder(id)
|
|
|
//message.success(t('common.updateSuccess'))
|
|
|
- await CashierApi.printOrder({orderId:id})
|
|
|
+ await CashierApi.printOrder({ orderId: id })
|
|
|
message.success(t('mall.orderIssued'))
|
|
|
- drawer.value = false
|
|
|
-
|
|
|
+ drawer.value = false
|
|
|
} catch {}
|
|
|
}
|
|
|
-
|
|
|
</script>
|
|
|
<style scoped>
|
|
|
-.flex{
|
|
|
- /* #ifndef APP-PLUS-NVUE */
|
|
|
- display:flex;
|
|
|
- /* #endif */
|
|
|
- flex-direction:row;
|
|
|
+.flex {
|
|
|
+ /* #ifndef APP-PLUS-NVUE */
|
|
|
+ display: flex;
|
|
|
+ /* #endif */
|
|
|
+ flex-direction: row;
|
|
|
+}
|
|
|
+.justify-between {
|
|
|
+ justify-content: space-between;
|
|
|
+}
|
|
|
+.justify-center {
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+.align-center {
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.flex-1 {
|
|
|
+ flex: 1;
|
|
|
+}
|
|
|
+.flex-column {
|
|
|
+ flex-direction: column !important;
|
|
|
+}
|
|
|
+.ml-2 {
|
|
|
+ margin-left: 20px;
|
|
|
+}
|
|
|
+.mylabel {
|
|
|
+ font-weight: bolder;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 18px;
|
|
|
}
|
|
|
-.justify-between{justify-content:space-between;}
|
|
|
-.justify-center{justify-content:center;}
|
|
|
-.align-center{ align-items: center; }
|
|
|
-.flex-1{ flex: 1; }
|
|
|
-.flex-column{ flex-direction:column!important; }
|
|
|
-.ml-2 { margin-left: 20px; }
|
|
|
-.mylabel {font-weight:bolder;text-align:center;font-size:18px}
|
|
|
|
|
|
/* 支付方式选择对话框样式 */
|
|
|
:deep(.payment-dialog) {
|