Files
kami_frontend/src/views/card-jd-ck/account/components/add-modal.vue
danial 6d5d2e21f1 refactor(api): update JD cookie management and related components
This commit refactors the JD cookie management API and associated components to improve maintainability and consistency. Key changes include:
- Updated API client to include `CkApi` for JD cookie operations.
- Added new models and updated existing ones for JD cookie management.
- Refactored components to use the updated API and models.
- Removed unused code and streamlined the logic for adding, updating, and deleting JD cookies.
2025-04-05 17:36:53 +08:00

147 lines
3.6 KiB
Vue

<template>
<a-modal
:visible="props.visible"
:ok-loading="loading"
draggable
@cancel="handleCancel"
>
<template #title>{{ isNaN(props.id) ? '新增' : '编辑' }}Cookie</template>
<a-form ref="formDataRef" :model="formData">
<a-form-item field="name" label="名称" required>
<a-input v-model="formData.name" />
</a-form-item>
<a-form-item field="cookie" label="cookie" required>
<a-space
direction="vertical"
fill
style="width: -webkit-fill-available"
>
<a-textarea
v-model="formData.cookie"
:autoSize="{ minRows: 3, maxRows: 10 }"
/>
</a-space>
</a-form-item>
<a-form-item field="status" label="状态">
<a-switch
v-model="formData.status"
:checked-value="KamiApiCardRedeemJdV1AccountAddReqStatusEnum.Normal"
:unchecked-value="
KamiApiCardRedeemJdV1AccountAddReqStatusEnum.Disable
"
/>
</a-form-item>
<a-form-item field="notes" label="备注">
<a-textarea v-model="formData.notes" />
</a-form-item>
</a-form>
<template #footer>
<a-space>
<a-button @click="handleCancel">取消</a-button>
<a-button type="primary" :loading="loading" @click="handleOk">
确定
</a-button>
</a-space>
</template>
</a-modal>
</template>
<script lang="ts" setup>
import useLoading from '@/hooks/loading';
import { FormInstance } from '@arco-design/web-vue';
import { ref, PropType, watch, reactive } from 'vue';
import { isNull } from '@/utils/is.ts';
import { apiCkClient } from '@/api/index.ts';
import { KamiApiCardRedeemJdV1AccountAddReqStatusEnum } from '@/api/generated/index.ts';
import type {
KamiApiCardRedeemJdV1AccountAddReq,
KamiApiCardRedeemJdV1CookieInfo
} from '@/api/generated/index.ts';
import { isNaN } from 'lodash';
const props = defineProps({
visible: {
type: Boolean,
default: false
},
id: {
type: Number,
default: null
},
account: {
type: Object as PropType<Required<KamiApiCardRedeemJdV1CookieInfo>>,
default: null
}
});
const generateFormData = () => {
return {
name: '',
cookie: '',
notes: '',
status: KamiApiCardRedeemJdV1AccountAddReqStatusEnum.Normal
};
};
const formData = ref<KamiApiCardRedeemJdV1AccountAddReq>(generateFormData());
const formDataRef = ref<FormInstance>();
const { loading, setLoading } = useLoading(false);
const renderData = reactive<{ cookieStatus: boolean; loading: boolean }>({
cookieStatus: false,
loading: false
});
const emit = defineEmits(['update:visible']);
const handleOk = () => {
if (formData.value) {
formDataRef.value.validate().then(async res => {
if (res) return;
setLoading(true);
try {
if (isNull(props.id)) {
await apiCkClient.apiCookieInfoJdAccountAddPost(formData.value);
} else {
await apiCkClient.apiCookieInfoJdAccountUpdatePut({
id: props.id,
...formData.value
});
}
emit('update:visible', false);
formData.value = generateFormData();
} catch (error) {
} finally {
setLoading(false);
}
});
}
};
watch(
() => props.account,
val => {
if (!isNull(val)) {
formData.value = { ...val };
}
}
);
const handleCancel = () => {
emit('update:visible', false);
formData.value = generateFormData();
};
watch(
() => formData.value.cookie,
val => {
renderData.cookieStatus = false;
}
);
</script>
<style lang="less" scoped>
.footer {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
</style>