parent
615e1fc04c
commit
26c96680d6
@ -0,0 +1,28 @@
|
||||
<template>
|
||||
<component :is="render" />
|
||||
</template>
|
||||
<script setup lang="jsx">
|
||||
import data from 'china-area-data';
|
||||
import ElCascader from './extra/ElCascader.vue';
|
||||
const props = defineProps({
|
||||
props: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {
|
||||
expandTrigger: 'hover',
|
||||
};
|
||||
},
|
||||
},
|
||||
});
|
||||
const attrs = useAttrs();
|
||||
const slots = useSlots();
|
||||
const convert = (obj) =>
|
||||
obj
|
||||
? Object.entries(obj).map((entry) => {
|
||||
return { label: entry[1], value: entry[0], children: convert(data[entry[0]]) };
|
||||
})
|
||||
: [];
|
||||
const options = convert(data[86]);
|
||||
const render = () => <ElCascader {...{ ...props, options }} {...attrs} v-slots={slots} />;
|
||||
</script>
|
||||
<style lang="less" scoped></style>
|
@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<el-dialog v-model="state.visible" title="修改收货人信息">
|
||||
<el-form ref="refsForm" v-loading="state.submitting" :model="state.form" :rules="state.rules">
|
||||
<el-form-item label="收货人姓名" prop="recipientName">
|
||||
<el-input v-model="state.form.recipientName" />
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号码" prop="recipientPhone">
|
||||
<el-input v-model="state.form.recipientPhone" />
|
||||
</el-form-item>
|
||||
<el-form-item label="所在区域" prop="area">
|
||||
<el-area v-model="state.form.area" />
|
||||
</el-form-item>
|
||||
<el-form-item label="详细地址" prop="recipientAddress">
|
||||
<el-input v-model="state.form.recipientAddress" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="close">取消</el-button>
|
||||
<el-button :loading="state.submitting" type="primary" @click="handleSave">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="jsx">
|
||||
const store = useStore();
|
||||
|
||||
const refsForm = ref(null);
|
||||
const state = reactive({
|
||||
submitting: false,
|
||||
visible: false,
|
||||
order: null,
|
||||
form: {
|
||||
orderId: null,
|
||||
area: [],
|
||||
recipientName: null,
|
||||
recipientPhone: null,
|
||||
recipientAddress: null,
|
||||
},
|
||||
rules: {
|
||||
orderId: [{ required: true, message: '订单ID不能为空' }],
|
||||
area: [{ required: true, message: '省市区不能为空' }],
|
||||
recipientName: [{ required: true, message: '收货人姓名不能为空' }],
|
||||
recipientPhone: [{ required: true, message: '收货人手机不能为空' }],
|
||||
recipientAddress: [{ required: true, message: '详细地址不能为空' }],
|
||||
},
|
||||
});
|
||||
const show = (order) => {
|
||||
state.order = order;
|
||||
state.form = {
|
||||
orderId: order.orderId,
|
||||
area: [],
|
||||
recipientName: order.logistics?.recipientName,
|
||||
recipientPhone: order.logistics?.recipientPhone,
|
||||
recipientAddress: order.logistics?.recipientAddress,
|
||||
};
|
||||
state.visible = true;
|
||||
};
|
||||
const close = () => {
|
||||
state.visible = false;
|
||||
};
|
||||
defineExpose({
|
||||
show,
|
||||
close,
|
||||
});
|
||||
const handleSave = async () => {
|
||||
state.submitting = true;
|
||||
try {
|
||||
await unref(refsForm).validate();
|
||||
let res = await store.dispatch('order/address', state.form);
|
||||
if (res) {
|
||||
Object.assign(state.order, state.form);
|
||||
state.visible = false;
|
||||
}
|
||||
} catch (e) {
|
||||
console.info('取消关闭', e);
|
||||
}
|
||||
state.submitting = false;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped></style>
|
@ -0,0 +1,72 @@
|
||||
<template>
|
||||
<el-dialog v-model="state.visible" title="修改费用信息">
|
||||
<el-form ref="refsForm" v-loading="state.submitting" :model="state.form" :rules="state.rules">
|
||||
<el-form-item label="商品合计" prop="totalAmount">¥{{ state.order.totalAmount }}</el-form-item>
|
||||
<el-form-item label="运费" prop="shippingAmount">
|
||||
<el-input-number v-model="state.form.shippingAmount" />
|
||||
</el-form-item>
|
||||
<el-form-item label="活动优惠" prop="discountAmount">¥{{ state.order.discountAmount }}</el-form-item>
|
||||
<el-form-item label="应付款金额" prop="payAmount">
|
||||
<span class="red">¥{{ state.order.payAmount }}</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="close">取消</el-button>
|
||||
<el-button :loading="state.submitting" type="primary" @click="handleSave">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="jsx">
|
||||
const store = useStore();
|
||||
|
||||
const refsForm = ref(null);
|
||||
const state = reactive({
|
||||
submitting: false,
|
||||
visible: false,
|
||||
order: {},
|
||||
form: {
|
||||
orderId: null,
|
||||
shippingAmount: 0,
|
||||
},
|
||||
rules: {
|
||||
orderId: [{ required: true, message: '订单ID不能为空' }],
|
||||
shippingAmount: [{ required: true, message: '运费不能为空' }],
|
||||
},
|
||||
});
|
||||
const show = (order) => {
|
||||
state.order = order;
|
||||
state.form = {
|
||||
orderId: order.orderId,
|
||||
shippingAmount: order.shippingAmount,
|
||||
};
|
||||
state.visible = true;
|
||||
};
|
||||
const close = () => {
|
||||
state.visible = false;
|
||||
};
|
||||
defineExpose({
|
||||
show,
|
||||
close,
|
||||
});
|
||||
const handleSave = async () => {
|
||||
state.submitting = true;
|
||||
try {
|
||||
await unref(refsForm).validate();
|
||||
let res = await store.dispatch('order/fees', state.form);
|
||||
if (res) {
|
||||
Object.assign(state.order, state.form);
|
||||
state.visible = false;
|
||||
}
|
||||
} catch (e) {
|
||||
console.info('取消关闭', e);
|
||||
}
|
||||
state.submitting = false;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.red {
|
||||
color: var(--el-color-danger);
|
||||
}
|
||||
</style>
|
Loading…
Reference in new issue