|
@@ -1,4 +1,5 @@
|
|
|
import ColCropper from '@/components/col-cropper'
|
|
|
+import ColUpload from '@/components/col-upload'
|
|
|
import request from '@/helpers/request'
|
|
|
import { verifyNumberIntegerAndFloat } from '@/helpers/toolsValidate'
|
|
|
import {
|
|
@@ -21,6 +22,12 @@ import { createState } from '../createState'
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'course-info',
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ url: '',
|
|
|
+ calcRatePrice: 0 as any
|
|
|
+ }
|
|
|
+ },
|
|
|
computed: {
|
|
|
choiceSubjectIds() {
|
|
|
// 选择的科目编号
|
|
@@ -42,13 +49,13 @@ export default defineComponent({
|
|
|
}
|
|
|
})
|
|
|
return tempStr
|
|
|
- },
|
|
|
- calcRatePrice() {
|
|
|
- // 计算手续费
|
|
|
- let rate = createState.rate || 0
|
|
|
- let price = createState.lessonGroup.lessonPrice || 0
|
|
|
- return (price - (rate / 100) * price).toFixed(2)
|
|
|
}
|
|
|
+ // calcRatePrice() {
|
|
|
+ // // 计算手续费
|
|
|
+ // let rate = createState.rate || 0
|
|
|
+ // let price = createState.lessonGroup.lessonPrice || 0
|
|
|
+ // return (price - (rate / 100) * price).toFixed(2)
|
|
|
+ // }
|
|
|
},
|
|
|
async mounted() {
|
|
|
try {
|
|
@@ -56,6 +63,13 @@ export default defineComponent({
|
|
|
const res = await request.post('/api-website/teacher/querySubject')
|
|
|
createState.subjectList = res.data || []
|
|
|
}
|
|
|
+
|
|
|
+ // setInterval(() => {
|
|
|
+ // console.log(
|
|
|
+ // createState.lessonGroup.lessonCoverTemplateUrl,
|
|
|
+ // 'createState.lessonGroup.lessonCoverTemplateUrl'
|
|
|
+ // )
|
|
|
+ // }, 1000)
|
|
|
} catch {
|
|
|
//
|
|
|
}
|
|
@@ -65,12 +79,17 @@ export default defineComponent({
|
|
|
// createState.lessonGroup.lessonSubject = id
|
|
|
// this.subjectStatus = false
|
|
|
// },
|
|
|
- onFormatter(val: any) {
|
|
|
- return verifyNumberIntegerAndFloat(val)
|
|
|
+ onFormatter(e: any) {
|
|
|
+ e.target.value = verifyNumberIntegerAndFloat(e.target.value)
|
|
|
+
|
|
|
+ // 计算手续费
|
|
|
+ let rate = createState.rate || 0
|
|
|
+ let price = e.target.value || 0
|
|
|
+ this.calcRatePrice = (price - (rate / 100) * price).toFixed(2)
|
|
|
},
|
|
|
tabChange(name: number) {
|
|
|
- ;(this as any).$refs.form.resetValidation('lessonCoverTemplateUrl')
|
|
|
- ;(this as any).$refs.form.resetValidation('lessonCoverUrl')
|
|
|
+ ;(this as any).$refs.form.clearValidate('lessonCoverTemplateUrl')
|
|
|
+ ;(this as any).$refs.form.clearValidate('lessonCoverUrl')
|
|
|
createState.tabIndex = name
|
|
|
},
|
|
|
selectImg(val: string) {
|
|
@@ -84,6 +103,7 @@ export default defineComponent({
|
|
|
<ElForm
|
|
|
class="px-[200px] pb-10 pt-7"
|
|
|
size="large"
|
|
|
+ ref="form"
|
|
|
labelWidth={'100px'}
|
|
|
labelPosition="left"
|
|
|
model={createState.lessonGroup}
|
|
@@ -109,20 +129,19 @@ export default defineComponent({
|
|
|
rules={[
|
|
|
{
|
|
|
required: true,
|
|
|
- message: '请选择课程声部',
|
|
|
- trigger: 'change'
|
|
|
+ message: '请选择课程声部'
|
|
|
}
|
|
|
]}
|
|
|
>
|
|
|
- {/* <ElSelect
|
|
|
+ <ElSelect
|
|
|
class="w-full"
|
|
|
v-model={createState.lessonGroup.lessonSubject}
|
|
|
placeholder="请选择课程声部"
|
|
|
>
|
|
|
{createState.subjectList.map((item: any) => (
|
|
|
- <ElOption value={item.id}>{item.name}</ElOption>
|
|
|
+ <ElOption key={item.id} value={item.id} label={item.name} />
|
|
|
))}
|
|
|
- </ElSelect> */}
|
|
|
+ </ElSelect>
|
|
|
</ElFormItem>
|
|
|
<ElFormItem
|
|
|
label="课程介绍"
|
|
@@ -157,7 +176,8 @@ export default defineComponent({
|
|
|
<ElInput
|
|
|
placeholder="请输入课程组售价"
|
|
|
v-model={createState.lessonGroup.lessonPrice}
|
|
|
- formatter={this.onFormatter}
|
|
|
+ // @ts-ignore
|
|
|
+ onKeyup={this.onFormatter}
|
|
|
v-slots={{
|
|
|
append: () => <span class="text-base text-[#333]">元</span>
|
|
|
}}
|
|
@@ -172,38 +192,88 @@ export default defineComponent({
|
|
|
<p>您的课程收入将在课程结束后结算到您的账户中 </p>
|
|
|
</div>
|
|
|
<ElFormItem label="课程封面" class="!mb-0">
|
|
|
- <ElTabs v-model={createState.tabIndex}>
|
|
|
+ <ElTabs
|
|
|
+ v-model={createState.tabIndex}
|
|
|
+ onTab-change={(name: any) => {
|
|
|
+ this.tabChange(name)
|
|
|
+ }}
|
|
|
+ >
|
|
|
<ElTabPane label="图片模板" name={1}></ElTabPane>
|
|
|
<ElTabPane label="自定义模板" name={2}></ElTabPane>
|
|
|
</ElTabs>
|
|
|
</ElFormItem>
|
|
|
- <ElFormItem>
|
|
|
- {/* <ElRadioGroup>
|
|
|
- <ElRow>
|
|
|
- {createState.templateList.map((item: any) => (
|
|
|
- <ElCol span={10} class="mb-3 cursor-pointer">
|
|
|
- <div class="w-40 relative rounded-xl overflow-hidden border">
|
|
|
- <ElImage src={item} class="align-middle" />
|
|
|
- <ElRadio
|
|
|
- label={item}
|
|
|
- class="!absolute bottom-2 right-0 !h-auto"
|
|
|
- >
|
|
|
- {''}
|
|
|
- </ElRadio>
|
|
|
- </div>
|
|
|
- </ElCol>
|
|
|
- ))}
|
|
|
- </ElRow>
|
|
|
- </ElRadioGroup> */}
|
|
|
- <ColCropper />
|
|
|
- </ElFormItem>
|
|
|
+
|
|
|
+ {createState.tabIndex === 1 && (
|
|
|
+ <ElFormItem
|
|
|
+ prop="lessonCoverUrl"
|
|
|
+ rules={[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请上传课程封面'
|
|
|
+ }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <ElRadioGroup v-model={createState.lessonGroup.lessonCoverUrl}>
|
|
|
+ <ElRow>
|
|
|
+ {createState.templateList.map((item: any) => (
|
|
|
+ <ElCol span={10} class="mb-3 cursor-pointer">
|
|
|
+ <div class="w-40 relative rounded-xl overflow-hidden border">
|
|
|
+ <ElImage src={item} class="align-middle" />
|
|
|
+ <ElRadio
|
|
|
+ label={item}
|
|
|
+ class="!absolute bottom-2 right-0 !h-auto"
|
|
|
+ >
|
|
|
+ {''}
|
|
|
+ </ElRadio>
|
|
|
+ </div>
|
|
|
+ </ElCol>
|
|
|
+ ))}
|
|
|
+ </ElRow>
|
|
|
+ </ElRadioGroup>
|
|
|
+ </ElFormItem>
|
|
|
+ )}
|
|
|
+
|
|
|
+ {createState.tabIndex === 2 && (
|
|
|
+ <ElFormItem
|
|
|
+ prop="lessonCoverTemplateUrl"
|
|
|
+ rules={[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请上传课程封面',
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <ColUpload
|
|
|
+ v-model:modelValue={
|
|
|
+ createState.lessonGroup.lessonCoverTemplateUrl
|
|
|
+ }
|
|
|
+ />
|
|
|
+ </ElFormItem>
|
|
|
+ )}
|
|
|
+
|
|
|
+ {/* <ColCropper
|
|
|
+ v-model:modelValue={
|
|
|
+ createState.lessonGroup.lessonCoverTemplateUrl
|
|
|
+ }
|
|
|
+ bucket="video-course"
|
|
|
+ options={{
|
|
|
+ fixedNumber: [3, 2],
|
|
|
+ autoCropWidth: 300,
|
|
|
+ autoCropHeight: 200
|
|
|
+ }}
|
|
|
+ /> */}
|
|
|
</ElForm>
|
|
|
<div class="border-t border-t-[#E5E5E5] text-center pt-6 pb-7">
|
|
|
<ElButton
|
|
|
type="primary"
|
|
|
class="!w-40 !h-[38px]"
|
|
|
onClick={() => {
|
|
|
- createState.active = 1
|
|
|
+ ;(this as any).$refs.form.validate(async (valid: boolean) => {
|
|
|
+ if (valid) {
|
|
|
+ createState.active = 1
|
|
|
+ }
|
|
|
+ })
|
|
|
}}
|
|
|
>
|
|
|
下一步
|