Files
guofu-admin/modules/views/bak/wechatDeposit/components/wechatDepositEdit.vue
2024-08-23 22:28:24 +08:00

250 lines
6.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 编辑弹窗 -->
<template>
<ele-modal
:width="800"
:visible="visible"
:maskClosable="false"
:maxable="maxable"
:title="isUpdate ? '编辑押金' : '添加押金'"
:body-style="{ paddingBottom: '28px' }"
@update:visible="updateVisible"
@ok="save"
>
<a-form
ref="formRef"
:model="form"
:rules="rules"
:label-col="styleResponsive ? { md: 4, sm: 5, xs: 24 } : { flex: '90px' }"
:wrapper-col="
styleResponsive ? { md: 19, sm: 19, xs: 24 } : { flex: '1' }
"
>
<a-form-item label="订单id" name="oid">
<a-input
allow-clear
placeholder="请输入订单id"
v-model:value="form.oid"
/>
</a-form-item>
<a-form-item label="用户id" name="uid">
<a-input
allow-clear
placeholder="请输入用户id"
v-model:value="form.uid"
/>
</a-form-item>
<a-form-item label="场地订单号" name="orderNum">
<a-input
allow-clear
placeholder="请输入场地订单号"
v-model:value="form.orderNum"
/>
</a-form-item>
<a-form-item label="付款订单号" name="wechatOrder">
<a-input
allow-clear
placeholder="请输入付款订单号"
v-model:value="form.wechatOrder"
/>
</a-form-item>
<a-form-item label="退款订单号 " name="wechatReturn">
<a-input
allow-clear
placeholder="请输入退款订单号 "
v-model:value="form.wechatReturn"
/>
</a-form-item>
<a-form-item label="场馆名称" name="siteName">
<a-input
allow-clear
placeholder="请输入场馆名称"
v-model:value="form.siteName"
/>
</a-form-item>
<a-form-item label="微信昵称" name="username">
<a-input
allow-clear
placeholder="请输入微信昵称"
v-model:value="form.username"
/>
</a-form-item>
<a-form-item label="手机号码" name="phone">
<a-input
allow-clear
placeholder="请输入手机号码"
v-model:value="form.phone"
/>
</a-form-item>
<a-form-item label="物品名称" name="name">
<a-input
allow-clear
placeholder="请输入物品名称"
v-model:value="form.name"
/>
</a-form-item>
<a-form-item label="押金金额" name="price">
<a-input
allow-clear
placeholder="请输入押金金额"
v-model:value="form.price"
/>
</a-form-item>
<a-form-item label="押金状态1已付款2未付款已退押金" name="status">
<a-radio-group v-model:value="form.status">
<a-radio :value="0">显示</a-radio>
<a-radio :value="1">隐藏</a-radio>
</a-radio-group>
</a-form-item>
</a-form>
</ele-modal>
</template>
<script lang="ts" setup>
import { ref, reactive, watch } from 'vue';
import { Form, message } from 'ant-design-vue';
import { assignObject, uuid } from 'ele-admin-pro';
import { addWechatDeposit, updateWechatDeposit } from '@/api/shop/wechatDeposit';
import { WechatDeposit } from '@/api/shop/wechatDeposit/model';
import { useThemeStore } from '@/store/modules/theme';
import { storeToRefs } from 'pinia';
import { ItemType } from 'ele-admin-pro/es/ele-image-upload/types';
import { FormInstance } from 'ant-design-vue/es/form';
import { FileRecord } from '@/api/system/file/model';
// 是否是修改
const isUpdate = ref(false);
const useForm = Form.useForm;
// 是否开启响应式布局
const themeStore = useThemeStore();
const { styleResponsive } = storeToRefs(themeStore);
const props = defineProps<{
// 弹窗是否打开
visible: boolean;
// 修改回显的数据
data?: WechatDeposit | null;
}>();
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
// 提交状态
const loading = ref(false);
// 是否显示最大化切换按钮
const maxable = ref(true);
// 表格选中数据
const formRef = ref<FormInstance | null>(null);
const images = ref<ItemType[]>([]);
// 用户信息
const form = reactive<WechatDeposit>({
id: undefined,
oid: undefined,
uid: undefined,
orderNum: undefined,
wechatOrder: undefined,
wechatReturn: undefined,
siteName: undefined,
username: undefined,
phone: undefined,
name: undefined,
price: undefined,
status: undefined,
createTime: undefined,
tenantId: undefined,
wechatDepositId: undefined,
wechatDepositName: '',
status: 0,
comments: '',
sortNumber: 100
});
/* 更新visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
// 表单验证规则
const rules = reactive({
wechatDepositName: [
{
required: true,
type: 'string',
message: '请填写押金名称',
trigger: 'blur'
}
]
});
const chooseImage = (data: FileRecord) => {
images.value.push({
uid: data.id,
url: data.path,
status: 'done'
});
form.image = data.path;
};
const onDeleteItem = (index: number) => {
images.value.splice(index, 1);
form.image = '';
};
const { resetFields } = useForm(form, rules);
/* 保存编辑 */
const save = () => {
if (!formRef.value) {
return;
}
formRef.value
.validate()
.then(() => {
loading.value = true;
const formData = {
...form
};
const saveOrUpdate = isUpdate.value ? updateWechatDeposit : addWechatDeposit;
saveOrUpdate(formData)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
})
.catch(() => {});
};
watch(
() => props.visible,
(visible) => {
if (visible) {
images.value = [];
if (props.data) {
assignObject(form, props.data);
if(props.data.image){
images.value.push({
uid: uuid(),
url: props.data.image,
status: 'done'
})
}
isUpdate.value = true;
} else {
isUpdate.value = false;
}
} else {
resetFields();
}
},
{ immediate: true }
);
</script>