feat:合并

This commit is contained in:
lixg
2022-12-02 10:43:04 +08:00
15 changed files with 701 additions and 491 deletions

View File

@@ -1,33 +1,35 @@
<template>
<div id="container" v-if="!isLogin">
<nav-top />
<nav-top/>
<div style="display: flex">
<nav-left />
<nav-left/>
<div style="flex: 1; display: flex; flex-direction: column; width: 0">
<open-pages />
<bread-crumb />
<open-pages/>
<bread-crumb/>
<main>
<a-config-provider :locale="zhCN">
<router-view />
<router-view/>
</a-config-provider>
</main>
</div>
</div>
</div>
<div id="container" v-if="isLogin">
<router-view />
<router-view/>
</div>
</template>
<script>
import { computed, defineComponent, ref, watch } from "vue";
import { useRouter, useRoute } from "vue-router";
import { useStore } from "vuex";
import {computed, defineComponent, ref, watch} from "vue";
import {useRouter, useRoute} from "vue-router";
import {useStore} from "vuex";
import NavLeft from "@/components/NavLeft";
import NavTop from "@/components/NavTop";
import OpenPages from "@/components/OpenPages";
import BreadCrumb from "@/components/BreadCrumb";
import zhCN from "ant-design-vue/es/locale/zh_CN";
import * as api from "./api/index1";
import * as api1 from "@/api/index1";
export default defineComponent({
components: {
NavLeft,
@@ -47,37 +49,70 @@ export default defineComponent({
});
watch(
() => route.path,
() => {
route.path === "/login" && (isLogin.value = true);
}
() => route.path,
() => {
route.path === "/login" && (isLogin.value = true);
}
);
const currentRouteName = computed(() => route.name);
function init() {
console.log(store)
initDict('faceclassPic')
initDict('faceclassClass')
initDict('faceclassScene')
initDict('projectLevel')
initDict('projectSys')
getOrgTree()
}
async function initDict(key) {
let list = localStorage.getItem(key)
if (list) {
store.commit('SET_DICT', {key, data:JSON.parse(list)});
return;
}
list = await getDictList(key)
localStorage.setItem(key, JSON.stringify(list));
store.commit('SET_DICT', {key, data:list});
}
const getDictList = (param) => api1.getDict({
pageNo: 1,
pageSize: 20,
setCode: param
}).then((res) => res.data.data.rows)
//获取组织树
const getOrgTree = () => {
const orgtreeList = localStorage.getItem("orgtreeList")
if (orgtreeList) {
store.commit("getOrgtreeList", JSON.parse(orgtreeList));
return;
}
let obj = {
keyWord: "",
id: -1,
pageNo: 1,
pageSize: 20,
};
api
.getOrgInfo(obj)
.then((res) => {
console.log("组织树获取成功", res);
if (res.data.code === 200) {
// state.treeData = res.data.data;
store.commit("getOrgtreeList", res.data.data);
}
})
.catch((err) => {
console.log("组织树获取失败", err);
});
api.getOrgInfo(obj)
.then((res) => {
console.log("组织树获取成功", res);
if (res.data.code === 200) {
// state.treeData = res.data.data;
localStorage.setItem("orgtreeList", JSON.stringify(res.data.data));
store.commit("getOrgtreeList", res.data.data);
}
})
.catch((err) => {
console.log("组织树获取失败", err);
});
};
getOrgTree();
init();
return {
isLogin,
@@ -93,7 +128,7 @@ export default defineComponent({
// font-family: MicrosoftYaHei, Microsoft YaHei, Avenir, Helvetica, Arial,
// sans-serif;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
Microsoft YaHei, Arial, sans-serif;
Microsoft YaHei, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
@@ -125,6 +160,7 @@ export default defineComponent({
background: #ffffff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
}
// @media screen and (max-width: 1366px) {
// .cmMain {
// width: 750px;

View File

@@ -318,7 +318,7 @@ export default {
state.textV1 = "";
state.textV2 = "";
state.time = "";
// message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`);
localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive);
};

View File

@@ -251,8 +251,8 @@ export default {
if (props.edit) {
api
.updateDiscuss(obj)
.then((res) => {
updateTask(res);
.then(async (res) => {
await updateTask(res);
closeDrawer();
ctx.emit("changeData", false);
message.destroy();
@@ -265,8 +265,8 @@ export default {
} else {
api
.createDiscuss(obj)
.then((res) => {
updateTask(res);
.then(async (res) => {
await updateTask(res);
closeDrawer();
ctx.emit("changeData", false);
message.destroy();

View File

@@ -337,11 +337,15 @@ export default {
type: Number,
default: null,
},
projectName: {
type: String,
default: null,
},
},
setup(props, ctx) {
const options = ref([]);
const state = reactive({
loading:false,
selfacetvisible: false,
addhomeworkvisible: false,
addtestvisible: false,

View File

@@ -304,9 +304,9 @@ export default {
};
if (props.EditWorkId > 0) {
updateWorkTaskUsing(obj)
.then((res) => {
.then(async(res) => {
// console.log("添加成功", res);
updateTask(res);
await updateTask(res);
ctx.emit("changeData", false);
closeDrawer();
})
@@ -316,9 +316,9 @@ export default {
});
} else {
createWorkTask(obj)
.then((res) => {
.then(async(res) => {
console.log("添加成功", res);
updateTask(res);
await updateTask(res);
ctx.emit("changeData", false);
closeDrawer();
})

View File

@@ -642,20 +642,20 @@ export default {
if (props.edit) {
api
.updateLiveBroadcastMessage(state.obj)
.then((res) => {
.then(async(res) => {
message.destroy();
message.success("提交成功");
updateTask(res);
await updateTask(res);
closeDrawer();
})
.catch(() => {});
} else {
api
.createLiveBroadcast(state.obj)
.then((res) => {
.then(async(res) => {
message.destroy();
message.success("提交成功");
updateTask(res);
await updateTask(res);
closeDrawer();
})
.catch(() => {});

View File

@@ -270,7 +270,17 @@ export default {
};
const onSelectChange = (selectedRowKeys,selectedRows) => {
state.selectedRowKeys = selectedRowKeys;
state.addOnlineList = selectedRows
state.addOnlineList = selectedRows;
if( props.edit && selectedRows.length > 0 ){
selectedRows.map((value)=>{
if(value.courseId == props.EditOnlineId){
message.destroy()
message.error('选项相同,请重新选择')
state.selectedRowKeys = []
state.addOnlineList = []
}
})
}
};
//清空所选
const clearLine = () => {
@@ -294,6 +304,7 @@ export default {
teacher:value.teacher,
sysCreateBy:value.sysCreateBy,
overtime:"",
courseId: Number(value.onlineClassesId),
};
array.push(obj);
}

View File

@@ -477,6 +477,7 @@ export default {
})
.then(() => {
message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`);
ctx.emit("changeData", false);
closeDrawer();
})
.catch(() => {

View File

@@ -727,8 +727,8 @@ export default {
if (props.edit) {
// 编辑任务
updateExamination(obj)
.then((res) => {
updateTask(res);
.then(async(res) => {
await updateTask(res);
closeDrawer();
})
.catch(() => {
@@ -737,8 +737,8 @@ export default {
} else {
// 创建任务
createExamination(obj)
.then((res) => {
updateTask(res);
.then(async(res) => {
await updateTask(res);
closeDrawer();
})
.catch(() => {

View File

@@ -114,11 +114,12 @@
</template>
<script>
import { toRefs, reactive } from "vue";
import {toRefs, reactive, onMounted} from "vue";
import { getTask } from "../../api/indexTaskadd";
import { toDate } from "../../api/method";
import { auditView } from "../../api/indexAudit";
import { message } from "ant-design-vue";
import * as api1 from "@/api/index1";
export default {
name: "ProjectAudit",
@@ -180,6 +181,8 @@ export default {
noticeFlag: null, //未改
templateId: null, //未改
attach: null,
calssifyList:[],
faceclassScene:[]
});
const closeDrawer = () => {
@@ -284,7 +287,15 @@ export default {
message.warning("提交失败");
});
};
const getDictList = async (param) => api1.getDict({
pageNo: 1,
pageSize: 20,
setCode: param
}).then((res) => res.data.data.rows)
onMounted(async () => {
state.calssifyList = (await getDictList("faceclassClass")).map(e => ({ label: e.dictName, value: e.dictCode })) //内容
state.faceclassScene = (await getDictList("faceclassScene")).map(e => ({ label: e.dictName, value: e.dictCode })) //场景
});
return {
...toRefs(state),
closeDrawer,

View File

@@ -353,9 +353,9 @@ export default {
if (props.edit) {
api
.editVote(obj)
.then((res) => {
.then(async(res) => {
console.log("updte======");
updateToTask(res);
await updateToTask(res);
closeDrawer();
message.destroy();
message.success("修改投票信息成功")
@@ -367,8 +367,8 @@ export default {
} else {
api
.createVote(obj)
.then((res) => {
updateToTask(res);
.then(async(res) => {
await updateToTask(res);
closeDrawer();
message.destroy();
message.success("创建投票信息成功")

View File

@@ -24,6 +24,11 @@ export default createStore({
routerId: null,
projectTemplateId: null,
orgtreeList: [],
faceclassPic: null,
faceclassClass: [],
faceclassScene: [],
projectLevel: [],//项目级别
projectSys: [],//培训分类
},
getters: {},
mutations: {
@@ -45,6 +50,9 @@ export default createStore({
getOrgtreeList(state, data) {
state.orgtreeList = data
},
SET_DICT(state,{key,data}){
state[key] = data
},
SET_projectTemplateId(state, projectTemplateId) {
state.projectTemplateId = projectTemplateId;
}

View File

@@ -613,7 +613,7 @@
:key="index"
>
<div class="file_img">
<img :src="item.img" />
</div>
<div class="file_detail">
<!-- <div class="file_name">
@@ -1786,6 +1786,8 @@
<div class="select fitems">
<a-range-picker
style="width: 440px; height: 40px; border-radius: 8px"
:show-time="{ format: 'HH:mm' }"
format="YYYY-MM-DD HH:mm"
v-model:value="xjkkinputV3"
separator="至"
:placeholder="[' 开始时间', ' 结束时间']"
@@ -1870,12 +1872,13 @@
<span style="margin-right: 3px">完成规则</span>
</div>
<div class="b_input">
<!--
<a-checkbox
v-model:checked="regisCom"
@click="regisCom = !regisCom"
>
<span style="color: #6d7584">报名即完成</span>
</a-checkbox>
</a-checkbox> -->
<a-checkbox v-model:checked="signCom" @click="signCom = !signCom">
<span style="color: #6d7584">签到即完成</span>
</a-checkbox>
@@ -1926,6 +1929,61 @@
</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">{{ item.name }}</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>
</div>
</div>
<div class="items_btn">
<div class="cstm_btn btn5">
<div class="btnText" @click="handleCancelStu">取消</div>
@@ -2638,7 +2696,7 @@ const columns1 = [
case "1":
return "线上";
case "2":
return "线下";
return "面授";
}
},
},
@@ -3308,6 +3366,7 @@ export default defineComponent({
addStudentList: null, //选中列表
newCourseName: null, //新建开课名称
addLoading:false,
});
const showStuAdd = () => {
@@ -3445,6 +3504,9 @@ export default defineComponent({
const handleDel = (index) => {
state.imgList.splice(index, 1);
};
const handleDel2 = (index) => {
state.fileList.splice(index, 1);
};
// 渲染列表1操作
const getTableDate = async () => {
@@ -3977,8 +4039,10 @@ export default defineComponent({
state.qdms_inputV6 = "";
state.imgList = [];
valueHtml.value = "";
state.fileList =[];
};
const handlePush = (param) => {
state.addLoading = true;
console.log("state.imgList");
console.log(state.imgList);
let files = "";
@@ -4020,6 +4084,7 @@ export default defineComponent({
getTableDate();
ft_exit();
rest();
state.addLoading = false;
// console.log("res.data", res.data);
if (param === "review") {
//新建时点击审核按钮
@@ -4047,6 +4112,7 @@ export default defineComponent({
state.cstm_hs = true;
};
const handleCancelStu = () => {
state.cstm_hs = false;
state.kk_eidt = false;
state.xjkkradioV1 = "";
@@ -4059,12 +4125,16 @@ export default defineComponent({
state.checked4 = false;
};
const handleSureStu = () => {
state.addLoading = false;
let startTime,
endTime = 0;
if (state.xjkkinputV3) {
startTime = parseInt(state.xjkkinputV3[0].$d.getTime() / 1000);
endTime = parseInt(state.xjkkinputV3[1].$d.getTime() / 1000);
}
let t=state.signCom?"1,":"0,";
let p= state.comLeave?"1":"0";
let type = t.concat(p);
const postData = {
offcourseId: state.offcourseId,
offcoursePlanId: state.offcoursePlanId, //开课ID,不传代表新增
@@ -4073,13 +4143,7 @@ export default defineComponent({
applyFlag: state.checked1 ? 1 : 0,
attach: state.filesList.length ? state.filesList.join(",") : "",
beginTime: startTime,
completeType: state.regisCom
? "1,"
: "0," + state.signCom
? "1,"
: "0," + state.comLeave
? "1"
: "0",
completeType:type,
endTime: endTime,
evalFlag: state.checked4 ? 1 : 0,
name: state.xjkkinputV1,
@@ -4099,10 +4163,12 @@ export default defineComponent({
return false;
}
editPlan(postData).then((res) => {
state.addLoading = false;
if (res.data.code === 200) {
getTableDate3();
handleCancelStu();
rest();
}
});
};
@@ -4123,20 +4189,14 @@ export default defineComponent({
state.checked1 = item.applyFlag === 1 ? true : false;
state.filesList = item.attach ? item.attach.split(",") : [];
state.xjkkinputV3 = [
dayjs(item.beginTime, "YYYY/MM/DD"),
dayjs(item.endTime, "YYYY/MM/DD"),
dayjs(item.beginTime, "YYYY-MM-DD HH:mm:ss"),
dayjs(item.endTime, "YYYY-MM-DD HH:mm:ss"),
];
options4CurId.value = item.teacherId;
(state.regisCom = item.completeType.split(",")[0] == 1 ? true : false),
(state.signCom = item.completeType.split(",")[1] == 1 ? true : false),
(state.comLeave = item.completeType.split(",")[2] == 1 ? true : false),
(state.completeType = state.regisCom
? "1,"
: "0," + state.signCom
? "1,"
: "0," + state.comLeave
? "1"
: "0"),
// (state.regisCom = item.completeType.split(",")[0] == "1" ? true : false),
(state.signCom = item.completeType.split(",")[0] == "1" ? true : false),
(state.comLeave = item.completeType.split(",")[1] == "1" ? true : false),
(state.checked4 = item.evalFlag === 1 ? true : false);
state.xjkkinputV1 = item.name;
if (item.signFlag === 1) {
@@ -4525,14 +4585,19 @@ export default defineComponent({
options4CurId.value = item.teacherId;
state.qdms_inputV5 = null;
state.qdms_inputV6 = item.intro;
if (item.attach.indexOf(",")) {
if(item.attach==""){
state.imgList =[];
}else{
if (item.attach.indexOf(",")) {
const arr = item.attach.split(",");
arr.forEach((item) => {
state.imgList.push({ img: item });
});
} else {
state.imgList = [{ img: item.attach }];
} else {
state.imgList = [{ img: item.attach }];
}
}
valueHtml.value = item.outline;
getTea();
@@ -4685,7 +4750,13 @@ export default defineComponent({
console.log(file);
fileUp(formData).then((res) => {
if (res.data.code === 200) {
state.filesList.push(res.data.data);
state.filesList.push({
img: res.data.data,
name: file.name,
size: file.size,
});
console.log(state.filesList);
// state.hasImgName = res.data.data;
}
});
return false;
@@ -4844,6 +4915,7 @@ export default defineComponent({
getdateToTimeFn,
handlePostSure,
handleDeleteKaike,
handleDel2,
handelEditStu,
handelGuan,
beforeUpload3,
@@ -5109,7 +5181,7 @@ export default defineComponent({
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
position: absolute;
left: 50%;
top: 50%;
top:-100%;
transform: translate(-50%, -50%);
.of_header {
position: absolute;
@@ -5249,7 +5321,7 @@ export default defineComponent({
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
position: absolute;
left: 50%;
top: 10%;
top: -100%;
transform: translate(-50%, -50%);
.cst_header {
position: absolute;
@@ -5325,6 +5397,92 @@ export default defineComponent({
}
}
}
.mbl_items12 {
width: 440px;
margin-left: 100px;
.i12_box1 {
display: flex;
align-items: center;
padding: 17px 0px 17px 21px;
border: 1px solid #eff4fc;
border-radius: 8px;
margin-bottom: 10px;
.file_img {
width: 27px;
height: 32px;
background-image: url(@/assets/images/coursewareManage/imgs.png);
margin-right: 22px;
img {
width: 100%;
height: 100%;
}
}
.file_detail {
width: 250px;
margin-right: 21px;
.file_updata {
display: flex;
align-items: center;
.updatabox {
position: relative;
width: 230px;
height: 5px;
background-color: rgba(192, 192, 192, 0.25);
border-radius: 3px;
.updatacolor {
position: absolute;
left: 0;
width: 100%;
height: 5px;
background-color: #57c887;
border-radius: 3px;
}
.updatacolor2 {
position: absolute;
left: 0;
width: 80%;
height: 5px;
background-color: #ff7474;
border-radius: 3px;
}
.updatacolor3 {
position: absolute;
left: 0;
width: 60%;
height: 5px;
background-color: #388be1;
border-radius: 3px;
}
.updataxq {
position: absolute;
right: 2px;
top: -30px;
color: #57c887;
}
.updataxq2 {
position: absolute;
right: 2px;
top: -30px;
color: #ff7474;
}
.updataxq3 {
position: absolute;
right: 2px;
top: -30px;
color: #388be1;
}
}
}
}
.file_operation {
display: flex;
.fobox {
margin-right: 5px;
cursor: pointer;
}
}
}
}
.items_fj {
margin-bottom: 1px;
}
@@ -6061,7 +6219,7 @@ export default defineComponent({
.file_img {
width: 27px;
height: 32px;
// background-image: url(@/assets/images/coursewareManage/imgs.png);
background-image: url(@/assets/images/coursewareManage/imgs.png);
margin-right: 22px;
img {
width: 100%;

File diff suppressed because it is too large Load Diff

View File

@@ -1209,6 +1209,7 @@ export default {
taskList: value.taskList,
value: value.stageId,
label: value.name,
courseId: value.courseId ? value.courseId : null
};
array.push(obj);
}
@@ -1660,6 +1661,7 @@ export default {
"0px 1px 35px 0px rgba(118, 136, 166, 0.07)";
});
const showDrawerOnline = (id, eleId) => {
console.log('id, eleId',id, eleId);
state.addonlinevisible = true;
state.EditOnlineId = id;
state.projectTaskId = eleId;
@@ -1834,7 +1836,7 @@ export default {
//编辑的按钮
const decideType = (type, id, eleId) => {
state.edit = true;
console.log(type, id);
console.log(type, id, eleId);
if (type == "外链") {
showDrawerAddRef(id, eleId);
} else if (type == "直播") {