提交 9db4d825 authored 作者: 王鹏飞's avatar 王鹏飞

updates

上级 cb9eb081
/// <reference types="vite/client" /> /// <reference types="vite/client" />
/// <reference types="vue/macros-global" />
interface ImportMetaEnv { interface ImportMetaEnv {
readonly VITE_LOGIN_URL: string readonly VITE_LOGIN_URL: string
} }
......
<script setup lang="ts"> <script setup lang="ts">
import md5 from 'blueimp-md5' import md5 from 'blueimp-md5'
import { ref, withDefaults, watch } from 'vue' import { ref, withDefaults, watch, computed } from 'vue'
import { getSignature, uploadFile } from '@/api/base' import { getSignature, uploadFile } from '@/api/base'
import type { UploaderFileListItem } from 'vant' import type { UploaderFileListItem } from 'vant'
const props = withDefaults(defineProps<{ modelValue: string[]; prefix?: string }>(), { prefix: 'upload/psp/' }) const props = withDefaults(defineProps<{ modelValue?: string[]; prefix?: string }>(), { prefix: 'upload/psp/' })
const emit = defineEmits(['update:modelValue']) const emit = defineEmits(['update:modelValue'])
const fileList = ref<UploaderFileListItem[]>([]) const fileList = ref<UploaderFileListItem[]>([])
watch(props.modelValue, files => { const isFileList = computed(() => {
fileList.value = files.map((url: string) => ({ url })) return Array.isArray(props.modelValue)
}) })
watch(
() => props.modelValue,
files => {
if (Array.isArray(files)) {
fileList.value = files.map((url: string) => ({ url }))
}
}
)
console.log(isFileList)
// 上传 // 上传
const afterRead = async (file: any) => { const afterRead = async (file: any) => {
// 获取签名 // 获取签名
...@@ -56,5 +65,5 @@ const onDelete = () => { ...@@ -56,5 +65,5 @@ const onDelete = () => {
</script> </script>
<template> <template>
<van-uploader v-model="fileList" :after-read="afterRead" @delete="onDelete" /> <van-uploader v-model="fileList" :after-read="afterRead" @delete="onDelete"></van-uploader>
</template> </template>
...@@ -46,15 +46,8 @@ const afterRead = async (file: any) => { ...@@ -46,15 +46,8 @@ const afterRead = async (file: any) => {
file.message = '上传失败' file.message = '上传失败'
}) })
} }
// 删除
const onDelete = () => {
emit(
'update:modelValue',
fileList.value.map((item: any) => item.url)
)
}
</script> </script>
<template> <template>
<van-uploader v-model="fileList" :after-read="afterRead" @delete="onDelete" /> <van-uploader :after-read="afterRead"></van-uploader>
</template> </template>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
import { reactive } from 'vue' import { reactive } from 'vue'
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
import { createCourseRecord } from '../api' import { createCourseRecord } from '../api'
import UploadImageList from '@/components/UploadImageList.vue' import UploadFileList from '@/components/UploadFileList.vue'
import { Toast } from 'vant' import { Toast } from 'vant'
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
...@@ -31,7 +31,7 @@ function onSubmit() { ...@@ -31,7 +31,7 @@ function onSubmit() {
/> />
<van-field :rules="[{ validator: pictureValidator, message: '请上传图片' }]"> <van-field :rules="[{ validator: pictureValidator, message: '请上传图片' }]">
<template #input> <template #input>
<UploadImageList v-model="form.picture"></UploadImageList> <UploadFileList v-model="form.picture"></UploadFileList>
</template> </template>
</van-field> </van-field>
<van-button block round native-type="submit" class="my-button">发表</van-button> <van-button block round native-type="submit" class="my-button">发表</van-button>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
import { reactive } from 'vue' import { reactive } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { createQuestion } from '../api' import { createQuestion } from '../api'
import UploadImageList from '@/components/UploadImageList.vue' import UploadFileList from '@/components/UploadFileList.vue'
import { Toast } from 'vant' import { Toast } from 'vant'
const router = useRouter() const router = useRouter()
...@@ -34,7 +34,7 @@ function onSubmit() { ...@@ -34,7 +34,7 @@ function onSubmit() {
/> />
<van-field> <van-field>
<template #input> <template #input>
<UploadImageList v-model="form.picture"></UploadImageList> <UploadFileList v-model="form.picture"></UploadFileList>
</template> </template>
</van-field> </van-field>
<van-button block round native-type="submit" class="my-button">发布</van-button> <van-button block round native-type="submit" class="my-button">发布</van-button>
......
<script setup lang="ts"> <script setup lang="ts">
import { reactive } from 'vue' import { reactive } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import { createTeam } from '../api' import { createTeam } from '../api'
import UploadImageList from '@/components/UploadImageList.vue' import UploadFileList from '@/components/UploadFileList.vue'
import { Toast } from 'vant' import { Toast } from 'vant'
const router = useRouter() const form = reactive({ name: '', slogan: '', logo: '', brief: '' })
const route = useRoute()
const form = reactive({ ...{ chapter_id: '', course_id: '', content: '', picture: [] }, ...route.query })
const pictureValidator = () => !!form.picture.length
function onSubmit() { function onSubmit() {
const params = Object.assign({}, form, { picture: JSON.stringify(form.picture) }) createTeam(form).then(() => {
createTeam(params).then(() => {
Toast.success('创建成功') Toast.success('创建成功')
router.push({ name: 'learnCourseView', params: { id: form.course_id } })
}) })
} }
</script> </script>
...@@ -22,21 +15,17 @@ function onSubmit() { ...@@ -22,21 +15,17 @@ function onSubmit() {
<template> <template>
<AppContainer title="团队创建" backgroundColor="#fff" headerAlign="center"> <AppContainer title="团队创建" backgroundColor="#fff" headerAlign="center">
<van-form @submit="onSubmit"> <van-form @submit="onSubmit">
<van-field v-model="form.name" placeholder="团队名称" :rules="[{ required: true, message: '请输入团队名称' }]" />
<van-field <van-field
v-model="form.content" v-model="form.brief"
placeholder="团队名称"
:rules="[{ required: true, message: '请输入团队名称' }]"
/>
<van-field
v-model="form.content"
type="textarea" type="textarea"
placeholder="团队简介" placeholder="团队简介"
:autosize="{ minHeight: 200 }" :autosize="{ minHeight: 200 }"
:rules="[{ required: true, message: '请输入团队简介' }]" :rules="[{ required: true, message: '请输入团队简介' }]"
/> />
<van-field :rules="[{ validator: pictureValidator, message: '请上传图片' }]"> <van-field :rules="[{ required: true, message: '请上传图片' }]">
<template #input> <template #input>
<UploadImageList v-model="form.picture"></UploadImageList> <UploadFileList></UploadFileList>
</template> </template>
</van-field> </van-field>
<van-button block round native-type="submit" class="my-button">立即创建</van-button> <van-button block round native-type="submit" class="my-button">立即创建</van-button>
......
...@@ -9,7 +9,10 @@ import checker from 'vite-plugin-checker' ...@@ -9,7 +9,10 @@ import checker from 'vite-plugin-checker'
export default defineConfig(({ mode }) => { export default defineConfig(({ mode }) => {
return { return {
base: mode === 'prod' ? 'https://webapp-pub.ezijing.com/website/prod/prp-h5/' : '/', base: mode === 'prod' ? 'https://webapp-pub.ezijing.com/website/prod/prp-h5/' : '/',
plugins: [checker({ eslint: { lintCommand: 'eslint "./src/**/*.{vue,js,jsx,ts,tsx}"' } }), vue()], plugins: [
checker({ eslint: { lintCommand: 'eslint "./src/**/*.{vue,js,jsx,ts,tsx}"' } }),
vue({ reactivityTransform: true })
],
server: { server: {
open: true, open: true,
host: 'dev.ezijing.com', host: 'dev.ezijing.com',
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论