feat:增加线上续费

This commit is contained in:
yangqingyuan
2024-08-21 16:01:23 +08:00
parent da3519f3c7
commit 8d0932910e
4 changed files with 67 additions and 84 deletions

View File

@@ -1,6 +1,6 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api';
import type { Order, OrderParam } from './model';
import type {Order, OrderParam, OrderPay} from './model';
import { App } from '@/api/app/model';
/**
@@ -59,6 +59,15 @@ export async function pageOrderPay(params?: OrderParam) {
return Promise.reject(new Error(res.data.message));
}
//续租订单
export async function addOrderPay(data: OrderPay) {
const res = await request.post<ApiResult<unknown>>('/shop/order-pay/renew', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 根据id查询订单
*/

View File

@@ -94,6 +94,8 @@ export interface OrderPay {
// 来源记录的参数 (json格式)
orderSourceData?: string;
rentOrderId?: number;
//订单金额
orderPrice?:number;
// 订单编号
orderNo?: string;
// 创建时间

View File

@@ -309,9 +309,8 @@
<view >
<a-button
class="ele-text-danger"
@click="openOrderOnline(record)"
>退租</a-button>
>续费该设备</a-button>
</view>
</template>
</template>
@@ -414,9 +413,10 @@
</a-col>
</a-row>
</a-card>
<order-online
v-model:visible="showOrderOnline"
<order-xufei
v-model:visible="showOrderXufei"
:data="current"
@done="getRenewOrder"
/>
</ele-modal>
@@ -431,7 +431,7 @@ import {formatNumber} from 'ele-admin-pro/es';
import {storeToRefs} from 'pinia';
import {copyText} from '@/utils/common';
import {Order} from '@/api/order/model';
import OrderOnline from '../components/order-online.vue';
import OrderXufei from '../components/order-xufei.vue';
import {listEquipmentOrderGoods} from '@/api/apps/equipment/order/goods';
import {EquipmentOrderGoods} from '@/api/apps/equipment/order/goods/model';
import * as EquipmentApi from '@/api/apps/equipment';
@@ -440,14 +440,12 @@ import {ColumnItem, DatasourceFunction} from 'ele-admin-pro/es/ele-pro-table/typ
import {listOrder, listOrderPay} from '@/api/order';
import {CopyOutlined} from '@ant-design/icons-vue';
import {EquipmentRecord} from '@/api/apps/equipment/record/model';
import OrderRefund from "@/views/yunxinwei/order/components/order-refund.vue";
const useForm = Form.useForm;
// 是否开启响应式布局
const themeStore = useThemeStore();
const {styleResponsive} = storeToRefs(themeStore);
const showOrderOnline = ref(false);
const showOrderXufei = ref(false);
// 当前编辑数据
const current = ref<Order | null>(null);
@@ -736,7 +734,7 @@ const getEquipmentOrderGoods = () => {
/* 线下缴费 */
const openOrderOnline = (row?: Order) => {
current.value = row ?? null;
showOrderOnline.value = true;
showOrderXufei.value = true;
};
const getEquipment = () => {

View File

@@ -13,42 +13,32 @@
>
<a-space>
<a-form>
<a-form-item label="设备编码" v-bind="validateInfos.equipmentCode">
<a-form-item label="设备编码">
<a-input
allow-clear
:maxlength="30"
placeholder="请输入设备编码"
v-model:value="form.equipmentCode"
@blur="
validate('equipmentCode', { trigger: 'blur' }).catch(() => {})
"
v-model:value="form.equipmentCode"/>
</a-form-item>
<a-form-item label="租用人">
<span>
{{props.data.realName}}
</span>
</a-form-item>
<a-form-item label="续期时间">
<a-range-picker
v-model:value="dateRange"
value-format="YYYY-MM-DD"
class="ele-fluid"
/>
</a-form-item>
<!-- <a-row :gutter="16">-->
<!-- <a-col :md="12" :sm="24" :xs="24">-->
<!-- <a-form-item label="选择设备" v-bind="validateInfos.customerName">-->
<!-- <a-input-->
<!-- allow-clear-->
<!-- :maxlength="30"-->
<!-- placeholder="请选择设备"-->
<!-- v-model:value="form.customerName"-->
<!-- @blur="-->
<!-- validate('customerName', { trigger: 'blur' }).catch(() => {})-->
<!-- "-->
<!-- />-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!-- <a-col :md="12" :sm="24" :xs="24">-->
<!-- <a-form-item label="手机号码" v-bind="validateInfos.customerMobile">-->
<!-- <a-input-->
<!-- allow-clear-->
<!-- :maxlength="20"-->
<!-- placeholder="请填写联系人手机号码"-->
<!-- v-model:value="form.customerMobile"-->
<!-- />-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<!-- </a-row>-->
<a-form-item label="续期费用">
<a-input-number :min="0" :max="9999999" v-model:value="form.orderPrice"/>
<span style="marginleft: 10px"> </span>
</a-form-item>
</a-form>
</a-space>
</ele-modal>
@@ -69,11 +59,10 @@ import {ref, reactive, watch, computed} from 'vue';
import { FILE_SERVER } from '@/config/setting';
import { useUserStore } from '@/store/modules/user';
import { Equipment } from "@/api/apps/equipment/model";
import { Order } from "@/api/order/model";
import {Order, OrderPay} from "@/api/order/model";
import {addOrderPay} from "@/api/order";
const userStore = useUserStore();
//
const loginUser = computed(() => userStore.info ?? {});
//
const isUpdate = ref(false);
const useForm = Form.useForm;
@@ -81,7 +70,7 @@ import { Order } from "@/api/order/model";
//
visible: boolean;
//
data?: Order | null;
data?: OrderPay | null;
}>();
const emit = defineEmits<{
@@ -95,10 +84,19 @@ import { Order } from "@/api/order/model";
const maxable = ref(true);
//
const form = reactive<Equipment>({
const form = reactive<OrderPay>({
rentOrderId:undefined,
orderNo:undefined,
equipmentCode: '',
orderId: undefined
orderId: undefined,
startTime:undefined,
expirationTime:undefined,
//
orderPrice:undefined,
payStatus:20,
});
//
const dateRange = ref<[string, string]>(['', '']);
// ,
const images = ref(<any>[]);
@@ -108,33 +106,26 @@ import { Order } from "@/api/order/model";
emit('update:visible', value);
};
//
const rules = reactive({
equipmentCode: [
{
required: true,
type: 'string',
message: '请输入设备编码',
trigger: 'blur'
}
]
});
const { resetFields, validate, validateInfos } = useForm(form, rules);
const { resetFields, validate, validateInfos } = useForm(form);
/* 保存编辑 */
const save = () => {
const [d1, d2] = dateRange.value ?? [];
if (dateRange.value[0] === '' || dateRange.value[1] === "" ){
message.warn("请选择续期时间");
return;
}
form.startTime =d1 + ' 00:00:00';
form.expirationTime = d2 + ' 23:59:59';
form.orderNo=props.data?.orderNo;
form.rentOrderId=props.data?.rentOrderId;
validate()
.then(() => {
loading.value = true;
//
const data = {
...form,
orderId: props.data?.orderId,
userId: props.data?.userId
};
//
bindEquipment(data)
addOrderPay(form)
.then((msg) => {
loading.value = false;
message.success(msg);
@@ -149,32 +140,15 @@ import { Order } from "@/api/order/model";
.catch(() => {});
};
const onUpload = (d: ItemType) => {
uploadFile(<File>d.file)
.then((result) => {
form.customerAvatar = result.path;
message.success('上传成功');
})
.catch((e) => {
message.error(e.message);
});
};
watch(
() => props.visible,
(visible) => {
if (visible) {
if (props.data) {
loading.value = false;
//
images.value = [];
if(props.data.customerAvatar){
images.value.push({ uid:1, url: FILE_SERVER + props.data.customerAvatar, status: '' });
}
assignObject(form, props.data);
isUpdate.value = true;
} else {
form.customerCode = createCode();
isUpdate.value = false;
}
} else {