解决冲突

This commit is contained in:
lpq
2023-02-19 20:30:13 +08:00
2 changed files with 189 additions and 175 deletions

View File

@@ -4,19 +4,21 @@
<slot></slot> <slot></slot>
</div> </div>
<a-drawer <a-drawer
:visible="visible" :visible="visible"
class="drawerStyle addliveDrawer" class="drawerStyle addliveDrawer"
width="1000" width="1000"
title="添加直播" title="添加直播"
placement="right" placement="right"
> >
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div class="headerTitle">{{ taskIndex >= 0 ? "编辑" : "添加" }}直播</div> <div class="headerTitle">
{{ taskIndex >= 0 ? "编辑" : "添加" }}直播
</div>
<img <img
style="width: 29px; height: 29px; cursor: pointer" style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" @click="closeDrawer"
/> />
</div> </div>
<div class="contentMain"> <div class="contentMain">
@@ -25,18 +27,18 @@
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" 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" v-model:value="formData.liveName"
style="width: 400px; height: 40px; border-radius: 8px" style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入直播名称" placeholder="请输入直播名称"
:maxlength="20" :maxlength="20"
/> />
</div> </div>
</div> </div>
@@ -44,18 +46,18 @@
<div class="signbox"> <div class="signbox">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" 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" v-model:value="formData.liveLink"
style="width: 400px; height: 40px; border-radius: 8px" style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入直播链接" placeholder="请输入直播链接"
:maxlength="100" :maxlength="100"
/> />
</div> </div>
</div> </div>
@@ -64,23 +66,23 @@
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" 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' }" :show-time="{ format: 'HH:mm' }"
:disabled-date="disabledDate" :disabled-date="disabledDate"
:disabled-time="disabledRangeTime" :disabled-time="disabledRangeTime"
style="width: 400px; height: 40px; border-radius: 8px" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="dateTime" v-model:value="dateTime"
format="YYYY-MM-DD HH:mm" format="YYYY-MM-DD HH:mm"
valueFormat="YYYY-MM-DD HH:mm" valueFormat="YYYY-MM-DD HH:mm"
@change="timeChange" @change="timeChange"
:placeholder="[' 开始时间', ' 结束时间']" :placeholder="[' 开始时间', ' 结束时间']"
/> />
</div> </div>
</div> </div>
@@ -88,19 +90,19 @@
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" 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" :min="0"
:max="300" :max="300"
:precision="0" :precision="0"
style="width: 400px; height: 40px; border-radius: 8px" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="formData.liveDuration" v-model:value="formData.liveDuration"
></a-input-number> ></a-input-number>
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
@@ -109,16 +111,16 @@
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" 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:value="formData.liveTeacherId"
v-model:name="formData.liveTeacherName" v-model:name="formData.liveTeacherName"
></ProjectManager> ></ProjectManager>
</div> </div>
</div> </div>
@@ -126,60 +128,60 @@
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" 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" name="avatar"
list-type="picture-card" list-type="picture-card"
class="avatar-uploader" class="avatar-uploader"
:show-upload-list="false" :show-upload-list="false"
:before-upload="beforeUpload" :before-upload="beforeUpload"
> >
<img <img
class="i_upload_img" class="i_upload_img"
v-if="imageUrl" v-if="imageUrl"
:src="imageUrl" :src="imageUrl"
alt="avatar" 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>
<div class="shu"></div> <div class="shu"></div>
</div>
</div>
</a-upload>
<div class="i_bottom">
<div class="tip">
<span style="color: #999999; margin-left: 8px"
>支持图片格式为jpg/jpeg/png 图片最大为2MB</span
>
</div> </div>
</div> </div>
</a-upload>
<div class="i_bottom">
<div class="tip">
<span style="color: #999999; margin-left: 8px"
>支持图片格式为jpg/jpeg/png 图片最大为2MB</span
>
</div>
</div>
</div> </div>
</div> </div>
<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" src="@/assets/images/coursewareManage/asterisk.png"
alt="" 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" v-model:value="formData.liveNotice"
placeholder="请输入直播公告" placeholder="请输入直播公告"
allow-clear allow-clear
show-count show-count
:maxlength="200" :maxlength="200"
:rows="6" :rows="6"
/> />
</div> </div>
</div> </div>
@@ -189,8 +191,9 @@
<span style="margin-right: 3px">回放设置</span> <span style="margin-right: 3px">回放设置</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-switch v-model:checked="formData.livePlayback" <a-switch
@change="getchange(formData.livePlayback)" v-model:checked="formData.livePlayback"
@change="getchange(formData.livePlayback)"
/> />
</div> </div>
</div> </div>
@@ -201,10 +204,10 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input <a-input
v-model:value="formData.livePlaybackLink" v-model:value="formData.livePlaybackLink"
style="width: 400px; height: 40px; border-radius: 8px" style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入回放链接" placeholder="请输入回放链接"
:maxlength="100" :maxlength="100"
/> />
</div> </div>
</div> </div>
@@ -216,12 +219,12 @@
</div> </div>
<div class="textarea"> <div class="textarea">
<a-textarea <a-textarea
v-model:value="formData.liveExplain" v-model:value="formData.liveExplain"
placeholder="请输入直播说明" placeholder="请输入直播说明"
allow-clear allow-clear
show-count show-count
:maxlength="200" :maxlength="200"
:rows="6" :rows="6"
/> />
</div> </div>
</div> </div>
@@ -240,37 +243,37 @@
<div class="timerbox"> <div class="timerbox">
<span>直播开始前</span> <span>直播开始前</span>
<a-input-number <a-input-number
:min="0" :min="0"
:max="30" :max="30"
:precision="0" :precision="0"
style=" style="
width: 88px; width: 88px;
height: 32px; height: 32px;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
" "
v-model:value="formData.beforeSignIn" v-model:value="formData.beforeSignIn"
></a-input-number> ></a-input-number>
<span style="color: #999999; margin-left: 8px" <span style="color: #999999; margin-left: 8px"
>分钟允许签到</span >分钟允许签到</span
> >
</div> </div>
<div class="timerbox"> <div class="timerbox">
<span>直播开始后</span> <span>直播开始后</span>
<a-input-number <a-input-number
:min="0" :min="0"
:max="30" :max="30"
:precision="0" :precision="0"
style=" style="
width: 88px; width: 88px;
height: 32px; height: 32px;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
" "
v-model:value="formData.afterSignIn" v-model:value="formData.afterSignIn"
></a-input-number> ></a-input-number>
<span style="color: #999999; margin-left: 8px" <span style="color: #999999; margin-left: 8px"
>分钟允许签到</span >分钟允许签到</span
> >
</div> </div>
</div> </div>
@@ -281,22 +284,26 @@
<span style="margin-right: 3px">评估</span> <span style="margin-right: 3px">评估</span>
</div> </div>
<div class="btnbox2"> <div class="btnbox2">
<a-checkbox <a-checkbox v-model:checked="formData.isEvaluate"
v-model:checked="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 v-model:id="formData.assessmentId" v-model:name="formData.assessmentName"> <AddInvistRoot
v-model:id="formData.assessmentId"
v-model:name="formData.assessmentName"
>
<button class="xkbtn">选择评估</button> <button class="xkbtn">选择评估</button>
</AddInvistRoot> </AddInvistRoot>
<div v-if="formData.assessmentId"> <div v-if="formData.assessmentId">
<a-tag closable @close="removePG" color="processing"> <a-tag closable @close="removePG" color="processing">
<span style="font-size: 14px; line-height: 33px">{{ formData.assessmentName }}</span> <span style="font-size: 14px; line-height: 33px">{{
formData.assessmentName
}}</span>
</a-tag> </a-tag>
</div> </div>
</div> </div>
@@ -317,43 +324,43 @@
</a-drawer> </a-drawer>
</template> </template>
<script setup> <script setup>
import {defineEmits, defineProps, ref} from "vue"; import { defineEmits, defineProps, ref } from "vue";
import dayjs from "dayjs"; import dayjs from "dayjs";
import ProjectManager from "@/components/project/ProjectManagerNew"; import ProjectManager from "@/components/project/ProjectManagerNew";
import AddInvistRoot from "@/components/drawers/AddInvistRoot.vue"; import AddInvistRoot from "@/components/drawers/AddInvistRoot.vue";
import {Form, message} from "ant-design-vue"; import { Form, message } from "ant-design-vue";
import { fileUp } from "../../api/indexEval"; import { fileUp } from "../../api/indexEval";
const removePG = () => { const removePG = () => {
formData.value.assessmentId = '' formData.value.assessmentId = "";
formData.value.assessmentName = '' formData.value.assessmentName = "";
}; };
const getchange=(mess)=> { const getchange = (mess) => {
console.log(mess); //输出true或者false console.log(mess); //输出true或者false
}; };
const props = defineProps({ const props = defineProps({
type: Number, type: Number,
taskList: [] taskList: [],
}) });
const visible = ref(false) const visible = ref(false);
const formData = ref({ const formData = ref({
liveName: '', liveName: "",
liveLink: '', liveLink: "",
liveStartTime: '', liveStartTime: "",
liveEndTime: '', liveEndTime: "",
liveNotice: '', liveNotice: "",
liveDuration: '', liveDuration: "",
liveTeacherId: '', liveTeacherId: "",
liveTeacherName: '', liveTeacherName: "",
liveCover: '', liveCover: "",
beforeSignIn:'', beforeSignIn: "",
afterSignIn:'', afterSignIn: "",
isEvaluate:'', isEvaluate: "",
assessmentId:'', assessmentId: "",
assessmentName:'', assessmentName: "",
livePlayback:'', livePlayback: "",
}) });
const emit = defineEmits({}) const emit = defineEmits({});
const taskIndex = ref(-1); const taskIndex = ref(-1);
const dateTime = ref([]); const dateTime = ref([]);
@@ -361,67 +368,67 @@ const rulesRef = ref({
liveName: [ liveName: [
{ {
required: true, required: true,
message: '请输入直播名称', message: "请输入直播名称",
}, },
], ],
liveLink: [ liveLink: [
{ {
type: 'url', type: "url",
required: true, required: true,
message: '请输入直播链接', message: "请输入直播链接",
}, },
], ],
liveStartTime: [ liveStartTime: [
{ {
required: true, required: true,
message: '请选择开始时间', message: "请选择开始时间",
}, },
], ],
liveEndTime: [ liveEndTime: [
{ {
required: true, required: true,
message: '请选择结束时间', message: "请选择结束时间",
}, },
], ],
liveNotice: [ liveNotice: [
{ {
required: true, required: true,
message: '请输入直播公告', message: "请输入直播公告",
}, },
], ],
liveDuration: [ liveDuration: [
{ {
required: true, required: true,
message: '请输入直播时长', message: "请输入直播时长",
}, },
], ],
liveTeacherId: [ liveTeacherId: [
{ {
required: true, required: true,
message: '请选择直播教师', message: "请选择直播教师",
}, },
], ],
liveTeacherName: [ liveTeacherName: [
{ {
required: true, required: true,
message: '请选择直播教师', message: "请选择直播教师",
}, },
], ],
liveCover: [ liveCover: [
{ {
required: true, required: true,
message: '请上传直播封面', message: "请上传直播封面",
}, },
], ],
}); });
const {resetFields, validate} = Form.useForm(formData, rulesRef); const { resetFields, validate } = Form.useForm(formData, rulesRef);
const closeDrawer = () => { const closeDrawer = () => {
visible.value = false visible.value = false;
taskIndex.value = -1 taskIndex.value = -1;
dateTime.value = [] dateTime.value = [];
resetFields() resetFields();
}; };
const range = (start, end) => { const range = (start, end) => {
@@ -433,12 +440,12 @@ const range = (start, end) => {
}; };
function timeChange(time, timeStr) { function timeChange(time, timeStr) {
formData.value.liveStartTime = timeStr[0] formData.value.liveStartTime = timeStr[0];
formData.value.liveEndTime = timeStr[1] formData.value.liveEndTime = timeStr[1];
} }
const disabledDate = (current) => { const disabledDate = (current) => {
return current && current < dayjs().startOf('day'); return current && current < dayjs().startOf("day");
}; };
const disabledRangeTime = () => ({ const disabledRangeTime = () => ({
@@ -448,38 +455,47 @@ const disabledRangeTime = () => ({
}); });
async function confirm() { async function confirm() {
debugger debugger;
console.log("确定按钮:") console.log("确定按钮:");
await validate().catch(({errorFields}) => { await validate().catch(({ errorFields }) => {
message.warning(errorFields[0].errors.join()); message.warning(errorFields[0].errors.join());
throw Error("数据校验不通过") throw Error("数据校验不通过");
}); });
if (taskIndex.value === -1) { if (taskIndex.value === -1) {
<<<<<<< HEAD
let list = props.taskList let list = props.taskList
list.push( list.push(
{name: formData.value.liveName, {name: formData.value.liveName,
type: props.type, type: props.type,
info: {...formData.value} info: {...formData.value}
}) })
=======
const list = props.taskList;
list.push({
name: formData.value.liveName,
type: props.type,
info: { ...formData.value },
});
>>>>>>> 3e84518fc6431b5650dd225e2a6ff09936fbffe0
} 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;
} }
emit('update:taskList', [...props.taskList]) emit("update:taskList", [...props.taskList]);
closeDrawer() closeDrawer();
} }
function openDrawer(i, row) { function openDrawer(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);
visible.value = true visible.value = true;
} }
defineExpose({openDrawer}) defineExpose({ openDrawer });
const imageUrl = ref('') const imageUrl = ref("");
const beforeUpload = (file) => { const beforeUpload = (file) => {
const isJpgOrPng = const isJpgOrPng =
file.type === "image/jpg" || file.type === "image/jpg" ||
@@ -503,11 +519,9 @@ const beforeUpload = (file) => {
formDatas.append("file", file); formDatas.append("file", file);
fileUp(formDatas).then((res) => { fileUp(formDatas).then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
console.log(res.data.data,45); console.log(res.data.data, 45);
imageUrl.value = process.env.VUE_APP_FILE_PATH +res.data.data imageUrl.value = process.env.VUE_APP_FILE_PATH + res.data.data;
formData.value.liveCover =process.env.VUE_APP_FILE_PATH + res.data.data formData.value.liveCover = process.env.VUE_APP_FILE_PATH + res.data.data;
// state.hasImgName = file.name; // state.hasImgName = file.name;
// emit("src", { id: '', src: res.data.data }); // emit("src", { id: '', src: res.data.data });

View File

@@ -4429,35 +4429,35 @@ export default {
let endTime = new Date().getTime(endTimes); let endTime = new Date().getTime(endTimes);
switch (type) { switch (type) {
case 1: case 1:
status == 3 status == -1
? (isEnd = true) ? (isEnd = true)
: nowTime > endTime : nowTime > endTime
? (isEnd = true) ? (isEnd = true)
: (isEnd = false); : (isEnd = false);
break; break;
case 3: case 3:
status == 3 status == -1
? (isEnd = true) ? (isEnd = true)
: nowTime > endTime : nowTime > endTime
? (isEnd = true) ? (isEnd = true)
: (isEnd = false); : (isEnd = false);
break; break;
case 5: case 5:
status == 3 status == -1
? (isEnd = true) ? (isEnd = true)
: nowTime > endTime : nowTime > endTime
? (isEnd = true) ? (isEnd = true)
: (isEnd = false); : (isEnd = false);
break; break;
case 7: case 7:
status == 3 status == -1
? (isEnd = true) ? (isEnd = true)
: nowTime > endTime : nowTime > endTime
? (isEnd = true) ? (isEnd = true)
: (isEnd = false); : (isEnd = false);
break; break;
case 10: case 10:
status == 3 status == -1
? (isEnd = true) ? (isEnd = true)
: nowTime > endTime : nowTime > endTime
? (isEnd = true) ? (isEnd = true)