mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-24 10:12:54 +08:00
Merge branch 'develop' of http://gitlab.dongwu-inc.com:10080/BOE/fe-manage into develop
This commit is contained in:
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
|
||||
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -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
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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),
|
||||
};
|
||||
},
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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("请输入必填项");
|
||||
|
||||
@@ -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">{{
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user