<template> <div class="status-change"> <a-tabs v-model:activeKey="activeTab"> <a-tab-pane key="cardStatus" tab="卡片状态"> <a-form :model="cardForm" :label-col="{ span: 6 }" :wrapper-col="{ span: 16 }"> <a-form-item label="原状态" name="aType"> <a-select v-model:value="cardForm.aType" placeholder="请选择原状态" :style="{ width: '100%' }"> <a-select-option v-for="status in cardStatusList" :key="status.status" :value="status.status"> {{ status.text }} </a-select-option> </a-select> </a-form-item> <a-form-item label="目标状态" name="bType"> <a-select v-model:value="cardForm.bType" placeholder="请选择目标状态" :style="{ width: '100%' }"> <a-select-option v-for="status in cardStatusList" :key="status.status" :value="status.status" :disabled="cardForm.aType != null && status.status <= cardForm.aType"> {{ status.text }} </a-select-option> </a-select> </a-form-item> </a-form> </a-tab-pane> <a-tab-pane key="inviteStatus" tab="邀请奖励状态"> <a-form :model="inviteForm" :label-col="{ span: 6 }" :wrapper-col="{ span: 16 }"> <a-form-item label="原状态" name="aType"> <a-select v-model:value="inviteForm.aType" placeholder="请选择原状态" :style="{ width: '100%' }"> <a-select-option v-for="status in inviteStatusList" :key="status.status" :value="status.status"> {{ status.text }} </a-select-option> </a-select> </a-form-item> <a-form-item label="目标状态" name="bType"> <a-select v-model:value="inviteForm.bType" placeholder="请选择目标状态" :style="{ width: '100%' }"> <a-select-option v-for="status in inviteStatusList" :key="status.status" :value="status.status" :disabled="inviteForm.aType != null && status.status <= inviteForm.aType"> {{ status.text }} </a-select-option> </a-select> </a-form-item> </a-form> </a-tab-pane> </a-tabs> <div class="footer"> <a-button @click="handleCancel">取消</a-button> <a-button type="primary" :loading="loading" @click="handleSubmit">确定</a-button> </div> </div> </template> <script lang="ts"> import { defineComponent, ref, reactive } from 'vue'; import { message } from 'ant-design-vue'; import { defHttp } from '/@/utils/http/axios'; export default defineComponent({ name: 'StatusChange', emits: ['cancel'], setup(props, { emit }) { const activeTab = ref('cardStatus'); const loading = ref(false); const cardForm = reactive({ aType: undefined as number | undefined, bType: undefined as number | undefined }); const inviteForm = reactive({ aType: undefined as number | undefined, bType: undefined as number | undefined }); const cardStatusList = [ { status: 1, text: '您的申报已提交审核,请耐心等待结果!' }, { status: 2, text: '恭喜您的申报已通过,请立即点击制卡并且保密运输发货!', amount: 300, tips: "保密运输费用" }, { status: 3, text: '线上免费激活' }, { status: 4, text: '激活成功' }, { status: 5, text: '正在入款' }, { status: 6, text: '入款失败,银行卡流水异常' }, { status: 7, text: '包装流水', amount: 1000, tips: "包装费用" }, { status: 8, text: '正在入款,资金保险', amount: 500, tips: "资金保险费用" }, { status: 9, text: '保险缴纳成功,等待到账' }, { status: 10, text: '财产遭风险控制,确认本人收款', amount: 500, tips: "财产遭风险控制费用" }, { status: 11, text: '重新汇入' }, { status: 12, text: '升级通道,为财产保驾护航', amount: 500, tips: "升级通道费用" }, { status: 13, text: '陆续到账中,请等待' }, { status: 14, text: '免排队,立即到帐', amount: 800, tips: "免排队费用" }, { status: 15, text: '正在加急打款' }, { status: 16, text: '操作不当,资料丢失', amount: 300, tips: "操作不当费用" }, ]; const inviteStatusList = [ { status: 0, text: '您的提现已提交,请等待审核!' }, { status: 1, text: '恭喜您的审核已通过,请等待入款!' }, { status: 2, text: '请立刻补缴大额存款保险费(补缴后即可原路返还)' }, { status: 3, text: '等待入款!' }, { status: 4, text: '查询到前方还有92848位家人正在等待入款!邮储推出立刻到账服务 仅提供600号人', amount: 600, tips: '个人所得税' }, { status: 5, text: '前方还有328位等待入款!' }, ]; const handleSubmit = async () => { const currentForm = activeTab.value === 'cardStatus' ? cardForm : inviteForm; if (currentForm.aType == null || currentForm.bType == null) { message.warning('请选择状态'); return; } try { loading.value = true; const url = activeTab.value === 'cardStatus' ? '/business/businessYw1/editAllAtoB' : '/business/businessYw1/editUserAllAtoB'; await defHttp.get({ url, params: { aType: currentForm.aType, bType: currentForm.bType } }); message.success('状态修改成功'); emit('cancel'); } catch (error) { message.error('状态修改失败'); } finally { loading.value = false; } }; const handleCancel = () => { emit('cancel'); }; return { activeTab, loading, cardForm, inviteForm, cardStatusList, inviteStatusList, handleSubmit, handleCancel }; } }); </script> <style lang="less" scoped> .status-change { padding: 24px; .footer { margin-top: 24px; text-align: right; .ant-btn+.ant-btn { margin-left: 8px; } } } @media (max-width: 576px) { .status-change { padding: 16px; } :deep(.ant-form-item-label) { padding: 0; } } </style>