mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-22 01:06:45 +08:00
Merge remote-tracking branch 'origin/manage-release' into release
This commit is contained in:
@@ -29,6 +29,7 @@ export const studentProcess = (obj) => http.get('/admin/project/studentProcess',
|
||||
|
||||
//是否优秀学员
|
||||
export const topStudent = (obj) => http.post('/admin/project/topStudent', obj)
|
||||
export const updateStudent = (obj) => http.post('/admin/student/updateStudent', obj)
|
||||
|
||||
//项目概览
|
||||
export const overview = (obj) => http.get('/admin/project/overview', { params: obj })
|
||||
|
||||
@@ -264,7 +264,7 @@ export default {
|
||||
workEnclosureAddress: state.attach
|
||||
? state.attach
|
||||
: "",
|
||||
workId: props.edit ? props.EditWorkId : 0,
|
||||
workId: props.EditWorkId >0 ? props.EditWorkId:0 ,
|
||||
workName: state.name,
|
||||
workRequirement: state.workRequirement,
|
||||
};
|
||||
|
||||
@@ -538,11 +538,13 @@ export default {
|
||||
//TODO缺少paperName字段
|
||||
state.test.examinationTestName = state.paperName;
|
||||
//考试推送
|
||||
state.test.targetId = 0;
|
||||
state.test.type = 0;
|
||||
if (props.isLevel == 1) {
|
||||
state.test.targetId = props.routerId;
|
||||
state.test.type = 2;
|
||||
state.test.targetId = 0;
|
||||
state.test.type = 0;
|
||||
state.test.chapterId=0;
|
||||
if(props.isLevel == 1){
|
||||
state.test.targetId = props.routerId;
|
||||
state.test.chapterId = props.isactive;
|
||||
state.test.type = 2;
|
||||
|
||||
} else if (props.isLevel == 2) {
|
||||
state.test.targetId = props.projectId;
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>资源归属:</span></div>
|
||||
<div class="setc_main">
|
||||
<span style="color: #999999">{{ projectInfo.sourceBelongName }}</span>
|
||||
<span style="color: #999999">{{ (projectInfo.sourceBelongFullName || '')+projectInfo.sourceBelongName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="main">
|
||||
<a-spin v-if="loading" :spinning="loading"/>
|
||||
<div v-if="!loading" class="main">
|
||||
<div class="stuinfor">
|
||||
<div class="portrait">
|
||||
<img src="../../assets/images/studentimg/character.png" />
|
||||
@@ -176,6 +177,7 @@ export default {
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
loading:false,
|
||||
userName: null, //用户名
|
||||
deptName: null, //部门
|
||||
jobName: null, //岗位
|
||||
@@ -302,11 +304,13 @@ export default {
|
||||
state.stageList = array;
|
||||
};
|
||||
const check = () => {
|
||||
state.loading = true
|
||||
let obj = {
|
||||
projectId: 37,
|
||||
studentId: 3,
|
||||
projectId: props.projectId,
|
||||
studentId: props.checkStuId,
|
||||
};
|
||||
studentProcess(obj).then((res) => {
|
||||
state.loading = false
|
||||
console.log("查看了学员", res.data.data);
|
||||
let result = res.data.data;
|
||||
state.userName = result.userInfoBo.userName;
|
||||
|
||||
@@ -43,9 +43,9 @@ const id = computed(() => {
|
||||
return props.value
|
||||
})
|
||||
|
||||
function change(key, obj) {
|
||||
console.log(obj[0], key, props.value);
|
||||
function change(key, obj, {triggerNode: {props: {namePath}}}) {
|
||||
emit('update:name', obj[0])
|
||||
emit('update:fullName', namePath)
|
||||
emit('update:value', key)
|
||||
}
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ function change(e, l) {
|
||||
memberParam.value.page = 1
|
||||
isOpen.value = false
|
||||
Array.isArray(l) && (selectOptions.value = l)
|
||||
Array.isArray(selectOptions.value) && emit('onChange', e, l, selectOptions.value.find(e => e.departId)?.departId, selectOptions.value.find(e => e.departId)?.departName)
|
||||
Array.isArray(selectOptions.value) && emit('onChange', e, l, selectOptions.value.find(e => e.departId)?.departId, selectOptions.value.find(e => e.departId)?.departName, selectOptions.value.find(e => e.departId)?.orgName)
|
||||
if (Array.isArray(l)) {
|
||||
emit('update:name', l.map(t => t.label).join(','))
|
||||
emit('update:value', l.map(t => t.value).join(','))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -76,13 +76,13 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items" v-if="detail.sceneId">
|
||||
<div class="mbl_items" v-if="detail.sceneContent">
|
||||
<div class="item_nam">
|
||||
<span style="margin-right: 14px">场景:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="select i7_input">
|
||||
{{ filterSenceTxt(detail.sceneId) }}
|
||||
{{ detail.sceneContent }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -123,10 +123,10 @@
|
||||
<div class="i12_box1" style="position: relative" v-for="(item, index) in detail.attach" :key="index">
|
||||
<div class="file_img">
|
||||
<img v-if="
|
||||
item.indexOf('jpg') !== -1 ||
|
||||
item.indexOf('jpeg') !== -1 ||
|
||||
item.indexOf('png') !== -1
|
||||
" src="@/assets/images/coursewareManage/pngpic.png" />
|
||||
item.indexOf('jpg') !== -1 ||
|
||||
item.indexOf('jpeg') !== -1 ||
|
||||
item.indexOf('png') !== -1
|
||||
" src="@/assets/images/coursewareManage/pngpic.png" />
|
||||
<div v-else>
|
||||
<img v-if="item.indexOf('doc') !== -1" src="@/assets/images/coursewareManage/docpic.png" />
|
||||
<div v-else>
|
||||
@@ -160,13 +160,13 @@
|
||||
left: 72px;
|
||||
">
|
||||
{{
|
||||
item.indexOf("-") !== -1
|
||||
? item.slice(
|
||||
item.lastIndexOf("/") + 1,
|
||||
item.lastIndexOf("-")
|
||||
) + item.slice(item.lastIndexOf("."))
|
||||
: item
|
||||
}}
|
||||
item.indexOf("-") !== -1
|
||||
? item.slice(
|
||||
item.lastIndexOf("/") + 1,
|
||||
item.lastIndexOf("-")
|
||||
) + item.slice(item.lastIndexOf("."))
|
||||
: item
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -154,10 +154,10 @@
|
||||
<!-- />-->
|
||||
<a-tree-select style="width: 440px" placeholder="请选择内容分类" :treeDefaultExpandAll="true"
|
||||
:getPopupContainer="
|
||||
(triggerNode) => {
|
||||
return triggerNode.parentNode || document.body;
|
||||
}
|
||||
" @change="changeTreeSelectValue" v-model:value="fen_lei" :tree-data="options2222">
|
||||
(triggerNode) => {
|
||||
return triggerNode.parentNode || document.body;
|
||||
}
|
||||
" @change="changeTreeSelectValue" v-model:value="fen_lei" :tree-data="options2222">
|
||||
</a-tree-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -192,26 +192,34 @@
|
||||
</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 />
|
||||
<div class="i1_input">
|
||||
<a-input v-model:value="chang_jin" maxlength="50"
|
||||
style="width: 440px; height: 40px; border-radius: 8px" placeholder="请输入场景" />
|
||||
<div class="inp_num">
|
||||
<span style="color: #c7cbd2">
|
||||
{{ chang_jin.length }}/50
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</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 />
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
-->
|
||||
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<span style="margin-right: 14px">内容标签</span>
|
||||
@@ -359,7 +367,7 @@ export default defineComponent({
|
||||
fen_lei: null,
|
||||
fen_lei1: null,
|
||||
feng_mian_1: null,
|
||||
chang_jin: null,
|
||||
chang_jin: "",
|
||||
tags_val_single: "",
|
||||
tags_val: [],
|
||||
qdms_inputV6: "",
|
||||
@@ -564,7 +572,7 @@ export default defineComponent({
|
||||
state.fen_lei = null;
|
||||
state.fen_lei1 = null;
|
||||
state.feng_mian_1 = null;
|
||||
state.chang_jin = null;
|
||||
state.chang_jin = "";
|
||||
state.tags_val_single = "";
|
||||
state.tags_val = [];
|
||||
state.qdms_inputV6 = "";
|
||||
@@ -751,7 +759,7 @@ export default defineComponent({
|
||||
targetUser: state.qdms_inputV2,
|
||||
meaning: state.qdms_inputV3,
|
||||
categoryId: state.fen_lei,
|
||||
sceneId: state.chang_jin,
|
||||
sceneContent: state.chang_jin,
|
||||
tips: state.tags_val ? state.tags_val.join(",") : null,
|
||||
teacherId: state.member.value,
|
||||
teacher: state.member.name,
|
||||
@@ -841,7 +849,7 @@ export default defineComponent({
|
||||
state.qdms_inputV3 = item.meaning;
|
||||
state.fen_lei = String(item.categoryId);
|
||||
state.fen_lei1 = changeTreeSelectValue(String(item.categoryId));
|
||||
state.chang_jin = String(item.sceneId);
|
||||
state.chang_jin = String(item.sceneContent ? item.sceneContent : '');
|
||||
state.tags_val = item.tips ? item.tips.split(",") : [];
|
||||
state.qdms_inputV6 = item.intro;
|
||||
state.member = { value: item.teacherId, name: item.teacher };
|
||||
|
||||
@@ -536,7 +536,7 @@
|
||||
<div class="setc_name"><span>资源归属:</span></div>
|
||||
<div class="setc_main">
|
||||
<span style="color: #999999">{{
|
||||
projectInfo.sourceBelongName
|
||||
(projectInfo.sourceBelongFullName || '') + projectInfo.sourceBelongName
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,14 +3,15 @@
|
||||
<div class="projectAdd">
|
||||
<div class="header">
|
||||
<span class="title"
|
||||
>{{ projectInfo.projectId ? "编辑" : "创建"
|
||||
>{{
|
||||
projectInfo.projectId ? "编辑" : "创建"
|
||||
}}{{ ptojectType == "3" ? "班级" : "项目" }}</span
|
||||
>
|
||||
<div
|
||||
@click="backPage"
|
||||
style="cursor: pointer"
|
||||
to="/projectmanage"
|
||||
class="goback"
|
||||
@click="backPage"
|
||||
style="cursor: pointer"
|
||||
to="/projectmanage"
|
||||
class="goback"
|
||||
>
|
||||
<span class="return"></span><span class="returntext">返回</span>
|
||||
</div>
|
||||
@@ -20,8 +21,8 @@
|
||||
<div class="name" v-if="projectInfo.parentName">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<div class="inname">项目归属</div>
|
||||
</div>
|
||||
@@ -34,8 +35,8 @@
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<div class="inname">
|
||||
{{ ptojectType == 3 ? "班级名称" : "项目名称" }}
|
||||
@@ -43,27 +44,27 @@
|
||||
</div>
|
||||
<div class="in">
|
||||
<NameInput
|
||||
placeholder="请输入项目名称"
|
||||
v-model:value="projectInfo.name"
|
||||
v-model:validate="projectInfo.validate"
|
||||
:maxlength="30"
|
||||
show-count
|
||||
:id="projectInfo.projectId"
|
||||
placeholder="请输入项目名称"
|
||||
v-model:value="projectInfo.name"
|
||||
v-model:validate="projectInfo.validate"
|
||||
:maxlength="30"
|
||||
show-count
|
||||
:id="projectInfo.projectId"
|
||||
></NameInput>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name flex-top">
|
||||
<div class="namebox" style="margin-top: 10px">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<div class="inname">封面图</div>
|
||||
</div>
|
||||
<div class="in select" style="flex: 1; display: flex">
|
||||
<div
|
||||
:class="`box ${projectInfo.picUrl === src.value ? 'active' : ''}`"
|
||||
style="
|
||||
:class="`box ${projectInfo.picUrl === src.value ? 'active' : ''}`"
|
||||
style="
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 5px;
|
||||
@@ -71,19 +72,19 @@
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-for="(src, index) in projectPic"
|
||||
:key="index"
|
||||
@click="() => (projectInfo.picUrl = src.value)"
|
||||
v-for="(src, index) in projectPic"
|
||||
:key="index"
|
||||
@click="() => (projectInfo.picUrl = src.value)"
|
||||
>
|
||||
<img
|
||||
style="
|
||||
style="
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin-bottom: 4px;
|
||||
margin-right: 4px;
|
||||
"
|
||||
:src="src.value"
|
||||
alt="avatar"
|
||||
:src="src.value"
|
||||
alt="avatar"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -91,64 +92,65 @@
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<div class="inname">项目时间</div>
|
||||
</div>
|
||||
|
||||
<div class="in">
|
||||
<a-range-picker
|
||||
separator="至"
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
:disabled-date="disabledDate"
|
||||
v-model:value="projectInfo.rangeTime"
|
||||
style="width: 100%; height: 40px; border-radius: 5px"
|
||||
valueFormat="YYYY-MM-DD HH:mm"
|
||||
@change="timeChange"
|
||||
:disabled="viewDetail ? true : false"
|
||||
separator="至"
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
:disabled-date="disabledDate"
|
||||
v-model:value="projectInfo.rangeTime"
|
||||
style="width: 100%; height: 40px; border-radius: 5px"
|
||||
valueFormat="YYYY-MM-DD HH:mm"
|
||||
@change="timeChange"
|
||||
:disabled="viewDetail ? true : false"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<div class="inname">项目经理</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<ProjectManager
|
||||
v-model:value="projectInfo.managerId"
|
||||
v-model:name="projectInfo.manager"
|
||||
@onChange="managerChange"
|
||||
mode="multiple"
|
||||
v-model:value="projectInfo.managerId"
|
||||
v-model:name="projectInfo.manager"
|
||||
@onChange="managerChange"
|
||||
mode="multiple"
|
||||
></ProjectManager>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<div class="inname">资源归属</div>
|
||||
</div>
|
||||
|
||||
<div class="in select">
|
||||
<OrgClass
|
||||
v-model:value="projectInfo.sourceBelongId"
|
||||
v-model:name="projectInfo.sourceBelongName"
|
||||
v-model:value="projectInfo.sourceBelongId"
|
||||
v-model:name="projectInfo.sourceBelongName"
|
||||
v-model:fullName="projectInfo.sourceBelongFullName"
|
||||
></OrgClass>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<div class="inname">项目级别</div>
|
||||
</div>
|
||||
@@ -159,8 +161,8 @@
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<div class="inname">培训分类</div>
|
||||
</div>
|
||||
@@ -171,15 +173,15 @@
|
||||
<div class="name">
|
||||
<div class="namebox">
|
||||
<img
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
class="nameimg"
|
||||
src="../../assets/images/basicinfo/asterisk.png"
|
||||
/>
|
||||
<div class="inname">是否BOEU实施</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-radio-group
|
||||
v-model:value="projectInfo.boeFlag"
|
||||
:disabled="viewDetail ? true : false"
|
||||
v-model:value="projectInfo.boeFlag"
|
||||
:disabled="viewDetail ? true : false"
|
||||
>
|
||||
<a-radio :style="radioStyle" :value="1">是</a-radio>
|
||||
<a-radio :style="radioStyle" :value="0">否</a-radio>
|
||||
@@ -192,16 +194,16 @@
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-checkbox
|
||||
v-model:checked="courseSyncFlag"
|
||||
:disabled="viewDetail ? true : false"
|
||||
><span
|
||||
v-model:checked="courseSyncFlag"
|
||||
:disabled="viewDetail ? true : false"
|
||||
><span
|
||||
style="
|
||||
width: 100%;
|
||||
color: rgba(109, 117, 132, 1);
|
||||
font-size: 14px;
|
||||
"
|
||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||
></a-checkbox
|
||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||
></a-checkbox
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@@ -211,12 +213,12 @@
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-textarea
|
||||
v-model:value="projectInfo.remark"
|
||||
style="height: 80px"
|
||||
placeholder="请输入说明"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:disabled="viewDetail ? true : false"
|
||||
v-model:value="projectInfo.remark"
|
||||
style="height: 80px"
|
||||
placeholder="请输入说明"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:disabled="viewDetail ? true : false"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -235,18 +237,18 @@
|
||||
<div class="inname" style="width: 50px">模版</div>
|
||||
<div class="in select" style="margin-left: 2px">
|
||||
<a-select
|
||||
:getPopupContainer="
|
||||
:getPopupContainer="
|
||||
(triggerNode) => {
|
||||
return triggerNode.parentNode || document.body;
|
||||
}
|
||||
"
|
||||
placeholder="请选择模版"
|
||||
:size="size"
|
||||
style="width: 100%"
|
||||
:options="classifyList5"
|
||||
@change="classificationChange5"
|
||||
@popupScroll="templateScroll"
|
||||
:fieldNames="{
|
||||
placeholder="请选择模版"
|
||||
:size="size"
|
||||
style="width: 100%"
|
||||
:options="classifyList5"
|
||||
@change="classificationChange5"
|
||||
@popupScroll="templateScroll"
|
||||
:fieldNames="{
|
||||
label: 'name',
|
||||
value: 'projectTemplateId',
|
||||
}"
|
||||
@@ -260,33 +262,33 @@
|
||||
<div class="btn">
|
||||
<a-button @click="backPage" class="btn2">取消</a-button>
|
||||
<a-button
|
||||
:loading="loading"
|
||||
v-on:click="createProject"
|
||||
type="primary"
|
||||
class="btn1"
|
||||
style="margin-left: 20px"
|
||||
>确定
|
||||
:loading="loading"
|
||||
v-on:click="createProject"
|
||||
type="primary"
|
||||
class="btn1"
|
||||
style="margin-left: 20px"
|
||||
>确定
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { onMounted, reactive, toRefs, watch } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import {onMounted, reactive, toRefs, watch} from "vue";
|
||||
import {message} from "ant-design-vue";
|
||||
import {useRoute, useRouter} from "vue-router";
|
||||
import * as api from "../../api/index";
|
||||
import { useStore } from "vuex";
|
||||
import {useStore} from "vuex";
|
||||
// import ProjectClass from "@/components/project/ProjectClass";
|
||||
import TrainClass from "@/components/project/TrainClass";
|
||||
import OrgClass from "@/components/project/OrgClass";
|
||||
import ProjectManager from "@/components/project/ProjectManagerNew";
|
||||
import NameInput from "@/components/project/NameInput";
|
||||
import ProjectLevel from "@/components/project/ProjectLevel";
|
||||
import { changeOwnership, scrollLoad } from "@/api/method";
|
||||
import { storage } from "../../api/storage";
|
||||
import {changeOwnership, scrollLoad} from "@/api/method";
|
||||
import {storage} from "../../api/storage";
|
||||
import * as api2 from "../../api/indexAudit";
|
||||
import { validateName } from "@/api/index1";
|
||||
import {validateName} from "@/api/index1";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
export default {
|
||||
@@ -304,7 +306,7 @@ export default {
|
||||
const routers = useRoute();
|
||||
const router = useRouter();
|
||||
const state = reactive({
|
||||
loading:false,
|
||||
loading: false,
|
||||
currentPage: 1, //当前页
|
||||
tableDataTotal: -1, //模版列表总数
|
||||
pageSize: 10, //每页10条数据
|
||||
@@ -351,10 +353,10 @@ export default {
|
||||
state.projectInfo.parentId = routers.query.parentId;
|
||||
state.projectInfo.projectId = routers.query.projectId;
|
||||
(state.projectInfo.projectId || state.projectInfo.parentId) &&
|
||||
api
|
||||
api
|
||||
.getProjectDetail({
|
||||
projectId:
|
||||
state.projectInfo.projectId || state.projectInfo.parentId,
|
||||
state.projectInfo.projectId || state.projectInfo.parentId,
|
||||
})
|
||||
.then((res) => {
|
||||
state.projectInfo = {
|
||||
@@ -380,8 +382,8 @@ export default {
|
||||
if (res.rows && res.rows.length > 0) {
|
||||
let i = res.rows.length;
|
||||
state.auditDescription = res.rows[i - 1].description
|
||||
? res.rows[i - 1].description
|
||||
: "-";
|
||||
? res.rows[i - 1].description
|
||||
: "-";
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -490,24 +492,26 @@ export default {
|
||||
api.createProject(state.projectInfo).then((res) => {
|
||||
state.loading = false
|
||||
state.projectInfo.projectId ||
|
||||
changeOwnership("project", res.data.data.projectId, [
|
||||
{ id: res.data.data.createId, name: res.data.data.createName },
|
||||
]);
|
||||
changeOwnership("project", res.data.data.projectId, [
|
||||
{id: res.data.data.createId, name: res.data.data.createName},
|
||||
]);
|
||||
message.destroy();
|
||||
message.success(state.projectInfo.projectId ? "编辑成功" : "创建成功");
|
||||
// router.back();
|
||||
router.push({
|
||||
path: "/taskpage",
|
||||
query: { projectId: res.data.data.projectId },
|
||||
query: {projectId: res.data.data.projectId},
|
||||
});
|
||||
storage.set("projectId", res.data.data.projectId);
|
||||
});
|
||||
};
|
||||
|
||||
function managerChange(e, l, d, t) {
|
||||
function managerChange(e, l, d, t, orgName) {
|
||||
state.projectInfo.sourceBelongId = d
|
||||
state.projectInfo.sourceBelongName = t
|
||||
state.projectInfo.sourceBelongFullName = orgName
|
||||
}
|
||||
|
||||
const disabledDate = (current) => {
|
||||
return current && current < dayjs().startOf('day');
|
||||
};
|
||||
|
||||
@@ -231,6 +231,7 @@
|
||||
<OrgClass
|
||||
v-model:value="projectInfo.sourceBelongId"
|
||||
v-model:name="projectInfo.sourceBelongName"
|
||||
v-model:fullName="projectInfo.sourceBelongFullName"
|
||||
></OrgClass>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1229,22 +1230,13 @@ export default {
|
||||
};
|
||||
//确认复制
|
||||
const copyProject = () => {
|
||||
let obj = {
|
||||
state.tableLoading = true
|
||||
api.handleProject({
|
||||
projectId: state.copyProjectId,
|
||||
type: 2,
|
||||
};
|
||||
api
|
||||
.handleProject(obj)
|
||||
.then((res) => {
|
||||
console.log("复制成功", res);
|
||||
message.destroy();
|
||||
message.success("复制成功");
|
||||
state.copyModal = false;
|
||||
getTableDate();
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("复制失败", err);
|
||||
});
|
||||
}).then(() => getTableDate())
|
||||
message.success("复制成功");
|
||||
state.copyModal = false;
|
||||
};
|
||||
//打开提交审核弹窗
|
||||
const showReviewModal = (projectId) => {
|
||||
@@ -1803,9 +1795,10 @@ export default {
|
||||
}
|
||||
);
|
||||
|
||||
function managerChange(e, l, d, t) {
|
||||
function managerChange(e, l, d, t,orgName) {
|
||||
state.projectInfo.sourceBelongId = d
|
||||
state.projectInfo.sourceBelongName = t
|
||||
state.projectInfo.sourceBelongFullName = orgName
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
</div>
|
||||
|
||||
<div class="in select">
|
||||
<OrgClass v-model:value="projectInfo.sourceBelongId" v-model:name="projectInfo.sourceBelongName"></OrgClass>
|
||||
<OrgClass v-model:value="projectInfo.sourceBelongId" v-model:name="projectInfo.sourceBelongName" v-model:fullName="projectInfo.sourceBelongFullName"></OrgClass>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
@@ -313,9 +313,10 @@ export default {
|
||||
});
|
||||
};
|
||||
|
||||
function managerChange(e, l, d, t) {
|
||||
function managerChange(e, l, d, t,orgName) {
|
||||
state.projectInfo.sourceBelongId = d
|
||||
state.projectInfo.sourceBelongName = t
|
||||
state.projectInfo.sourceBelongFullName = orgName
|
||||
}
|
||||
const disabledDate = (current) => {
|
||||
return current && current < dayjs().startOf('day');
|
||||
|
||||
@@ -688,7 +688,7 @@
|
||||
<div style="display: flex; height: 20px"></div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
|
||||
|
||||
<a-tab-pane key="3" tab="学员">
|
||||
<div class="split"></div>
|
||||
<div class="content3">
|
||||
@@ -700,7 +700,24 @@
|
||||
:columns="stuColumns"
|
||||
:stage="stage"
|
||||
:visable ="tabFlag"
|
||||
></TableStudent>
|
||||
>
|
||||
<template #extension="{data:{record}}">
|
||||
<div style="display:flex">
|
||||
<div
|
||||
@click="showStudent(record)"
|
||||
style="color: #4ea6ff; font-size: 14px; text-align: center;margin-left: 20px;cursor: pointer;"
|
||||
>
|
||||
查看
|
||||
</div>
|
||||
<div
|
||||
@click="settingTopFlag(record)"
|
||||
style="color: #4ea6ff; font-size: 14px; text-align: center;margin-left: 20px;cursor: pointer;"
|
||||
>
|
||||
{{record.topFlag?'取消优秀':'优秀学员'}}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</TableStudent>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</div>
|
||||
@@ -1275,7 +1292,7 @@
|
||||
:closable="close"
|
||||
wrapClassName="canclestu"
|
||||
centered="true"
|
||||
@cancel="closeModal1"
|
||||
@cancel="cancelyou"
|
||||
>
|
||||
<div class="delete">
|
||||
<div class="del_header"></div>
|
||||
@@ -1288,11 +1305,11 @@
|
||||
<span>您是否授予此学员优秀学员称号?</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1">
|
||||
<div class="btnText" @click="cancelyou">取消</div>
|
||||
<div class="del_btn btn1" @click="cancelyou">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2">
|
||||
<div class="btnText" @click="closeModal1">确定</div>
|
||||
<div class="del_btn btn2" @click="closeModal1">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1320,11 +1337,11 @@
|
||||
<span>您是否取消此学员优学员称号?</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1">
|
||||
<div class="btnText" @click="cancelcanyou">取消</div>
|
||||
<div class="del_btn btn1" @click="cancelcanyou">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2">
|
||||
<div class="btnText" @click="closeModal3">确定</div>
|
||||
<div class="del_btn btn2" @click="closeModal3">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1678,7 +1695,7 @@ import {
|
||||
getGroupList,
|
||||
deleteGroup,
|
||||
editGroup,
|
||||
topStudent,
|
||||
updateStudent,
|
||||
} from "../../api/indexProjStu";
|
||||
import { message, Modal } from "ant-design-vue";
|
||||
import * as apitl from "../../api/index";
|
||||
@@ -1725,6 +1742,7 @@ export default {
|
||||
const store = useStore();
|
||||
const route = useRoute();
|
||||
const state = reactive({
|
||||
editRecord:{},
|
||||
tabFlag:true,
|
||||
stage: [],
|
||||
stuColumns: [
|
||||
@@ -2559,26 +2577,12 @@ export default {
|
||||
};
|
||||
//点击确定授予优秀学员后
|
||||
const closeModal1 = () => {
|
||||
let obj = {
|
||||
projectId: state.projectId,
|
||||
studentIds: state.changeGoods,
|
||||
topFlag: 1,
|
||||
};
|
||||
topStudent(obj)
|
||||
.then((res) => {
|
||||
console.log(`优秀学员授予成功${res.data}`);
|
||||
message.success("优秀学员称号授予成功");
|
||||
|
||||
getStu();
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(`优秀学员授予成功${err}`);
|
||||
message.warning("优秀学员称号授予失败");
|
||||
});
|
||||
state.changeGoods = [];
|
||||
state.editRecord.topFlag = 1
|
||||
updateStudent(state.editRecord)
|
||||
state.canclestu = false;
|
||||
message.success("优秀学员称号授予成功");
|
||||
};
|
||||
|
||||
|
||||
//点击取消授予优秀学员后
|
||||
const cancelyou = () => {
|
||||
state.changeGoods = [];
|
||||
@@ -2589,24 +2593,10 @@ export default {
|
||||
};
|
||||
//点击确定取消优秀学员称号
|
||||
const closeModal3 = () => {
|
||||
let obj = {
|
||||
projectId: state.projectId,
|
||||
studentIds: state.changeGoods,
|
||||
topFlag: 0,
|
||||
};
|
||||
topStudent(obj)
|
||||
.then((res) => {
|
||||
console.log(`取消优秀学员称号成功${res}`);
|
||||
message.success("优秀学员称号取消成功");
|
||||
|
||||
getStu();
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(`取消优秀学员称号失败${err}`);
|
||||
message.warning("优秀学员称号取消失败");
|
||||
});
|
||||
state.changeGoods = [];
|
||||
state.editRecord.topFlag = 0
|
||||
updateStudent(state.editRecord)
|
||||
state.canclestu1 = false;
|
||||
message.success("优秀学员称号取消成功");
|
||||
};
|
||||
//点击取消取消授予优秀学员后
|
||||
const cancelcanyou = () => {
|
||||
@@ -3071,8 +3061,8 @@ export default {
|
||||
|
||||
//tabs切换
|
||||
const tabsChange = (e) => {
|
||||
|
||||
|
||||
|
||||
|
||||
//排行榜
|
||||
if (e == 6) {
|
||||
//获取进度榜
|
||||
@@ -3390,7 +3380,7 @@ export default {
|
||||
let end = info.endTime;
|
||||
state.tstartTime = info.beginTime;
|
||||
state.tendTime = info.endTime;
|
||||
state.tsourceBelong = info.sourceBelongName;
|
||||
state.tsourceBelong = (info.sourceBelongFullName || '')+info.sourceBelongName;
|
||||
state.parentId = info.parentId;
|
||||
state.name = info.name;
|
||||
state.startTime = start;
|
||||
@@ -3417,7 +3407,7 @@ export default {
|
||||
|
||||
// state.attach = info.attach;
|
||||
// state.templateId = info.templateId;
|
||||
state.sourceBelong = info.sourceBelongName;
|
||||
state.sourceBelong = (info.sourceBelongFullName || '')+info.sourceBelongName;
|
||||
// state.fileList=info.attach.split(",")
|
||||
let d = info.attach.indexOf(",");
|
||||
// console.log(info.attach, "xgo", info.attach.length);
|
||||
@@ -4024,9 +4014,19 @@ export default {
|
||||
};
|
||||
state.codeInfo = obj;
|
||||
};
|
||||
function settingTopFlag(record){
|
||||
record.topFlag?(state.canclestu1 = true):(state.canclestu=true)
|
||||
state.editRecord = record
|
||||
}
|
||||
function showStudent(record){
|
||||
state.Seevisible = true
|
||||
state.checkStuId = record.studentId
|
||||
}
|
||||
return {
|
||||
...toRefs(state),
|
||||
...toRefs(levelList),
|
||||
showStudent,
|
||||
settingTopFlag,
|
||||
totask,
|
||||
tostudent,
|
||||
showModal,
|
||||
@@ -4037,7 +4037,7 @@ export default {
|
||||
closeModal2,
|
||||
showModal3,
|
||||
closeModal3,
|
||||
|
||||
|
||||
showDeleteOne,
|
||||
closeDeleteOne,
|
||||
showTime,
|
||||
|
||||
@@ -119,6 +119,7 @@
|
||||
<OrgClass
|
||||
v-model:value="projectInfo.sourceBelongId"
|
||||
v-model:name="projectInfo.sourceBelongName"
|
||||
v-model:fullName="projectInfo.sourceBelongFullName"
|
||||
></OrgClass>
|
||||
</div>
|
||||
</div>
|
||||
@@ -296,9 +297,10 @@ const createProject = () => {
|
||||
});
|
||||
};
|
||||
|
||||
function managerChange(e, l, d, t) {
|
||||
function managerChange(e, l, d, t,orgName) {
|
||||
projectInfo.value.valuesourceBelongId = d;
|
||||
projectInfo.value.sourceBelongName = t;
|
||||
projectInfo.value.sourceBelongFullName = orgName
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
Reference in New Issue
Block a user