Files
ai_dianshang/admin/dist/assets/index-1ba66765.js

2 lines
19 KiB
JavaScript
Raw Permalink Normal View History

2025-11-28 15:18:10 +08:00
import{H as I,a as ge,r as w,b as oe,j as K,k as de,z as pe,c,o as p,l as V,w as t,e as n,f as e,h as g,t as b,d as y,G as A,L as F,m as ue,F as ce,E as x,bY as _e,bZ as be,I as ye,g as ke,J as he,n as ne,bX as we,ce as xe,c8 as De}from"./index-01a32b87.js";import{a as se,g as Ve}from"./products-8998b350.js";import{_ as ie}from"./_plugin-vue_export-helper-c27b6911.js";const Ce=o=>I({url:"/admin/api/v1/banners",method:"get",params:o}),$e=o=>I({url:"/admin/api/v1/banners",method:"post",data:o}),Be=(o,D)=>I({url:`/admin/api/v1/banners/${o}`,method:"put",data:D}),ze=o=>I({url:`/admin/api/v1/banners/${o}`,method:"delete"}),Ue=o=>I({url:"/admin/api/v1/banners/batch",method:"delete",data:{ids:o}}),Se=(o,D)=>I({url:`/admin/api/v1/banners/${o}/status`,method:"put",data:{status:D}}),Le=()=>I({url:"/admin/api/v1/banners/clean-expired",method:"post"});const Ee={class:"upload-container"},Pe={key:0,class:"upload-placeholder"},Re={key:1,class:"upload-preview"},Fe={class:"upload-overlay"},Ie={key:4,class:"link-tip"},Te={key:0},je={key:1},Me={key:2},Ne={class:"dialog-footer"},Oe={__name:"BannerForm",props:{visible:{type:Boolean,default:!1},bannerData:{type:Object,default:null}},emits:["update:visible","success"],setup(o,{emit:D}){const h=o,C=D,S=ge(),$=w(),B=w(),k=w(!1),v=w([]),f=w([]),s=w(!1),R=w(!1),l=oe({title:"",description:"",image:"",link_value:"",link_type:1,sort:0,status:1}),L={title:[{required:!0,message:"请输入轮播图标题",trigger:"blur"},{min:1,max:100,message:"标题长度在 1 到 100 个字符",trigger:"blur"}],sort:[{required:!0,message:"请输入排序值",trigger:"blur"},{type:"number",min:0,max:999,message:"排序值在 0 到 999 之间",trigger:"blur"}],link_value:[{validator:(r,a,m)=>{if(l.link_type===4){if(!a){m(new Error("请输入外部链接地址"));return}if(!/^https?:\/\/.+/.test(a)){m(new Error("请输入有效的URL地址必须以http://或https://开头"));return}}if(l.link_type===2&&!a){m(new Error("请选择商品"));return}if(l.link_type===3&&!a){m(new Error("请选择分类"));return}m()},trigger:"blur"}]},P=K(()=>{var r;return!!((r=h.bannerData)!=null&&r.id)}),q=K(()=>"/api/admin/api/v1/upload/image"),T=K(()=>({Authorization:`Bearer ${S.token}`})),j=K(()=>{switch(l.link_type){case 1:return"无需填写链接地址";case 2:return"请选择商品";case 3:return"请选择分类";case 4:return"请输入完整的URL地址例如https://example.com";default:return"请输入链接地址"}});de(()=>h.visible,r=>{r&&(W(),h.bannerData&&(Object.assign(l,h.bannerData),l.link_value&&(l.link_type===2?z(l.link_value):l.link_type)))}),de(()=>l.link_type,(r,a)=>{r!==a&&(l.link_value=""),r===3&&f.value.length===0&&G()});const W=()=>{Object.assign(l,{title:"",description:"",image:"",link_value:"",link_type:1,sort:0,status:1}),$.value&&$.value.clearValidate()},X=r=>{const a=r.type.startsWith("image/"),m=r.size/1024/1024<5;return a?m?!0:(x.error("图片大小不能超过 5MB!"),!1):(x.error("只能上传图片文件!"),!1)},Y=r=>{r.code===200?l.image=r.data.url:x.error(r.message||"图片上传失败")},Z=()=>{x.error("图片上传失败")},Q=()=>{l.image=""},ee=async()=>{try{if(await $.value.validate(),!l.image){x.error("请上传轮播图片");return}k.value=!0;const r={...l};P.value?await Be(r.id,r):await $e(r),C("success")}catch(r){if(r.errors)return;x.error(P.value?"更新失败":"创建失败")}finally{k.value=!1}},u=()=>{C("update:visible",!1)},i=async r=>{if(!r){M();return}try{s.value=!0;const a=await se({page:1,size:20,keyword:r,status:1});a.code===200&&(v.value=a.data.list||[])}catch(a){console.error("搜索商品失败:",a)}finally{s.value=!1}},M=async()=>{try{s.value=!0;const r=await se({page:1,size:20,status:1});r.code===200&&(v.value=r.data.list||[])}catch(r){console.error("加载商品列表失败:",r)}finally{s.value=!1}},z=async r=>{try{s.value=!0;const a=await se({page:1,size:20,status:1});a.code===200&&(v.value=a.data.list||[])}catch(a){console.error("加载商品失败:",a)}finally{s.value=!1}},G=async()=>{try{R.value=!0;const r=await Ve({page:1,size:100,status:1});r.code===200&&(f.value=r