一键复制

This commit is contained in:
zjf committed 2025-04-24 19:08:49 +08:00
1 parent 88d2a121ba
commit 4f3604cdaf
1 file changed
+137
@@ -0,0 +1,137 @@
<template>
<el-dialog
v-model="visible"
title="复制菜单"
width="500px"
:close-on-click-modal="false"
@close="closeDialog"
>
<el-form
ref="formRef"
:model="form"
:rules="rules"
label-width="120px"
>
<el-form-item label="源商户" prop="sourceMerchantId">
<select-mch
v-model="form.sourceMerchantId"
:apiParams="{ types: '1' }"
placeholder="请选择源商户"
/>
</el-form-item>
<el-form-item label="目标商户" prop="targetMerchantId">
<el-select
v-model="form.targetMerchantId"
multiple
placeholder="请选择目标商户"
class="w-full"
>
<el-option
v-for="item in merchantList"
:key="item.id"
:label="item.name"
:value="item.id"
:disabled="item.id === form.sourceMerchantId"
/>
</el-select>
</el-form-item>
<el-form-item label="复制日期" prop="startTime">
<el-date-picker
v-model="form.startTime"
type="date"
placeholder="选择日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
class="w-full"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="closeDialog">取 消</el-button>
<el-button type="primary" @click="submitForm" :loading="loading">
确 定
</el-button>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import type { FormInstance } from 'element-plus'
import { pageJoin } from "/@/api/wallet/mch-manage"
import { useMessage } from "/@/hooks/message"
import { copyMenu } from "/@/api/canteen/canteenDailyMenu"
const visible = ref(false)
const loading = ref(false)
const formRef = ref<FormInstance>()
const merchantList = ref<any[]>([])
const form = reactive({
sourceMerchantId: undefined,
targetMerchantId: [] as number[],
startTime: ''
})
const rules = {
sourceMerchantId: [{ required: true, message: '请选择源商户', trigger: 'change' }],
targetMerchantId: [{ required: true, message: '请选择目标商户', trigger: 'change' }],
startTime: [{ required: true, message: '请选择开始时间', trigger: 'change' }]
}
const emit = defineEmits(['success'])
// 获取商户列表
const getMerchantList = async () => {
try {
const res = await pageJoin({ current: 1, size: 9999, types: 1 })
merchantList.value = res.data.records
} catch (error) {
console.error('获取商户列表失败:', error)
}
}
const openDialog = () => {
visible.value = true
getMerchantList()
}
const closeDialog = () => {
visible.value = false
formRef.value?.resetFields()
form.sourceMerchantId = undefined
form.targetMerchantId = []
form.startTime = ''
}
const submitForm = async () => {
if (!formRef.value) return
await formRef.value.validate(async (valid) => {
if (valid) {
loading.value = true
try {
const res = await copyMenu(form)
if (res.code === 0) {
useMessage().success('复制成功')
emit('success')
closeDialog()
} else {
useMessage().error(res.msg || '复制失败')
}
} catch (error: any) {
useMessage().error(error.msg || '复制失败')
} finally {
loading.value = false
}
}
})
}
defineExpose({
openDialog
})
</script>