Files
Yi.Framework/Yi.Vue3.x.Vant/src/view/send/imageText.vue
2022-10-14 02:18:25 +08:00

166 lines
3.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<transition name="van-slide-right">
<div v-show="visible">
<van-sticky>
<van-row class="head-row">
<van-col span="3">
<router-link to="/recommend">
<van-icon name="arrow-left" size="1.5rem" />
</router-link>
</van-col>
<van-col span="18"><span>发图文</span></van-col>
<van-col span="3" @click="send" :style="{color: isSend?'#FE70A0':'#979797'}">发布</van-col>
</van-row>
</van-sticky>
<van-cell-group>
<van-field
rows="5"
autosize
type="textarea"
v-model="content"
label-width="0"
:show-word-limit="true"
maxlength="500"
placeholder="大于5字每一天都是为了下一天"
/>
</van-cell-group>
<van-row class="body-row">
<van-col span="10">
<van-icon name="share-o" size="1.5rem" /><span>发布到去其他</span>
</van-col>
<van-col span="4"></van-col>
<van-col span="10"
><span class="right-span">选择更多人看到</span>
<van-icon name="arrow" size="1.2rem" />
</van-col>
</van-row>
<van-divider />
<van-row>
<van-col class="img-col" span="24">
<van-uploader :after-read="afterRead" v-model="fileList" multiple />
</van-col>
</van-row>
</div>
</transition>
</template>
<script setup lang="ts">
import { ref, onMounted, reactive, toRefs,watch } from "vue";
import { ArticleEntity } from "@/type/interface/ArticleEntity.ts";
import fileApi from "@/api/fileApi.ts";
import articleApi from "@/api/articleApi.ts";
import { Toast } from "vant";
import { useRouter } from 'vue-router'
const router = useRouter();
const form = reactive<ArticleEntity>({
title: "",
content: "",
images: [],
isDeleted: false,
});
const isSend=ref(false)
const { images, content } = toRefs(form);
const fileList = ref([]);
const visible = ref<boolean>(false);
onMounted(() => {
visible.value = true;
});
const afterRead = (file: any) => {
file.status = "uploading";
file.message = "上传中...";
var formData = new FormData();
//一个文件
if(file.length==undefined)
{
formData.append("file", file.file);
}
else
{
//多个文件
file.forEach((f:any) => {
formData.append("file", f.file);
});
}
fileApi.upload("image", formData)
.then((response: any) => {
images.value.push(...response.data);
file.status = "done";
file.message = "成功";
})
};
const send = () => {
if(form.content.length<5)
{
Toast({
message: "请输入至少5个字符",
position: "bottom",
});
}
else
{
articleApi.add(form).then((response:any)=>{
router.push({ path: '/recommend'});
})
}
};
watch(()=>form.content,(newValue,oldValue)=>{
if(newValue.length<5)
{
isSend.value=false
}
else
{
isSend.value=true
}
console.log(isSend.value?'#FFF':'#111')
})
</script>
<style scoped>
.head-row {
background-color: #f8f8f8;
padding: 1.2rem 1rem 0.8rem 1rem;
}
.head-row span {
font-size: large;
}
.van-field-5-label {
display: none;
}
.body-row {
margin-top: 1rem;
}
.preview-cover {
position: absolute;
bottom: 0;
box-sizing: border-box;
width: 100%;
padding: 4px;
color: #fff;
font-size: 12px;
text-align: center;
background: rgba(0, 0, 0, 0.3);
}
.van-uploader {
margin: 0 1.2rem 0 1.2rem;
}
.img-col {
text-align: left;
}
.right-span
{
color: #979797;
}
</style>