Merge branch 'develop' of ssh://gitlab.dongwu-inc.com:10022/BOE/fe-manage into develop

This commit is contained in:
zhangyc
2022-12-16 17:47:35 +08:00
12 changed files with 193 additions and 156 deletions

View File

@@ -244,7 +244,7 @@
<div class="main_item">
<div class="main_item">
<div class="signbox">
<span style="margin-right: 3px">考试排序</span>
<span style="margin-right: 3px">试题排列</span>
</div>
<div class="btnbox">
<a-radio-group

View File

@@ -164,19 +164,27 @@ export default {
.queryAppraiseDetailById({ assessmentId: props.assessmentId })
.then((res) => {
console.log("查询评估xinxi ", res);
let info = res.data.data;
let n1 = info.essayQuestionVoList
? Number(info.essayQuestionVoList.length)
: 0 ;
let n2 = info.multipleStemVoList
? Number(info.multipleStemVoList.length)
: 0;
let n3 = info.scoringQuestionVoList
? Number(info.scoringQuestionVoList.length)
: 0;
let n4 = info.singleStemVoList
? Number(info.singleStemVoList.length)
: 0;
let num = n1 + n2 + n3 +n4;
let obj = {
assessmentId: info.assessmentId,
name: info.assessmentName,
num: info.essayQuestionVoList
? Number(info.essayQuestionVoList.length)
: 0 + info.multipleStemVoList
? Number(info.multipleStemVoList.length)
: 0 + info.scoringQuestionVoList
? Number(info.scoringQuestionVoList.length)
: 0 + info.singleStemVoList
? Number(info.singleStemVoList.length)
: 0,
num: num,
creator: info.createUser ? info.createUser : "-",
time: dayjs(info.createTime).format("YYYY-MM-DD"),
};

View File

@@ -182,18 +182,25 @@ export default {
let data = tableData;
let array = [];
data.map((value, index) => {
let n1 = value.essayQuestionVoList
? Number(value.essayQuestionVoList.length)
: 0 ;
let n2 = value.multipleStemVoList
? Number(value.multipleStemVoList.length)
: 0;
let n3 = value.scoringQuestionVoList
? Number(value.scoringQuestionVoList.length)
: 0;
let n4 = value.singleStemVoList
? Number(value.singleStemVoList.length)
: 0;
let num = n1 + n2 + n3 +n4;
let obj = {
key: index,
assessmentId: value.assessmentId,
num:value.essayQuestionVoList
? Number(value.essayQuestionVoList.length)
: 0 + value.multipleStemVoList
? Number(value.multipleStemVoList.length)
: 0 + value.scoringQuestionVoList
? Number(value.scoringQuestionVoList.length)
: 0 + value.singleStemVoList
? Number(value.singleStemVoList.length)
: 0,
num: num,
name: value.assessmentName ? value.assessmentName : "-",
creator: value.createUser ? value.createUser : "-",
time: dayjs(value.createTime).format("YYYY-MM-DD"),

View File

@@ -330,8 +330,8 @@ export default {
gangw: value.userInfoBo.jobName, //岗位
completeStageCnt: value.completeStageCnt, //当前完成阶段数
totalStageCnt: value.totalStageCnt, //总阶段数
//progress: value.completeStageCnt + "/" + value.totalStageCnt, TODO接口返回value.completeStageCnt值不对
progress: 0 + "/" + value.totalStageCnt,
progress: value.completeStageCnt + "/" + value.totalStageCnt,
stutime: toDate(value.beginStudyTime / 1000, "Y-M-D"), //开始学习时间
};

View File

@@ -43,9 +43,15 @@
</div>
</div>
<div class="set_content">
<div class="setc_name"><span>项目说明</span></div>
<div class="setc_name"><span>项目级别</span></div>
<div class="setc_main">
<span style="color: #999999">{{ projectInfo.remark }}</span>
<ProjectLevel v-model:value="projectInfo.level" :tag="true"></ProjectLevel>
</div>
</div>
<div class="set_content">
<div class="setc_name"><span>培训体系</span></div>
<div class="setc_main">
<TrainClass v-model:value="projectInfo.systemId" :tag="true"></TrainClass>
</div>
</div>
<div class="set_content">
@@ -66,18 +72,6 @@
></a-switch>
</div>
</div>
<div class="set_content">
<div class="setc_name"><span>项目级别</span></div>
<div class="setc_main">
<ProjectLevel v-model:value="projectInfo.level" :disabled="true"></ProjectLevel>
</div>
</div>
<div class="set_content">
<div class="setc_name"><span>培训体系</span></div>
<div class="setc_main">
<TrainClass v-model:value="projectInfo.systemId" :disabled="true"></TrainClass>
</div>
</div>
<div class="set_content">
<div class="setc_name"><span>是否BOEU实施</span></div>
<div class="setc_main">
@@ -89,6 +83,12 @@
></a-switch>
</div>
</div>
<div class="set_content">
<div class="setc_name"><span>项目说明</span></div>
<div class="setc_main">
<span style="color: #999999">{{ projectInfo.remark }}</span>
</div>
</div>
</div>
</div>

View File

@@ -29,7 +29,11 @@ import {useStore} from "vuex";
const store = useStore();
const props = defineProps({
value: String
value: String,
disabled: {
type: Boolean,
default: false
}
})
const emit = defineEmits({})
@@ -38,9 +42,9 @@ const options = computed(() => store.state.orgtreeList)
const id = computed(() => {
return props.value
})
console.log("store.state.orgtreeList",store.state.orgtreeList);
function change(key, obj) {
console.log(obj[0],key,props.value);
console.log(obj[0], key, props.value);
emit('update:name', obj[0])
emit('update:value', key)
}

View File

@@ -380,6 +380,7 @@
</div>
<div class="lin"></div>
</div>
<!-- TODO1216
<div class="item" @click="showDrawerAddDiscuss">
<div class="itcon">
<div class="img">
@@ -401,7 +402,7 @@
/>
</div>
<div class="lin"></div>
</div>
</div>-->
<div class="item" @click="showDrawerAddActive">
<div class="itcon">
<div class="img">
@@ -474,13 +475,14 @@
</div>
<div class="lin"></div>
</div>
<!--TODO1216
<div class="item" @click="showDrawerAddVote">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/tou.png" />
</div>
<div class="text">投票</div>
<!-- 添加投票侧弹窗 -->
<div>
<add-vote
v-model:addvoteVisible="addvotevisible"
@@ -494,10 +496,11 @@
v-model:routerTaskId="routerTaskId"
/>
</div>
<!-- 添加投票侧弹窗 -->
</div>
<div class="lin"></div>
</div>
-->
<div class="item" @click="showDrawerAddProj">
<div class="itcon">
<div class="img">
@@ -1049,11 +1052,11 @@ import AddOnline from "../../components/drawers/AddOnline.vue";
import AddCase from "../../components/drawers/AddCase.vue";
import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
//import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
import AddActive from "../../components/drawers/AddActive.vue";
import AddEval from "../../components/drawers/AddEval.vue";
import AddInvist from "../../components/drawers/AddInvist.vue";
import AddVote from "../../components/vote/AddVote.vue";
//import AddVote from "../../components/vote/AddVote.vue";
import AddLive from "../../components/drawers/AddLive.vue";
import AddRef from "../../components/drawers/AddRef.vue";
import AddProject from "../../components/drawers/AddProject.vue";
@@ -1077,12 +1080,12 @@ export default {
AddOnline,
AddCase,
AddHomework,
AddDiscuss,
//AddDiscuss,
AddActive,
AddTest,
AddEval,
AddInvist,
AddVote,
//AddVote,
AddLive,
AddRef,
draggable,

View File

@@ -3,13 +3,13 @@
<div class="projectAdd">
<div class="header">
<span class="title"
>{{ projectInfo.parentId ? "编辑" : "创建" }}项目</span
>{{ 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>
@@ -19,8 +19,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>
@@ -33,8 +33,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 ? "班级名称" : "项目名称" }}
@@ -42,27 +42,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;
@@ -70,19 +70,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>
@@ -90,8 +90,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>
@@ -112,41 +112,41 @@
<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"
></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>
@@ -157,8 +157,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>
@@ -169,15 +169,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>
@@ -190,16 +190,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>
@@ -209,12 +209,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>
@@ -233,18 +233,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',
}"
@@ -258,32 +258,32 @@
<div class="btn">
<a-button @click="backPage" class="btn2">取消</a-button>
<a-button
v-on:click="createProject"
type="primary"
class="btn1"
style="margin-left: 20px"
>确定
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";
export default {
name: "projectAdd",
@@ -315,6 +315,7 @@ export default {
classifyList5: [],
courseSyncFlag: false,
auditDescription: "",
ptojectType: ''
});
// 封面图选择
@@ -345,10 +346,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 = {
@@ -373,8 +374,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
: "-";
}
}
});
@@ -460,8 +461,8 @@ export default {
if (!validate(state.projectInfo, errorMsgs)) {
return;
}
/**
if (!state.projectInfo.validate) {
/**
if (!state.projectInfo.validate) {
message.destroy();
message.warning('项目名称重复,请修改名称!');
return;
@@ -481,15 +482,15 @@ export default {
state.projectInfo.courseSyncFlag = state.courseSyncFlag ? 1 : 0;
api.createProject(state.projectInfo).then((res) => {
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);
});
@@ -497,9 +498,9 @@ export default {
function managerChange(e, l, d, t) {
!state.projectInfo.sourceBelongId &&
(state.projectInfo.sourceBelongId = d);
(state.projectInfo.sourceBelongId = d);
!state.projectInfo.sourceBelongName &&
(state.projectInfo.sourceBelongName = t);
(state.projectInfo.sourceBelongName = t);
}
return {
@@ -714,10 +715,12 @@ export default {
.name2 {
display: flex;
align-items: flex-start;
.description {
margin-top: 14px;
margin-left: 11px;
}
.ant-input-textarea {
.ant-input {
height: 88px;

View File

@@ -1567,7 +1567,7 @@ export default {
parentId: value.record.projectId,
name: value.record.name,
sourceBelongId: value.record.sourceBelongId,
sourceBelongame: value.record.sourceBelongName,
sourceBelongName: value.record.sourceBelongName,
manager: value.record.manager,
managerId: value.record.managerId,
systemId: value.record.systemId,

View File

@@ -316,6 +316,7 @@
<!-- 添加外链侧弹窗 -->
<div class="lin"></div>
</div>
<!--TODO1216
<div class="item" @click="showDrawerAddDiscuss">
<div class="itcon">
<div class="img">
@@ -323,7 +324,7 @@
</div>
<div class="text">讨论</div>
</div>
<!-- 添加讨论侧弹窗 -->
<div>
<add-discuss
v-model:adddiscussVisible="adddiscussvisible"
@@ -336,9 +337,10 @@
@changeData="updateTableData"
/>
</div>
<!-- 添加讨论侧弹窗 -->
<div class="lin"></div>
</div>
-->
<div class="item" @click="showDrawerAddActive">
<div class="itcon">
<div class="img">
@@ -405,16 +407,18 @@
v-model:EditInvistId="EditInvistId"
/>
</div>
<!-- 添加评估侧弹窗 -->
<div class="lin"></div>
</div>
</div>
<!--TODO1216
<div class="item" @click="showDrawerAddVote">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/tou.png" />
</div>
<div class="text">投票</div>
<!-- 添加投票侧弹窗 -->
<div>
<add-vote
v-model:addvoteVisible="addvotevisible"
@@ -430,10 +434,12 @@
v-model:ballotId="ballotId"
/>
</div>
<!-- 添加投票侧弹窗 -->
</div>
</div>
</div>
-->
</div>
<div class="boom">
<div class="boomcen">
<div class="onerow">
@@ -1052,11 +1058,11 @@ import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
import AddLive from "../../components/drawers/AddLive.vue";
import AddRef from "../../components/drawers/AddRef.vue";
import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
//import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
import AddActive from "../../components/drawers/AddActive.vue";
import AddEval from "../../components/drawers/AddEval.vue";
import AddInvist from "../../components/drawers/AddInvist.vue";
import AddVote from "../../components/vote/AddVote.vue";
//import AddVote from "../../components/vote/AddVote.vue";
import { message } from "ant-design-vue";
import * as api from "../../api/indexTaskadd";
import * as apistage from "../../api/indexStage";
@@ -1076,11 +1082,11 @@ export default {
AddTest,
AddLive,
AddRef,
AddDiscuss,
// AddDiscuss,
AddActive,
AddEval,
AddInvist,
AddVote,
//AddVote,
// UnlockMode,
},
setup() {

View File

@@ -3588,7 +3588,7 @@ export default {
console.log("审核信息是什么", res.data.data.projectAuditLogDtoList);
let dataset = res.data.data.projectAuditLogDtoList;
state.passInfo = dataset[dataset.length-1];
state.isPass = true;
/**
for (let i = 0; i < dataset.length; i++) {
if (dataset[i].status == -5) {

View File

@@ -329,6 +329,7 @@
<!-- 添加外链侧弹窗 -->
<div class="lin"></div>
</div>
<!--TODO1216
<div class="item" @click="showDrawerAddDiscuss">
<div class="itcon">
<div class="img">
@@ -336,7 +337,7 @@
</div>
<div class="text">讨论</div>
</div>
<!-- 添加讨论侧弹窗 -->
<div>
<add-discuss
v-model:adddiscussVisible="adddiscussvisible"
@@ -349,10 +350,10 @@
v-model:projectTaskId="projectTaskId"
@changeData="updateTableData"
/>
</div>
<!-- 添加讨论侧弹窗 -->
</div>
<div class="lin"></div>
</div>
</div>-->
<div class="item" @click="showDrawerAddActive">
<div class="itcon">
<div class="img">
@@ -425,13 +426,15 @@
<!-- 添加评估侧弹窗 -->
<div class="lin"></div>
</div>
<!--TODO1216
<div class="item" @click="showDrawerAddVote">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/tou.png" />
</div>
<div class="text">投票</div>
<!-- 添加投票侧弹窗 -->
<div>
<add-vote
v-model:addvoteVisible="addvotevisible"
@@ -447,9 +450,12 @@
v-model:ballotId="ballotId"
/>
</div>
<!-- 添加投票侧弹窗 -->
</div>
</div>
-->
</div>
<div class="boom">
<div class="boomcen">
@@ -1069,11 +1075,11 @@ import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
import AddLive from "../../components/drawers/AddLive.vue";
import AddRef from "../../components/drawers/AddRef.vue";
import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
//import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
import AddActive from "../../components/drawers/AddActive.vue";
import AddEval from "../../components/drawers/AddEval.vue";
import AddInvist from "../../components/drawers/AddInvist.vue";
import AddVote from "../../components/vote/AddVote.vue";
//import AddVote from "../../components/vote/AddVote.vue";
import { message } from "ant-design-vue";
import * as api from "../../api/indexTemplate";
import draggable from "vuedraggable";
@@ -1131,11 +1137,11 @@ export default {
AddTest,
AddLive,
AddRef,
AddDiscuss,
//AddDiscuss,
AddActive,
AddEval,
AddInvist,
AddVote,
//AddVote,
// UnlockMode,
},
setup() {