Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
yuping
2022-11-30 15:25:13 +08:00
12 changed files with 416 additions and 367 deletions

View File

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

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-21 14:32:52 * @Date: 2022-11-21 14:32:52
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-29 17:09:48 * @LastEditTime: 2022-11-30 15:03:21
* @FilePath: /fe-manage/src/api/config.js * @FilePath: /fe-manage/src/api/config.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@@ -53,7 +53,7 @@ http.interceptors.response.use(
return response; return response;
} else { } else {
if (code === 1000) { if (code === 1000) {
window.open("https://u-pre.boe.com/web/", '_self'); // window.open("https://u-pre.boe.com/web/", '_self');
} }
console.log("api %o", msg); console.log("api %o", msg);
} }

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-04 22:45:31 * @Date: 2022-11-04 22:45:31
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-29 18:17:23 * @LastEditTime: 2022-11-30 10:39:27
* @FilePath: /fe-manage/src/api/index1.js * @FilePath: /fe-manage/src/api/index1.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@@ -130,7 +130,7 @@ export const orgtree = () => http.get("/org/tree");
//获取积分列表 //获取积分列表
export const noticeList = (projectId) => export const noticeList = (projectId) =>
http.post( http.post(
`http://localhost:8080/api/admin/project/noticeList?projectId=` + `/admin/project/noticeList?projectId=` +
projectId + projectId +
`` ``
); );

View File

@@ -12,6 +12,9 @@ export const listView = (obj) => http.post('/admin/project/listView', obj)
//获取面授课已审核列表 //获取面授课已审核列表
export const courseListView = (obj) => http.post('/admin/offcourse/listReview', obj) export const courseListView = (obj) => http.post('/admin/offcourse/listReview', obj)
//获取面授课详情
export const courseDetail = (offcourseId) => http.post(`/admin/offcourse/detail?offcourseId=${offcourseId}`)
//项目审核日志 //项目审核日志
export const auditList = (obj) => http.post('/admin/project/auditList', obj) export const auditList = (obj) => http.post('/admin/project/auditList', obj)

View File

@@ -16,7 +16,7 @@
/> />
</div> </div>
<div style="display: flex; flex-direction: row; padding-top:32px;"> <div style="display: flex; flex-direction: row; padding-top: 32px">
<button <button
style="width: 100px" style="width: 100px"
@click="changeOuter(1)" @click="changeOuter(1)"
@@ -32,7 +32,6 @@
外部考试 外部考试
</button> </button>
</div> </div>
<a-form <a-form
v-if="isOuter == 1" v-if="isOuter == 1"
ref="formRef" ref="formRef"
@@ -267,7 +266,6 @@
style="width: 88px; height: 32px; margin-left: 35px" style="width: 88px; height: 32px; margin-left: 35px"
/> />
</a-form-item> </a-form-item>
<span style="margin-left: 8px"></span> <span style="margin-left: 8px"></span>
</div> </div>
</div> </div>
@@ -311,7 +309,6 @@
<a-button class="btn2" html-type="submit">确定</a-button> <a-button class="btn2" html-type="submit">确定</a-button>
</div> </div>
</a-form> </a-form>
<a-form <a-form
v-else v-else
ref="formRef" ref="formRef"
@@ -342,7 +339,6 @@
</a-form-item> </a-form-item>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="btnbox"> <div class="btnbox">
<a-form-item <a-form-item
@@ -383,8 +379,6 @@
<a-button class="btn2" html-type="submit">确定</a-button> <a-button class="btn2" html-type="submit">确定</a-button>
</div> </div>
</a-form> </a-form>
</div> </div>
<!-- 加载动画 --> <!-- 加载动画 -->
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }"> <div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
@@ -406,7 +400,6 @@ import STest from "./SelectTest.vue";
import { ProjectEditTask, RouterEditTask } from "@/api/indexTask"; import { ProjectEditTask, RouterEditTask } from "@/api/indexTask";
import { addTempTask } from "../../api/indexTaskadd"; import { addTempTask } from "../../api/indexTaskadd";
import dayjs from "dayjs"; import dayjs from "dayjs";
export default { export default {
name: "AddTest", name: "AddTest",
components: { components: {
@@ -623,7 +616,6 @@ export default {
}, },
], ],
}; };
const options1 = ref([ const options1 = ref([
{ {
label: "math", label: "math",
@@ -637,11 +629,9 @@ export default {
const handleFinish = () => { const handleFinish = () => {
updateTest(); updateTest();
}; };
const handleFinishFailed = () => { const handleFinishFailed = () => {
message.error("handleFinishFailed"); message.error("handleFinishFailed");
}; };
const resetForm = () => { const resetForm = () => {
formRef.value.resetFields(); formRef.value.resetFields();
state.paperName = ""; state.paperName = "";
@@ -649,12 +639,10 @@ export default {
state.id = ""; state.id = "";
state.testName = ""; state.testName = "";
}; };
const handleValidate = (...args) => { const handleValidate = (...args) => {
console.log(args); console.log(args);
}; };
const closeDrawer = () => { const closeDrawer = () => {
formState.choosedTime = ""; formState.choosedTime = "";
ctx.emit("update:addtestVisible", false); ctx.emit("update:addtestVisible", false);
ctx.emit("update:edit", false); ctx.emit("update:edit", false);
@@ -669,11 +657,9 @@ export default {
queryTest(); queryTest();
} }
}; };
const selectTest = () => { const selectTest = () => {
state.STvisible = true; state.STvisible = true;
}; };
const delTag = () => { const delTag = () => {
state.paperId = 0; state.paperId = 0;
state.paperName = ""; state.paperName = "";
@@ -759,7 +745,6 @@ export default {
}); });
} }
}; };
const updateTask = (res) => { const updateTask = (res) => {
state.EditTestId = res.data.data.examinationId; state.EditTestId = res.data.data.examinationId;
if (props.faceLevel) { if (props.faceLevel) {
@@ -822,9 +807,7 @@ export default {
}); });
} }
} }
}; };
const cloradio1 = (value) => { const cloradio1 = (value) => {
if (value != "") { if (value != "") {
formState.showAnswers = ""; formState.showAnswers = "";
@@ -864,8 +847,8 @@ export default {
const getData = (value) => { const getData = (value) => {
state.paperId = value.paperId; state.paperId = value.paperId;
state.paperName = value.testName; state.paperName = value.testName;
state.id = value.id state.id = value.id;
state.testName = value.testName state.testName = value.testName;
}; };
return { return {
formState, formState,

View File

@@ -4813,7 +4813,7 @@ export default defineComponent({
deptList: res[1], deptList: res[1],
groupList: res[2], groupList: res[2],
offcourseId: state.offcourseId, offcourseId: state.offcourseId,
offcoursePlanId: "", offcoursePlanId: state.offcoursePlanId, //开课id
studentList: res[0], studentList: res[0],
}; };
console.log("obj", obj); console.log("obj", obj);

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-16 20:59:33 * @Date: 2022-11-16 20:59:33
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-24 16:21:04 * @LastEditTime: 2022-11-29 22:30:01
* @FilePath: /fe-manage/src/views/examine/CourseReviewedN.vue * @FilePath: /fe-manage/src/views/examine/CourseReviewedN.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
--> -->
@@ -14,39 +14,28 @@
<div class="tmplh_inp"> <div class="tmplh_inp">
<div class="inpbox"> <div class="inpbox">
<div class="inpbox1"> <div class="inpbox1">
<a-select <a-select v-model:value="valueproj" :options="[{ label: '请选择内容分类', value: '' }, ...calssifyList]" />
v-model:value="valueproj"
:options="[{label:'请选择内容分类',value:''},...calssifyList]"
/>
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
<a-input <a-input v-model:value="valuecreater" style="
v-model:value="valuecreater"
style="
width: 270px; width: 270px;
height: 40px; height: 40px;
border-radius: 8px; border-radius: 8px;
margin-right: 14px; margin-right: 14px;
" " placeholder="请输入创建人" />
placeholder="请输入创建人"
/>
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
<a-input <a-input v-model:value="valuename" style="
v-model:value="valuename"
style="
width: 270px; width: 270px;
height: 40px; height: 40px;
border-radius: 8px; border-radius: 8px;
margin-right: 14px; margin-right: 14px;
" " placeholder="请输入名称" />
placeholder="请输入名称"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="tmplh_btn"> <div class="tmplh_btn">
<div class="btn btn1" @click="getFaceList"> <div class="btn btn1" @click="searchList">
<div class="search"></div> <div class="search"></div>
<div class="btnText btnText1">搜索</div> <div class="btnText btnText1">搜索</div>
</div> </div>
@@ -58,40 +47,20 @@
</div> </div>
<div class="tmpl_body"> <div class="tmpl_body">
<div class="tmpl_tabbox"> <div class="tmpl_tabbox">
<a-table <a-table :columns="columns1" :data-source="tableData1" :loading="tableDataTotal === -1 ? true : false"
:columns="columns1" expandRowByClick="true" @expand="expandTable" :scroll="{ x: 1300 }" :pagination="false" />
:data-source="tableData1"
:loading="tableDataTotal === -1 ? true : false"
expandRowByClick="true"
@expand="expandTable"
:scroll="{ x: 1300 }"
:pagination="false"
/>
</div> </div>
<div class="tableBox"> <div class="tableBox">
<div class="pa"> <div class="pa">
<a-pagination <a-pagination v-if="total > 10" showSizeChanger="true" show-quick-jumper :pageSize="pageSize"
v-if="total > 10" v-model:current="currentPage" :total="total" class="pagination" @change="changePagination" />
showSizeChanger="true"
show-quick-jumper
:pageSize="pageSize"
v-model:current="currentPage"
:total="total"
class="pagination"
@change="changePagination"
/>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- 审核弹窗 --> <!-- 审核弹窗 -->
<a-modal <a-modal v-model:visible="courAuditModal" :footer="null" :closable="closeBack" wrapClassName="courAuditModal"
v-model:visible="courAuditModal" centered="true">
:footer="null"
:closable="closeBack"
wrapClassName="courAuditModal"
centered="true"
>
<div class="delete"> <div class="delete">
<div class="del_header"></div> <div class="del_header"></div>
<div class="del_main"> <div class="del_main">
@@ -111,6 +80,9 @@
</div> </div>
</div> </div>
<div class="item" style="margin-top: 20px"> <div class="item" style="margin-top: 20px">
<div class="sign" style="position:relative;left:30px;top:-2px;">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
</div>
<div class="left">审核意见</div> <div class="left">审核意见</div>
<div class="rig"> <div class="rig">
<a-textarea v-model:value="valueSugg" :rows="4" /> <a-textarea v-model:value="valueSugg" :rows="4" />
@@ -129,30 +101,15 @@
</div> </div>
</a-modal> </a-modal>
<!-- 预览弹窗 --> <!-- 预览弹窗 -->
<a-modal <a-modal v-model:visible="lookCourseModal" title="Title" @ok="handlePush" :footer="null" :closable="false"
v-model:visible="lookCourseModal" wrapClassName="modalStyle lookCourseModal" width="80%" @cancel="ft_exit">
title="Title"
@ok="handlePush"
:footer="null"
:closable="false"
wrapClassName="modalStyle lookCourseModal"
width="80%"
@cancel="ft_exit"
>
<div class="modalHeader"> <div class="modalHeader">
<div class="headerLeft"> <div class="headerLeft">
<img <img style="width: 17px; height: 18px; margin-right: 8px" src="../../assets/images/basicinfo/add.png" />
style="width: 17px; height: 18px; margin-right: 8px"
src="../../assets/images/basicinfo/add.png"
/>
<span class="headerLeftText">预览</span> <span class="headerLeftText">预览</span>
</div> </div>
<div style="margin-right: 57px; cursor: pointer"> <div style="margin-right: 57px; cursor: pointer">
<img <img @click="ft_exit" style="width: 22px; height: 22px" src="../../assets/images/basicinfo/close22.png" />
@click="ft_exit"
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close22.png"
/>
</div> </div>
</div> </div>
<div class="modalMain"> <div class="modalMain">
@@ -163,24 +120,17 @@
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 14px">课程名称</span> <span style="margin-right: 14px">课程名称</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i1_input">fefewf</div> <div class="i1_input">{{ faceDetailObj !== null ? faceDetailObj.name : "" }}</div>
</div> </div>
</div> </div>
<div class="i2_cz"> <div class="i2_cz">
<div class="i2_top"> <div class="i2_top">
<div <div class="i2_right" @click="hideShow" style="cursor: pointer">
class="i2_right"
@click="hideShow"
style="cursor: pointer"
>
<div class="b_icon"></div> <div class="b_icon"></div>
</div> </div>
</div> </div>
@@ -188,28 +138,23 @@
<div class="mbl_items2"> <div class="mbl_items2">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 14px">封面图</span> <span style="margin-right: 14px">封面图</span>
</div> </div>
<div class="item_inp">fefw</div> <img ref="heroImg" alt="" style="width:100px;height:100px;" />
<!-- <div class="item_inp"></div> -->
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img style="width: 10px; height: 10px" src="@/assets/images/coursewareManage/asterisk.png"
style="width: 10px; height: 10px" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 14px">目标人群</span> <span style="margin-right: 14px">目标人群</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i1_input"></div> <div class="i1_input">{{ faceDetailObj !== null ? faceDetailObj.targetUser : "" }}</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
@@ -217,35 +162,29 @@
<span style="margin-right: 14px">课程价值</span> <span style="margin-right: 14px">课程价值</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i1_input"></div> <div class="i1_input">{{ faceDetailObj !== null ? faceDetailObj.meaning : "" }}</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 14px">资源归属</span> <span style="margin-right: 14px">资源归属</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="select i6_input"></div> <div class="select i6_input">{{ faceDetailObj !== null ? faceDetailObj.projectId : "" }}</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 14px">内容分类</span> <span style="margin-right: 14px">内容分类</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="select i6_input"></div> <div class="select i6_input">{{ faceDetailObj !== null ? faceDetailObj.categoryId : "" }}</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
@@ -253,29 +192,26 @@
<span style="margin-right: 14px">场景</span> <span style="margin-right: 14px">场景</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="select i7_input"></div> <div class="select i7_input">{{ faceDetailObj !== null ? faceDetailObj.sceneId : "" }}</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<span style="margin-right: 14px">内容标签</span> <span style="margin-right: 14px">内容标签</span>
</div> </div>
<div class="item_inp"></div> <div class="item_inp">{{ faceDetailObj !== null ? faceDetailObj.tips : "" }}</div>
</div> </div>
</div> </div>
<div class="mb_right"> <div class="mb_right">
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk" />
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div> </div>
<span style="margin-right: 14px">授课教师</span> <span style="margin-right: 14px">授课教师</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i1_input"></div> <div class="i1_input">{{ faceDetailObj !== null ? faceDetailObj.teacherId : "" }}</div>
</div> </div>
</div> </div>
<div class="mbl_items2"> <div class="mbl_items2">
@@ -283,40 +219,32 @@
<span style="margin-right: 14px">课程简介</span> <span style="margin-right: 14px">课程简介</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i10_textarea"></div> <div class="i10_textarea">{{ faceDetailObj !== null ? faceDetailObj.intro : "" }}</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<span style="margin-right: 10px">附件</span> <span style="margin-right: 10px">附件</span>
</div> </div>
<div class="item_inp"> <div class="item_inp" v-for="(value, index) in attachMap" :key="index">
<a-upload <a :src="value">
multiple {{ ['附件一', '附件二', '附件三', '附件四', '附件五', '附件六'][index] }}
:show-upload-list="false" </a>
:before-upload="beforeUpload2" <!-- <a-upload multiple :show-upload-list="false" :before-upload="beforeUpload2">
>
<div class="accessory" style="cursor: pointer"> <div class="accessory" style="cursor: pointer">
<div class="accessory_icon"> <div class="accessory_icon">
<img <img src="@/assets/images/coursewareManage/enclosure.png" alt="enclosure" />
src="@/assets/images/coursewareManage/enclosure.png"
alt="enclosure"
/>
</div> </div>
<span style="color: #4ea6ff">添加附件</span> <span style="color: #4ea6ff">添加附件</span>
</div> </div>
</a-upload> </a-upload>
<span> <span>
支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip 支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip
</span> </span> -->
</div> </div>
</div> </div>
<div class="mbl_items12"> <div class="mbl_items12">
<div <div class="i12_box1" v-for="(item, index) in imgList" :key="index">
class="i12_box1"
v-for="(item, index) in imgList"
:key="index"
>
<div class="file_img"> <div class="file_img">
<img :src="item.img" /> <img :src="item.img" />
</div> </div>
@@ -352,28 +280,18 @@
</div> </div>
<div class="fotarea"> <div class="fotarea">
<div style="border: 1px solid #ccc"> <div style="border: 1px solid #ccc">
<Toolbar <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig"
style="border-bottom: 1px solid #ccc" :mode="mode" />
:editor="editorRef" <Editor v-model="valueHtml" :defaultConfig="editorConfig" :mode="mode" @onCreated="handleCreated" />
:defaultConfig="toolbarConfig"
:mode="mode"
/>
<Editor
style="height: 500px; overflow-y: hidden"
v-model="valueHtml"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="m_btn"> <div class="m_btn">
<div class="btn btn5"> <div class="btn btn5" @click="ft_exit">
<div class="btnText" @click="ft_exit">取消</div> <div class="btnText">取消</div>
</div> </div>
<div class="btn btn6"> <div class="btn btn6" @click="handlePush">
<div class="btnText" @click="handlePush">确定</div> <div class="btnText">确定</div>
</div> </div>
</div> </div>
</div> </div>
@@ -382,26 +300,16 @@
</a-modal> </a-modal>
<!-- 审核在线课 --> <!-- 审核在线课 -->
<a-modal <a-modal v-model:visible="onlineClassesVisible" :footer="null" :closable="false"
v-model:visible="onlineClassesVisible" wrapClassName="modalStyle onlineClassesStyle" :zIndex="9999">
:footer="null" <iframe id="iframe" style="width: 100%; height: 100%" :src="iframeUrl + 'course/noapproved'" name="myframe"
:closable="false" sandbox="allow-forms allow-scripts allow-same-origin allow-popups"></iframe>
wrapClassName="modalStyle onlineClassesStyle"
:zIndex="9999"
>
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="iframeUrl + 'course/noapproved'"
name="myframe"
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
></iframe>
</a-modal> </a-modal>
</div> </div>
</template> </template>
<script> <script>
import {reactive, toRefs, onMounted} from "vue"; import { reactive, toRefs, onMounted, ref } from "vue";
import {list, courseAuditView} from "../../api/indexAudit"; import { list, courseAuditView, courseDetail } from "../../api/indexAudit";
import { toDate } from "../../api/method"; import { toDate } from "../../api/method";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
@@ -442,6 +350,7 @@ export default {
chooseCreater: null, chooseCreater: null,
chooseOffId: null, chooseOffId: null,
lookCourseModal: false, //预览 lookCourseModal: false, //预览
faceDetailObj: null,
columns1: [ columns1: [
{ {
title: "序号", title: "序号",
@@ -514,7 +423,13 @@ export default {
审核 审核
</span> </span>
&nbsp; &nbsp;
<span style="cursor:pointer;color:#387DF7">预览</span> <span
onClick={() => {
state.lookCourseModal = true;
getFaceDetail(value.record.offId);
console.log(value.record)
}}
style="cursor:pointer;color:#387DF7">预览</span>
</div> </div>
); );
}, },
@@ -541,15 +456,16 @@ export default {
const getFaceList = () => { const getFaceList = () => {
let objn = { let objn = {
auditStatus: 1, auditStatus: 1,
// beginTime: 0,
categoryId: state.valueproj, categoryId: state.valueproj,
createName: state.valuecreater, createName: state.valuecreater,
// endTime: 0,
name: state.valuename, name: state.valuename,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: 10, pageSize: 10,
projectName: "", projectName: ""
}; };
console.log(objn);
list(objn) list(objn)
.then((res) => { .then((res) => {
console.log("获取面授列表成功", res); console.log("获取面授列表成功", res);
@@ -557,12 +473,77 @@ export default {
state.total = result.total; state.total = result.total;
if (result.total > 0) { if (result.total > 0) {
setFaceData(result.rows); setFaceData(result.rows);
} else {
setFaceData([]);
} }
}) })
.catch((err) => { .catch((err) => {
console.log("获取面授列表失败", err); console.log("获取面授列表失败", err);
}); });
}; };
// 获取面授详情
const heroImg = ref(null);
const valueHtml = ref(null);
const attachMap = ref([]);
const getFaceDetail = (id) => {
console.log(id);
courseDetail(id)
.then((res) => {
console.log("获取面授详情信息成功", res);
let result = res.data.data;
state.faceDetailObj = result;
heroImg.value.src = result.picUrl
valueHtml.value = result.outline
attachMap.value = result.attach.split(",")
console.log(result, attachMap.value);
})
.catch((err) => {
console.log("获取面授详情信息失败", err);
});
}
const searchList = () => {
let objn = {
auditStatus: 1,
categoryId: state.valueproj,
createName: state.valuecreater,
name: state.valuename,
pageNo: state.currentPage,
pageSize: 10,
projectName: ""
};
console.log(objn);
list(objn)
.then((res) => {
console.log("获取面授列表成功", res);
let result = res.data.data;
state.total = result.total;
if (result.total > 0) {
setFaceData(result.rows);
} else {
setFaceData([]);
}
})
.catch((err) => {
console.log("获取面授列表失败", err);
});
}
// 预览弹框 开启和关闭
const ft_exit = () => {
state.lookCourseModal = false;
}
const handlePush = () => {
state.lookCourseModal = false;
}
const setFaceData = (tableData) => { const setFaceData = (tableData) => {
if (!tableData || !tableData.length) { if (!tableData || !tableData.length) {
state.tableData1 = [] state.tableData1 = []
@@ -611,6 +592,7 @@ export default {
state.chooseId = id; state.chooseId = id;
state.chooseCreater = creater; state.chooseCreater = creater;
state.chooseOffId = offId; state.chooseOffId = offId;
getFaceList();
}; };
const closeCourAuditModal = () => { const closeCourAuditModal = () => {
state.courAuditModal = false; state.courAuditModal = false;
@@ -621,6 +603,13 @@ export default {
state.chooseOffId = null; state.chooseOffId = null;
}; };
const sureCourAuditModal = () => { const sureCourAuditModal = () => {
console.log(state.valueSugg)
if (state.valueSugg == null || state.valueSugg == undefined || state.valueSugg == "") {
message.destroy();
message.error("请输入审核意见")
return
}
courseAuditView({ courseAuditView({
createId: state.chooseId, createId: state.chooseId,
createName: state.chooseCreater, createName: state.chooseCreater,
@@ -632,12 +621,13 @@ export default {
console.log(res); console.log(res);
state.courAuditModal = false; state.courAuditModal = false;
message.destroy(); message.destroy();
return message.success("审核提交成功"); message.success("审核提交成功");
getFaceList();
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
message.destroy(); message.destroy();
return message.warning("审核提交失败"); message.warning("审核提交失败");
}); });
}; };
onMounted(async () => { onMounted(async () => {
@@ -648,12 +638,19 @@ export default {
return { return {
...toRefs(state), ...toRefs(state),
getFaceList, getFaceList,
searchList,
setFaceData, setFaceData,
reset, reset,
changePagination, changePagination,
showAudit, showAudit,
closeCourAuditModal, closeCourAuditModal,
sureCourAuditModal, sureCourAuditModal,
ft_exit,
handlePush,
getFaceDetail,
heroImg,
valueHtml,
attachMap
}; };
}, },
}; };
@@ -680,6 +677,7 @@ export default {
background: #ffffff; background: #ffffff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21); box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
border-radius: 4px; border-radius: 4px;
// position: absolute; // position: absolute;
// left: 50%; // left: 50%;
// top: 10%; // top: 10%;
@@ -688,10 +686,8 @@ export default {
position: absolute; position: absolute;
width: calc(100%); width: calc(100%);
height: 68px; height: 68px;
background: linear-gradient( background: linear-gradient(rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0.2) 0%, rgba(78, 166, 255, 0) 100%);
rgba(78, 166, 255, 0) 100%
);
} }
.del_main { .del_main {
@@ -799,6 +795,7 @@ export default {
.lookCourseModal { .lookCourseModal {
.ant-modal { .ant-modal {
.ant-modal-content { .ant-modal-content {
// width:1358px !important; // width:1358px !important;
.ant-modal-body { .ant-modal-body {
.modalHeader { .modalHeader {

View File

@@ -210,7 +210,7 @@
class="learnBgItem" class="learnBgItem"
:style="{ :style="{
border: border:
learnPathBg === item.dictCode pathBgId === item.dictCode
? '2px solid rgba(78, 166, 255, 1)' ? '2px solid rgba(78, 166, 255, 1)'
: '1px solid #C7CBD2', : '1px solid #C7CBD2',
'background-image': 'url(' + item.dictValue + ')', 'background-image': 'url(' + item.dictValue + ')',
@@ -344,7 +344,7 @@
class="learnBgItem" class="learnBgItem"
:style="{ :style="{
border: border:
learnPathBg2 === item.dictCode pathBgId === item.dictCode
? '2px solid rgba(78, 166, 255, 1)' ? '2px solid rgba(78, 166, 255, 1)'
: '1px solid #ccc', : '1px solid #ccc',
'background-image': 'url(' + item.dictValue + ')', 'background-image': 'url(' + item.dictValue + ')',
@@ -670,7 +670,7 @@
class="learnBgItem" class="learnBgItem"
:style="{ :style="{
border: border:
learnPathBg2 === item.id pathBgId === item.id
? '2px solid rgba(78, 166, 255, 1)' ? '2px solid rgba(78, 166, 255, 1)'
: '1px solid #ccc', : '1px solid #ccc',
'background-image': 'url(' + item.source + ')', 'background-image': 'url(' + item.source + ')',
@@ -749,8 +749,8 @@ export default {
// source: require("../../assets/images/leveladd/1.png"), // source: require("../../assets/images/leveladd/1.png"),
// }, // },
], ],
learnPathBg: null, //创建路径选择的路径图背景 // learnPathBg: null, //创建路径选择的路径图背景
learnPathBg2: null, //编辑路径选择的路径图背景 // learnPathBg2: null, //编辑路径选择的路径图背景
pub: false, //发布弹窗 pub: false, //发布弹窗
checked: false, //发布弹窗switch checked: false, //发布弹窗switch
checkedTeacher: false, //发布弹窗勾选 checkedTeacher: false, //发布弹窗勾选
@@ -784,7 +784,8 @@ export default {
], //归属组织 ], //归属组织
organizationSelectName: null, //归属组织选择名称 organizationSelectName: null, //归属组织选择名称
organizationSelectId: null, //归属组织选择id organizationSelectId: null, //归属组织选择id
pathBg: "", //路径图选择背景 pathBg: null, //路径图选择背景
pathBgId: null, //路径图选择id
pathIntro: "", //路径说明 pathIntro: "", //路径说明
createLoading: false, //创建路径loading createLoading: false, //创建路径loading
deletePathId: null, //删除路径id deletePathId: null, //删除路径id
@@ -849,6 +850,7 @@ export default {
// console.log("打开创建路径弹窗"); // console.log("打开创建路径弹窗");
state.pathName = ""; state.pathName = "";
state.pathBg = ""; state.pathBg = "";
state.pathBgId = "";
state.organizationSelectName = null; state.organizationSelectName = null;
state.organizationSelectId = null; state.organizationSelectId = null;
state.pathIntro = ""; state.pathIntro = "";
@@ -857,6 +859,7 @@ export default {
const handleOut1 = () => { const handleOut1 = () => {
state.pathName = ""; state.pathName = "";
state.pathBg = ""; state.pathBg = "";
state.pathBgId = "";
state.organizationSelectName = null; state.organizationSelectName = null;
state.organizationSelectId = null; state.organizationSelectId = null;
state.pathIntro = ""; state.pathIntro = "";
@@ -865,11 +868,13 @@ export default {
}; };
const chooseImg = (item) => { const chooseImg = (item) => {
// console.log(item); // console.log(item);
state.learnPathBg = item.dictCode; state.pathBgId = item.dictCode;
state.pathBg = item.dictValue;
}; };
const chooseImg2 = (item) => { const chooseImg2 = (item) => {
// console.log(item); // console.log(item);
state.learnPathBg2 = item.dictCode; state.pathBgId = item.dictCode;
state.pathBg = item.dictValue;
}; };
//发布弹窗 //发布弹窗
const showPub = (routerId) => { const showPub = (routerId) => {
@@ -1141,14 +1146,9 @@ export default {
<div <div
class="jc" class="jc"
onClick={() => { onClick={() => {
console.log("text.record", text.record); // console.log("text.record", text.record);
state.out1 = true;
state.pathName = text.record.manager; getLearnPathInfo(text.record);
// state.pathBg = "";
// state.organizationSelectName = null;
// state.organizationSelectId = null;
state.pathIntro = text.record.remark;
state.editPathId = text.record.id;
}} }}
> >
编辑 编辑
@@ -1418,11 +1418,14 @@ export default {
message.destroy(); message.destroy();
return message.warning("请输入路径图名称"); return message.warning("请输入路径图名称");
} }
if (!state.organizationSelectName) {
// if (!state.organizationSelectName){ message.destroy();
// message.destroy(); return message.warning("请选择归属组织");
// return message.warning("请选择归属组织"); }
// } if (!state.pathBg) {
message.destroy();
return message.warning("请选择背景图");
}
state.lpLoading = true; state.lpLoading = true;
let obj = { let obj = {
name: state.pathName, name: state.pathName,
@@ -1520,17 +1523,39 @@ export default {
console.log("删除失败", err); console.log("删除失败", err);
}); });
}; };
//获取路径图详细信息
const getLearnPathInfo = (item) => {
state.out1 = true;
state.pathName = item.manager;
state.pathBg = "";
state.pathBgId = "";
state.organizationSelectName = null;
state.organizationSelectId = null;
state.pathIntro = item.remark;
state.editPathId = item.id;
console.log("state.imgData", state.imgData);
let arr = state.imgData;
for (let i = 0; i < arr.length; i++) {
if (arr[i].dictCode === state.pathBgId) {
state.pathBgId = arr[i].dictValue;
}
}
};
//编辑学习路径图 //编辑学习路径图
const editLearnPath = () => { const editLearnPath = () => {
if (!state.pathName) { if (!state.pathName) {
message.destroy(); message.destroy();
return message.warning("请输入路径图名称"); return message.warning("请输入路径图名称");
} }
if (!state.organizationSelectName) {
// if (!state.organizationSelectName){ message.destroy();
// message.destroy(); return message.warning("请选择归属组织");
// return message.warning("请选择归属组织"); }
// } if (!state.pathBgId) {
message.destroy();
return message.warning("请选择背景图");
}
// state.createLoading = true; // state.createLoading = true;
let obj = { let obj = {
routerId: state.editPathId, routerId: state.editPathId,

View File

@@ -616,7 +616,7 @@
<div style="width: 5px; display: inline-block"></div> <div style="width: 5px; display: inline-block"></div>
<span class="yi"></span> <span class="yi"></span>
<span class="zon">列表选项总数</span> <span class="zon">列表选项总数</span>
<span class="th">{{ tableData.length }}</span> <span class="th">{{ tableDataTotal }}</span>
<span class="yi"> </span> <span class="yi"> </span>
</div> </div>
</div> </div>
@@ -648,6 +648,7 @@
@change="pageChange" @change="pageChange"
class="pagination" class="pagination"
style="display: block" style="display: block"
v-if="tableDataTotal > 10"
/> />
</div> </div>
</div> </div>
@@ -1333,7 +1334,7 @@ export default {
fileList: [], fileList: [],
docChecked: true, docChecked: true,
currentPage: 1, currentPage: 1,
tableDataTotal: 100, tableDataTotal: -1,
pageSize: 10, pageSize: 10,
visiblene: false, visiblene: false,
sh: false, sh: false,
@@ -1494,6 +1495,7 @@ export default {
key: "opacation", key: "opacation",
width: 140, width: 140,
align: "center", align: "center",
fixed: "right",
scopedSlots: { customRender: "action" }, //引入的插槽 scopedSlots: { customRender: "action" }, //引入的插槽
customRender: (text) => { customRender: (text) => {
return ( return (
@@ -1642,13 +1644,14 @@ export default {
name: "", name: "",
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: 10, pageSize: 10,
routerId: 100, routerId: state.routerId,
}; };
api api
.getStudent(obj) .getStudent(obj)
.then((res) => { .then((res) => {
console.log("获取学员列表", res); console.log("获取学员列表", res);
let data = res.data.data.rows || null; let data = res.data.data.rows || null;
state.tableDataTotal = res.data.data.total;
state.tableData = []; state.tableData = [];
if (data.length) { if (data.length) {
for (let i in data) { for (let i in data) {
@@ -1656,7 +1659,7 @@ export default {
state.tableData.push({ state.tableData.push({
key: data[i].studentId, key: data[i].studentId,
com: data[i].userInfoBo.deptName, com: data[i].userInfoBo.deptName,
name: data[i].userInfoBo.userName, name: data[i].name,
gang: data[i].userInfoBo.jobName, gang: data[i].userInfoBo.jobName,
cur: data[i].currentChapterName || "0", cur: data[i].currentChapterName || "0",
jin: data[i].completeChapterCnt + "/" + data[i].totalChapterCnt, jin: data[i].completeChapterCnt + "/" + data[i].totalChapterCnt,
@@ -2086,6 +2089,7 @@ export default {
.then((res) => { .then((res) => {
console.log("添加学员成功", res); console.log("添加学员成功", res);
message.success("添加学员成功"); message.success("添加学员成功");
getStudent();
}) })
.catch((err) => { .catch((err) => {
console.log("添加学员失败", err); console.log("添加学员失败", err);

View File

@@ -576,7 +576,7 @@
<!-- 编辑多层项目弹窗 - end --> <!-- 编辑多层项目弹窗 - end -->
<!-- 创建多层子项目弹窗 --> <!-- 创建多层子项目弹窗 -->
<div> <div>
<a-modalbe <a-modal
v-model:visible="doublesonpro" v-model:visible="doublesonpro"
:title="null" :title="null"
@ok="closeModal3" @ok="closeModal3"
@@ -705,7 +705,7 @@
> >
</div> </div>
</div> </div>
</a-modalbe> </a-modal>
</div> </div>
<!-- 创建多层子项目弹窗 --> <!-- 创建多层子项目弹窗 -->
<!-- 编辑多层子项目弹窗 start--> <!-- 编辑多层子项目弹窗 start-->
@@ -2054,9 +2054,10 @@ export default {
console.log("点击发布"); console.log("点击发布");
let obj = { let obj = {
projectId: state.releaseProjectId, projectId: state.releaseProjectId,
type: 4,
}; };
api api
.releaseProject(obj) .handleProject(obj)
.then((res) => { .then((res) => {
console.log("发布成功", res); console.log("发布成功", res);
message.destroy(); message.destroy();
@@ -2081,7 +2082,7 @@ export default {
const recallProject = () => { const recallProject = () => {
let obj = { let obj = {
projectId: state.recallProjectId, projectId: state.recallProjectId,
type: 0, type: -4,
}; };
api api
.handleProject(obj) .handleProject(obj)

View File

@@ -672,6 +672,9 @@ export default {
// state.tableDataTotal = res.data.data.total; // state.tableDataTotal = res.data.data.total;
// return res.data.data.rows; // return res.data.data.rows;
} }
})
.catch((err) => {
console.log("获取学员失败", err);
}); });
}; };
getMember(); getMember();

View File

@@ -576,12 +576,33 @@
" "
> >
<div class="groupname" style="width: 42px">部门</div> <div class="groupname" style="width: 42px">部门</div>
<a-select <a-tree-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="valuestub"
:dropdown-style="{
maxHeight: '400px',
overflow: 'auto',
}"
placeholder="请选择部门"
:options="bum"
@change="handleChangeBum"
:tree-data="bum"
:fieldNames="{
children: 'treeChildList',
label: 'name',
value: 'id',
}"
></a-tree-select>
<!-- <a-select
v-model:value="valuestub" v-model:value="valuestub"
placeholder="请选择部门" placeholder="请选择部门"
:options="bum" :options="bum"
@change="handleChangeBum" @change="handleChangeBum"
/> /> -->
</div> </div>
<div <div
style=" style="
@@ -1645,7 +1666,7 @@
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, onMounted, watch } from "vue"; import { reactive, toRefs, onMounted, watch, computed } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
// import { CaretRightOutlined } from "@ant-design/icons-vue"; // import { CaretRightOutlined } from "@ant-design/icons-vue";
@@ -1685,6 +1706,7 @@ import { toDate } from "../../api/method";
import projSet from "../../components/Modals/projSet"; import projSet from "../../components/Modals/projSet";
import { overview } from "../../api/indexProjStu"; import { overview } from "../../api/indexProjStu";
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue"; import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
import { useStore } from "vuex";
export default { export default {
name: "taskPage", name: "taskPage",
components: { components: {
@@ -1709,6 +1731,7 @@ export default {
TwoDimensionalCode, TwoDimensionalCode,
}, },
setup() { setup() {
const store = useStore();
const state = reactive({ const state = reactive({
projectId: storage.get("projectId") projectId: storage.get("projectId")
? JSON.parse(storage.get("projectId")) ? JSON.parse(storage.get("projectId"))
@@ -1734,11 +1757,11 @@ export default {
}, },
], ],
bum: [ bum: [
{ // {
id: 1, // id: 1,
value: "", // value: "",
label: "", // label: "",
}, // },
], ],
changeGoods: [], //更改是否优秀的id数组 changeGoods: [], //更改是否优秀的id数组
choosedStageId: 1, // 选择的阶段id choosedStageId: 1, // 选择的阶段id
@@ -2362,6 +2385,10 @@ export default {
console.log("route:", router.query.id); console.log("route:", router.query.id);
// 输入接入 -- start -- // 输入接入 -- start --
// 资源归属 sourceBelongId 后续给接口
state.bum = computed(() => {
return store.state.orgtreeList ? store.state.orgtreeList : [];
});
//任务大纲渲染 //任务大纲渲染
const getTaskList = () => { const getTaskList = () => {
@@ -3192,6 +3219,7 @@ export default {
const getStu = (obj) => { const getStu = (obj) => {
let objf = obj || { let objf = obj || {
deptIds: [], //部门 deptIds: [], //部门
groupId: 0,
groupName: "", groupName: "",
name: "", name: "",
pageNo: state.currentPageStu, pageNo: state.currentPageStu,
@@ -3199,8 +3227,9 @@ export default {
projectId: state.projectId, projectId: state.projectId,
topFlag: "", topFlag: "",
}; };
getProjStu(objf).then((res) => { getProjStu(objf)
console.log(res.data, "获取学员列表"); .then((res) => {
console.log("获取学员列表", res.data);
if (res.data.code === 200) { if (res.data.code === 200) {
let leng = res.data.data.rows.length; let leng = res.data.data.rows.length;
state.total = res.data.data.total; state.total = res.data.data.total;
@@ -3210,6 +3239,9 @@ export default {
// studentData(); // studentData();
} }
} }
})
.catch((err) => {
console.log("获取学员列表失败", err);
}); });
}; };
//获取项目信息 //获取项目信息
@@ -3275,18 +3307,18 @@ export default {
: "-"; : "-";
// state.fileList=info.attach.split(",") // state.fileList=info.attach.split(",")
let d = info.attach.indexOf(","); let d = info.attach.indexOf(",");
console.log(info.attach, "xgo", info.attach.length); // console.log(info.attach, "xgo", info.attach.length);
if (info.attach.length == 0) { if (info.attach.length == 0) {
return; return;
} else if (info.attach.length !== 0 && d == -1) { } else if (info.attach.length !== 0 && d == -1) {
return; return;
} else { } else {
console.log(info.attach, "xgo"); // console.log(info.attach, "xgo");
// let str = JSON.parse(info.attach) // let str = JSON.parse(info.attach)
// console.log("赚回来",str) // console.log("赚回来",str)
// let luj = info.attach.split(",") // let luj = info.attach.split(",")
let luj = info.attach; let luj = info.attach;
console.log("lulj", luj); // console.log("lulj", luj);
console.log("赚回来", JSON.parse(luj)); console.log("赚回来", JSON.parse(luj));
state.fileList = JSON.parse(luj); state.fileList = JSON.parse(luj);
// state.fileList = luj // state.fileList = luj
@@ -3686,6 +3718,7 @@ export default {
.then((res) => { .then((res) => {
console.log("添加学员成功", res); console.log("添加学员成功", res);
message.success("添加学员成功"); message.success("添加学员成功");
getStu();
}) })
.catch((err) => { .catch((err) => {
console.log("添加学员失败", err); console.log("添加学员失败", err);