PageSourceSearch

https://fronted.familypro.io/familypro/fronted/269301023/ProductListView.js

js familypro.io collected 2026-10-01 15:45:29 UTC 15,872 bytes, 2 lines download raw bytes

1import{r as c,a4 as F,c as re,z as Ee,aX as p,b8 as Te,C,E as _,W as t,Q as Oe,P as o,T as s,D as y,V as ie,am as ue,u as Re,O as B,ak as ze,U as d,R as E}from"./vendors.js";import{_ as Le,X as Se,W as Q}from"./main.js";import{_ as Ye}from"./AccountInternalRechargeDialog.js";import{f as $e,e as Fe,E as Me}from"./exportUtils.js";import{P as je,a as Be}from"./accountRechargeRecord.js";import{E as V}from"./vendor-element.js";const He={class:"product-list-container"},Ne={class:"page-header"},Ge={class:"header-buttons"},Ae={class:"password-cell"},Ie={class:"text-container"},We={class:"password-cell"},Ke={class:"text-container"},Xe={class:"pagination-container"},Qe={class:"dialog-footer"},qe={class:"diff-content"},Je={key:0},Ze={key:1},et={key:2},tt={key:3},at={key:4},lt={key:5},ot={class:"dialog-footer"},nt={__name:"ProductListView",setup(st){const q={ChatGPT:Be,Grok:je},H=c([]),N=c(!1),G=c(!1),J=c(0),T=c(1),M=c(5),i=F({name:"",email:"",status:"1",plan_type:"",start_time:"",end_time:""}),D=c([]),n=F({id:null,name:"",email:"",password:"",left_allowed_nums:1,allowed_nums:1,status:1,recharge_date:"",expiration_date:"",plan_type:""}),R=c(!1),z=c(!1),u=F({}),v=F({password:"",left_allowed_nums:1,status:1,recharge_date:"",expiration_date:"",plan_type:""}),A=c(!1),f=F({}),I=c(!1),Z=c(null),W=c(window.innerWidth<=767);window.addEventListener("resize",()=>{W.value=window.innerWidth<=767});const L=c(""),pe=re(()=>{const a=new Set(H.value.map(e=>e.plan_type).filter(Boolean));return Array.from(a)}),ee=re(()=>H.value.filter(a=>!(i.plan_type&&a.plan_type!==i.plan_type))),te=(a={})=>{const e={page:T.value,page_size:M.value,name:i.name,email:i.email,status:i.status,start_time:i.start_time,end_time:i.end_time,...a};return D.value&&D.value.length===2&&(e.start_time=D.value[0],e.end_time=D.value[1]),Object.keys(e).forEach(r=>{(e[r]===""||e[r]===null||e[r]===void 0)&&delete e[r],r==="status"&&e[r]===0&&(e[r]=0)}),L.value&&(e.sort=L.value),e},h=async()=>{N.value=!0;try{const a=te(),e=await Q.get("/api/admin/product-accounts",{params:a});e.data.code===1e5?(H.value=e.data.data.items||[],J.value=e.data.data.total||0):V.error(e.data.message||"获取数据失败")}catch(a){V.error("请求失败:"+a.message)}finally{N.value=!1}},me=()=>{h()},ae=()=>{T.value=1,h()},_e=()=>{i.name="",i.email="",i.status="1",i.plan_type="",D.value=[],T.value=1,L.value="",h()},fe=a=>{M.value=a,h()},ce=a=>{T.value=a,h()},ve=a=>{Object.assign(n,{id:a.id,name:a.name,email:a.email,password:a.password||"",left_allowed_nums:a.left_allowed_nums,allowed_nums:a.allowed_nums,plan_type:a.plan_type,status:a.status,recharge_date:a.recharge_date,expiration_date:a.expiration_date}),Object.assign(v,{password:a.password||"",left_allowed_nums:a.left_allowed_nums,status:a.status,plan_type:a.plan_type,recharge_date:a.recharge_date,expiration_date:a.expiration_date}),R.value=!0},ge=()=>{Object.keys(u).forEach(e=>delete u[e]);const a=n.password.trim();a!==v.password&&(u.password=!0,n.password=a),n.status!==v.status&&(u.status=!0),n.left_allowed_nums!==v.left_allowed_nums&&(u.left_allowed_nums=!0),n.plan_type!==v.plan_type&&(u.plan_type=!0),n.recharge_date!==v.recharge_date&&(u.recharge_date=!0),n.expiration_date!==v.expiration_date&&(u.expiration_date=!0),Object.keys(u).length>0?z.value=!0:V.info("没有任何修改")},be=async()=>{try{const a={};u.password&&(a.password=n.password),u.status&&(a.status=n.status),u.left_allowed_nums&&(a.left_allowed_nums=n.left_allowed_nums),u.plan_type&&(a.plan_type=n.plan_type),u.recharge_date&&(a.recharge_date=n.recharge_date),u.expiration_date&&(a.expiration_date=n.expiration_date);const e=await Q.patch(`/api/admin/product-accounts/${n.id}`,a);e.data.code===1e5?(V.success("更新成功"),z.value=!1,R.value=!1,h()):V.error(e.data.message||"更新失败")}catch(a){V.error("请求失败:"+a.message)}},ye=a=>{Object.assign(f,a),A.value=!0},we=a=>!!q[a==null?void 0:a.name]&&(a==null?void 0:a.status)===1,Ve=a=>{Z.value={id:a.id,email:a.email,name:a.name,product_type_id:q[a.name]},I.value=!0},le=a=>a?new Date(a).toLocaleString():"未设置",x=a=>a?new Date(a).toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"}):"未设置",oe=a=>{switch(a){case 1:return"success";case 0:return"warning";case-1:return"danger";default:return"info"}},S=a=>{switch(a){case 1:return"可用";case 0:return"已下架";default:return"未知"}},ne=a=>{navigator.clipboard?(navigator.clipboard.writeText(a),V.success("复制成功")):V.error("浏览器不支持复制功能")},xe=()=>{const a={status:e=>S(e),expiration_date:e=>x(e)};Fe(ee.value,Me.PRODUCT_LIST,a)},se=a=>`"${String(a??"").replace(/"/g,'""')}"`,Ce=async()=>{G.value=!0;try{const a=te({page:1,page_size:1e4}),e=await Q.get("/api/admin/product-accounts",{params:a});if(e.data.code!==1e5){V.error(e.data.message||"导出失败");return}let r=e.data.data.items||[];const w=Number(e.data.data.total)||r.length;i.plan_type&&(r=r.filter(P=>P.plan_type===i.plan_type)),w>1e4&&V.warning(`共 ${w} 条,单次最多拉取 10000 条,导出内容已按此上限截断`);const O=se("邮箱----密码"),m=r.map(P=>{const K=P.email??"",g=P.password??"";return se(`${K}----${g}`)}),U="\uFEFF",Y=[O,...m].join(`
2`),$=new Blob([U+Y],{type:"text/csv;charset=utf-8"}),k=document.createElement("a");k.href=URL.createObjectURL($),k.download=`产品账号全量导出_${$e(new Date)}.csv`,document.body.appendChild(k),k.click(),document.body.removeChild(k),URL.revokeObjectURL(k.href),V.success(`已导出 ${r.length} 条`)}catch(a){V.error("全量导出失败:"+(a.message||String(a)))}finally{G.value=!1}};return Ee(()=>{h()}),(a,e)=>{const r=p("el-button"),w=p("el-option"),O=p("el-select"),m=p("el-form-item"),U=p("el-input"),Y=p("el-date-picker"),$=p("el-radio"),k=p("el-radio-group"),P=p("el-form"),K=p("el-card"),g=p("el-table-column"),de=p("el-tag"),he=p("el-table"),ke=p("el-pagination"),De=p("el-input-number"),X=p("el-dialog"),b=p("el-descriptions-item"),Ue=p("el-descriptions"),Pe=Te("loading");return y(),C("div",He,[_("div",Ne,[e[25]||(e[25]=_("div",{class:"header-title"},"产品账号列表",-1)),_("div",Ge,[t(r,{type:"success",loading:G.value,onClick:Ce},{default:o(()=>[...e[22]||(e[22]=[s("全量导出佳侨格式",-1)])]),_:1},8,["loading"]),t(r,{type:"primary",onClick:xe},{default:o(()=>[...e[23]||(e[23]=[s("导出数据",-1)])]),_:1}),t(r,{type:"primary",onClick:me},{default:o(()=>[...e[24]||(e[24]=[s("刷新数据",-1)])]),_:1})])]),t(K,{class:"filter-container"},{default:o(()=>[t(P,{inline:!0,model:i,class:"filter-form"},{default:o(()=>[t(m,{label:"产品名称"},{default:o(()=>[t(O,{modelValue:i.name,"onUpdate:modelValue":e[0]||(e[0]=l=>i.name=l),placeholder:"选择产品名称",clearable:"",style:{"min-width":"120px",width:"auto"},filterable:""},{default:o(()=>[t(w,{label:"全部",value:""}),(y(!0),C(ie,null,ue(Re(Se),l=>(y(),B(w,{key:l,label:l,value:l},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(m,{label:"邮箱"},{default:o(()=>[t(U,{modelValue:i.email,"onUpdate:modelValue":e[1]||(e[1]=l=>i.email=l),modelModifiers:{trim:!0},placeholder:"输入产品邮箱",clearable:"",onKeyup:ze(ae,["enter"])},null,8,["modelValue"])]),_:1}),t(m,{label:"状态"},{default:o(()=>[t(O,{modelValue:i.status,"onUpdate:modelValue":e[2]||(e[2]=l=>i.status=l),placeholder:"全部状态",clearable:"",style:{"min-width":"120px",width:"auto"}},{default:o(()=>[t(w,{label:"全部",value:""}),t(w,{label:"可用",value:"1"}
2),t(w,{label:"已下架",value:"0"})]),_:1},8,["modelValue"])]),_:1}),t(m,{label:"套餐状态(当前页面筛选)"},{default:o(()=>[t(O,{modelValue:i.plan_type,"onUpdate:modelValue":e[3]||(e[3]=l=>i.plan_type=l),placeholder:"选择套餐状态",clearable:"",style:{"min-width":"120px",width:"auto"}},{default:o(()=>[t(w,{label:"全部",value:""}),(y(!0),C(ie,null,ue(pe.value,l=>(y(),B(w,{key:l,label:l,value:l},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(m,{label:"时间范围",style:{display:"none"}},{default:o(()=>[t(Y,{modelValue:D.value,"onUpdate:modelValue":e[4]||(e[4]=l=>D.value=l),type:"datetimerange","range-separator":"至","start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD HH:mm:ss","default-time":[new Date(2e3,1,1,0,0,0),new Date(2e3,1,1,23,59,59)]},null,8,["modelValue","default-time"])]),_:1}),t(m,null,{default:o(()=>[t(k,{modelValue:L.value,"onUpdate:modelValue":e[5]||(e[5]=l=>L.value=l)},{default:o(()=>[t($,{label:""},{default:o(()=>[...e[26]||(e[26]=[s("默认排序",-1)])]),_:1}),t($,{label:"expiration_date:asc"},{default:o(()=>[...e[27]||(e[27]=[s("充值到期升序",-1)])]),_:1}),t($,{label:"expiration_date:desc"},{default:o(()=>[...e[28]||(e[28]=[s("充值到期降序",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(m,null,{default:o(()=>[t(r,{type:"primary",onClick:ae},{default:o(()=>[...e[29]||(e[29]=[s("筛选",-1)])]),_:1}),t(r,{onClick:_e},{default:o(()=>[...e[30]||(e[30]=[s("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),Oe((y(),B(he,{data:ee.value,border:"",style:{width:"100%","margin-top":"20px"}},{default:o(()=>[t(g,{prop:"id",label:"ID",width:"80"}),t(g,{prop:"name",label:"产品名称",width:"120"}),t(g,{prop:"email",label:"邮箱地址",width:"200"},{default:o(l=>[_("div",Ae,[_("div",Ie,d(l.row.email),1),t(r,{type:"primary",link:"",onClick:j=>ne(l.row.email)},{default:o(()=>[...e[31]||(e[31]=[s(" 复制 ",-1)])]),_:1},8,["onClick"])])]),_:1}),t(g,{prop:"allowed_nums",label:"允许车位",width:"100"}),t(g,{prop:"left_allowed_nums",label:"剩余车位",width:"100"}),t(g,{prop:"password",label:"产品密码",width:"120"},{default:o(l=>[_("div",We,[_("div",Ke,d(l.row.password||"未设置"),1),t(r,{type:"primary",link:"",onClick:j=>ne(l.row.password)},{default:o(()=>[...e[32]||(e[32]=[s(" 复制 ",-1)])]),_:1},8,["onClick"])])]),_:1}),t(g,{prop:"status",label:"状态",width:"100"},{default:o(l=>[t(de,{type:oe(l.row.status)},{default:o(()=>[s(d(S(l.row.status)),1)]),_:2},1032,["type"])]),_:1}),t(g,{prop:"recharge_date",label:"充值日期",width:"180"},{default:o(l=>[s(d(x(l.row.recharge_date)),1)]),_:1}),t(g,{prop:"expiration_date",label:"充值到期",width:"180"},{default:o(l=>[s(d(x(l.row.expiration_date)),1)]),_:1}),t(g,{prop:"plan_type",label:"套餐状态",width:"120"},{default:o(l=>[s(d(l.row.plan_type||"未设置"),1)]),_:1}),t(g,{label:"操作",fixed:"right",width:"260"},{default:o(l=>[we(l.row)?(y(),B(r,{key:0,type:"primary",size:"small",onClick:j=>Ve(l.row)},{default:o(()=>[...e[33]||(e[33]=[s(" 充值 ",-1)])]),_:1},8,["onClick"])):E("",!0),t(r,{size:"small",onClick:j=>ve(l.row)},{default:o(()=>[...e[34]||(e[34]=[s("编辑",-1)])]),_:1},8,["onClick"]),t(r,{size:"small",onClick:j=>ye(l.row)},{default:o(()=>[...e[35]||(e[35]=[s("详情",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[Pe,N.value]]),_("div",Xe,[t(ke,{"current-page":T.value,"onUpdate:currentPage":e[6]||(e[6]=l=>
2T.value=l),"page-size":M.value,"onUpdate:pageSize":e[7]||(e[7]=l=>M.value=l),"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next, jumper",total:J.value,onSizeChange:fe,onCurrentChange:ce},null,8,["current-page","page-size","total"])]),t(X,{modelValue:R.value,"onUpdate:modelValue":e[17]||(e[17]=l=>R.value=l),title:"编辑产品",width:"50%"},{footer:o(()=>[_("span",Qe,[t(r,{onClick:e[16]||(e[16]=l=>R.value=!1)},{default:o(()=>[...e[36]||(e[36]=[s("取消",-1)])]),_:1}),t(r,{type:"primary",onClick:ge},{default:o(()=>[...e[37]||(e[37]=[s("确认",-1)])]),_:1})])]),default:o(()=>[t(P,{model:n,"label-width":"120px"},{default:o(()=>[t(m,{label:"产品名称"},{default:o(()=>[t(U,{modelValue:n.name,"onUpdate:modelValue":e[8]||(e[8]=l=>n.name=l),disabled:""},null,8,["modelValue"])]),_:1}),t(m,{label:"产品邮箱"},{default:o(()=>[t(U,{modelValue:n.email,"onUpdate:modelValue":e[9]||(e[9]=l=>n.email=l),disabled:""},null,8,["modelValue"])]),_:1}),t(m,{label:"产品密码"},{default:o(()=>[t(U,{modelValue:n.password,"onUpdate:modelValue":e[10]||(e[10]=l=>n.password=l),placeholder:"请输入新密码"},null,8,["modelValue"])]),_:1}),t(m,{label:"剩余车位数量"},{default:o(()=>[t(De,{modelValue:n.left_allowed_nums,"onUpdate:modelValue":e[11]||(e[11]=l=>n.left_allowed_nums=l),min:0,max:n.allowed_nums},null,8,["modelValue","max"])]),_:1}),t(m,{label:"套餐状态"},{default:o(()=>[t(U,{modelValue:n.plan_type,"onUpdate:modelValue":e[12]||(e[12]=l=>n.plan_type=l),placeholder:"请输入套餐状态"},null,8,["modelValue"])]),_:1}),t(m,{label:"状态"},{default:o(()=>[t(O,{modelValue:n.status,"onUpdate:modelValue":e[13]||(e[13]=l=>n.status=l)},{default:o(()=>[t(w,{label:"可用",value:1}),t(w,{label:"已下架",value:0})]),_:1},8,["modelValue"])]),_:1}),t(m,{label:"充值日期"},{default:o(()=>[t(Y,{modelValue:n.recharge_date,"onUpdate:modelValue":e[14]||(e[14]=l=>n.recharge_date=l),type:"date",placeholder:"选择充值日期","value-format":"YYYY-MM-DD HH:mm:ss"},null,8,["modelValue"])]),_:1}),t(m,{label:"充值到期"},{default:o(()=>[t(Y,{modelValue:n.expiration_date,"onUpdate:modelValue":e[15]||(e[15]=l=>n.expiration_date=l),type:"date",placeholder:"选择充值到期","value-format":"YYYY-MM-DD HH:mm:ss"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),t(X,{modelValue:z.value,"onUpdate:modelValue":e[19]||(e[19]=l=>z.value=l),title:"确认修改",width:"50%"},{footer:o(()=>[_("span",ot,[t(r,{onClick:e[18]||(e[18]=l=>z.value=!1)},{default:o(()=>[...e[38]||(e[38]=[s("取消",-1)])]),_:1}),t(r,{type:"primary",onClick:be},{default:o(()=>[...e[39]||(e[39]=[s("确认",-1)])]),_:1})])]),default:o(()=>[_("div",qe,[u.password?(y(),C("div",Je,[_("p",null,"密码: "+d(v.password||"未设置")+" -> "+d(n.password),1)])):E("",!0),u.status?(y(),C("div",Ze,[_("p",null,"状态: "+d(S(v.status))+" -> "+d(S(n.status)),1)])):E("",!0),u.left_allowed_nums?(y(),C("div",et,[_("p",null,"剩余车位: "+d(v.left_allowed_nums)+" -> "+d(n.left_allowed_nums),1)])):E("",!0),u.recharge_date?(y(),C("div",tt,[_("p",null,"充值日期: "+d(x(v.recharge_date))+" -> "+d(x(n.recharge_date)),1)])):E("",!0),u.expiration_date?(y(),C("div",at,[_("p",null,"充值到期: "+d(x(v.expiration_date))+" -> "+d(x(n.expiration_date)),1)])):E("",!0),u.plan_type?(y(),C("div",lt,[_("p",null,"套餐状态: "+d(v.plan_type)+" -> "+d(n.plan_type),1)])):E("",!0)])]),_:1},8,["modelValue"]),t(X,{modelValue:A.value,"onUpdate:modelValue":e[20]||(e[20]=l=>A.value=l),title:"产品详情",width:W.value?"90%":"60%"},{default:o(()=>[t(Ue,{column:W.value?1:2,border:"",class:"responsive-descriptions"},{default:o(()=>[t(b,{label:"ID"},{default:o(()=>[s(d(f.id),1)]),_:1}),t(b,{label:"产品名称"},{default:o(()=>[s(d(f.name),1)]),_:1}),t(b,{label:"邮箱地址"},{default:o(()=>[s(d(f.email),1)]),_:1}),t(b,{label:"产品密码"},{default:o(()=>[s(d(f.password),1)]),_:1}),t(b,{label:"共享类型"},{default:o(()=>[s(d(f.share_type),1)]),_:1}),t(b,{label:"允许车位"},{default:o(()=>[s(d(f.allowed_nums),1)]),_:1}),t(b,{label:"剩余车位"},{default:o(()=>[s(d(f.left_allowed_nums),1)]),_:1}),t(b,{label:"产品状态"},{default:o(()=>[t(de,{type:oe(f.status)},{default:o(()=>[s(d(S(f.status)),1)]),_:1},8,["type"])]),_:1}),t(b,{label:"充值日期"},{default:o(()=>[s(d(x(f.recharge_date)),1)]),_:1}),t(b,{label:"充值到期"},{default:o(()=>[s(d(x(f.expiration_date)),1)]),_:1}),t(b,{label:"创建时间"},{default:o(()=>[s(d(le(f.created_at)),1)]),_:1}),t(b,{label:"更新时间"},{default:o(()=>[s(d(le(f.updated_at)),1)]),_:1}),t(b,{label:"套餐状态"},{default:o(()=>[s(d(f.plan_type||"未设置"),1)]),_:1})]),_:1},8,["column"])]),_:1}
2,8,["modelValue","width"]),t(Ye,{modelValue:I.value,"onUpdate:modelValue":e[21]||(e[21]=l=>I.value=l),title:"账号充值","preset-product":Z.value,onSuccess:h},null,8,["modelValue","preset-product"])])}}},_t=Le(nt,[["__scopeId","data-v-fc8cb695"]]);export{_t as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.