This commit is contained in:
messi
2024-08-22 20:16:47 +08:00
4 changed files with 67 additions and 84 deletions

View File

@@ -1,6 +1,6 @@
import request from '@/utils/request'; import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api'; 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'; import { App } from '@/api/app/model';
/** /**
@@ -58,6 +58,15 @@ export async function pageOrderPay(params?: OrderParam) {
return Promise.reject(new Error(res.data.message)); 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查询订单 * 根据id查询订单
*/ */

View File

@@ -94,6 +94,8 @@ export interface OrderPay {
// 来源记录的参数 (json格式) // 来源记录的参数 (json格式)
orderSourceData?: string; orderSourceData?: string;
rentOrderId?: number; rentOrderId?: number;
//订单金额
orderPriceInt?:number;//服务端用BigDecimal无法接受另起一个字段
// 订单编号 // 订单编号
orderNo?: string; orderNo?: string;
// 创建时间 // 创建时间

View File

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

View File

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