From f35680f356168af8d4a3d5f34456e561af40fbba Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 24 十二月 2025 13:15:10 +0800
Subject: [PATCH] feat: 接口
---
src/views/OperationManage/components/AddOrEditAdvertisementDialog.vue | 127 ++++++++++++++++++------------------------
1 files changed, 54 insertions(+), 73 deletions(-)
diff --git a/src/views/OperationManage/components/AddOrEditAdvertisementDialog.vue b/src/views/OperationManage/components/AddOrEditAdvertisementDialog.vue
index 8983528..cac2bcb 100644
--- a/src/views/OperationManage/components/AddOrEditAdvertisementDialog.vue
+++ b/src/views/OperationManage/components/AddOrEditAdvertisementDialog.vue
@@ -1,66 +1,46 @@
<template>
- <ProDialog
- :title="innerForm.title"
- v-model="innerVisible"
- @close="onDialogClose"
- destroy-on-close
- >
- <ProForm :rules="rules" :model="innerForm" ref="dialogForm" label-width="120px">
- <ProFormItemV2
- label="骞垮憡椤甸潰:"
- prop="pageType"
- :check-rules="[{ message: '璇烽�夋嫨骞垮憡椤甸潰' }]"
- >
+ <ProDialog :title="form.title" v-model="visible" @close="onDialogClose" destroy-on-close>
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProFormItemV2 label="骞垮憡椤甸潰:" prop="page" :check-rules="[{ message: '璇烽�夋嫨骞垮憡椤甸潰' }]">
<ProFormSelect
placeholder="璇烽�夋嫨骞垮憡椤甸潰"
- :value-enum="FlexWorkerEleSignEnumText"
+ :value-enum="EnumAdvertisementPageText"
clearable
- v-model="innerForm.pageType"
+ v-model="form.page"
></ProFormSelect>
</ProFormItemV2>
<ProFormItemV2
label="骞垮憡鍚嶇О:"
- prop="advertiseName"
+ prop="name"
:check-rules="[{ message: '璇疯緭鍏ュ箍鍛婂悕绉�' }, { max: 20, message: '涓嶈兘瓒呰繃20涓瓧绗�' }]"
>
<ProFormText
placeholder="璇疯緭鍏ュ箍鍛婂悕绉�"
- v-model.trim="innerForm.advertiseName"
+ v-model.trim="form.name"
:maxlength="20"
></ProFormText>
</ProFormItemV2>
- <ProFormItemV2
- label="骞垮憡浜у搧閾炬帴:"
- prop="advertiseLink"
- :check-rules="[
- { type: 'urlWithParams', message: '璇疯緭鍏ュ箍鍛婁骇鍝侀摼鎺�' },
- { message: '璇疯緭鍏ユ纭殑骞垮憡浜у搧閾炬帴' },
- ]"
- >
+ <ProFormItemV2 label="骞垮憡浜у搧閾炬帴:" prop="url">
<ProFormText
placeholder="璇疯緭鍏ュ箍鍛婁骇鍝侀摼鎺�"
- v-model.trim="innerForm.advertiseLink"
+ v-model.trim="form.url"
:maxlength="150"
></ProFormText>
</ProFormItemV2>
<ProFormItemV2
label="骞垮憡鍥剧墖:"
- prop="imgInfo"
+ prop="file"
:check-rules="[{ type: 'array', message: '璇烽�夋嫨骞垮憡鍥剧墖' }]"
>
- <ProFormImageUpload
- :fileDirectory="OssAdvertise"
- v-model:file-url="innerForm.imgInfo"
- :limitFileCount="1"
- ></ProFormImageUpload>
+ <ProFormImageUpload v-model:file-url="form.file" :limitFileCount="1"></ProFormImageUpload>
</ProFormItemV2>
<ProFormItemV2
label="骞垮憡鏃ユ湡:"
- prop="date"
+ prop="time"
:check-rules="[{ type: 'array', message: '璇烽�夋嫨骞垮憡鏃ユ湡' }]"
>
<ProFormDatePicker
- v-model="innerForm.date"
+ v-model="form.time"
type="daterange"
range-separator="~"
start-placeholder="骞垮憡璧峰鏃ユ湡"
@@ -75,7 +55,7 @@
:check-rules="[{ message: '璇疯緭鍏ユ帓搴�' }]"
>
<ProFormInputNumber
- v-model="innerForm.sort"
+ v-model="form.sort"
:controls="false"
:min="0"
:max="99"
@@ -92,7 +72,7 @@
</template>
<script setup lang="ts">
-import { FormRules, FormInstance } from 'element-plus';
+import { FormInstance } from 'element-plus';
import {
ProDialog,
ProForm,
@@ -105,64 +85,65 @@
ProFormImageUpload,
} from '@bole-core/components';
import { ModelValueType } from 'element-plus';
-import { OssAdvertise, FlexWorkerEleSignEnumText } from '@/constants';
-import { BoleRegExp } from '@bole-core/core';
+import { EnumAdvertisementPageText } from '@/constants';
+import { useQuery } from '@tanstack/vue-query';
+import * as advertisementServices from '@/services/api/advertisement';
+import { convertApi2FormUrlOnlyOne, format } from '@/utils';
defineOptions({
name: 'AddOrEditAdvertisementDialog',
});
-type Props = {
- modelValue: boolean;
- form?: {
- title?: string;
- id: string;
- pageType: number;
- advertiseName: string;
- advertiseLink: string;
- imgInfo: UploadUserFile[];
- date: ModelValueType;
- sort: number;
- };
+type Form = {
+ title?: string;
+ id: string;
+ page?: number;
+ name?: string;
+ url?: string;
+ file?: UploadUserFile[];
+ time?: ModelValueType;
+ sort?: number;
};
-const props = withDefaults(defineProps<Props>(), {
- modelValue: false,
-});
+const form = defineModel<Form>('form');
+const visible = defineModel<boolean>('modelValue');
const emit = defineEmits<{
- (e: 'update:modelValue', value: boolean): void;
- (e: 'update:form', value: Props['form']): void;
(e: 'onConfirm'): void;
(e: 'onCancel'): void;
}>();
const dialogForm = ref<FormInstance>();
-const innerVisible = computed({
- get() {
- return props.modelValue;
- },
- set(val) {
- emit('update:modelValue', val);
- },
-});
+watch(
+ () => visible.value,
+ (val) => {
+ if (val && form.value?.id) {
+ refetch();
+ }
+ }
+);
-const innerForm = computed({
- get() {
- return props.form;
+const { data: detail, refetch } = useQuery({
+ queryKey: ['advertisementServices/getAdvertisement', form.value.id],
+ queryFn: async () => {
+ return await advertisementServices.getAdvertisement({ id: form.value.id });
},
- set(val) {
- emit('update:form', val);
+ placeholderData: () => ({} as API.GetAdvertisementQueryResult),
+ enabled: computed(() => !!form.value.id),
+ onSuccess(data) {
+ form.value.page = data.page;
+ form.value.name = data.name;
+ form.value.url = data.url;
+ form.value.file = data.file ? convertApi2FormUrlOnlyOne(data.file) : [];
+ form.value.time = [
+ format(data.beginTime, 'YYYY-MM-DD 00:00:00'),
+ format(data.endTime, 'YYYY-MM-DD 23:59:59'),
+ ];
+ form.value.sort = data.sort;
},
});
-const rules = reactive<FormRules>({
- contacterPhone: [
- { message: '璇疯緭鍏ユ纭殑鑱旂郴鐢佃瘽', trigger: 'blur', pattern: BoleRegExp.RegTelNumber },
- ],
-});
-
function onDialogClose() {
if (!dialogForm.value) return;
dialogForm.value.resetFields();
--
Gitblit v1.10.0