mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-12 12:26:47 +08:00
解决冲突
This commit is contained in:
@@ -4,19 +4,21 @@
|
||||
<slot></slot>
|
||||
</div>
|
||||
<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="header">
|
||||
<div class="headerTitle">{{ taskIndex >= 0 ? "编辑" : "添加" }}直播</div>
|
||||
<div class="headerTitle">
|
||||
{{ taskIndex >= 0 ? "编辑" : "添加" }}直播
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
@@ -25,18 +27,18 @@
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.liveName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入直播名称"
|
||||
:maxlength="20"
|
||||
v-model:value="formData.liveName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入直播名称"
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -44,18 +46,18 @@
|
||||
<div class="signbox">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播链接:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.liveLink"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入直播链接"
|
||||
:maxlength="100"
|
||||
v-model:value="formData.liveLink"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入直播链接"
|
||||
:maxlength="100"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -64,23 +66,23 @@
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
:disabled-date="disabledDate"
|
||||
:disabled-time="disabledRangeTime"
|
||||
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="[' 开始时间', ' 结束时间']"
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
:disabled-date="disabledDate"
|
||||
:disabled-time="disabledRangeTime"
|
||||
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>
|
||||
@@ -88,19 +90,19 @@
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播时长:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="300"
|
||||
:precision="0"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="formData.liveDuration"
|
||||
:min="0"
|
||||
: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>
|
||||
</div>
|
||||
@@ -109,16 +111,16 @@
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">授课老师:</span>
|
||||
</div>
|
||||
<div class="select" style="width: 400px">
|
||||
<ProjectManager
|
||||
v-model:value="formData.liveTeacherId"
|
||||
v-model:name="formData.liveTeacherName"
|
||||
v-model:value="formData.liveTeacherId"
|
||||
v-model:name="formData.liveTeacherName"
|
||||
></ProjectManager>
|
||||
</div>
|
||||
</div>
|
||||
@@ -126,60 +128,60 @@
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 2px">直播封面:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<a-upload
|
||||
name="avatar"
|
||||
list-type="picture-card"
|
||||
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="addimg">
|
||||
<div class="heng"></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
|
||||
>
|
||||
<a-upload
|
||||
name="avatar"
|
||||
list-type="picture-card"
|
||||
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="addimg">
|
||||
<div class="heng"></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>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播公告:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.liveNotice"
|
||||
placeholder="请输入直播公告"
|
||||
allow-clear
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
v-model:value="formData.liveNotice"
|
||||
placeholder="请输入直播公告"
|
||||
allow-clear
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -189,8 +191,9 @@
|
||||
<span style="margin-right: 3px">回放设置:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-switch v-model:checked="formData.livePlayback"
|
||||
@change="getchange(formData.livePlayback)"
|
||||
<a-switch
|
||||
v-model:checked="formData.livePlayback"
|
||||
@change="getchange(formData.livePlayback)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -201,10 +204,10 @@
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.livePlaybackLink"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入回放链接"
|
||||
:maxlength="100"
|
||||
v-model:value="formData.livePlaybackLink"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入回放链接"
|
||||
:maxlength="100"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -216,12 +219,12 @@
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.liveExplain"
|
||||
placeholder="请输入直播说明"
|
||||
allow-clear
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
v-model:value="formData.liveExplain"
|
||||
placeholder="请输入直播说明"
|
||||
allow-clear
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -240,37 +243,37 @@
|
||||
<div class="timerbox">
|
||||
<span>直播开始前:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="30"
|
||||
:precision="0"
|
||||
style="
|
||||
:min="0"
|
||||
:max="30"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.beforeSignIn"
|
||||
v-model:value="formData.beforeSignIn"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>分钟允许签到</span
|
||||
>
|
||||
</div>
|
||||
<div class="timerbox">
|
||||
<span>直播开始后:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="30"
|
||||
:precision="0"
|
||||
style="
|
||||
:min="0"
|
||||
:max="30"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.afterSignIn"
|
||||
v-model:value="formData.afterSignIn"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>分钟允许签到</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@@ -281,22 +284,26 @@
|
||||
<span style="margin-right: 3px">评估:</span>
|
||||
</div>
|
||||
<div class="btnbox2">
|
||||
<a-checkbox
|
||||
v-model:checked="formData.isEvaluate"
|
||||
>需要评估
|
||||
<a-checkbox v-model:checked="formData.isEvaluate"
|
||||
>需要评估
|
||||
</a-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="formData.isEvaluate" class="main_item">
|
||||
<div class="signbox"></div>
|
||||
<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>
|
||||
</AddInvistRoot>
|
||||
|
||||
<div v-if="formData.assessmentId">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
@@ -317,43 +324,43 @@
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
import {defineEmits, defineProps, ref} from "vue";
|
||||
import { defineEmits, defineProps, ref } from "vue";
|
||||
import dayjs from "dayjs";
|
||||
import ProjectManager from "@/components/project/ProjectManagerNew";
|
||||
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";
|
||||
|
||||
const removePG = () => {
|
||||
formData.value.assessmentId = ''
|
||||
formData.value.assessmentName = ''
|
||||
formData.value.assessmentId = "";
|
||||
formData.value.assessmentName = "";
|
||||
};
|
||||
const getchange=(mess)=> {
|
||||
console.log(mess); //输出true或者false
|
||||
const getchange = (mess) => {
|
||||
console.log(mess); //输出true或者false
|
||||
};
|
||||
const props = defineProps({
|
||||
type: Number,
|
||||
taskList: []
|
||||
})
|
||||
const visible = ref(false)
|
||||
taskList: [],
|
||||
});
|
||||
const visible = ref(false);
|
||||
const formData = ref({
|
||||
liveName: '',
|
||||
liveLink: '',
|
||||
liveStartTime: '',
|
||||
liveEndTime: '',
|
||||
liveNotice: '',
|
||||
liveDuration: '',
|
||||
liveTeacherId: '',
|
||||
liveTeacherName: '',
|
||||
liveCover: '',
|
||||
beforeSignIn:'',
|
||||
afterSignIn:'',
|
||||
isEvaluate:'',
|
||||
assessmentId:'',
|
||||
assessmentName:'',
|
||||
livePlayback:'',
|
||||
})
|
||||
const emit = defineEmits({})
|
||||
liveName: "",
|
||||
liveLink: "",
|
||||
liveStartTime: "",
|
||||
liveEndTime: "",
|
||||
liveNotice: "",
|
||||
liveDuration: "",
|
||||
liveTeacherId: "",
|
||||
liveTeacherName: "",
|
||||
liveCover: "",
|
||||
beforeSignIn: "",
|
||||
afterSignIn: "",
|
||||
isEvaluate: "",
|
||||
assessmentId: "",
|
||||
assessmentName: "",
|
||||
livePlayback: "",
|
||||
});
|
||||
const emit = defineEmits({});
|
||||
const taskIndex = ref(-1);
|
||||
const dateTime = ref([]);
|
||||
|
||||
@@ -361,67 +368,67 @@ const rulesRef = ref({
|
||||
liveName: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入直播名称',
|
||||
message: "请输入直播名称",
|
||||
},
|
||||
],
|
||||
liveLink: [
|
||||
{
|
||||
type: 'url',
|
||||
type: "url",
|
||||
required: true,
|
||||
message: '请输入直播链接',
|
||||
message: "请输入直播链接",
|
||||
},
|
||||
],
|
||||
liveStartTime: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择开始时间',
|
||||
message: "请选择开始时间",
|
||||
},
|
||||
],
|
||||
liveEndTime: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择结束时间',
|
||||
message: "请选择结束时间",
|
||||
},
|
||||
],
|
||||
liveNotice: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入直播公告',
|
||||
message: "请输入直播公告",
|
||||
},
|
||||
],
|
||||
liveDuration: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入直播时长',
|
||||
message: "请输入直播时长",
|
||||
},
|
||||
],
|
||||
liveTeacherId: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择直播教师',
|
||||
message: "请选择直播教师",
|
||||
},
|
||||
],
|
||||
liveTeacherName: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择直播教师',
|
||||
message: "请选择直播教师",
|
||||
},
|
||||
],
|
||||
liveCover: [
|
||||
{
|
||||
required: true,
|
||||
message: '请上传直播封面',
|
||||
message: "请上传直播封面",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
const {resetFields, validate} = Form.useForm(formData, rulesRef);
|
||||
const { resetFields, validate } = Form.useForm(formData, rulesRef);
|
||||
|
||||
const closeDrawer = () => {
|
||||
visible.value = false
|
||||
taskIndex.value = -1
|
||||
dateTime.value = []
|
||||
resetFields()
|
||||
visible.value = false;
|
||||
taskIndex.value = -1;
|
||||
dateTime.value = [];
|
||||
resetFields();
|
||||
};
|
||||
|
||||
const range = (start, end) => {
|
||||
@@ -433,12 +440,12 @@ const range = (start, end) => {
|
||||
};
|
||||
|
||||
function timeChange(time, timeStr) {
|
||||
formData.value.liveStartTime = timeStr[0]
|
||||
formData.value.liveEndTime = timeStr[1]
|
||||
formData.value.liveStartTime = timeStr[0];
|
||||
formData.value.liveEndTime = timeStr[1];
|
||||
}
|
||||
|
||||
const disabledDate = (current) => {
|
||||
return current && current < dayjs().startOf('day');
|
||||
return current && current < dayjs().startOf("day");
|
||||
};
|
||||
|
||||
const disabledRangeTime = () => ({
|
||||
@@ -448,38 +455,47 @@ const disabledRangeTime = () => ({
|
||||
});
|
||||
|
||||
async function confirm() {
|
||||
debugger
|
||||
console.log("确定按钮:")
|
||||
await validate().catch(({errorFields}) => {
|
||||
debugger;
|
||||
console.log("确定按钮:");
|
||||
await validate().catch(({ errorFields }) => {
|
||||
message.warning(errorFields[0].errors.join());
|
||||
throw Error("数据校验不通过")
|
||||
throw Error("数据校验不通过");
|
||||
});
|
||||
if (taskIndex.value === -1) {
|
||||
<<<<<<< HEAD
|
||||
let list = props.taskList
|
||||
list.push(
|
||||
{name: formData.value.liveName,
|
||||
type: props.type,
|
||||
info: {...formData.value}
|
||||
})
|
||||
=======
|
||||
const list = props.taskList;
|
||||
list.push({
|
||||
name: formData.value.liveName,
|
||||
type: props.type,
|
||||
info: { ...formData.value },
|
||||
});
|
||||
>>>>>>> 3e84518fc6431b5650dd225e2a6ff09936fbffe0
|
||||
} else {
|
||||
const data = props.taskList[taskIndex.value]
|
||||
data.name = formData.value.liveName
|
||||
data.info = formData.value
|
||||
const data = props.taskList[taskIndex.value];
|
||||
data.name = formData.value.liveName;
|
||||
data.info = formData.value;
|
||||
}
|
||||
emit('update:taskList', [...props.taskList])
|
||||
closeDrawer()
|
||||
emit("update:taskList", [...props.taskList]);
|
||||
closeDrawer();
|
||||
}
|
||||
|
||||
function openDrawer(i, row) {
|
||||
row && (formData.value = {...row.info});
|
||||
row && (formData.value = { ...row.info });
|
||||
row && (dateTime.value = [row.info.liveStartTime, row.info.liveEndTime]);
|
||||
(i >= 0) && (taskIndex.value = i)
|
||||
visible.value = true
|
||||
i >= 0 && (taskIndex.value = i);
|
||||
visible.value = true;
|
||||
}
|
||||
|
||||
defineExpose({openDrawer})
|
||||
defineExpose({ openDrawer });
|
||||
|
||||
const imageUrl = ref('')
|
||||
const imageUrl = ref("");
|
||||
const beforeUpload = (file) => {
|
||||
const isJpgOrPng =
|
||||
file.type === "image/jpg" ||
|
||||
@@ -503,11 +519,9 @@ const beforeUpload = (file) => {
|
||||
formDatas.append("file", file);
|
||||
fileUp(formDatas).then((res) => {
|
||||
if (res.data.code === 200) {
|
||||
console.log(res.data.data,45);
|
||||
imageUrl.value = process.env.VUE_APP_FILE_PATH +res.data.data
|
||||
formData.value.liveCover =process.env.VUE_APP_FILE_PATH + res.data.data
|
||||
|
||||
|
||||
console.log(res.data.data, 45);
|
||||
imageUrl.value = 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;
|
||||
// emit("src", { id: '', src: res.data.data });
|
||||
|
||||
Reference in New Issue
Block a user