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

updates

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