crud.B0Uh5_kl.js 13 KB

1
  1. import{c as R,U as u,A as F,G as D,f as J}from"./api.BeM3vxkG.js";import{v as c,x as l,m as p,h as v,w as C,s as f,i as I,f as L}from"./index.lP_uh0LI.js";import{C as M,c as b,g as U,b as $,a as _}from"./vue.BxlDVA1H.js";import{E as n,a as o}from"./curriculum.model.DmH5tfDc.js";const A=function({crudExpose:i}){const x=async e=>(e.ordering="-created_time",e.category=e.category&&typeof e.category=="object"?e.category.value:e.category,e.lecturer=e.lecturer&&typeof e.lecturer=="object"?e.lecturer.value:e.lecturer,await D(e)),S=async({form:e,row:t})=>(e.uuid=t.uuid,e.category=e.category&&typeof e.category=="object"?e.category.value:e.category,e.lecturer=e.lecturer&&typeof e.lecturer=="object"?e.lecturer.value:e.lecturer,await u(e)),k=async({form:e})=>await F(e);function w(){let e=0;const t={data:_([]),loading:_(!1)},r=L(async(a,s)=>{e+=1;const W=e;t.data.value=[],t.loading.value=!0;let g="";switch(s){case 1:g=`${p.knowledge}course/category/manage/`;break;case 2:g=`${p.knowledge}course/lecturer/manage/`;break}const h={limit:50};s==1&&(h.is_active=!0),s==1?h.name=a.trim():h.full_name=a.trim();const O=await J(g,h);W===e&&(t.data.value=O.map(y=>({label:y.name??y.full_name,value:y.uuid})),t.loading.value=!1)},800);return{state:t,fetchUser:r}}const{state:d,fetchUser:j}=w(),{state:m,fetchUser:N}=w(),T=M();return{crudOptions:{request:{pageRequest:x,addRequest:k,editRequest:S,transformQuery:({page:e,form:t})=>{const r=(e==null?void 0:e.pageSize)||10,a=(e==null?void 0:e.currentPage)||1;return delete t.created_time,{offset:(a-1)*r,limit:r,...t}},transformRes:({res:e,query:t})=>{const r=e;return r.success?{records:r.data.results.map(a=>({...a,category:a.category?{value:a.category,label:a.category_name}:"",lecturer:a.lecturer?{value:a.lecturer,label:a.lecturer_full_name}:""})),currentPage:t.offset/t.limit+1,pageSize:t.limit,total:r.data.count}:{records:[],currentPage:t.offset/t.limit+1,pageSize:t.limit,total:0}}},actionbar:{buttons:{add:{show:!0,text:"新增课程"}}},toolbar:{buttons:{export:{show:!1}}},search:{autoSearch:!1,initialForm:{lecturer:b(()=>{const e=window.localStorage.getItem("lecturer")||"";return e&&window.localStorage.removeItem("lecturer"),e&&JSON.parse(e)}),category:b(()=>{const e=window.localStorage.getItem("category")||"";return e&&window.localStorage.removeItem("category"),e&&JSON.parse(e)})},onReset(){i.getSearchFormData().lecturer="",i.getSearchFormData().category=""}},rowHandle:{fixed:"right",width:200,buttons:{view:{show:!1},edit:{show:!0,link:!0,type:"primary"},remove:{show:!1},reminder:{show:!0,link:!0,text:"内容",type:"primary",click:({row:e})=>{T.push({name:"curriculumManageContent",query:{course:e.uuid}})}}}},columns:{_index:{title:"序号",form:{show:!1},column:{align:"center",width:"70px",columnSetDisabled:!0,formatter:e=>{let t=e.index??1,r=i.crudBinding.value.pagination;return((r.currentPage??1)-1)*r.pageSize+t+1}}},id:{title:"ID",search:{show:!0,order:1,col:{span:6},title:"课程ID",component:{placeholder:"请输入课程ID"}},type:["text","colspan"],column:{order:1,minWidth:120,align:"left"},form:{show:!1}},title:{title:"课程名称",search:{show:!0,order:2,col:{span:6},component:{placeholder:"请输入课程名称",minlength:0,maxlength:99999}},type:["text","colspan"],column:{order:3,minWidth:200,align:"left"},form:{title:"标题",rules:[{required:!0,message:"请输入课程名称"}],component:{placeholder:"请输入课程名称",minlength:1,maxlength:20}}},lecturer:{title:"讲师",search:{show:!0,order:5,col:{span:6},component:{placeholder:"请选择讲师"}},type:["dict-select","colspan"],column:{show:!1},form:{show:!0,rules:[{required:!0,message:"搜索并选择讲师"}],component:{name:"fs-dict-select",placeholder:"搜索并选择讲师",filterable:!0,remote:!0,defaultFirstLoad:!1,"reserve-keyword":!1,on:{focus:()=>{m.loading.value=!1,m.data.value=[]}},remoteMethod:e=>{N(e,2)},loading:m.loading,options:m.data}}},category:{title:"分类",search:{show:!0,order:4,col:{span:6},component:{placeholder:"请选择分类"}},type:["dict-select","colspan"],column:{order:4,minWidth:100,align:"left",formatter:({row:e})=>e.category_name||""},form:{show:!0,rules:[{required:!0,message:"搜索并选择分类"}],component:{name:"fs-dict-select",placeholder:"搜索并选择分类",filterable:!0,remote:!0,defaultFirstLoad:!1,"reserve-keyword":!1,on:{focus:()=>{d.loading.value=!1,d.data.value=[]}},remoteMethod:e=>{j(e,1)},loading:d.loading,options:d.data}}},home_picture_url:{title:"主页宣传图",type:["cropper-uploader","colspan"],column:{order:2,minWidth:120,align:"left",title:"课程图片"},form:{rules:v([{required:!0,message:"至少上传一张图片",trigger:"change"}]),helper:{text:"限上传png、jpg、jpeg文件,且不超过10M"},component:{limit:1,accept:"png, jpg, jpeg",cropper:{aspectRatio:NaN},maxSize:10,uploader:{action:`${p.knowledge}course/file/manage/`}}}},detail_picture_url:{title:"详情宣传图",type:["cropper-uploader","colspan"],column:{show:!1},form:{rules:v([{required:!0,message:"至少上传一张图片",trigger:"change"}]),helper:{text:"限上传png、jpg、jpeg文件,且不超过10M"},component:{limit:1,accept:"jpe, jpeg, png",cropper:{aspectRatio:NaN},maxSize:10,uploader:{action:`${p.knowledge}course/file/manage/`}}}},tags:{title:"标签",type:["tag","colspan"],column:{show:!1},form:{component:{props:{clearable:!0}},render(e){return U($("el-input-tag"),{modelValue:e.form.tags,"onUpdate:modelValue":t=>e.form.tags=t,placeholder:"请输入","aria-label":"输入后请按回车",maxlength:"6",minlength:"1",max:5,type:"primary"},null)}}},purchase_type:{title:"购买方式",type:["dict-radio","colspan"],search:{show:!0,order:3,col:{span:6},component:{placeholder:"请选择购买方式"}},column:{order:5,minWidth:100,align:"left",formatter:({row:e})=>{let t="";switch(e.purchase_type){case o.cash:t="现金";break;case o.free:t="免费";break;case o.integral:t="积分抵扣";break}return t}},form:{show:!0,value:o.cash,rules:[{required:!0,message:"请选择购买方式"}]},dict:c({data:[{label:"现金",value:o.cash},{label:"免费",value:o.free},{label:"积分抵扣",value:o.integral}]})},points_price:{title:"",search:{show:!1},type:["number","colspan"],column:{show:!1},form:{show:l(({form:e})=>e.purchase_type==o.integral),rules:[{required:!0,message:"请输入积分"}],component:{name:"el-input-number",props:{placeholder:"请输入积分",min:1,max:99999,step:1,precision:0,controls:!1},slots:{suffix:()=>"积分"}},class:"mdd-hide-required-asterisk"}},rule_price:{title:"",search:{show:!1},type:["number","colspan"],column:{show:!1},form:{show:l(({form:e})=>e.purchase_type==o.cash||e.purchase_type==o.integral),rules:[{required:l(({form:e})=>e.purchase_type===o.cash),message:"请输入金额"}],component:{name:"el-input-number",props:{placeholder:"请输入金额",min:.01,max:99999,step:1,precision:2,controls:!1},slots:{suffix:l(({form:e})=>e.purchase_type===o.cash?"元":"元,积分不足时可现金支付")}},helper:{text:l(({form:e})=>e.purchase_type===o.integral?"不设置,则必须使用积分抵扣":"")},class:"mdd-hide-required-asterisk"}},platform_rate:{title:"",search:{show:!1},type:["number","colspan"],column:{show:!1},form:{show:l(({form:e})=>{const t=e.rule_price!==void 0&&e.rule_price!==null&&e.rule_price!=="";return e.purchase_type==o.cash||e.purchase_type==o.integral&&t}),component:{name:"el-input-number",props:{placeholder:"请输入平台抽成比例",min:0,max:100,step:1,precision:1,controls:!1},slots:{suffix:l(({form:e})=>e.purchase_type===o.cash?"%,平台抽成比例":"%,现金支付平台抽成比例")}}}},course_price:{title:"划线价",search:{show:!1},type:["number","colspan"],column:{show:!1},form:{show:!0,component:{name:"el-input-number",props:{placeholder:"请输入划线价",min:.01,max:99999,step:1,precision:2,controls:!1},slots:{suffix:()=>"元"}}}},view_count:{title:"浏览",search:{show:!1},type:["text","colspan"],column:{order:6,minWidth:120,align:"left"},form:{show:!1}},buy_count:{title:"购买",search:{show:!1},type:["text","colspan"],column:{order:7,minWidth:120,align:"left"},form:{show:!1}},study_deadline_type:{title:"有效期",search:{show:!1},type:["dict-radio","colspan"],column:{order:8,minWidth:100,align:"left",formatter:({row:e})=>{let t="";switch(e.study_deadline_type){case n.perpetual:t="永久";break;case n.haveLimits:t=e.study_limited_days?e.study_limited_days+"天":"";break}return t}},form:{show:!0,title:"学习有效期",value:n.haveLimits,rules:[{required:!0,message:"请选择学习有效期"}]},dict:c({data:[{label:"永久",value:n.perpetual},{label:"有限制",value:n.haveLimits}]})},study_limited_days:{title:"",search:{show:!1},type:["number","colspan"],column:{show:!1},form:{show:l(({form:e})=>e.study_deadline_type==n.haveLimits),rules:[{required:!0,message:"请输入天数"}],component:{name:"el-input-number",props:{placeholder:"请输入天数",min:1,max:365,step:1,precision:0,controls:!1},slots:{suffix:()=>"天"}},helper:{text:"到期后,用户需要重新购。免费课程建议都设置有效期"},class:"mdd-hide-required-asterisk"}},hot:{title:"运营热度",search:{show:!1},type:["number","colspan"],column:{show:!1},form:{show:!0,value:1,component:{placeholder:"请输入排序",min:0,max:99999,precision:0},helper:{text:"影响排序"}}},sort:{title:"排序",search:{show:!1},type:["number","colspan"],column:{order:9,minWidth:120,align:"left"},form:{show:!0,value:1,component:{placeholder:"请输入排序",min:0,max:99999,precision:0}}},introduction:{title:"课程详细介绍",search:{show:!1},type:["editor-wang5","colspan"],column:{show:!1},form:{rules:[{required:!0,message:"请输入课程详细介绍",validator:async(e,t)=>{if(t.trim()==="<p><br></p>")throw new Error("请输入课程详细介绍")}}],component:{config:{},uploader:{action:`${p.knowledge}course/file/manage/`,type:"form",buildUrl(e){return e.url}}}}},is_featured:{title:"精选",search:{show:!1},type:"dict-radio",column:{order:10,minWidth:90,align:"left",component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(({row:e})=>async()=>{const t=JSON.parse(JSON.stringify(e));t.category=t.category&&typeof t.category=="object"?t.category.value:t.category,t.lecturer=t.lecturer&&typeof t.lecturer=="object"?t.lecturer.value:t.lecturer,u(t).then(r=>{f(r.msg)})})}},form:{show:!1},dict:c({data:[{label:"启用",value:!0},{label:"禁用",value:!1}]})},is_recommend:{title:"推荐",search:{show:!1},type:"dict-radio",column:{order:11,minWidth:90,align:"left",component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(({row:e})=>async()=>{const t=JSON.parse(JSON.stringify(e));t.category=t.category&&typeof t.category=="object"?t.category.value:t.category,t.lecturer=t.lecturer&&typeof t.lecturer=="object"?t.lecturer.value:t.lecturer,u(t).then(r=>{f(r.msg)})})}},form:{show:!1},dict:c({data:[{label:"启用",value:!0},{label:"禁用",value:!1}]})},is_top:{title:"分类置顶",search:{show:!1},type:"dict-radio",column:{order:12,minWidth:90,align:"left",component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(({row:e})=>async()=>{const t=JSON.parse(JSON.stringify(e));t.category=t.category&&typeof t.category=="object"?t.category.value:t.category,t.lecturer=t.lecturer&&typeof t.lecturer=="object"?t.lecturer.value:t.lecturer,u(t).then(r=>{f(r.msg)})})}},form:{show:!1},dict:c({data:[{label:"启用",value:!0},{label:"禁用",value:!1}]})},created_time:{title:"创建时间",type:"daterange",search:{show:!0,order:7,col:{span:8},component:{type:"daterange",props:{"start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD"}},valueResolve({key:e,value:t,form:r}){t!=null&&I(t)&&t.length>1&&(r.created_time__gte=`${t[0]} 00:00:00`,r.created_time__lte=`${t[1]} 23:59:59`)}},form:{show:!1},column:{order:13,minWidth:120,align:"left",formatter:e=>e.value}},modified_time:{title:"修改时间",type:"daterange",search:{show:!1},form:{show:!1},column:{order:14,minWidth:120,align:"left",formatter:e=>e.value}},is_active:{title:"状态",search:{show:!0,order:6,col:{span:6},component:{placeholder:"请选择状态"}},type:"dict-radio",column:{order:15,minWidth:90,align:"left",component:{name:"fs-dict-switch",activeText:"",inactiveText:"",style:"--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #dcdfe6",onChange:l(({value:e,index:t,row:r})=>async()=>{if(!e){if(i.updateTableRow(t,{...r,is_active:!1}),await R(r.uuid)<=0){C("请先配置课程内容");return}i.updateTableRow(t,{...r,is_active:!0})}const a=JSON.parse(JSON.stringify(r));a.category=a.category&&typeof a.category=="object"?a.category.value:a.category,a.lecturer=a.lecturer&&typeof a.lecturer=="object"?a.lecturer.value:a.lecturer,u(a).then(s=>{f(s.msg)})})}},form:{show:!1},dict:c({data:[{label:"启用",value:!0},{label:"禁用",value:!1}]})}},form:{wrapper:{width:"800px"}},editForm:{wrapper:{title:"编辑课程基础信息"}},addForm:{wrapper:{title:"新增课程基础信息"}}}}};export{A as createCrudOptions};