99AI/AIWebQuickDeploy/public/admin/assets/application-BreYJjWu.js
2025-03-04 17:36:53 +08:00

9 lines
12 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 由 Fantastic-admin 提供技术支持
* Powered by Fantastic-admin
* https://fantastic-admin.github.io
*/
import{_ as Ie}from"./index.vue_vue_type_script_setup_true_lang-c3O57XSg.js";import{_ as Ae}from"./index.vue_vue_type_script_setup_true_lang-BhIKqf2a.js";import{d as xe,r as c,m as S,n as J,a as ke,p as i,q as he,g as r,c as U,b as t,w as a,h as _,F as j,s as B,i as n,v as De,x as Te,y as Ue,z as u,t as x,e as w,A as y,B as Pe,C as ze,D as Ce,E as Me,G as P,H as X,j as Ge,_ as Fe,k as Z}from"./index-6QRvoxq4.js";import{A as z}from"./app-CZBIwClE.js";import{u as qe}from"./utcformatTime-Bq4gDWNx.js";import{Q as Ne,M as $e}from"./index-BE-LteFu.js";const Se=w("div",{class:"flex items-center gap-4"},"应用配置",-1),je=w("div",{class:"text-sm/6"},[w("div",null," 应用一旦创建,可能会被多处使用,请保持规范命名分类,后续尽量变更而不是删除。 "),w("div",null," 可自行选择应用是否固定模型。GPTs 需单独在特殊模型中配置 gpts 模型,并自行搜索填写 gizmoID例如g-alKfVrz9K。 ")],-1),Be={style:{maxWidth:"350px"}},Re={style:{maxHeight:"50px",cursor:"pointer"}},Le={style:{maxWidth:"350px"}},Ke={style:{maxHeight:"50px",cursor:"pointer"}},He=["src"],Oe={class:"mr-5 flex justify-end"},Ye=xe({__name:"application",setup(We){const R=c(),L=c(0),A=c(!1),C=c(!1),f=S({catId:"",name:"",status:"",role:"",page:1,size:10,isGPTs:0,gizmoID:"",isFixedModel:0,appModel:""}),K=c(`/api/upload/file?dir=${encodeURIComponent("system/app")}`),F=c(),k=c(0),h=c(!1),H=c(0),o=S({catId:"",name:"",preset:"",des:"",coverImg:"",demoData:"",order:100,status:0,isGPTs:0,gizmoID:"",isFixedModel:0,appModel:""}),E=S({catId:[{required:!0,message:"请选择App分类",trigger:"change"}],name:[{required:!0,message:"请填写App名称",trigger:"blur"}],preset:[{required:!1,message:"请填写App预设信息",trigger:"blur"}],des:[{required:!0,message:"请填写App描述",trigger:"blur"}],coverImg:[{required:!1,message:"请填写App封面图片地址",trigger:"blur"}],demoData:[{required:!1,message:"请填写App演示数据",trigger:"blur"}],isGPTs:[{required:!0,message:"是否GPTs",trigger:"blur"}],gizmoID:[{required:!1,message:"GPTs 的ID",trigger:"blur"}],order:[{required:!1,message:"请填写排序ID",trigger:"blur"}],status:[{required:!0,message:"请选择App状态",trigger:"change"}],isFixedModel:[{required:!0,message:"请选择App是否固定模型",trigger:"blur"}],appModel:[{required:!1,message:"请选择App使用的模型",trigger:"change"}]}),O=c([]),q=c([]),ee=J(()=>k.value?"更新应用":"新增应用"),le=J(()=>k.value?"确认更新":"确认新增");async function V(){try{C.value=!0;const s=await z.queryApp(f),{rows:l,count:d}=s.data;C.value=!1,L.value=d,O.value=l.sort((m,v)=>v.order-m.order)}catch{C.value=!1}}async function te(){const s=await z.queryCats({size:100}),{rows:l}=s.data;q.value=l}function ae(s){k.value=s.id,h.value=s.role==="user",H.value=s.status;const{name:l,status:d,des:m,order:v,coverImg:D,catId:T,preset:p,demoData:g,isGPTs:I,gizmoID:M,isFixedModel:G,appModel:N}=s;Me(()=>{Object.assign(o,{name:l,status:d,des:m,order:v,coverImg:D,catId:T,preset:p,demoData:g,isGPTs:I,gizmoID:M,isFixedModel:G,appModel:N})}),A.value=!0}function oe(s){k.value=0,s==null||s.resetFields()}async function se(s){await z.deleteApp({id:s.id}),P.success("删除分类成功"),V()}function ne(s){s==null||s.resetFields(),V()}const Y=(s,l)=>{console.log("response: ",s.data),o.coverImg=s.data},re=s=>{if(["image/png","image/jpeg","image/gif","image/webp"].includes(s.type)){if(s.size/1024>300)return P.error("当前限制文件最大不超过 300KB!"),!1}else return P.error("当前系统仅支持 PNG、JPEG、GIF、和 WebP 格式的图片!"),!1};async function de(){if(o.coverImg){const s=await pe(o.coverImg);ie(s,Y)}}function ie(s,l){const d=new FormData;d.append("file",s),X.post(K.value,d,{headers:{"Content-Type":"multipart/form-data"}}).then(m=>{l(m.data)}).catch(m=>{console.error("上传失败",m)})}async function pe(s){const l=await X.get(s,{responseType:"blob"});let d="downloaded_file";const m=l.headers["content-disposition"];if(m){const v=/filename="([^"]+)"/.exec(m);v!=null&&v[1]&&(d=v[1])}else d=ue(s);return new File([l.data],d,{type:l.data.type})}function ue(s){const d=new URL(s).pathname;return d.substring(d.lastIndexOf("/")+1)}function me(s){s==null||s.validate(async l=>{if(l){if(k.value){const d={id:k.value,...o};h.value&&Object.assign(d,{status:H.value}),await z.updateApp(d),P({type:"success",message:"更新应用成功!"})}else await z.createApp(o),P({type:"success",message:"创建新的应用成功!"});A.value=!1,V()}})}return ke(()=>{V(),te()}),(s,l)=>{const d=Ge,m=Fe,v=Ae,D=i("el-option"),T=i("el-select"),p=i("el-form-item"),g=i("el-input"),I=i("el-button"),M=i("el-form"),G=Ie,N=i("el-image"),b=i("el-table-column"),ce=i("el-tag"),W=i("el-tooltip"),fe=i("el-popconfirm"),ge=i("el-table"),_e=i("el-pagination"),ve=i("el-row"),$=i("el-switch"),Q=i("el-icon"),be=i("el-upload"),ye=i("el-dialog"),we=he("loading");return r(),U("div",null,[t(v,null,{title:a(()=>[Se]),content:a(()=>[je]),default:a(()=>[t(m,{outline:"",onClick:l[0]||(l[0]=e=>A.value=!0)},{default:a(()=>[t(d,{name:"ic:baseline-plus"}),_(" 新增应用 ")]),_:1})]),_:1}),t(G,null,{default:a(()=>[t(M,{ref_key:"formRef",ref:R,inline:!0,model:f},{default:a(()=>[t(p,{label:"App分类",prop:"catId"},{default:a(()=>[t(T,{modelValue:f.catId,"onUpdate:modelValue":l[1]||(l[1]=e=>f.catId=e),placeholder:"请选择App分类",clearable:"",style:{width:"160px"}},{default:a(()=>[(r(!0),U(j,null,B(n(q),e=>(r(),u(D,{key:e.id,label:e.name,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(p,{label:"App名称",prop:"name"},{default:a(()=>[t(g,{modelValue:f.name,"onUpdate:modelValue":l[2]||(l[2]=e=>f.name=e),placeholder:"App名称[模糊搜索]",clearable:"",onKeydown:De(Te(V,["prevent"]),["enter"])},null,8,["modelValue","onKeydown"])]),_:1}),t(p,null,{default:a(()=>[t(I,{type:"primary",onClick:V},{default:a(()=>[_(" 查询 ")]),_:1}),t(I,{onClick:l[3]||(l[3]=e=>ne(n(R)))},{default:a(()=>[_(" 重置 ")]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),t(G,{style:{width:"100%"}},{default:a(()=>[Ue((r(),u(ge,{border:"",data:n(O),style:{width:"100%"},size:"large"},{default:a(()=>[t(b,{prop:"coverImg",label:"应用封面",width:"100"},{default:a(e=>[t(N,{style:{height:"50px"},src:e.row.coverImg,fit:"fill"},null,8,["src"])]),_:1}),t(b,{prop:"catName",label:"应用分类",width:"100"}),t(b,{prop:"name",label:"应用名称",width:"120"}),t(b,{prop:"status",label:"应用状态",width:"100"},{default:a(e=>[t(ce,{type:e.row.status===1?"success":"danger"},{default:a(()=>[_(x(n(Ne)[e.row.status]),1)]),_:2},1032,["type"])]),_:1}),t(b,{prop:"order",label:"排序ID"}),_(" /> "),t(b,{prop:"preset",label:"预设信息",width:"400"},{default:a(e=>[t(W,{class:"box-item",effect:"dark",placement:"top-start"},{content:a(()=>[w("div",Be,x(e.row.preset),1)]),default:a(()=>[w("div",Re,x(e.row.preset),1)]),_:2},1024)]),_:1}),t(b,{prop:"des",label:"描述信息",width:"300"},{default:a(e=>[t(W,{class:"box-item",effect:"dark",placement:"top-start"},{content:a(()=>[w("div",Le,x(e.row.des),1)]),default:a(()=>[w("div",Ke,x(e.row.des),1)]),_:2},1024)]),_:1}),t(b,{prop:"createdAt",label:"创建时间",width:"120"},{default:a(e=>[_(x(n(qe)(e.row.createdAt,"YYYY-MM-DD")),1)]),_:1}),t(b,{label:"操作",width:"200"},{default:a(e=>[e.row.role==="system"||e.row.public?(r(),u(I,{key:0,link:"",type:"primary",size:"small",onClick:Ve=>ae(e.row)},{default:a(()=>[_(" 编辑 ")]),_:2},1032,["onClick"])):y("",!0),e.row.role==="system"?(r(),u(fe,{key:1,title:"确认删除此应用么?",width:"200","icon-color":"red",onConfirm:Ve=>se(e.row)},{reference:a(()=>[t(I,{link:"",type:"danger",size:"small"},{default:a(()=>[_(" 删除应用 ")]),_:1})]),_:2},1032,["onConfirm"])):y("",!0)]),_:1})]),_:1},8,["data"])),[[we,n(C)]]),t(ve,{class:"mt-5 flex justify-end"},{default:a(()=>[t(_e,{"current-page":f.page,"onUpdate:currentPage":l[4]||(l[4]=e=>f.page=e),"page-size":f.size,"onUpdate:pageSize":l[5]||(l[5]=e=>f.size=e),class:"mr-5","page-sizes":[10,20,30,50],layout:"total, sizes, prev, pager, next, jumper",total:n(L),onSizeChange:V,onCurrentChange:V},null,8,["current-page","page-size","total"])]),_:1})]),_:1}),t(ye,{modelValue:n(A),"onUpdate:modelValue":l[20]||(l[20]=e=>Ce(A)?A.value=e:null),"close-on-click-modal":!1,title:n(ee),width:"570",onClose:l[21]||(l[21]=e=>oe(n(F)))},{footer:a(()=>[w("span",Oe,[t(I,{onClick:l[18]||(l[18]=e=>A.value=!1)},{default:a(()=>[_("取消")]),_:1}),t(I,{type:"primary",onClick:l[19]||(l[19]=e=>me(n(F)))},{default:a(()=>[_(x(n(le)),1)]),_:1})])]),default:a(()=>[t(M,{ref_key:"formPackageRef",ref:F,"label-position":"right","label-width":"100px",model:o,rules:E},{default:a(()=>[t(p,{label:"App分类",prop:"catId"},{default:a(()=>[t(T,{modelValue:o.catId,"onUpdate:modelValue":l[6]||(l[6]=e=>o.catId=e),placeholder:"请选择App分类",clearable:"",style:{width:"100%"}},{default:a(()=>[(r(!0),U(j,null,B(n(q),e=>(r(),u(D,{key:e.id,label:e.name,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(p,{label:"App名称",prop:"name"},{default:a(()=>[t(g,{modelValue:o.name,"onUpdate:modelValue":l[7]||(l[7]=e=>o.name=e),placeholder:"请填写App名称"},null,8,["modelValue"])]),_:1}),n(h)?y("",!0):(r(),u(p,{key:0,label:"App状态",prop:"status"},{default:a(()=>[t($,{modelValue:o.status,"onUpdate:modelValue":l[8]||(l[8]=e=>o.status=e),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})),t(p,{label:"App描述",prop:"des"},{default:a(()=>[t(g,{modelValue:o.des,"onUpdate:modelValue":l[9]||(l[9]=e=>o.des=e),type:"textarea",placeholder:"请填写App介绍信息、用于对外展示...",rows:4},null,8,["modelValue"])]),_:1}),n(h)?y("",!0):(r(),u(p,{key:1,label:"启用GPTs",prop:"isGPTs"},{default:a(()=>[t($,{modelValue:o.isGPTs,"onUpdate:modelValue":l[10]||(l[10]=e=>o.isGPTs=e),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})),Number(o.isGPTs)===1?(r(),u(p,{key:2,label:"gizmoID",prop:"gizmoID"},{default:a(()=>[t(g,{modelValue:o.gizmoID,"onUpdate:modelValue":l[11]||(l[11]=e=>o.gizmoID=e),placeholder:"请填写 GPTs 使用的 gizmoID"},null,8,["modelValue"])]),_:1})):y("",!0),Number(o.isGPTs)!==1?(r(),u(p,{key:3,label:"App预设",prop:"preset"},{default:a(()=>[t(g,{modelValue:o.preset,"onUpdate:modelValue":l[12]||(l[12]=e=>o.preset=e),type:"textarea",placeholder:"请填写App预设信息、用于给AI预设身份...",rows:4},null,8,["modelValue"])]),_:1})):y("",!0),!n(h)&&Number(o.isGPTs)!==1?(r(),u(p,{key:4,label:"固定模型",prop:"isFixedModel"},{default:a(()=>[t($,{modelValue:o.isFixedModel,"onUpdate:modelValue":l[13]||(l[13]=e=>o.isFixedModel=e),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})):y("",!0),Number(o.isFixedModel)===1&&Number(o.isGPTs)!==1?(r(),u(p,{key:5,label:"使用模型",prop:"appModel"},{default:a(()=>[t(T,{modelValue:o.appModel,"onUpdate:modelValue":l[14]||(l[14]=e=>o.appModel=e),filterable:"","allow-create":"",placeholder:"请选择应用使用的模型",clearable:""},{default:a(()=>[(r(!0),U(j,null,B(n($e),e=>(r(),u(D,{key:e,label:e,value:e},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})):y("",!0),t(p,{label:"示例内容",prop:"demoData"},{default:a(()=>[t(g,{modelValue:o.demoData,"onUpdate:modelValue":l[15]||(l[15]=e=>o.demoData=e),type:"textarea",placeholder:"请填写App的demo示例数据、每换行一次表示一个新的示例...",rows:4},null,8,["modelValue"])]),_:1}),t(p,{label:"应用图标",prop:"coverImg"},{default:a(()=>[t(g,{modelValue:o.coverImg,"onUpdate:modelValue":l[16]||(l[16]=e=>o.coverImg=e),placeholder:"请填写或上传应用图标",clearable:""},{append:a(()=>[t(be,{class:"avatar-uploader",action:n(K),"show-file-list":!1,"on-success":Y,"before-upload":re,style:{display:"flex","align-items":"center","justify-content":"center"}},{default:a(()=>[o.coverImg?(r(),U("img",{key:0,src:o.coverImg,style:{"max-width":"1.5rem","max-height":"1.5rem",margin:"5px 0","object-fit":"contain"}},null,8,He)):(r(),u(Q,{key:1,style:{width:"1rem"}},{default:a(()=>[t(n(Pe))]),_:1}))]),_:1},8,["action"]),o.coverImg?(r(),u(Q,{key:0,onClick:de,style:{"margin-left":"35px",width:"1rem"}},{default:a(()=>[t(n(ze))]),_:1})):y("",!0)]),_:1},8,["modelValue"])]),_:1}),t(p,{label:"排序ID",prop:"order"},{default:a(()=>[t(g,{modelValue:o.order,"onUpdate:modelValue":l[17]||(l[17]=e=>o.order=e),modelModifiers:{number:!0},placeholder:"请填写排序ID[数字越大越靠前]"},null,8,["modelValue"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"])])}}});typeof Z=="function"&&Z(Ye);export{Ye as default};