mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-24 10:12:54 +08:00
1
.gitignore
vendored
1
.gitignore
vendored
@@ -26,3 +26,4 @@ package-lock.json
|
||||
src/api/config.js
|
||||
src/api/config.js
|
||||
src/api/config.js
|
||||
src/api/config.js
|
||||
|
||||
@@ -44,7 +44,7 @@ export default defineComponent({
|
||||
const store = useStore();
|
||||
const isLogin = ref(false);
|
||||
// console.log("router", router.getRoutes(), route);
|
||||
console.log("版本0.9.12------------");
|
||||
console.log("版本0.9.13------------");
|
||||
const routes = computed(() => {
|
||||
return router.getRoutes().filter((e) => e.meta?.isLink);
|
||||
});
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-21 14:32:52
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2022-12-13 09:24:16
|
||||
* @LastEditTime: 2022-12-13 15:30:27
|
||||
* @FilePath: /fe-manage/src/api/config.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
|
||||
@@ -70,7 +70,7 @@ export default {
|
||||
href: "/leveladd",
|
||||
},
|
||||
{
|
||||
name: "管理",
|
||||
name: "关卡",
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ export default {
|
||||
{
|
||||
id: 1,
|
||||
name: "管理员",
|
||||
go: "/manage/learningpath",
|
||||
go: "/learningpath",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div v-if="edit" class="headerTitle">编辑评估</div>
|
||||
<div v-else class="headerTitle">添加评估{{assessmentName}}{{assessmentId}}</div>
|
||||
<div v-else class="headerTitle">添加评估</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@@ -192,7 +192,7 @@ export default {
|
||||
} else {
|
||||
RouterEditTask({
|
||||
chapterId: props.isactive,
|
||||
courseTaskId: state.assessmentId,
|
||||
courseId: state.assessmentId,
|
||||
name: state.assessmentName,
|
||||
routerId: props.routerId,
|
||||
routerTaskId: props.routerTaskId || 0,
|
||||
|
||||
@@ -166,6 +166,9 @@
|
||||
<button class="btn2" @click="updateTask">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
|
||||
<a-spin :spinning="addLoading" tip="" />
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script>
|
||||
@@ -256,6 +259,7 @@ export default {
|
||||
tableDataTotal: 0,
|
||||
pageSize: 10,
|
||||
choicecourse: true,
|
||||
ddLoading:false,
|
||||
});
|
||||
const ChoiceCourse = () => {
|
||||
state.choicecourse = false;
|
||||
@@ -295,7 +299,7 @@ export default {
|
||||
title: "名称",
|
||||
dataIndex: "name",
|
||||
key: "name",
|
||||
width: "40%",
|
||||
width: "30%",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
@@ -304,20 +308,22 @@ export default {
|
||||
key: "contenttype",
|
||||
width: "15%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "授课教师",
|
||||
dataIndex: "teacher",
|
||||
key: "teacher",
|
||||
width: "15%",
|
||||
align: "center",
|
||||
},
|
||||
// {
|
||||
// title: "授课教师",
|
||||
// dataIndex: "teacher",
|
||||
// key: "teacher",
|
||||
// width: "15%",
|
||||
// align: "center",
|
||||
// },
|
||||
{
|
||||
title: "创建人",
|
||||
dataIndex: "sysCreateBy",
|
||||
key: "sysCreateBy",
|
||||
width: "15%x",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
// {
|
||||
// title: "创建时间",
|
||||
@@ -330,8 +336,9 @@ export default {
|
||||
title: "发布时间",
|
||||
dataIndex: "publishTime",
|
||||
key: "publishTime",
|
||||
width: "15%",
|
||||
width: "25%",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
];
|
||||
return columns;
|
||||
@@ -462,9 +469,10 @@ export default {
|
||||
});
|
||||
};
|
||||
const updateTask = () => {
|
||||
|
||||
state.addLoading =true;
|
||||
if (props.isLevel == 1) {
|
||||
if(!props.isactive){
|
||||
state.addLoading =false;
|
||||
message.destroy();
|
||||
return message.warning("请先选中关卡");
|
||||
}
|
||||
@@ -495,6 +503,7 @@ export default {
|
||||
}
|
||||
message.destroy();
|
||||
message.warning("在线课(" + tipStr + ")重复添加");
|
||||
state.addLoading =false;
|
||||
return;
|
||||
} else {
|
||||
state.addOnlineList.map((value) => {
|
||||
@@ -507,16 +516,19 @@ export default {
|
||||
routerTaskId: props.routerTaskId || 0,
|
||||
type: 1,
|
||||
})
|
||||
.then(() => {
|
||||
message.destroy();
|
||||
message.success(
|
||||
.then((res) => {
|
||||
if(res.data.code == 200){
|
||||
message.destroy();
|
||||
message.success(
|
||||
`${props.edit ? "编辑" : "新增"}关卡任务成功`
|
||||
);
|
||||
}
|
||||
ctx.emit("changeData", false);
|
||||
closeDrawer();
|
||||
state.addLoading = false;
|
||||
})
|
||||
.catch(() => {
|
||||
state.addLoading =false;
|
||||
message.destroy();
|
||||
message.error(
|
||||
`${props.edit ? "编辑" : "新增"}关卡任务失败`
|
||||
|
||||
@@ -33,10 +33,10 @@
|
||||
外部考试
|
||||
</button> -->
|
||||
</div>
|
||||
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
@@ -49,13 +49,13 @@
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="test.examinationName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px;"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入考试名称"
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
@@ -70,18 +70,12 @@
|
||||
<button class="xkbtn" @click="selectTest">
|
||||
{{ chooseCourse ? "重选" : "选择" }}试卷
|
||||
</button>
|
||||
<div v-if="paperName != ''">
|
||||
<a-tag
|
||||
|
||||
closable
|
||||
color="processing"
|
||||
@close="delTag"
|
||||
>
|
||||
<span style="font-size: 14px; line-height: 33px">{{
|
||||
paperName
|
||||
}}</span>
|
||||
</a-tag>
|
||||
|
||||
<div v-if="paperName != ''">
|
||||
<a-tag closable color="processing" @close="delTag">
|
||||
<span style="font-size: 14px; line-height: 33px">{{
|
||||
paperName
|
||||
}}</span>
|
||||
</a-tag>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 选择面授侧弹窗 -->
|
||||
@@ -94,7 +88,7 @@
|
||||
</div>
|
||||
<!-- 选择面授侧弹窗 -->
|
||||
</div>
|
||||
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
@@ -105,8 +99,9 @@
|
||||
</div>
|
||||
<span style="margin-right: 3px">考试时间:</span>
|
||||
</div>
|
||||
<div class="btnbox" >
|
||||
<a-range-picker style="width: 400px; height: 40px; border-radius: 8px;"
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
show-time
|
||||
format="YYYY/MM/DD HH:mm"
|
||||
v-model:value="test.chooseTime"
|
||||
@@ -129,7 +124,7 @@
|
||||
:min="0"
|
||||
:max="300"
|
||||
:precision="0"
|
||||
style="width: 400px; height: 40px; border-radius: 8px;"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="test.examinationDuration"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||
@@ -154,7 +149,7 @@
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">考试限制:</span>
|
||||
</div>
|
||||
<div class="kqszbox">
|
||||
<div class="kqszbox">
|
||||
<div class="setbox">
|
||||
<div class="timerbox">
|
||||
<span>允许重复考试:</span>
|
||||
@@ -170,166 +165,138 @@
|
||||
"
|
||||
v-model:value="test.examinationLimit"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px">次,-1表示无限制</span>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>次,-1表示无限制</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">显示答案:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="test.showAnswers"
|
||||
>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="1"
|
||||
@click="cloradio1"
|
||||
>允许查看
|
||||
</a-radio>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="2"
|
||||
@click="cloradio1"
|
||||
>不允许查看
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="test.showAnswers"
|
||||
>
|
||||
<a-radio v-model:checked="checked" :value="1" @click="cloradio1"
|
||||
>允许查看
|
||||
</a-radio>
|
||||
<a-radio v-model:checked="checked" :value="2" @click="cloradio1"
|
||||
>不允许查看
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">显示解析:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="test.showAnalysis"
|
||||
>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="1"
|
||||
@click="cloradio2"
|
||||
>允许查看
|
||||
</a-radio>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="2"
|
||||
@click="cloradio2"
|
||||
>不允许查看
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="test.showAnalysis"
|
||||
>
|
||||
<a-radio v-model:checked="checked" :value="1" @click="cloradio2"
|
||||
>允许查看
|
||||
</a-radio>
|
||||
<a-radio v-model:checked="checked" :value="2" @click="cloradio2"
|
||||
>不允许查看
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">评分模式:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="test.scoringModel"
|
||||
>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="1"
|
||||
@click="cloradio3"
|
||||
>最高一次
|
||||
</a-radio>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="2"
|
||||
@click="cloradio3"
|
||||
>最后一次
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="test.scoringModel"
|
||||
>
|
||||
<a-radio v-model:checked="checked" :value="1" @click="cloradio3"
|
||||
>最高一次
|
||||
</a-radio>
|
||||
<a-radio v-model:checked="checked" :value="2" @click="cloradio3"
|
||||
>最后一次
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">及格线:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
|
||||
<a-input
|
||||
v-model:value="test.passLine"
|
||||
type="number"
|
||||
style="width: 400px; height: 40px; border-radius: 8px;"
|
||||
/>
|
||||
|
||||
<span style="color: #999999; margin-left: 8px">分</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="test.passLine"
|
||||
type="number"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
/>
|
||||
|
||||
<span style="color: #999999; margin-left: 8px">分</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="main_item">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">作业要求:</span>
|
||||
</div>
|
||||
<span style="margin-right: 3px">作业要求:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="test.questionArrangement"
|
||||
>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="1"
|
||||
@click="cloradio4"
|
||||
>试题乱序
|
||||
</a-radio>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="2"
|
||||
@click="cloradio4"
|
||||
>选项乱序
|
||||
</a-radio>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="3"
|
||||
@click="cloradio4"
|
||||
>全部乱序
|
||||
</a-radio>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="4"
|
||||
@click="cloradio4"
|
||||
>不乱序
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="test.questionArrangement"
|
||||
>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="1"
|
||||
@click="cloradio4"
|
||||
>试题乱序
|
||||
</a-radio>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="2"
|
||||
@click="cloradio4"
|
||||
>选项乱序
|
||||
</a-radio>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="3"
|
||||
@click="cloradio4"
|
||||
>全部乱序
|
||||
</a-radio>
|
||||
<a-radio
|
||||
v-model:checked="checked"
|
||||
:value="4"
|
||||
@click="cloradio4"
|
||||
>不乱序
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
|
||||
<a-button class="btn2" @click="updateTest">确定</a-button>
|
||||
</div>
|
||||
<!-- 加载动画 -->
|
||||
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
|
||||
<a-spin :spinning="addLoading" tip="" />
|
||||
</div>
|
||||
|
||||
<!-- 选择考试抽屉 -->
|
||||
<s-test v-model:STvisible="STvisible" @getSTData="getData" />
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
|
||||
<a-button class="btn2" @click="updateTest">确定</a-button>
|
||||
</div>
|
||||
<!-- 加载动画 -->
|
||||
<div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
|
||||
<a-spin :spinning="addLoading" tip="" />
|
||||
</div>
|
||||
|
||||
<!-- 选择考试抽屉 -->
|
||||
<s-test v-model:STvisible="STvisible" @getSTData="getData" />
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive,toRefs } from "vue";
|
||||
import { reactive, toRefs } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import {
|
||||
createExamination,
|
||||
@@ -407,10 +374,8 @@ export default {
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
test:{
|
||||
test: {},
|
||||
|
||||
},
|
||||
|
||||
addLoading: false,
|
||||
isOuter: 1, // 是否为外部考试
|
||||
STvisible: false, //选择试卷抽屉
|
||||
@@ -433,14 +398,11 @@ export default {
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
const clearAll = () => {
|
||||
state.test={};
|
||||
|
||||
state.test = {};
|
||||
};
|
||||
|
||||
|
||||
const closeDrawer = () => {
|
||||
|
||||
state.statechoosedTime = "";
|
||||
ctx.emit("update:addtestVisible", false);
|
||||
ctx.emit("update:edit", false);
|
||||
@@ -474,14 +436,15 @@ export default {
|
||||
state.paperName = "";
|
||||
};
|
||||
const queryTest = () => {
|
||||
|
||||
queryExaminationDetailById({ examinationId: props.EditTestId })
|
||||
.then((res) => {
|
||||
state.test = res.data.data;
|
||||
state.test.showAnswers = Number(state.test.showAnswers);
|
||||
state.test.showAnalysis = Number(state.test.showAnalysis);
|
||||
state.test.scoringModel =Number(state.test.scoringModel);
|
||||
state.test.questionArrangement =Number(state.test.questionArrangement);
|
||||
state.test.scoringModel = Number(state.test.scoringModel);
|
||||
state.test.questionArrangement = Number(
|
||||
state.test.questionArrangement
|
||||
);
|
||||
state.test.chooseTime = [
|
||||
dayjs(res.data.data.examinationStartTime, "YYYY-MM-DD HH:mm:ss"),
|
||||
dayjs(res.data.data.examinationEndTime, "YYYY-MM-DD HH:mm:ss"),
|
||||
@@ -489,16 +452,14 @@ export default {
|
||||
state.paperName = state.test.examinationTestName;
|
||||
// state.paperId=dayjs
|
||||
state.paperId = state.test.examinationTestId;
|
||||
|
||||
console.log("querytest",state.test);
|
||||
|
||||
console.log("querytest", state.test);
|
||||
})
|
||||
.catch(() => {
|
||||
//message.error(`查询失败`);
|
||||
});
|
||||
};
|
||||
const updateTest = () => {
|
||||
|
||||
|
||||
if (!state.test.examinationName) {
|
||||
message.destroy();
|
||||
return message.warning("请输入考试名称");
|
||||
@@ -508,29 +469,29 @@ export default {
|
||||
return message.warning("请输入选择试卷");
|
||||
}
|
||||
if (!state.test.chooseTime) {
|
||||
message.destroy();
|
||||
return message.warning("请输入开始结束时间");
|
||||
message.destroy();
|
||||
return message.warning("请输入开始结束时间");
|
||||
}
|
||||
if (!state.test.examinationDuration) {
|
||||
message.destroy();
|
||||
return message.warning("请输入考试时长");
|
||||
}
|
||||
|
||||
|
||||
state.addLoading = true;
|
||||
console.log("test",state.test);
|
||||
// state.test.examinationStartTime = toDate(
|
||||
console.log("test", state.test);
|
||||
// state.test.examinationStartTime = toDate(
|
||||
// new Date(state.test.chooseTime[0].$d).getTime() / 1000,
|
||||
// "Y-M-D h:m"
|
||||
// );
|
||||
// state.test.examinationEndTime =toDate(
|
||||
// new Date(state.test.$slotschooseTime[1].$d).getTime() / 1000,
|
||||
// "Y-M-D h:m"
|
||||
// );
|
||||
// "Y-M-D h:m"
|
||||
// );
|
||||
// state.test.examinationEndTime =toDate(
|
||||
// new Date(state.test.$slotschooseTime[1].$d).getTime() / 1000,
|
||||
// "Y-M-D h:m"
|
||||
// );
|
||||
state.test.examinationStartTime = toDate(
|
||||
new Date(state.test.chooseTime[0].$d).getTime() / 1000,
|
||||
"Y-M-D h:m"
|
||||
);
|
||||
state.test.examinationEndTime =toDate(
|
||||
state.test.examinationEndTime = toDate(
|
||||
new Date(state.test.chooseTime[1].$d).getTime() / 1000,
|
||||
"Y-M-D h:m"
|
||||
);
|
||||
@@ -538,7 +499,7 @@ export default {
|
||||
//TODO缺少paperName字段
|
||||
state.test.examinationTestName = state.paperName;
|
||||
|
||||
if (props.EditTestId>0) {
|
||||
if (props.EditTestId > 0) {
|
||||
// 编辑任务
|
||||
updateExamination(state.test)
|
||||
.then(async (res) => {
|
||||
@@ -566,14 +527,14 @@ export default {
|
||||
state.EditTestId = res.data.data.examinationId;
|
||||
if (props.faceLevel) {
|
||||
state.EditTestId = res.data.data.examinationId;
|
||||
|
||||
|
||||
closeDrawer();
|
||||
} else {
|
||||
if (props.isLevel == 1) {
|
||||
if(!props.isactive){
|
||||
message.destroy();
|
||||
return message.warning("请先选中关卡");
|
||||
}
|
||||
if (!props.isactive) {
|
||||
message.destroy();
|
||||
return message.warning("请先选中关卡");
|
||||
}
|
||||
let editObj1 = {
|
||||
chapterId: props.isactive,
|
||||
duration: res.data.data.examinationDuration,
|
||||
@@ -588,7 +549,7 @@ export default {
|
||||
console.log("props.edit", props.edit);
|
||||
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
|
||||
ctx.emit("changeData", false);
|
||||
|
||||
|
||||
closeDrawer();
|
||||
})
|
||||
.catch(() => {
|
||||
@@ -673,7 +634,6 @@ export default {
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
afterVisibleChange,
|
||||
closeDrawer,
|
||||
closeDrawer2,
|
||||
@@ -682,9 +642,9 @@ export default {
|
||||
cloradio2,
|
||||
cloradio3,
|
||||
cloradio4,
|
||||
|
||||
|
||||
clearAll,
|
||||
|
||||
|
||||
delTag,
|
||||
// layout,
|
||||
|
||||
@@ -872,36 +832,36 @@ export default {
|
||||
}
|
||||
}
|
||||
.main_table {
|
||||
position: relative;
|
||||
padding-bottom: 80px;
|
||||
.ant-checkbox-wrapper {
|
||||
align-items: center;
|
||||
margin-top: -2px;
|
||||
}
|
||||
.ant-table-selection-column {
|
||||
padding: 0px !important;
|
||||
padding-left: 5px !important;
|
||||
}
|
||||
.ant-table-thead > tr > th {
|
||||
background-color: rgba(239, 244, 252, 1);
|
||||
}
|
||||
th.h {
|
||||
background-color: #eff4fc !important;
|
||||
}
|
||||
.ant-table-tbody
|
||||
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||
> td {
|
||||
background: #f6f9fd;
|
||||
}
|
||||
.pa {
|
||||
left: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
bottom: 20px;
|
||||
}
|
||||
position: relative;
|
||||
padding-bottom: 80px;
|
||||
.ant-checkbox-wrapper {
|
||||
align-items: center;
|
||||
margin-top: -2px;
|
||||
}
|
||||
.ant-table-selection-column {
|
||||
padding: 0px !important;
|
||||
padding-left: 5px !important;
|
||||
}
|
||||
.ant-table-thead > tr > th {
|
||||
background-color: rgba(239, 244, 252, 1);
|
||||
}
|
||||
th.h {
|
||||
background-color: #eff4fc !important;
|
||||
}
|
||||
.ant-table-tbody
|
||||
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||
> td {
|
||||
background: #f6f9fd;
|
||||
}
|
||||
.pa {
|
||||
left: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
bottom: 20px;
|
||||
}
|
||||
}
|
||||
.main_btns {
|
||||
height: 72px;
|
||||
width: 100%;
|
||||
|
||||
@@ -117,8 +117,8 @@
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:pagination="false"
|
||||
/>
|
||||
<div class="tableBox">
|
||||
<div class="pa" style="display:flex;justify-content:center;padding:20px;">
|
||||
<div class="tableBox" style="margin-top:85px;">
|
||||
<div class="pa" style="display:flex;justify-content:center;">
|
||||
<a-pagination
|
||||
v-if="tableDataTotal > 10"
|
||||
:showSizeChanger="false"
|
||||
@@ -162,14 +162,16 @@ const columns1 = [
|
||||
width: "30%",
|
||||
dataIndex: "name",
|
||||
key: "name",
|
||||
ellipsis: true,
|
||||
|
||||
},
|
||||
{
|
||||
title: "内容分类",
|
||||
width: "15%",
|
||||
dataIndex: "content",
|
||||
key: "content",
|
||||
dataIndex: "category",
|
||||
key: "category",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "授课教师",
|
||||
@@ -177,6 +179,7 @@ const columns1 = [
|
||||
dataIndex: "teacher",
|
||||
key: "teacher",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "创建人",
|
||||
@@ -184,6 +187,7 @@ const columns1 = [
|
||||
dataIndex: "creator",
|
||||
key: "creator",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "发布时间",
|
||||
@@ -191,6 +195,7 @@ const columns1 = [
|
||||
dataIndex: "time",
|
||||
key: "time",
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -227,6 +232,129 @@ export default {
|
||||
// time: "2022-10-31 23:12:00",
|
||||
// }
|
||||
],
|
||||
options2222: [
|
||||
{
|
||||
title: "领导力",
|
||||
value: "100",
|
||||
selectable: false,
|
||||
children: [
|
||||
{
|
||||
title: "领导业务",
|
||||
value: "1001",
|
||||
},
|
||||
{
|
||||
title: "领导团队",
|
||||
value: "1002",
|
||||
},
|
||||
{
|
||||
title: "领导自我",
|
||||
value: "1003",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "专业力",
|
||||
value: "200",
|
||||
selectable: false,
|
||||
children: [
|
||||
{
|
||||
title: "研发",
|
||||
value: "2001",
|
||||
},
|
||||
{
|
||||
title: "产品和解决方案",
|
||||
value: "2002",
|
||||
},
|
||||
{
|
||||
title: "生产技术与制造",
|
||||
value: "2003",
|
||||
},
|
||||
{
|
||||
title: "供应链",
|
||||
value: "2004",
|
||||
},
|
||||
{
|
||||
title: "营销",
|
||||
value: "2005",
|
||||
},
|
||||
{
|
||||
title: "品质",
|
||||
value: "2006",
|
||||
},
|
||||
{
|
||||
title: "战略与企划",
|
||||
value: "2007",
|
||||
},
|
||||
{
|
||||
title: "流程管理",
|
||||
value: "2008",
|
||||
},
|
||||
{
|
||||
title: "业绩管理",
|
||||
value: "2009",
|
||||
},
|
||||
{
|
||||
title: "项目管理",
|
||||
value: "20010",
|
||||
},
|
||||
{
|
||||
title: "信息技术",
|
||||
value: "20011",
|
||||
},
|
||||
{
|
||||
title: "环境与安全",
|
||||
value: "20012",
|
||||
},
|
||||
{
|
||||
title: "人力资源",
|
||||
value: "20013",
|
||||
},
|
||||
{
|
||||
title: "企业文化",
|
||||
value: "20014",
|
||||
},
|
||||
{
|
||||
title: "品牌",
|
||||
value: "20015",
|
||||
},
|
||||
{
|
||||
title: "财务",
|
||||
value: "20016",
|
||||
},
|
||||
{
|
||||
title: "法务",
|
||||
value: "20017",
|
||||
},
|
||||
{
|
||||
title: "行政",
|
||||
value: "20018",
|
||||
},
|
||||
{
|
||||
title: "医工",
|
||||
value: "20019",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "通用力",
|
||||
value: "300",
|
||||
selectable: false,
|
||||
children: [
|
||||
{
|
||||
title: "职业操守与道德",
|
||||
value: "3001",
|
||||
},
|
||||
{
|
||||
title: "职业素养与技能",
|
||||
value: "3002",
|
||||
},
|
||||
{
|
||||
title: "规章制度",
|
||||
value: "3003",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
currentPage: 1,
|
||||
tableDataTotal: null,
|
||||
pageSize: 10,
|
||||
@@ -311,6 +439,7 @@ export default {
|
||||
const getClassData = (tabledata) => {
|
||||
let data = tabledata;
|
||||
let array = [];
|
||||
let options = state.options2222;
|
||||
data.map((value) => {
|
||||
let obj = {
|
||||
key: value.offcourseId,
|
||||
@@ -320,13 +449,63 @@ export default {
|
||||
creator: value.createName || "-",
|
||||
time: value.publishTime,
|
||||
categoryId: value.categoryId,
|
||||
category:"",
|
||||
//需要判断content
|
||||
};
|
||||
console.log("obj",obj);
|
||||
var breaked = false;
|
||||
for (let i = 0; i < options.length; i++) {
|
||||
for (let j = 0; j < options[i].children.length; j++) {
|
||||
if (
|
||||
String(options[i].children[j].value) ===
|
||||
String(obj.categoryId)
|
||||
) {
|
||||
console.log("obj.categoryId",obj.categoryId);
|
||||
obj.category = options[i].children[j].title;
|
||||
console.log("obj. obj.category ", obj.category );
|
||||
breaked = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(breaked){
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!obj.category ){
|
||||
obj.category ="-";
|
||||
}
|
||||
console.log("obj. obj.category22 ", obj.category );
|
||||
array.push(obj);
|
||||
});
|
||||
state.classTableData = array;
|
||||
};
|
||||
/**
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
const getCategory=(id)=>{
|
||||
console.log("进来了");
|
||||
let category="";
|
||||
let options = state.options2222;
|
||||
for (let i = 0; i < options.value.length; i++) {
|
||||
for (let j = 0; j < options.value[i].children.length; j++) {
|
||||
if (
|
||||
String(options.value[i].children[j].value) ===
|
||||
String(id)
|
||||
) {
|
||||
console.log();
|
||||
category = options.value[i].children[j].title;
|
||||
|
||||
return category;
|
||||
}
|
||||
}
|
||||
}
|
||||
return category;
|
||||
}
|
||||
|
||||
|
||||
const options1 = ref([
|
||||
{
|
||||
value: 0,
|
||||
@@ -378,6 +557,7 @@ export default {
|
||||
rowSelection,
|
||||
search,
|
||||
submitCourse,
|
||||
|
||||
// change,
|
||||
};
|
||||
},
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn1">取消</button>
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="CreatSTText()">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -197,15 +197,15 @@ export default {
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "最近更新时间",
|
||||
dataIndex: "sysUpdateTime",
|
||||
key: "sysUpdateTime",
|
||||
ellipsis: true,
|
||||
width: "20%",
|
||||
align: "center",
|
||||
className: "h",
|
||||
},
|
||||
// {
|
||||
// title: "最近更新时间",
|
||||
// dataIndex: "sysUpdateTime",
|
||||
// // key: "sysUpdateTime",
|
||||
// ellipsis: true,
|
||||
// width: "20%",
|
||||
// align: "center",
|
||||
// className: "h",
|
||||
// },
|
||||
];
|
||||
return columns;
|
||||
}
|
||||
|
||||
@@ -67,6 +67,27 @@ function validateProName() {
|
||||
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.in{
|
||||
.pro{
|
||||
.ant-input-affix-wrapper {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 99%;
|
||||
min-width: 0;
|
||||
padding: 4px 8px;
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
font-size: 14px;
|
||||
line-height: 1.5715;
|
||||
background-color: #fff;
|
||||
background-image: none;
|
||||
border: 1px solid #d9d9d9;
|
||||
border-radius: 8px;
|
||||
transition: all 0.3s;
|
||||
display: inline-flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.in{
|
||||
.ant-input-affix-wrapper {
|
||||
position: relative;
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="i1_input">
|
||||
<NameInput placeholder="请输入课程名称" v-model:value="qdms_inputV1" v-model:validate="validate"
|
||||
<NameInput ref="inputRef" placeholder="请输入课程名称" v-model:value="qdms_inputV1" v-model:validate="validate"
|
||||
:maxlength="20" show-count :type="2" :id="offcourseId"></NameInput>
|
||||
<!-- <a-input-->
|
||||
<!-- v-model:value="qdms_inputV1"-->
|
||||
@@ -304,7 +304,7 @@
|
||||
<span style="margin-right: 14px">授课教师</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="i1_input">
|
||||
<div class="select" style="width:88%;">
|
||||
<ProjectManager
|
||||
v-model:value="member.value"
|
||||
v-model:name="member.name"
|
||||
@@ -426,7 +426,7 @@ export default defineComponent({
|
||||
hideshow: true,
|
||||
ft_eidt: false,
|
||||
attach: "",
|
||||
validate:false,
|
||||
validate:true,
|
||||
ft_hs: false,
|
||||
addLoading: false,
|
||||
statusJuJue: 0,
|
||||
|
||||
@@ -505,7 +505,7 @@ export default {
|
||||
console.log(data);
|
||||
};
|
||||
const reset = () => {
|
||||
(state.valueproj = ""),
|
||||
(state.valueproj = null),
|
||||
(state.valuecreater = null),
|
||||
(state.valuename = null),
|
||||
getList();
|
||||
|
||||
@@ -623,7 +623,7 @@ export default {
|
||||
state.tableData1 = array;
|
||||
};
|
||||
const reset = () => {
|
||||
state.valueproj = "";
|
||||
state.valueproj = null;
|
||||
state.valuecreater = null;
|
||||
state.valuename = null;
|
||||
getFaceList();
|
||||
|
||||
@@ -809,8 +809,8 @@ export default {
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
value: "已停用",
|
||||
label: "已停用",
|
||||
value: "已结束",
|
||||
label: "已结束",
|
||||
classify: -1,
|
||||
},
|
||||
],
|
||||
|
||||
@@ -211,6 +211,14 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name name2">
|
||||
<div class="namebox">
|
||||
<div class="inname" style="margin-top: 13px">审核意见</div>
|
||||
</div>
|
||||
<div class="description">
|
||||
{{auditDescription}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="template">
|
||||
<div class="name">
|
||||
@@ -267,6 +275,8 @@ import NameInput from "@/components/project/NameInput";
|
||||
import ProjectLevel from "@/components/project/ProjectLevel";
|
||||
import {changeOwnership, scrollLoad} from "@/api/method";
|
||||
import {storage} from "../../api/storage";
|
||||
import * as api2 from "../../api/indexAudit";
|
||||
import {validateName} from "@/api/index1";
|
||||
|
||||
export default {
|
||||
name: "projectAdd",
|
||||
@@ -297,6 +307,7 @@ export default {
|
||||
},
|
||||
classifyList5: [],
|
||||
courseSyncFlag: false,
|
||||
auditDescription:"",
|
||||
});
|
||||
|
||||
// 封面图选择
|
||||
@@ -340,6 +351,24 @@ export default {
|
||||
state.projectInfo.endTime,
|
||||
];
|
||||
state.courseSyncFlag = !!state.projectInfo.courseSyncFlag;
|
||||
if (Number(state.projectInfo.status) === -5) {
|
||||
let obj = {
|
||||
project_id: state.projectInfo.projectId,
|
||||
type: 1,
|
||||
pageNo: 1,
|
||||
pageSize: 1,
|
||||
};
|
||||
api2.auditList(obj).then((d) => {
|
||||
if (d.data.code === 200) {
|
||||
let res =d.data.data;
|
||||
if (res.rows && res.rows.length > 0) {
|
||||
let i = res.rows.length;
|
||||
state.auditDescription = res.rows[i - 1].description ? res.rows[i - 1].description : "-";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -416,16 +445,24 @@ export default {
|
||||
return true;
|
||||
}
|
||||
|
||||
const createProject = () => {
|
||||
const createProject = async() => {
|
||||
console.log("保存", state.projectInfo);
|
||||
if (!validate(state.projectInfo, errorMsgs)) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
if (!state.projectInfo.validate) {
|
||||
message.destroy();
|
||||
message.warning('项目名称重复,请修改名称!');
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
const offName = await validateName({name:state.projectInfo.name, type:1, id:state.projectInfo.projectId}).then(res => {
|
||||
return res.data.data == 1;
|
||||
});
|
||||
if(offName){
|
||||
message.destroy();
|
||||
return message.warning("项目名称重复,请重新填写");
|
||||
}
|
||||
state.projectInfo.type = 3;
|
||||
state.projectInfo.courseSyncFlag = state.courseSyncFlag ? 1 : 0;
|
||||
api.createProject(state.projectInfo).then((res) => {
|
||||
@@ -663,7 +700,10 @@ export default {
|
||||
.name2 {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
|
||||
.description{
|
||||
margin-top: 14px;
|
||||
margin-left: 11px;
|
||||
}
|
||||
.ant-input-textarea {
|
||||
.ant-input {
|
||||
height: 88px;
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
></a-select>
|
||||
</div>
|
||||
<div class="select addTimeBox">
|
||||
<div class="addTime">项目起止时间:</div>
|
||||
<div class="addTime">创建时间:</div>
|
||||
<a-range-picker
|
||||
v-model:value="searchParam.valueDate"
|
||||
:show-time="{
|
||||
@@ -179,7 +179,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="inname">项目名称:</div>
|
||||
<div class="in">
|
||||
<div class="in pro">
|
||||
<NameInput
|
||||
placeholder="请输入项目名称"
|
||||
v-model:value="projectInfo.name"
|
||||
@@ -831,6 +831,7 @@ import dayjs from "dayjs";
|
||||
import * as moment from "moment";
|
||||
import {changeOwnership} from "@/api/method";
|
||||
import NameInput from "@/components/project/NameInput";
|
||||
import {validateName} from "@/api/index1";
|
||||
|
||||
export default {
|
||||
name: "projectManage",
|
||||
@@ -958,7 +959,7 @@ export default {
|
||||
}
|
||||
|
||||
// 创建多层项目
|
||||
const createStoreyProject = () => {
|
||||
const createStoreyProject = async() => {
|
||||
// 接口需要传递的参数信息
|
||||
const errorMsgs = {
|
||||
name: "请输入项目名称",
|
||||
@@ -969,11 +970,19 @@ export default {
|
||||
if (!validate(state.projectInfo, errorMsgs)) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
if (!state.projectInfo.validate) {
|
||||
message.destroy();
|
||||
message.warning("项目名称重复,请修改名称!");
|
||||
return;
|
||||
}
|
||||
} */
|
||||
const offName = await validateName({name: state.qdms_inputV1, type:1, id:state.projectInfo.projectId}).then(res => {
|
||||
return res.data.data == 1;
|
||||
});
|
||||
if(offName){
|
||||
message.destroy();
|
||||
return message.warning("项目名称重复,请重新填写");
|
||||
}
|
||||
api.createProject(state.projectInfo).then((res) => {
|
||||
state.doublepro = false;
|
||||
message.destroy();
|
||||
@@ -1355,6 +1364,7 @@ export default {
|
||||
dayjs().isBefore(value.record.end) ? "进行中" : "已结束",
|
||||
"-1": () => "已结束",
|
||||
"-5": () => "草稿",
|
||||
|
||||
}[value.record.status + ""]() || ""
|
||||
: "-"}
|
||||
</div>
|
||||
@@ -2092,6 +2102,9 @@ export default {
|
||||
font-weight: 400;
|
||||
color: #4ea6ff;
|
||||
margin-right: -45px;
|
||||
display: flex;
|
||||
justify-content: right;
|
||||
margin-right: 18px;
|
||||
|
||||
// line-height: 36px;
|
||||
.operation1 {
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
<div class="header">
|
||||
<span class="title">创建/编辑单层模板</span>
|
||||
<div
|
||||
@click="backPage"
|
||||
style="cursor: pointer"
|
||||
to="/manage/libraryAdd"
|
||||
class="goback"
|
||||
@click="backPage"
|
||||
style="cursor: pointer"
|
||||
to="/libraryAdd"
|
||||
class="goback"
|
||||
>
|
||||
<span class="return"></span><span class="returntext">返回</span>
|
||||
</div>
|
||||
@@ -17,25 +17,25 @@
|
||||
<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-input
|
||||
v-model:value="projectInfo.name"
|
||||
placeholder="请输入模板名称"
|
||||
show-count
|
||||
:maxlength="30"
|
||||
v-model:value="projectInfo.name"
|
||||
placeholder="请输入模板名称"
|
||||
show-count
|
||||
:maxlength="30"
|
||||
/>
|
||||
</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>
|
||||
@@ -43,18 +43,18 @@
|
||||
<ProjectClass v-model:value="projectInfo.category"></ProjectClass>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name" style="align-items: flex-start;">
|
||||
<div class="name" style="align-items: flex-start">
|
||||
<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="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;
|
||||
@@ -62,19 +62,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>
|
||||
@@ -82,53 +82,53 @@
|
||||
<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="至"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
v-model:value="projectInfo.rangeTime"
|
||||
style="width: 100%; height: 40px; border-radius: 5px"
|
||||
valueFormat="YYYY-MM-DD HH:mm:ss"
|
||||
@change="timeChange"
|
||||
separator="至"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
v-model:value="projectInfo.rangeTime"
|
||||
style="width: 100%; height: 40px; border-radius: 5px"
|
||||
valueFormat="YYYY-MM-DD HH:mm:ss"
|
||||
@change="timeChange"
|
||||
/>
|
||||
</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"
|
||||
></OrgClass>
|
||||
</div>
|
||||
</div>
|
||||
@@ -138,11 +138,11 @@
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-textarea
|
||||
v-model:value="projectInfo.remark"
|
||||
style="height: 80px"
|
||||
placeholder="请输入说明"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
v-model:value="projectInfo.remark"
|
||||
style="height: 80px"
|
||||
placeholder="请输入说明"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -151,24 +151,23 @@
|
||||
<div class="inname">同步学习记录</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-checkbox
|
||||
v-model:checked="projectInfo.courseSyncFlag"
|
||||
><span
|
||||
<a-checkbox v-model:checked="projectInfo.courseSyncFlag"
|
||||
><span
|
||||
style="
|
||||
width: 100%;
|
||||
color: rgba(109, 117, 132, 1);
|
||||
font-size: 14px;
|
||||
"
|
||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||
></a-checkbox
|
||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||
></a-checkbox
|
||||
>
|
||||
</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>
|
||||
@@ -179,8 +178,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>
|
||||
@@ -191,15 +190,13 @@
|
||||
<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"
|
||||
>
|
||||
<a-radio-group v-model:value="projectInfo.boeFlag">
|
||||
<a-radio :value="1">是</a-radio>
|
||||
<a-radio :value="0">否</a-radio>
|
||||
</a-radio-group>
|
||||
@@ -210,20 +207,18 @@
|
||||
<div class="footer">
|
||||
<div class="btn">
|
||||
<a-button v-on:click="createProject" type="primary" class="btn1"
|
||||
>确定
|
||||
</a-button
|
||||
>
|
||||
>确定
|
||||
</a-button>
|
||||
<a-button @click="backPage" class="btn2">取消</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
|
||||
import {useStore} from "vuex";
|
||||
import {ref, onMounted, watch} from "vue";
|
||||
import {message} from "ant-design-vue";
|
||||
import {useRouter, useRoute} from "vue-router";
|
||||
import { useStore } from "vuex";
|
||||
import { ref, onMounted, watch } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import * as api from "../../api/indexTemplate";
|
||||
import ProjectClass from "@/components/project/ProjectClass";
|
||||
import TrainClass from "@/components/project/TrainClass";
|
||||
@@ -234,23 +229,33 @@ import ProjectLevel from "@/components/project/ProjectLevel";
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const store = useStore();
|
||||
const projectInfo = ref({})
|
||||
const projectPic = ref([])
|
||||
const projectInfo = ref({});
|
||||
const projectPic = ref([]);
|
||||
|
||||
onMounted(() => {
|
||||
getDetail()
|
||||
projectPic.value = store.state.projectPic.map((e) => ({value: e.dictValue, label: e.dictName}));
|
||||
})
|
||||
getDetail();
|
||||
projectPic.value = store.state.projectPic.map((e) => ({
|
||||
value: e.dictValue,
|
||||
label: e.dictName,
|
||||
}));
|
||||
});
|
||||
|
||||
watch(() => route.query.projectTemplateId, () => {
|
||||
getDetail()
|
||||
})
|
||||
watch(
|
||||
() => route.query.projectTemplateId,
|
||||
() => {
|
||||
getDetail();
|
||||
}
|
||||
);
|
||||
|
||||
const getDetail = () => route.query.projectTemplateId && api.templateDetail(route.query.projectTemplateId)
|
||||
.then((res) => {
|
||||
projectInfo.value = res.data.data.projectTemplateInfo;
|
||||
projectInfo.value.rangeTime = [projectInfo.value.beginTime, projectInfo.value.endTime]
|
||||
})
|
||||
const getDetail = () =>
|
||||
route.query.projectTemplateId &&
|
||||
api.templateDetail(route.query.projectTemplateId).then((res) => {
|
||||
projectInfo.value = res.data.data.projectTemplateInfo;
|
||||
projectInfo.value.rangeTime = [
|
||||
projectInfo.value.beginTime,
|
||||
projectInfo.value.endTime,
|
||||
];
|
||||
});
|
||||
|
||||
const backPage = () => {
|
||||
router.back();
|
||||
@@ -285,18 +290,22 @@ const createProject = () => {
|
||||
return;
|
||||
}
|
||||
}
|
||||
api.templateEdit({...projectInfo.value, courseSyncFlag: projectInfo.value.courseSyncFlag ? 1 : 0}).then(() => {
|
||||
message.destroy();
|
||||
message.success("编辑成功");
|
||||
router.back()
|
||||
})
|
||||
api
|
||||
.templateEdit({
|
||||
...projectInfo.value,
|
||||
courseSyncFlag: projectInfo.value.courseSyncFlag ? 1 : 0,
|
||||
})
|
||||
.then(() => {
|
||||
message.destroy();
|
||||
message.success("编辑成功");
|
||||
router.back();
|
||||
});
|
||||
};
|
||||
|
||||
function managerChange(e, l, d, t) {
|
||||
projectInfo.value.valuesourceBelongId = d
|
||||
projectInfo.value.sourceBelongName = t
|
||||
projectInfo.value.valuesourceBelongId = d;
|
||||
projectInfo.value.sourceBelongName = t;
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.active {
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
* @FilePath: /fe-manage/vue.config.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
const {defineConfig} = require("@vue/cli-service");
|
||||
|
||||
const { defineConfig } = require("@vue/cli-service");
|
||||
module.exports = defineConfig({
|
||||
publicPath: "/manage",
|
||||
// transpileDependencies: true,
|
||||
|
||||
Reference in New Issue
Block a user