From 9d4ed41193a1039e8558c7914e0a39b13e62d3b5 Mon Sep 17 00:00:00 2001 From: jackhoo_98 Date: Mon, 30 Jan 2023 14:49:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AF=81=E4=B9=A6=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/link/certificate.ts | 9 + src/router/menu.ts | 2 +- src/views/link/Certificate/Detail/index.vue | 34 +++- src/views/link/Certificate/index.vue | 190 +++++++++++++++++++- src/views/link/Certificate/type.d.ts | 19 ++ 5 files changed, 244 insertions(+), 10 deletions(-) create mode 100644 src/views/link/Certificate/type.d.ts diff --git a/src/api/link/certificate.ts b/src/api/link/certificate.ts index 9ed5f5e1..3f6b0a31 100644 --- a/src/api/link/certificate.ts +++ b/src/api/link/certificate.ts @@ -5,3 +5,12 @@ export const NETWORK_CERTIFICATE_UPLOAD = `${BASE_API_PATH}/network/certificate/ export const save = (data: object) => server.post(`/network/certificate`, data); + +export const update = (data: object) => server.patch(`/network/certificate`, data); + +export const query = (data: object) => server.post(`/network/certificate/_query`, data); + +export const queryDetail = (id: string) => server.get(`/network/certificate/${id}`); + +export const remove = (id: string) => server.remove(`/network/certificate/${id}`); + diff --git a/src/router/menu.ts b/src/router/menu.ts index 2e92daff..48eb4149 100644 --- a/src/router/menu.ts +++ b/src/router/menu.ts @@ -81,7 +81,7 @@ export default [ component: () => import('@/views/link/Certificate/index.vue') }, { - path: '/link/certificate/detail/add', + path: '/link/certificate/detail/:type/:id', component: () => import('@/views/link/Certificate/Detail/index.vue') }, { diff --git a/src/views/link/Certificate/Detail/index.vue b/src/views/link/Certificate/Detail/index.vue index 410bd10c..e8857baf 100644 --- a/src/views/link/Certificate/Detail/index.vue +++ b/src/views/link/Certificate/Detail/index.vue @@ -60,6 +60,7 @@ ({ type: 'common', name: '', configs: { @@ -137,9 +142,10 @@ const { resetFields, validate, validateInfos } = useForm( const onSubmit = () => { validate() .then(async (res) => { - const params = toRaw(formData); + const params = toRaw(formData.value); loading.value = true; - const response = await save(params); + const response = + type === 'edit' ? await update(params) : await save(params); if (response.status === 200) { message.success('操作成功'); router.push('/link/certificate'); @@ -156,10 +162,28 @@ const handleChange = (info: UploadChangeParam) => { if (info.file.status === 'done') { message.success('上传成功!'); const result = info.file.response?.result; - formData.configs.cert = result; + formData.value.configs.cert = result; fileLoading.value = false; } }; + +const detail = async (id: string) => { + if (type !== 'add') { + loading.value = true; + const res = await queryDetail(id); + if (res.success) { + const result = res.result as FormDataType; + const type = result.type.value as TypeObjType; + formData.value = { + ...result, + type, + }; + } + loading.value = false; + } +}; + +detail(id); diff --git a/src/views/link/Certificate/type.d.ts b/src/views/link/Certificate/type.d.ts new file mode 100644 index 00000000..eb38e3e6 --- /dev/null +++ b/src/views/link/Certificate/type.d.ts @@ -0,0 +1,19 @@ + +export interface TypeObjType = { + text: string; + value: string; +}; +export type FormDataType = { + description: string; + name: string; + type: string | TypeObjType; + configs: { + cert: string; + key: string; + }; + id?: string; + format?: string; + mode?: object; + creatorId?: string; + createTime?: number; +};