Merge branch 'dev' of http://git.gxwebsoft.com/gxwebsoft/yunxinwei-vue into dev
This commit is contained in:
@@ -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查询订单
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -94,6 +94,8 @@ export interface OrderPay {
|
|||||||
// 来源记录的参数 (json格式)
|
// 来源记录的参数 (json格式)
|
||||||
orderSourceData?: string;
|
orderSourceData?: string;
|
||||||
rentOrderId?: number;
|
rentOrderId?: number;
|
||||||
|
//订单金额
|
||||||
|
orderPriceInt?:number;//服务端用BigDecimal无法接受,另起一个字段
|
||||||
// 订单编号
|
// 订单编号
|
||||||
orderNo?: string;
|
orderNo?: string;
|
||||||
// 创建时间
|
// 创建时间
|
||||||
|
|||||||
@@ -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 = () => {
|
||||||
|
|||||||
@@ -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 {
|
||||||
Reference in New Issue
Block a user