This commit is contained in:
dongruihua
2022-12-25 10:05:51 +08:00
19 changed files with 564 additions and 882 deletions

View File

@@ -44,7 +44,7 @@ export default defineComponent({
const store = useStore();
const isLogin = ref(false);
// console.log("router", router.getRoutes(), route);
console.log("版本1.03------------");
console.log("版本1.04------------");
const routes = computed(() => {
return router.getRoutes().filter((e) => e.meta?.isLink);
});

View File

@@ -3,16 +3,10 @@
<div>
<Upload v-model:value="files" ref="uploadRef" :file-type="fileType">
<div class="accessory" style="cursor: pointer">
<span class="accessory_icon">
<img
src="@/assets/images/coursewareManage/enclosure.png"
alt="enclosure"
/>
</span>
<span style="color: #4ea6ff;margin-left:10px">添加附件</span>
<button class="xkbtn" type="button">上传附件</button>
</div>
</Upload>
<div>支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip</div>
<div class ="tips" style="color: rgb(153, 155, 163);">支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip</div>
</div>
<div class="mbl_items12" style="margin-left: 0">
<div
@@ -86,6 +80,7 @@ onMounted(() => {
watch(files, () => {
files.value && files.value.length && emit('update:value', files.value.filter(e => e.url).map(e => e.url).join(','))
console.log(files.value.filter(e => e.url).map(e => e.url).join(','));
})
watch(props, init)
@@ -203,4 +198,16 @@ function del(i) {
}
}
}
.accessory{
.xkbtn {
cursor: pointer;
width: 130px;
height: 40px;
background: #4ea6ff;
border-radius: 8px;
border: 0;
margin-right: 8px;
color: #fff;
}
}
</style>

View File

@@ -51,7 +51,8 @@
</div>
<div class="btnbox">
<a-range-picker
:show-time="{ format: 'HH:mm' }"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
:show-time="{ format: 'HH:mm' }"
format="YYYY-MM-DD HH:mm"
style="width: 400px; height: 40px; border-radius: 8px;"
v-model:value="time"
@@ -524,6 +525,29 @@ export default {
}
};
const range = (start, end) => {
const result = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
};
const disabledDate = (current) => {
// Can not select days before today and today
console.log('1111', dayjs().endOf('day'))
return current && current < dayjs().startOf('day');
};
const disabledDateTime = () => {
return {
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
};
};
return {
...toRefs(state),
afterVisibleChange,
@@ -531,6 +555,10 @@ export default {
closeDrawer1,
cloradio1,
updateActivityInfo,
disabledDateTime,
disabledDate
};
},
};

View File

@@ -51,6 +51,7 @@
<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="time" format="YYYY-MM-DD HH:mm"
:placeholder="[' 开始时间', ' 结束时间']" />
</div>
@@ -357,7 +358,28 @@ export default {
prohibitClick.value = false;
});
};
const range = (start, end) => {
const result = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
};
const disabledDate = (current) => {
// Can not select days before today and today
console.log('1111', dayjs().endOf('day'))
return current && current < dayjs().startOf('day');
};
const disabledDateTime = () => {
return {
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
};
};
return {
...toRefs(state),
afterVisibleChange,
@@ -370,7 +392,9 @@ export default {
queryInvistById,
editInvistText,
showEvalDrawer,
updateTask
updateTask,
disabledDate,
disabledDateTime
};
},
};

View File

@@ -103,6 +103,7 @@
<div class="select" >
<a-range-picker style="width: 400px;"
:show-time="{ format: 'HH:mm' }"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
format="YYYY/MM/DD HH:mm"
v-model:value="chooseTime"
:placeholder="[' 开始时间', ' 结束时间']"
@@ -127,7 +128,7 @@
style="width: 400px; height: 40px; border-radius: 8px;"
v-model:value="duration"
></a-input-number>
<span style="margin-left: 5px; width: 30px"></span>
<span style="margin-left: 5px; width: 30px"></span>
</div>
</div>
<div class="main_item">
@@ -244,6 +245,10 @@
@click="innerPersion = !innerPersion"
>允许项目内人员临时到场参加
</a-checkbox>
</div>
<div class="btnbox">
<a-checkbox
v-model:checked="outPersion"
@click="outPersion = !outPersion"
@@ -347,20 +352,14 @@
</a-tag>
</div>
</div>
<div class="main_item">
<div class="signbox">
<span style="margin-right: 3px">附件</span>
</div>
<div class="btnbox">
<a-upload
@change="handleChange"
:action="FILE_UPLOAD_URL"
v-model:file-list="fileList"
>
<button class="xkbtn">上传附件</button>
</a-upload>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 10px"></span>
</div>
<div class="item_inp">
<FJUpload v-model:value="attach" @changevalue="changevalue"/>
</div>
</div>
</div>
</div>
<div class="main_btns">
@@ -387,7 +386,7 @@ import AssessmentList from "@/components/drawers/AssessmentList.vue";
// import { toDate } from "../../api/method";、
import { addTempTask } from "../../api/indexTaskadd";
import ProjectManager from "@/components/project/ProjectManagerNew";
import FJUpload from "@/components/common/FJUpload";
import { detail } from "../../api/indexCourse";
import { queryAppraiseDetailById } from "../../api/indexInvist";
import { queryWorkDetailById } from "@/api/indexWork";
@@ -401,6 +400,7 @@ export default {
AddTest,
AssessmentList,
ProjectManager,
FJUpload,
},
props: {
addfaceteachVisible: {
@@ -496,7 +496,9 @@ export default {
innerPersion: false,
outPersion: false,
assessmentName: null,
isClick: false
isClick: false,
attach:"",
});
const clear = () => {
state.courseName = "";
@@ -519,6 +521,7 @@ export default {
state.EditEvalId = null;
state.applyFlag = "";
state.needEval = false;
state.attach="";
};
const closeDrawer = () => {
ctx.emit("update:addfaceteachVisible", false);
@@ -563,7 +566,22 @@ export default {
const showDrawerAddTest = () => {
state.addtestvisible = true;
};
// 删除文件返回参数
const changevalue = (e) => {
let arr = state.attach.split(',')
let newarr = []
for(let i=0;i<arr.length;i++){
if(i!==e){
newarr.push(arr[i])
}
}
if(newarr.length==0){
state.attach = "";
}else{
state.attach = newarr.toString()
}
console.log('changevalue', e, newarr, state.attach)
}
//查询面授
const queryFaceTeach = () => {
queryFaceDetailById(props.EditFaceId).then((res) => {
@@ -584,7 +602,14 @@ export default {
state.address = result.address;
state.before = result.beforeStart;
state.afterStartValue = result.afterStart;
state.fileList = JSON.parse(result.attach);
let arrss =result.attach.split(',')
let str = ''
for (let i = 0; i < arrss.length; i++) {
i == arrss.length - 1 ? str += arrss[i].slice(arrss[i].lastIndexOf('/') + 1) : str += arrss[i].slice(arrss[i].lastIndexOf('/') + 1) + ','
}
console.log(str)
state.attach = str;
state.onlySign =
result.completeType.split(",")[0] == "1" ? true : false;
state.completeLeave =
@@ -660,7 +685,7 @@ export default {
teacher: state.memberValue.label,
address: state.address,
applyFlag: state.applyFlag,
attach: JSON.stringify(state.fileList),
afterStart: state.afterStartValue || 0,
beforeStart: state.before || 0,
beginTime: parseInt(
@@ -678,6 +703,7 @@ export default {
offcoursePlanId: props.EditFaceId > 0 ? props.EditFaceId : 0,
testId: state.EditTestId,
duration: state.duration,
attach:state.attach,
};
console.log("obj============", obj, "6" + "9");
@@ -769,11 +795,7 @@ export default {
}
};
const handleChange = ({ file, fileList }) => {
if (file.status !== "uploading") {
console.log(file, fileList);
}
};
const showAssessment = () => {
state.assessmentVisible = true;
};
@@ -840,6 +862,29 @@ export default {
const handleFocus = () => {
queryMember();
};
const range = (start, end) => {
const result = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
};
const disabledDate = (current) => {
// Can not select days before today and today
console.log('1111', dayjs().endOf('day'))
return current && current < dayjs().startOf('day');
};
const disabledDateTime = () => {
return {
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
};
};
return {
...toRefs(state),
FILE_UPLOAD_URL,
@@ -851,9 +896,11 @@ export default {
updateFaceTeach,
exitAdd,
updateTask,
disabledDateTime,
clear,
handleChange,
changevalue,
showAssessment,
disabledDate,
// change,
options,
@@ -924,7 +971,7 @@ export default {
display: flex;
flex: 1;
align-items: center;
.xkbtn {
cursor: pointer;
width: 130px;
@@ -937,7 +984,7 @@ export default {
}
}
}
.main_item2 {
display: flex;
align-items: flex-start;
@@ -1030,7 +1077,7 @@ export default {
}
.main_right {
width: 337px;
width: 400px;
.main_item {
display: flex;
@@ -1049,7 +1096,8 @@ export default {
display: flex;
flex: 1;
align-items: center;
overflow: hidden;
text-overflow: ellipsis;
.xkbtn {
cursor: pointer;
width: 130px;
@@ -1062,6 +1110,49 @@ export default {
}
}
}
.mbl_items {
display: flex;
align-items: center;
justify-content: flex-end;
margin-bottom: 10px;
.item_nam {
width: 100px;
display: flex;
align-items: center;
justify-content: flex-end;
white-space: nowrap;
.asterisk_icon {
width: 10px;
height: 10px;
margin-right: 5px;
margin-top: -15px;
}
}
.item_inp {
flex: 1;
position: relative;
.inp_num {
position: absolute;
left: 398px;
top: 10px;
}
.accessory{
margin-left: 92px;
}
}
}
.tips{
font-size: 12px;
margin-top: 10px;
}
.mbl_items12{
width: 373px;
margin-left: 10px;
}
}
}

View File

@@ -7,63 +7,79 @@
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer2" />
</div>
<a-form ref="formRef" name="custom-validation" :model="formState" :rules="rules" v-bind="layout"
@finish="handleFinish" @validate="handleValidate" @finishFailed="handleFinishFailed">
<div class="contentMain">
<div class="main_left">
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 3px">作业名称</span>
</div>
<div class="btnbox">
<a-form-item has-feedback label="作业名称" name="workName">
<a-input v-model:value="formState.workName" style="width: 400px; height: 40px; border-radius: 8px"
<a-input v-model:value="name" style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入作业名称" autocomplete="off" show-count :maxlength="20" />
</a-form-item>
</div>
</div>
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 3px">开始时间</span>
</div>
<div class="btnbox">
<a-form-item has-feedback label="提交时间" name="choosedTime">
<a-range-picker :disabled-date="disabledDate" :disabled-time="disabledRangeTime" show-time
style="width: 400px; height: 40px; border-radius: 8px" v-model:value="formState.choosedTime"
format="YYYY/MM/DD HH:mm" :placeholder="[' 开始时间', ' 结束时间']" />
</a-form-item>
<a-range-picker
style="width: 400px; height: 40px; border-radius: 8px"
:show-time="{ format: 'hh:mm' }"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
format="YYYY/MM/DD HH:mm"
v-model:value="chooseTime"
:placeholder="[' 开始时间', ' 结束时间']"
/>
</div>
</div>
<div class="main_item2">
<a-form-item has-feedback label="作业要求" name="workRequirement">
<div class="textarea">
<a-textarea v-model:value="formState.workRequirement" placeholder="请输入作业要求" autocomplete="off"
allow-clear :rows="6" show-count :maxlength="200" />
</div>
</a-form-item>
</div>
<div class="main_item">
<div class="signbox">
<div class="sign">
<img src="@/assets/images/coursewareManage/enclosure.png" alt="" />
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 3px">附件</span>
<span style="margin-right: 3px">作业要求</span>
</div>
<div class="textarea">
<a-textarea v-model:value="workRequirement" placeholder="请输入作业要求" autocomplete="off"
allow-clear :rows="6" show-count :maxlength="200" />
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 10px"></span>
</div>
<div class="btnbox">
<a-upload v-model:file-list="fileList" name="file" :action="FILE_UPLOAD_URL"
@change="handleChange">
<button class="xkbtn" type="button">上传附件</button>
</a-upload>
</div>
</div>
<div class="main_item" style="margin-top: -25px">
<div class="signbox"></div>
<div class="btnbox">
<span style="color: #999999">支持pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip</span>
<div class="item_inp">
<FJUpload v-model:value="attach" @changevalue="changevalue"/>
</div>
</div>
</div>
</div>
<div class="main_btns">
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" html-type="submit" @click="cle">确定</a-button>
<a-button class="btn2" html-type="submit" @click="updteHomeWork">确定</a-button>
</div>
</a-form>
</div>
<!-- 加载动画 -->
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
@@ -83,9 +99,12 @@ import { ProjectEditTask, RouterEditTask } from "@/api/indexTask";
import dayjs from "dayjs";
import { addTempTask } from "../../api/indexTaskadd";
import {FILE_UPLOAD_URL} from "@/api/config";
import FJUpload from "@/components/common/FJUpload";
export default {
name: "AddHomework",
components:{
FJUpload,
},
props: {
addhomeworkVisible: {
type: Boolean,
@@ -145,70 +164,19 @@ export default {
},
},
setup(props, ctx) {
const formState = reactive({
workName: "",
workRequirement: "",
choosedTime: "",
});
const state = reactive({
name: "",
workRequirement: "",
chooseTime: [],
addLoading: false,
workEnclosureAddress: "",
isClick: false
isClick: false,
attach:"",
});
const formRef = ref();
let checkWorkName = async (_rule, value) => {
if (!value) {
return Promise.reject("请输入作业名称");
}
};
let checkWorkRequirement = async (_rule, value) => {
if (!value) {
return Promise.reject("请输入作业要求");
}
};
let checkTime = async (_rule, value) => {
if (!value.length) {
return Promise.reject("请选择时间");
}
};
const rules = {
workName: [
{
required: true,
validator: checkWorkName,
trigger: "change",
},
],
workRequirement: [
{
required: true,
validator: checkWorkRequirement,
trigger: "change",
},
],
choosedTime: [
{
required: true,
validator: checkTime,
trigger: "change",
},
],
};
// const layout = {
// labelCol: {
// span: 4,
// },
// wrapperCol: {
// span: 14,
// },
// };
const handleFinish = () => {
updteHomeWork();
};
const handleFinishFailed = () => {
message.error("handleFinishFailed");
@@ -216,83 +184,56 @@ export default {
const resetForm = () => {
// formRef.value.resetFields();
formState.workName = "";
formState.workRequirement = "";
formState.choosedTime = [];
state.name = "";
state.workRequirement = "";
state.chooseTime = [];
state.attach="";
};
const handleValidate = (...args) => {
console.log(args);
};
const beforeUpload = (file) => {
console.log("file", file);
const isJpgOrPng =
file.name.indexOf(".pdf") === -1 &&
file.name.indexOf(".ppt") === -1 &&
file.name.indexOf(".pptx") === -1 &&
file.name.indexOf(".doc") === -1 &&
file.name.indexOf(".docx") === -1 &&
file.name.indexOf(".xls") === -1 &&
file.name.indexOf(".xlsx") === -1 &&
file.name.indexOf(".jpg") === -1 &&
file.name.indexOf(".jpeg") === -1 &&
file.name.indexOf(".png") === -1 &&
file.name.indexOf(".gif") === -1 &&
file.name.indexOf(".zip") === -1;
// console.log("isJpgOrPng", isJpgOrPng);
return isJpgOrPng;
};
const handleChange = (info) => {
const isfileformat = beforeUpload(info.file);
if (isfileformat) {
fileList.value = [];
message.destroy();
return message.error("请上传正确格式附件");
}
if (info.file.status !== "uploading") {
console.log(info.file, info.fileList);
// state.workEnclosureAddress = info.fileList[0].response.data;
state.workEnclosureAddress = JSON.stringify(info.fileList);
console.log("state.workEnclosureAddress", state.workEnclosureAddress);
}
if (info.file.status === "done") {
message.success(`${info.file.name} 文件上传成功`);
console.log("info.file", info.file.response.data);
if (info.file.response && info.file.response.data) {
// console.log("fileList", fileList);
// fileList.value = [info];
// 删除文件返回参数
const changevalue = (e) => {
let arr = state.attach.split(',')
let newarr = []
for(let i=0;i<arr.length;i++){
if(i!==e){
newarr.push(arr[i])
}
} else if (info.file.status === "error") {
message.error(`${info.file.name} 文件上传失败.`);
}
};
if(newarr.length==0){
state.attach = "";
}else{
state.attach = newarr.toString()
}
console.log('changevalue', e, newarr, state.attach)
}
const fileList = ref([]);
const closeDrawer = () => {
formState.choosedTime = "";
ctx.emit("update:addhomeworkVisible", false);
ctx.emit("update:edit", false);
ctx.emit("update:EditWorkId", state.EditWorkId);
ctx.emit("update:workName", formState.workName);
console.log("state.EditWorkId==============", state.workName);
ctx.emit("update:workName", state.name);
console.log("state.EditWorkId==============", state.name);
localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive);
fileList.value = [];
state.workEnclosureAddress = "";
resetForm();
};
const closeDrawer2 = () => {
formState.choosedTime = "";
ctx.emit("update:addhomeworkVisible", false);
ctx.emit("update:edit", false);
ctx.emit("update:EditWorkId", state.EditWorkId);
ctx.emit("update:workName", formState.workName);
console.log("state.EditWorkId==============", state.workName);
ctx.emit("update:workName", state.name);
console.log("state.EditWorkId==============", state.name);
localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive);
fileList.value = [];
state.workEnclosureAddress = "";
resetForm();
};
@@ -303,26 +244,29 @@ export default {
state.EditWorkId = props.EditWorkId;
queryWork();
} else {
formRef.value.resetFields();
resetForm();
}
};
// 新增任务
const updteHomeWork = () => {
if(!state.name||!state.workRequirement||!state.chooseTime){
return message.warning("请输入必填项");
}
let obj = {
submitEndTime: dayjs(formState.choosedTime[1]).format(
submitEndTime: dayjs(state.chooseTime[1]).format(
"YYYY-MM-DD HH:mm"
),
submitStartTime: dayjs(formState.choosedTime[0]).format(
submitStartTime: dayjs(state.chooseTime[0]).format(
"YYYY-MM-DD HH:mm"
),
workEnclosureAddress: state.workEnclosureAddress
? state.workEnclosureAddress
workEnclosureAddress: state.attach
? state.attach
: "",
workId: props.edit ? props.EditWorkId : 0,
workName: formState.workName,
workRequirement: formState.workRequirement,
workName: state.name,
workRequirement: state.workRequirement,
};
if (props.EditWorkId > 0) {
@@ -375,18 +319,20 @@ export default {
queryWorkDetailById({ workId: props.EditWorkId })
.then((res) => {
console.log(res);
try {
fileList.value = JSON.parse(res.data.data.workEnclosureAddress);
} catch (e) {
console.log(e);
fileList.value = [];
}
formState.workName = res.data.data.workName;
formState.workRequirement = res.data.data.workRequirement;
formState.choosedTime = [
state.name = res.data.data.workName;
state.workRequirement = res.data.data.workRequirement;
state.chooseTime = [
dayjs(res.data.data.submitStartTime, "YYYY-MM-DD HH:mm"),
dayjs(res.data.data.submitEndTime, "YYYY-MM-DD HH:mm"),
];
let arrss = res.data.data.workEnclosureAddress.split(',')
let str = ''
for (let i = 0; i < arrss.length; i++) {
i == arrss.length - 1 ? str += arrss[i].slice(arrss[i].lastIndexOf('/') + 1) : str += arrss[i].slice(arrss[i].lastIndexOf('/') + 1) + ','
}
console.log(str)
state.attach = str;
state.addLoading = false;
})
.catch(() => {
@@ -470,14 +416,14 @@ export default {
const cle = () => {
let obj = {
submitEndTime: dayjs(formState.choosedTime[1]).format("YYYY-MM-DD"),
submitStartTime: dayjs(formState.choosedTime[0]).format("YYYY-MM-DD"),
submitEndTime: dayjs(state.chooseTime[1]).format("YYYY-MM-DD"),
submitStartTime: dayjs(state.chooseTime[0]).format("YYYY-MM-DD"),
workEnclosureAddress: state.workEnclosureAddress
? state.workEnclosureAddress
: "",
workId: props.EditWorkId > 0 ? props.EditWorkId : 0,
workName: formState.workName,
workRequirement: formState.workRequirement,
workName: state.name,
workRequirement: state.workRequirement,
};
if (props.face) {
createWorkTask(obj).then((res) => {
@@ -517,16 +463,15 @@ export default {
FILE_UPLOAD_URL,
closeDrawer,
closeDrawer2,
handleChange,
changevalue,
fileList,
formState,
handleFinish,
updteHomeWork,
handleFinishFailed,
resetForm,
handleValidate,
formRef,
// layout,
rules,
cle,
...toRefs(state),
};
@@ -601,14 +546,45 @@ export default {
}
}
}
.mbl_items {
display: flex;
align-items: center;
justify-content: flex-end;
margin-bottom: 10px;
.item_nam {
width: 100px;
display: flex;
align-items: center;
justify-content: flex-end;
white-space: nowrap;
.asterisk_icon {
width: 10px;
height: 10px;
margin-right: 5px;
margin-top: -15px;
}
}
.item_inp {
flex: 1;
position: relative;
margin-left: 19px;
.inp_num {
position: absolute;
left: 398px;
top: 10px;
}
}
}
.main_item2 {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.textarea {
width: 400px;
width: 373px;
.ant-input {
width: 100%;
@@ -677,6 +653,7 @@ export default {
color: #fff;
margin-top: 16px;
margin-bottom: 60px;
margin-left: 124px;
}
}
}

View File

@@ -71,6 +71,7 @@
<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="time"
format="YYYY/MM/DD HH:mm"
@@ -886,7 +887,28 @@ export default {
state.assessmentId = "";
state.isEvaluate = "0";
};
const range = (start, end) => {
const result = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
};
const disabledDate = (current) => {
// Can not select days before today and today
console.log('1111', dayjs().endOf('day'))
return current && current < dayjs().startOf('day');
};
const disabledDateTime = () => {
return {
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
};
};
return {
...toRefs(state),
afterVisibleChange,
@@ -904,6 +926,8 @@ export default {
handleSearch,
showAssessment,
removePG,
disabledDateTime,
disabledDate
};
},
};

View File

@@ -323,6 +323,14 @@ export default {
align: "center",
ellipsis: true,
},
{
title: "时长",
dataIndex:"studyTime",
key: "studyTime",
width: "15%x",
align: "center",
ellipsis: true,
},
// {
// title: "创建时间",
// dataIndex: "createTime",

View File

@@ -102,7 +102,8 @@
<div class="btnbox">
<a-range-picker
style="width: 400px; height: 40px; border-radius: 8px"
show-time
:show-time="{format:'hh:mm'}"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
format="YYYY/MM/DD HH:mm"
v-model:value="test.chooseTime"
:placeholder="[' 开始时间', ' 结束时间']"
@@ -433,12 +434,18 @@ export default {
clearAll();
state.addLoading = false;
};
const afterVisibleChange = () => {
const afterVisibleChange = (bool) => {
console.log("props", props);
if (props.addtestVisible && props.edit) {
// 该页面显示同时 edit为true 时,发送查询请求,
queryTest();
}
if(bool){
state.test.showAnswers = 1;
state.test.showAnalysis = 1;
state.test.scoringModel = 2;
state.test.questionArrangement = 4;
}
};
const selectTest = () => {
state.STvisible = true;
@@ -661,7 +668,30 @@ export default {
state.id = value.id;
state.testName = value.testName;
};
const range = (start, end) => {
const result = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
};
const disabledDate = (current) => {
// Can not select days before today and today
console.log('1111', dayjs().endOf('day'))
return current && current < dayjs().startOf('day');
};
const disabledDateTime = () => {
return {
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
};
};
return {
afterVisibleChange,
closeDrawer,
@@ -671,7 +701,7 @@ export default {
cloradio2,
cloradio3,
cloradio4,
disabledDateTime,
clearAll,
delTag,
@@ -683,7 +713,7 @@ export default {
chooseTest,
closeTag,
getData,
disabledDate,
...toRefs(state),
};
},

View File

@@ -307,6 +307,7 @@
<slot></slot>
</div>
</div>
<!--
<a-modal
v-model:visible="stageVisible"
width="1000px"
@@ -314,7 +315,7 @@
@ok="handleStageOk"
>
<div>
{{ type === 1 ? "选择阶段" : "选择关卡" }}
{{ type === 1 ? "选择阶段" : "" }}
<a-select
style="width: 150px"
:placeholder="type === 1 ? '选择阶段' : '选择关卡'"
@@ -327,6 +328,63 @@
</a-select>
</div>
</a-modal>
-->
<a-modal
style="padding: 0"
:closable="true"
:visible="stageVisible"
:footer="null"
centered="true"
@ok="handleStageOk"
wrapClassName="changeModal"
>
<div class="con">
<div class="header">
<div class="inhe">
<div class="tz"> {{ type === 1 ? "选择阶段" : "添加学员到关卡" }}</div>
<div class="mg" @click="closeChangeModal"></div>
</div>
</div>
<div class="mid">
<div class="inher">
<!-- <div class="cur">当前关卡关卡2</div> -->
<div class="select">
<a-select
style="width: 400px"
:placeholder="type === 1 ? '选择阶段' : '选择关卡'"
v-model:value="selectsData.stageId"
className="cus-select"
>
<a-select-option v-for="(item, i) in stageIds" :key="i" :value="item.id"
>{{ item.name || "默认" }}
</a-select-option>
</a-select>
</div>
<span style="color: #999999;margin-left:10px;"><minus-circle-outlined/>已在其他关卡的学员不会被添加到该关卡</span>
<div class="btn" style="margin-top:50px;">
<button
class="sameb btn1"
@click="closeChangeModal"
style="cursor: pointer"
>
取消
</button>
<button
class="sameb btn2"
@click="handleStageOk"
style="cursor: pointer"
>
确定
</button>
</div>
</div>
</div>
</div>
</a-modal>
</template>
<script setup>
import { computed, defineEmits, defineProps, ref, watch } from "vue";
@@ -334,6 +392,7 @@ import { useStore } from "vuex";
import { useBoeApiPage } from "@/api/request";
import { AUDIENCE_LIST, USER_LIST } from "@/api/ThirdApi";
import { saveStu } from "@/api/index1";
const store = useStore();
const emit = defineEmits({});
const props = defineProps({
@@ -344,6 +403,7 @@ const props = defineProps({
default: () => [],
},
});
const person = ref(false);
// const dept =ref(false)
const group = ref(false);
@@ -508,6 +568,12 @@ const auditRowSelection = computed(() => ({
const closeDrawer = () => {
visiable.value = false;
stuData.value = [];
nameSearch.value.keyword ="";
};
const closeChangeModal = () => {
stageVisible.value = false;
};
const openDrawer = () => {
visiable.value = true;
@@ -628,12 +694,15 @@ watch(visiable, () => {
audienceName.value.keyword = "";
audienceName.value.page = 1;
audienceName.value.pageSize = 10;
activeKey.value=1;
selectsData.value = {
stageId: "",
studentList: [],
deptList: [],
groupList: [],
};
searchAudi();
});
</script>

View File

@@ -105,6 +105,7 @@
<div class="select" >
<a-range-picker
:show-time="{ format: 'HH:mm' }"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
format="YYYY-MM-DD HH:mm"
style="width: 424px"
v-model:value="time"

View File

@@ -308,487 +308,7 @@
v-model:xzinputV1="xzinputV1"
@visibleClose="closeOnlineCoursevisible"
/>
<!-- 查看面授课弹框 start -->
<a-modal
v-model:visible="lookMs"
title="Title"
@ok="handlelookMs"
:footer="null"
:closable="false"
wrapClassName="modalStyle facteachModal"
width="80%"
@cancel="handlelookMs"
>
<div class="modalHeader">
<div class="headerLeft">
<img
style="width: 17px; height: 18px; margin-right: 8px"
src="../../assets/images/basicinfo/add.png"
/>
<span class="headerLeftText">查看面授课</span>
</div>
<div style="margin-right: 57px; cursor: pointer">
<img
@click="handlelookMs"
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close22.png"
/>
</div>
</div>
<div class="modalMain">
<div class="faceteach">
<div class="ft_main">
<div class="m_title">课程信息</div>
<div class="m_body">
<div class="mb_left">
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">课程名称</span>
</div>
<div class="item_inp">
<div class="in i1_input">
<!-- <a-input-->
<!-- aria-readonly="true"-->
<!-- v-model:value="qdms_inputV1"-->
<!-- maxlength="90"-->
<!-- style="width: 440px; height: 40px; border-radius: 8px"-->
<!-- placeholder="请输入课程名称"-->
<!-- />-->
<NameInput
placeholder="请输入课程名称"
v-model:value="qdms_inputV1"
v-model:validate="validate"
:maxlength="20"
show-count
:type="2"
></NameInput>
<div class="inp_num">
<span style="color: #c7cbd2">
{{ qdms_inputV1.length }}/90
</span>
</div>
</div>
</div>
</div>
<div class="i2_cz">
<div class="i2_top">
<div class="i2_left">
<span style="color: #999ba3">课程命名规则</span>
</div>
<div
class="i2_right"
@click="hideShow"
style="cursor: pointer"
>
<div
class="b_zk"
:style="{ display: hideshow ? 'block' : 'none' }"
>
<span style="color: #4ea6ff">收起</span>
</div>
<div
class="b_sq"
:style="{ display: hideshow ? 'none' : 'block' }"
>
<span style="color: #4ea6ff">展开</span>
</div>
<div class="b_icon"></div>
</div>
</div>
<div
class="i2_detail"
:style="{ display: hideshow ? 'block' : 'none' }"
>
<span style="color: #999ba3">
1课程名称统一不加书名号<br />
2项目名称属地等信息如需体现在课程名称中请放在课程名称信息
之后时间管理GROW180项目时间管理B*确保首先
看到的是课程内容主题<br />
3同一课程如先后有多个版本原则上仅开放最新版本旧版本应停用
版本如必须以年份标明请以沟通技巧2022的方式呈现
</span>
</div>
</div>
<div class="mbl_items2">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">封面图</span>
</div>
<div class="item_inp">
<a-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="feng_mian_2"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="optionsUrl"
allowClear
showSearch
></a-select>
<img
class="i_upload_img"
v-if="feng_mian_2"
:src="feng_mian_2"
alt="avatar"
/>
<!-- <a-upload
name="avatar"
list-type="picture-card"
class="avatar-uploader"
:show-upload-list="false"
:before-upload="beforeUpload"
disabled
>
<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">
<span style="color: #999ba3">
高宽比为16:9 (:800*450) png或jpg图片
</span>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
style="width: 10px; height: 10px"
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">目标人群</span>
</div>
<div class="item_inp">
<div class="i1_input">
<a-input
v-model:value="qdms_inputV2"
maxlength="50"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入目标人群"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
{{ qdms_inputV2.length }}/50
</span>
</div>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">课程价值</span>
</div>
<div class="item_inp">
<div class="i1_input">
<a-input
v-model:value="qdms_inputV3"
maxlength="200"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入课程价值"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
{{ qdms_inputV3.length }}/200
</span>
</div>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">内容分类</span>
</div>
<div class="item_inp">
<div class="select i6_input">
<!-- <a-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="fen_lei"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="options2"
allowClear
showSearch
></a-select> -->
<a-tree-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="fen_lei"
show-search
style="width: 440px"
:dropdown-style="{
maxHeight: '400px',
overflow: 'auto',
}"
placeholder="请选择内容分类"
allow-clear
tree-default-expand-all
:tree-data="options2222"
>
<template #title="{ value: val, title }">
<b v-if="val === '11111'" style="color: #08c">sss</b>
<template v-else>{{ title }}</template>
</template>
</a-tree-select>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">场景</span>
</div>
<div class="item_inp">
<div class="select i7_input">
<a-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="chang_jin"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="options3"
allowClear
showSearch
></a-select>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">内容标签</span>
</div>
<div class="item_inp">
<a-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="tags_val"
mode="tags"
style="width: 440px; height: 40px"
placeholder="请输入按回车键创建成功"
:options="tagsOptions"
></a-select>
</div>
</div>
</div>
<div class="mb_right">
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div>
<span style="margin-right: 14px">授课教师</span>
</div>
<div class="item_inp">
<div class="select" style="width: 436px">
<ProjectManager
v-model:value="member.value"
v-model:name="member.name"
></ProjectManager>
</div>
</div>
</div>
<div class="mbl_items2">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div>
<span style="margin-right: 14px">课程简介</span>
</div>
<div class="item_inp">
<div class="i10_textarea">
<a-textarea
v-model:value="qdms_inputV6"
maxlength="150"
style="width: 440px; height: 100px; border-radius: 8px"
placeholder="请输入"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
{{ qdms_inputV6.length }}/150
</span>
</div>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 10px">附件</span>
</div>
<div class="item_inp">
<a-upload
multiple
:show-upload-list="false"
:before-upload="beforeUpload2"
>
<div class="accessory" style="cursor: pointer">
<div class="accessory_icon">
<img
src="@/assets/images/coursewareManage/enclosure.png"
alt="enclosure"
/>
</div>
<span style="color: #4ea6ff">添加附件</span>
</div>
</a-upload>
<span>
支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip
</span>
</div>
</div>
<div class="mbl_items12">{{imgList}}
<div
class="i12_box1"
v-for="(item, index) in imgList"
:key="index"
>
<div class="file_img"></div>
<div class="file_detail">
<!-- <div class="file_name">
<span style="color: #6f6f6f">{{ item.name }}</span>
</div> -->
<div class="file_name">
<span
style="
color: #6f6f6f;
width: 140px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
"
>{{ item.slice(item.lastIndexOf("/") + 1) }}</span
>
</div>
<!-- 条件渲染 s -->
<!-- <div class="file_size">
<span style="color: #999ba3">{{ item.size }}</span>
</div> -->
<div class="file_updata">
<div class="updatabox">
<div class="updatacolor"></div>
<div class="updataxq">上传完成</div>
<!-- <div class="updatacolor2"></div>
<div class="updataxq2">上传失败</div> -->
<!-- <div class="updatacolor3"></div>
<div class="updataxq3">正在上传</div> -->
</div>
<div class="upjd">
<span style="margin: auto 5px">100%</span>
</div>
</div>
<!-- 条件渲染 e -->
</div>
<div class="file_operation">
<div class="fobox">
<span style="color: #4ea6ff" @click="handleDel(index)">
删除
</span>
</div>
<!-- <div class="fobox">
<span style="color: #4ea6ff">重传</span>
</div>
<div class="fobox">
<span style="color: #4ea6ff">取消</span>
</div> -->
<!-- <div class="fobox">
<span style="color: #4ea6ff; margin-right: 5px">
暂停
</span>
</div>
<div class="fobox">
<span style="color: #4ea6ff">取消</span>
</div> -->
</div>
</div>
</div>
</div>
</div>
<div class="m_footer">
<div class="fotnam">
<span>课程大纲</span>
</div>
<div class="fotarea">
<div style="border: 1px solid #ccc">
<Toolbar
style="border-bottom: 1px solid #ccc"
:editor="editorRef"
:defaultConfig="toolbarConfig"
:mode="mode"
/>
<Editor
style="height: 250px; overflow-y: hidden"
v-model="valueHtml"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
/>
</div>
</div>
</div>
<div class="m_btn">
<!-- <div class="btn btn5" @click="handlelookMs">
<div class="btnText">取消</div>
</div>
<div class="btn btn6" v-if="isEdit == 0" @click="handlelookMs">
<div class="btnText">确定</div>
</div> -->
</div>
</div>
</div>
</div>
</a-modal>
<!-- 查看面授课弹框 end -->
<!-- 确定新建面授课弹窗 -->
<!-- 表格 -->
@@ -1954,6 +1474,7 @@
<a-range-picker
style="width: 440px; height: 40px; border-radius: 8px"
:show-time="{ format: 'HH:mm' }"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
format="YYYY-MM-DD HH:mm"
v-model:value="xjkkinputV3"
separator="至"
@@ -2106,114 +1627,15 @@
</div> -->
<div class="cstm_items items_fj">
<div class="signbox">
<span style="margin-right: 3px">附件</span>
<span style="margin-right: 3px"></span>
</div>
<div class="b_input">
<a-upload
name="file"
:show-upload-list="false"
:before-upload="beforeUpload3"
>
<div class="upload_box">
<div class="upload_icon">
<img
src="@/assets/images/coursewareManage/enclosure.png"
alt=""
/>
</div>
<span style="color: #4ea6ff">上传附件</span>
</div>
<!-- <template #itemRender="{ file }">
<a-space>
<span :style="file.status === 'error' ? 'color: red' : ''">
{{ file.name }}
</span>
</a-space>
</template> -->
</a-upload>
</div>
</div>
<div class="cstm_items">
<div class="signbox">
<span style="margin-right: 3px"> </span>
</div>
<div class="b_input">
<span style="color: #999ba3">
支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip
</span>
</div>
</div>
<div class="mbl_items12">
<div
class="i12_box1"
v-for="(item, index) in filesList"
:key="index"
>
<div class="file_img"></div>
<div class="file_detail">
<div class="file_name">
<span
style="
color: #6f6f6f;
width: 140px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
"
>
{{
item.indexOf("-") !== -1
? item.slice(
item.lastIndexOf("/") + 1,
item.lastIndexOf("-")
) + item.slice(item.lastIndexOf("."))
: item
}}
</span>
</div>
<!-- 条件渲染 s -->
<!-- <div class="file_size">
<span style="color: #999ba3">{{ item.size }}</span>
</div> -->
<div class="file_updata">
<div class="updatabox">
<div class="updatacolor"></div>
<div class="updataxq">上传完成</div>
<!-- <div class="updatacolor2"></div>
<div class="updataxq2">上传失败</div> -->
<!-- <div class="updatacolor3"></div>
<div class="updataxq3">正在上传</div> -->
</div>
<div class="upjd">
<span style="margin: auto 5px">100%</span>
</div>
</div>
<!-- 条件渲染 e -->
</div>
<div class="file_operation">
<div class="fobox">
<span style="color: #4ea6ff" @click="handleDel2(index)">
删除
</span>
</div>
<!-- <div class="fobox">
<span style="color: #4ea6ff">重传</span>
</div>
<div class="fobox">
<span style="color: #4ea6ff">取消</span>
</div> -->
<!-- <div class="fobox">
<span style="color: #4ea6ff; margin-right: 5px">
暂停
</span>
</div>
<div class="fobox">
<span style="color: #4ea6ff">取消</span>
</div> -->
</div>
<FJUpload v-model:value="attach" @changevalue="changevalue"/>
</div>
</div>
<div class="items_btn">
<div class="cstm_btn btn5" @click="handleCancelStu">
<div class="btnText">取消</div>
@@ -2810,6 +2232,7 @@ import {
toRefs,
defineComponent,
ref,
shallowRef,
onMounted,
onBeforeUnmount,
@@ -2817,7 +2240,6 @@ import {
} from "vue";
import * as api from "../../api/indexInvist.js";
import { message } from "ant-design-vue";
import { useRouter, useRoute } from "vue-router";
// import StuAdd from "../../components/drawers/StuAdd";
@@ -2839,6 +2261,7 @@ import {
exportP,
deletePlan,
planList,
editPlan,
studentList,
addStudent,
@@ -2860,7 +2283,7 @@ import dayjs from "dayjs";
import * as api1 from "../../api/index1";
import "@wangeditor/editor/dist/css/style.css";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
//import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import ProjectManager from "@/components/project/ProjectManagerNew";
import SeeModal from "./components/seeModal.vue";
@@ -2873,6 +2296,7 @@ import { queryExaminationDetailById } from "@/api/indexExam";
import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
import TableStudent from "@/components/student/TableStudent";
import FJUpload from "@/components/common/FJUpload";
//列表表格
const columns1 = [
// {
@@ -3378,10 +2802,10 @@ export default defineComponent({
components: {
// OwnPower,
// Corpowerlist,
Editor,
Toolbar,
SeeModal,
CourseModal,
FJUpload,
// StuAdd,
ProjectManager,
ProjOwnerShip,
@@ -3689,7 +3113,7 @@ export default defineComponent({
imageUrl: "",
imgList: [],
validate: true,
attach:"",
pageSize2: 10,
currentPage2: 0,
tableDataTotal2: 0,
@@ -4617,6 +4041,22 @@ export default defineComponent({
// label: "专业力",
// },
]);
// 删除文件返回参数
const changevalue = (e) => {
let arr = state.attach.split(',')
let newarr = []
for(let i=0;i<arr.length;i++){
if(i!==e){
newarr.push(arr[i])
}
}
if(newarr.length==0){
state.attach = "";
}else{
state.attach = newarr.toString()
}
console.log('changevalue', e, newarr, state.attach)
}
const options4CurId = ref("");
const options4CurName = ref("张");
const of_hShow = () => {
@@ -4745,69 +4185,7 @@ export default defineComponent({
state.lookMs = false;
};
//保存面授课
const handlePush = (param) => {
let files = "";
if (state.imgList.length) {
state.imgList.forEach((item) => {
files += item.img + ",";
});
}
files = files.slice(0, files.length - 1);
console.log("filesfiles", files);
const postData = {
offcourseId: state.offcourseId, //不传代表新增
name: state.qdms_inputV1,
// picUrl: state.imageUrl,
picUrl: state.feng_mian_1,
targetUser: state.qdms_inputV2,
meaning: state.qdms_inputV3,
categoryId: state.fen_lei,
sceneId: state.chang_jin,
tips: state.tags_val ? state.tags_val.join(",") : null,
teacherId: state.member.value,
teacher: state.member.name,
intro: state.qdms_inputV6,
attach: files,
outline: valueHtml.value,
//teacherId:state.teacherId ,
};
console.log("===", state.teacherId, "hha", state.qdms_inputV5);
console.log("postData");
console.log(postData);
const checkList = [
postData.name,
postData.targetUser,
postData.categoryId,
postData.teacherId,
];
if (!checkVal(checkList)) {
message.destroy();
return message.error("请输入必填项");
} else {
state.addLoading = true;
}
if (!state.validate) {
message.destroy();
return message.warning("面授课名称重复");
}
edit(postData).then((res) => {
if (res.data.code === 200) {
getTableDate();
ft_exit_0();
rest();
state.addLoading = false;
state.statusTingQi = 1;
// console.log("res.data", res.data);
if (param === "review") {
//新建时点击审核按钮
submitReview(res.data.data.offcourseId);
}
}
});
};
const om_exit = () => {
state.om_1 = false;
state.faceManageTab = "1";
@@ -4829,7 +4207,7 @@ export default defineComponent({
};
const handleCancelStu = () => {
state.cstm_hs = false;
state.filesList = [];
state.attach = "";
state.kk_eidt = false;
state.xjkkradioV1 = "";
@@ -4848,6 +4226,7 @@ export default defineComponent({
removePG();
};
//保存开课
const handleSureStu = () => {
let startTime,
@@ -4865,7 +4244,7 @@ export default defineComponent({
address: state.xjkkinputV2,
applyFlag: state.checked1 ? 1 : 0,
attach: state.filesList.length ? state.filesList.join(",") : "",
attach: state.attach,
beginTime: startTime,
completeType: type,
endTime: endTime,
@@ -4905,6 +4284,7 @@ export default defineComponent({
});
};
//编辑开课
const handelEditStu = async (itm) => {
console.log(itm);
@@ -4944,7 +4324,14 @@ export default defineComponent({
state.xjkkinputV2 = item.address;
state.checked1 = item.applyFlag === 1 ? true : false;
state.filesList = item.attach ? item.attach.split(",") : [];
let arrss = item.attach.split(',')
let str = ''
for (let i = 0; i < arrss.length; i++) {
i == arrss.length - 1 ? str += arrss[i].slice(arrss[i].lastIndexOf('/') + 1) : str += arrss[i].slice(arrss[i].lastIndexOf('/') + 1) + ','
}
console.log(str)
state.attach = str;
state.xjkkinputV3 = [
dayjs(item.beginTime, "YYYY-MM-DD HH:mm"),
dayjs(item.endTime, "YYYY-MM-DD HH:mm"),
@@ -5640,7 +5027,7 @@ export default defineComponent({
//提交审核
const reviewClick = () => {
console.log("ft_eidt", state.ft_eidt);
handlePush("review");
// handlePush("review");
/*
if (state.ft_eidt) {
//编辑面授课
@@ -5768,11 +5155,32 @@ export default defineComponent({
}
}
);
const range = (start, end) => {
const result = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
};
const closeOnlineCoursevisible = () => {
console.log("执行");
getTableDate();
};
const disabledDate = (current) => {
// Can not select days before today and today
console.log('1111', dayjs().endOf('day'))
return current && current < dayjs().startOf('day');
};
const disabledDateTime = () => {
return {
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
};
};
return {
...toRefs(state),
@@ -5780,6 +5188,8 @@ export default defineComponent({
getdateToDateFn,
moment,
disabledDate,
disabledDateTime,
getdateToTimeFn,
handlePostSure,
handleDeleteKaike,
@@ -5805,6 +5215,7 @@ export default defineComponent({
handleOpen,
handleEdit,
handleDelete,
changevalue,
columns1,
columns2,
columns4,
@@ -5873,7 +5284,7 @@ export default defineComponent({
beforeUpload,
beforeUpload2,
handleDel,
handlePush,
handleSucessStu,
handleRejectStu,
handleDeleteStu,

View File

@@ -314,6 +314,12 @@
</div>
<div class="mbl_items2">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div>
<span style="margin-right: 14px">课程简介</span>
</div>
<div class="item_inp">
@@ -789,8 +795,10 @@ export default defineComponent({
for (const keyName of checkList) {
if (!keyName) {
count++;
console.log("keyname",keyName);
}
}
return count ? false : true;
};
@@ -837,8 +845,9 @@ export default defineComponent({
postData.categoryId,
postData.teacherId,
postData.picUrl,
postData.qdms_inputV6,
postData.intro,
];
console.log("checkList",checkList);
if (!checkVal(checkList)) {
message.destroy();
return message.error("请输入必填项");

View File

@@ -570,7 +570,7 @@
>
</div>
</div>
<div class="set_content">
<div class="set_content" v-if="projectInfo.remark ">
<div class="setc_name"><span>项目说明</span></div>
<div class="setc_main">
<span style="color: #999999">{{

View File

@@ -47,6 +47,7 @@
<div class="addTime">创建时间</div>
<a-range-picker
:show-time="{ format: 'HH:mm' }"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
v-model:value="searchParam.valueDate"
format="YYYY-MM-DD"
style="border-radius: 8px; height: 40px; margin-left: 5px"
@@ -1403,7 +1404,7 @@ export default {
// console.log("value", value.record.type, value.record.status);
return (
<div className="operation">
{value.record.status === 0 || value.record.status === -5 ? (
{value.record.status === 0 || value.record.status ===2 || value.record.status === -5 ? (
<span
onClick={() => {
if (value.record.type === 1 || value.record.type === 2) {

View File

@@ -90,6 +90,7 @@
<div class="in">
<a-range-picker
:show-time="{ format: 'HH:mm' }"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
separator="至"
:placeholder="[' 开始时间', ' 结束时间']"
v-model:value="projectInfo.rangeTime"

View File

@@ -855,7 +855,7 @@
<div class="img"></div>
<div class="ed">编辑</div>
</div> -->
<div class="edit" v-if="status!=3 && status!=2" @click="toEdit">
<div class="edit" v-if="status!=3" @click="toEdit">
<div class="img"></div>
<div class="ed">编辑</div>
</div>
@@ -935,7 +935,7 @@
>
</div>
</div>
<div class="set_content">
<div class="set_content" v-if="remark ">
<div class="setc_name"><span>项目说明:</span></div>
<div class="setc_main">
<span style="color: #999999">{{ remark }}</span>

View File

@@ -78,7 +78,8 @@
<div class="in">
<a-range-picker
show-time
:show-time="{ format: 'HH:mm' }"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
separator="至"
:placeholder="[' 开始时间', ' 结束时间']"
v-model:value="projectInfo.rangeTime"

View File

@@ -420,7 +420,7 @@ export default {
if (state.projectTime) {
startTime = toDate(
new Date(state.projectTime[0].$d).getTime() / 1000,
"Y-M-D hh:mm"
"Y-M-D"
);
endTime = toDate(
new Date(state.projectTime[1].$d).getTime() / 1000,