fix:限制直播封面图片上传大小,添加直播关闭弹框清空问题

This commit is contained in:
wuyx
2023-02-23 20:47:00 +08:00
parent 0ddd27a33a
commit 1205e6531c

View File

@@ -3,151 +3,91 @@
<div @click="openDrawer"> <div @click="openDrawer">
<slot></slot> <slot></slot>
</div> </div>
<a-drawer <a-drawer :visible="visible" class="drawerStyle addliveDrawer" width="1000" title="添加直播" placement="right">
:visible="visible"
class="drawerStyle addliveDrawer"
width="1000"
title="添加直播"
placement="right"
>
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div class="headerTitle"> <div class="headerTitle">
{{ taskIndex >= 0 ? "编辑" : "添加" }}直播 {{ taskIndex >= 0 ? "编辑" : "添加" }}直播
</div> </div>
<img <img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
style="width: 29px; height: 29px; cursor: pointer" @click="closeDrawer" />
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div> </div>
<div class="contentMain"> <div class="contentMain">
<div class="main_left"> <div class="main_left">
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 3px">直播名称</span> <span style="margin-right: 3px">直播名称</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input <a-input v-model:value="formData.liveName" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="formData.liveName" placeholder="请输入直播名称" :maxlength="20" />
style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入直播名称"
:maxlength="20"
/>
</div> </div>
</div> </div>
<div class="main_item" style="margin-top: -10px"> <div class="main_item" style="margin-top: -10px">
<div class="signbox"> <div class="signbox">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 3px">直播链接</span> <span style="margin-right: 3px">直播链接</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input <a-input v-model:value="formData.liveLink" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="formData.liveLink" placeholder="请输入直播链接" :maxlength="100" />
style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入直播链接"
:maxlength="100"
/>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 3px">直播时间</span> <span style="margin-right: 3px">直播时间</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-range-picker <a-range-picker :show-time="{ format: 'HH:mm' }" :disabled-date="disabledDate"
:show-time="{ format: 'HH:mm' }" style="width: 400px; height: 40px; border-radius: 8px" v-model:value="dateTime" format="YYYY-MM-DD HH:mm"
:disabled-date="disabledDate" valueFormat="YYYY-MM-DD HH:mm" @change="timeChange" :placeholder="[' 开始时间', ' 结束时间']" />
style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="dateTime"
format="YYYY-MM-DD HH:mm"
valueFormat="YYYY-MM-DD HH:mm"
@change="timeChange"
:placeholder="[' 开始时间', ' 结束时间']"
/>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 3px">直播时长</span> <span style="margin-right: 3px">直播时长</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input-number <a-input-number :min="0" :max="300" :precision="0" style="width: 400px; height: 40px; border-radius: 8px"
:min="0" v-model:value="formData.liveDuration"></a-input-number>
:max="300"
:precision="0"
style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="formData.liveDuration"
></a-input-number>
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 3px">授课老师</span> <span style="margin-right: 3px">授课老师</span>
</div> </div>
<div class="select" style="width: 400px"> <div class="select" style="width: 400px">
<ProjectManager <ProjectManager v-model:value="formData.liveTeacherId" v-model:name="formData.liveTeacherName">
v-model:value="formData.liveTeacherId" </ProjectManager>
v-model:name="formData.liveTeacherName"
></ProjectManager>
</div> </div>
</div> </div>
<div class="mbl_items2"> <div class="mbl_items2">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 2px">直播封面</span> <span style="margin-right: 2px">直播封面</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<a-upload <a-upload name="avatar" list-type="picture-card" class="avatar-uploader" :show-upload-list="false"
name="avatar" :before-upload="beforeUpload">
list-type="picture-card" <img class="i_upload_img" v-if="imageUrl" :src="imageUrl" alt="avatar" />
class="avatar-uploader"
:show-upload-list="false"
:before-upload="beforeUpload"
>
<img
class="i_upload_img"
v-if="imageUrl"
:src="imageUrl"
alt="avatar"
/>
<div class="i_upload" v-else> <div class="i_upload" v-else>
<div class="addimg"> <div class="addimg">
<div class="heng"></div> <div class="heng"></div>
@@ -157,9 +97,7 @@
</a-upload> </a-upload>
<div class="i_bottom"> <div class="i_bottom">
<div class="tip"> <div class="tip">
<span style="color: #999999; margin-left: 8px" <span style="color: #999999; margin-left: 8px">支持图片格式为jpg/jpeg/png 图片最大为2MB</span>
>支持图片格式为jpg/jpeg/png 图片最大为2MB</span
>
</div> </div>
</div> </div>
</div> </div>
@@ -167,22 +105,13 @@
<div class="main_item2"> <div class="main_item2">
<div class="signbox"> <div class="signbox">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 3px">直播公告</span> <span style="margin-right: 3px">直播公告</span>
</div> </div>
<div class="textarea"> <div class="textarea">
<a-textarea <a-textarea v-model:value="formData.liveNotice" placeholder="请输入直播公告" allow-clear show-count
v-model:value="formData.liveNotice" :maxlength="200" :rows="6" />
placeholder="请输入直播公告"
allow-clear
show-count
:maxlength="200"
:rows="6"
/>
</div> </div>
</div> </div>
@@ -191,10 +120,7 @@
<span style="margin-right: 3px">回放设置</span> <span style="margin-right: 3px">回放设置</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-switch <a-switch v-model:checked="formData.livePlayback" @change="getchange(formData.livePlayback)" />
v-model:checked="formData.livePlayback"
@change="getchange(formData.livePlayback)"
/>
</div> </div>
</div> </div>
<div v-if="formData.livePlayback"> <div v-if="formData.livePlayback">
@@ -203,12 +129,8 @@
<span style="margin-right: 3px">回放链接</span> <span style="margin-right: 3px">回放链接</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input <a-input v-model:value="formData.livePlaybackLink" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="formData.livePlaybackLink" placeholder="请输入回放链接" :maxlength="100" />
style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入回放链接"
:maxlength="100"
/>
</div> </div>
</div> </div>
</div> </div>
@@ -218,14 +140,8 @@
<span style="margin-right: 3px">直播说明</span> <span style="margin-right: 3px">直播说明</span>
</div> </div>
<div class="textarea"> <div class="textarea">
<a-textarea <a-textarea v-model:value="formData.liveExplain" placeholder="请输入直播说明" allow-clear show-count
v-model:value="formData.liveExplain" :maxlength="200" :rows="6" />
placeholder="请输入直播说明"
allow-clear
show-count
:maxlength="200"
:rows="6"
/>
</div> </div>
</div> </div>
@@ -242,39 +158,23 @@
<div class="setbox"> <div class="setbox">
<div class="timerbox"> <div class="timerbox">
<span>直播开始前</span> <span>直播开始前</span>
<a-input-number <a-input-number :min="0" :max="30" :precision="0" style="
:min="0" width: 88px;
:max="30" height: 32px;
:precision="0" border-radius: 8px;
style=" overflow: hidden;
width: 88px; " v-model:value="formData.beforeSignIn"></a-input-number>
height: 32px; <span style="color: #999999; margin-left: 8px">分钟允许签到</span>
border-radius: 8px;
overflow: hidden;
"
v-model:value="formData.beforeSignIn"
></a-input-number>
<span style="color: #999999; margin-left: 8px"
>分钟允许签到</span
>
</div> </div>
<div class="timerbox"> <div class="timerbox">
<span>直播开始后</span> <span>直播开始后</span>
<a-input-number <a-input-number :min="0" :max="30" :precision="0" style="
:min="0" width: 88px;
:max="30" height: 32px;
:precision="0" border-radius: 8px;
style=" overflow: hidden;
width: 88px; " v-model:value="formData.afterSignIn"></a-input-number>
height: 32px; <span style="color: #999999; margin-left: 8px">分钟允许签到</span>
border-radius: 8px;
overflow: hidden;
"
v-model:value="formData.afterSignIn"
></a-input-number>
<span style="color: #999999; margin-left: 8px"
>分钟允许签到</span
>
</div> </div>
</div> </div>
</div> </div>
@@ -284,18 +184,14 @@
<span style="margin-right: 3px">评估</span> <span style="margin-right: 3px">评估</span>
</div> </div>
<div class="btnbox2"> <div class="btnbox2">
<a-checkbox v-model:checked="formData.isEvaluate" @change="getchanges(formData.isEvaluate)" <a-checkbox v-model:checked="formData.isEvaluate" @change="getchanges(formData.isEvaluate)">需要评估
>需要评估
</a-checkbox> </a-checkbox>
</div> </div>
</div> </div>
<div v-if="formData.isEvaluate" class="main_item"> <div v-if="formData.isEvaluate" class="main_item">
<div class="signbox"></div> <div class="signbox"></div>
<div class="btnbox"> <div class="btnbox">
<AddInvistRoot <AddInvistRoot v-model:id="formData.assessmentId" v-model:name="formData.assessmentName">
v-model:id="formData.assessmentId"
v-model:name="formData.assessmentName"
>
<button class="xkbtn">选择评估</button> <button class="xkbtn">选择评估</button>
</AddInvistRoot> </AddInvistRoot>
@@ -428,6 +324,8 @@ const rulesRef = ref({
const { resetFields, validate } = Form.useForm(formData, rulesRef); const { resetFields, validate } = Form.useForm(formData, rulesRef);
const closeDrawer = () => { const closeDrawer = () => {
formData.value.liveCover = "";
imageUrl.value = "";
visible.value = false; visible.value = false;
taskIndex.value = -1; taskIndex.value = -1;
dateTime.value = []; dateTime.value = [];
@@ -467,16 +365,17 @@ async function confirm() {
if (taskIndex.value === -1) { if (taskIndex.value === -1) {
let list = props.taskList let list = props.taskList
list.push( list.push(
{name: formData.value.liveName, {
type: props.type, name: formData.value.liveName,
info: {...formData.value}, type: props.type,
duration:dayjs(formData.value.liveEndTime).diff(formData.value.liveStartTime,'minutes') info: { ...formData.value },
}) duration: dayjs(formData.value.liveEndTime).diff(formData.value.liveStartTime, 'minutes')
})
} else { } else {
const data = props.taskList[taskIndex.value]; const data = props.taskList[taskIndex.value];
data.name = formData.value.liveName; data.name = formData.value.liveName;
data.info = formData.value; data.info = formData.value;
data.duration = dayjs(formData.value.liveEndTime).diff(formData.value.liveStartTime,'minutes') data.duration = dayjs(formData.value.liveEndTime).diff(formData.value.liveStartTime, 'minutes')
} }
emit("update:taskList", [...props.taskList]); emit("update:taskList", [...props.taskList]);
@@ -484,6 +383,7 @@ async function confirm() {
} }
function openDrawer(i, row) { function openDrawer(i, row) {
console.log(i, row)
row && (formData.value = { ...row.info }); row && (formData.value = { ...row.info });
row && (dateTime.value = [row.info.liveStartTime, row.info.liveEndTime]); row && (dateTime.value = [row.info.liveStartTime, row.info.liveEndTime]);
i >= 0 && (taskIndex.value = i); i >= 0 && (taskIndex.value = i);
@@ -506,9 +406,10 @@ const beforeUpload = (file) => {
return false; return false;
} }
let isLt1M = file.size / 10240 / 10240 <= 1; let isLt1M = file.size < 2097152;
console.log(file.size, isLt1M)
if (!isLt1M) { if (!isLt1M) {
this.$message.error("图片大小超过10MB!"); message.error("图片大小超过2MB!");
return false; return false;
} }