| 
					
				 | 
			
			
				@@ -0,0 +1,214 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script setup lang="tsx"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { NButton, NImage, NPopconfirm, NSwitch } from 'naive-ui'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fetchAddAdvertInfo, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fetchDeleteAdvertInfo, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fetchGetadvertInfoList, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fetchUpdateAdvertInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} from '@/service/api/operation/advertisement'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useTable } from '@/components/zt/Table/hooks/useTable'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useModalFrom } from '@/components/zt/ModalForm/hooks/useModalForm'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const columns: NaiveUI.TableColumn<Api.operation.AdvertInfo>[] = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    key: 'advertName', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: '广告位名称', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    align: 'center' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    key: 'advertImg', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: '广告图', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    align: 'center', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    render: row => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return <NImage src={row.advertImg} class={'h90px w180px'}></NImage>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    key: 'advertBack', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: '背景图', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    align: 'center', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    render: row => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return <NImage src={row.advertBack} class={'h90px w180px'}></NImage>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    key: 'jumpUrl', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: '跳转链接', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    align: 'center' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    key: 'advertSort', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: '排序', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    align: 'center' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    key: 'status', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: '状态', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    align: 'center', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    render: row => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <NSwitch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          uncheckedValue={0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          checkedValue={1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          value={row.status} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          onUpdate:value={val => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            row.status = val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fetchUpdateAdvertInfo(row); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ></NSwitch> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const [registerTable, { refresh, setTableLoading }] = useTable({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  searchFormConfig: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    schemas: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        field: 'advertName', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: '广告位名称', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        component: 'NInput' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        field: 'status', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: '状态', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        component: 'NSelect', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        componentProps: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          options: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              label: '启用', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              value: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              label: '禁用', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              value: 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    inline: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    size: 'small', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    labelPlacement: 'left', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    isFull: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  tableConfig: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    keyField: 'id', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: '广告位列表', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    showAddButton: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async function handleDelete(row: Recordable) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setTableLoading(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  await fetchDeleteAdvertInfo(row.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  refresh(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const [registerModalForm, { openModal, closeModal, getFieldsValue, setFieldsValue }] = useModalFrom({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  modalConfig: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title: '广告位', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 800, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    isShowHeaderText: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 600 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  formConfig: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    schemas: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        field: 'id', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        component: 'NInput', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        show: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        field: 'advertName', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: '广告位名称', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        component: 'NInput', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        required: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        field: 'advertImg', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: '广告图', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        component: 'zUpload', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        required: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        componentProps: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          tipText: '单张,仅支持png,jpg,jpeg格式,建议尺寸比例 16:9;图片大小不能超过3m。', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          max: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          FileSize: 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        field: 'advertBack', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: '背景图', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        component: 'zUpload', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        required: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        componentProps: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          tipText: '单张,仅支持png,jpg,jpeg格式,建议尺寸比例 16:9;图片大小不能超过3m。', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          max: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          FileSize: 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        field: 'jumpUrl', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: '跳转链接', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        component: 'NInput', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        required: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        field: 'advertSort', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: '排序', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        component: 'NInputNumber', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        required: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        field: 'status', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: '状态', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        component: 'NSwitch', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        required: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        componentProps: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          checkedValue: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          uncheckedValue: 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        defaultValue: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    gridProps: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cols: '1' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    labelWidth: 120 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async function handleSubmit() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const form = await getFieldsValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (form.id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await fetchUpdateAdvertInfo(form); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await fetchAddAdvertInfo(form); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  closeModal(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  refresh(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async function edit(row: Recordable) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  openModal(row); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setFieldsValue(row); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <LayoutTable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <ZTable :columns="columns" :api="fetchGetadvertInfoList" @register="registerTable" @add="openModal"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <template #op="{ row }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <NButton size="small" ghost type="primary" @click="edit(row)">编辑</NButton> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <NPopconfirm @positive-click="handleDelete(row)"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <template #trigger> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <NButton size="small" type="error" ghost>删除</NButton> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          确定删除吗? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </NPopconfirm> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </ZTable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <BasicModelForm @register-modal-form="registerModalForm" @submit-form="handleSubmit"></BasicModelForm> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </LayoutTable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style scoped></style> 
			 |