mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-11 11:56:46 +08:00
@@ -7,3 +7,4 @@ export const PROJECT_DETAIL_MODIFY = '/admin/project/projectInfoTemp post';
|
|||||||
export const PROJECT_TEMPLATE_DETAIL_MODIFY = '/admin/project/template/editStageAndTask post';
|
export const PROJECT_TEMPLATE_DETAIL_MODIFY = '/admin/project/template/editStageAndTask post';
|
||||||
export const PROJECT_RELEASE = '/admin/project/realease';
|
export const PROJECT_RELEASE = '/admin/project/realease';
|
||||||
export const ASYNC_STUDENT_STATUS = '/admin/cache/getStudentAsyncStatus';
|
export const ASYNC_STUDENT_STATUS = '/admin/cache/getStudentAsyncStatus';
|
||||||
|
export const ONLINE_COURSE_TEACHER = '/admin/offcourse/getTeacherNamesByCourseId';
|
||||||
|
|||||||
@@ -31,6 +31,8 @@
|
|||||||
>
|
>
|
||||||
{{items.optionName}}
|
{{items.optionName}}
|
||||||
</a-radio>
|
</a-radio>
|
||||||
|
<br/>
|
||||||
|
<img v-if="items.optionPictureAddress" :src="items.optionPictureAddress" alt="" srcset="" style="width: 100px; height:100px;margin-top: 5px;margin-bottom: 5px;">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
@@ -151,9 +153,8 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.log(choiceArr)
|
||||||
state.currentChoice = choiceArr
|
state.currentChoice = choiceArr
|
||||||
|
|
||||||
|
|
||||||
}).catch(err=>{
|
}).catch(err=>{
|
||||||
console.log(err)
|
console.log(err)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -48,6 +48,7 @@
|
|||||||
<div class="wz">添加组员</div>
|
<div class="wz">添加组员</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
<CommonStudent
|
<CommonStudent
|
||||||
|
v-if="checkPer(permissions,createId)"
|
||||||
:type="1"
|
:type="1"
|
||||||
title="添加组员"
|
title="添加组员"
|
||||||
@finash="submitCall"
|
@finash="submitCall"
|
||||||
@@ -67,12 +68,12 @@
|
|||||||
添加组员
|
添加组员
|
||||||
</a-button></CommonStudent
|
</a-button></CommonStudent
|
||||||
>
|
>
|
||||||
<div class="btn btn2" @click="showModal">
|
<div class="btn btn2" @click="showModal" v-if="checkPer(permissions,createId)">
|
||||||
<div class="img3"></div>
|
<div class="img3"></div>
|
||||||
<div class="wz">批量删除</div>
|
<div class="wz">批量删除</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 2022-11-30注释 后面放开 -->
|
<!-- 2022-11-30注释 后面放开 -->
|
||||||
<div class="btn btn2" @click="exportGroupMember">
|
<div class="btn btn2" @click="exportGroupMember" v-if="checkPer(permissions,createId)">
|
||||||
<div class="img2"></div>
|
<div class="img2"></div>
|
||||||
<div class="wz">导出组员</div>
|
<div class="wz">导出组员</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -192,6 +193,7 @@ import { toDate } from "../../api/method";
|
|||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
// import AddGroupMembers from "./AddGroupMembers.vue";
|
// import AddGroupMembers from "./AddGroupMembers.vue";
|
||||||
import CommonStudent from "@/components/student/CommonStudent";
|
import CommonStudent from "@/components/student/CommonStudent";
|
||||||
|
import {checkPer} from "@/utils/utils";
|
||||||
export default {
|
export default {
|
||||||
name: "MemberList",
|
name: "MemberList",
|
||||||
components: {
|
components: {
|
||||||
@@ -220,6 +222,14 @@ export default {
|
|||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
createId: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
permissions: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
@@ -293,13 +303,14 @@ export default {
|
|||||||
scopedSlots: { customRender: "action" }, //引入的插槽
|
scopedSlots: { customRender: "action" }, //引入的插槽
|
||||||
customRender: (value) => {
|
customRender: (value) => {
|
||||||
return (
|
return (
|
||||||
|
checkPer(props.permissions,props.createId)?
|
||||||
<div
|
<div
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
deleteOne(value.record.key,value.record);
|
deleteOne(value.record.key,value.record);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
删除
|
删除
|
||||||
</div>
|
</div>:''
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -556,6 +567,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
closeDrawer,
|
closeDrawer,
|
||||||
|
checkPer,
|
||||||
showModal,
|
showModal,
|
||||||
closeModal,
|
closeModal,
|
||||||
showStuAdd,
|
showStuAdd,
|
||||||
|
|||||||
@@ -41,17 +41,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="box1" v-for="(itteems, indexss) in values.assessmentSingleChoiceVoList" style="margin-left: 55px; margin-top: 20px" :key="indexss">
|
<div class="box1" v-for="(itteems, indexss) in values.assessmentSingleChoiceVoList" style="margin-left: 55px; margin-top: 20px; flex-direction:column; justify-content:flex-start;align-items:flex-start;" :key="indexss">
|
||||||
<div class="asstype">选择{{indexss+1}}:</div>
|
<div style="display:flex;">
|
||||||
<div style="display:flex;justify-content:center;align-items:center;">
|
<div class="asstype">选择{{indexss+1}}:</div>
|
||||||
<div v-if="itteems.select" style="display:flex;justify-content:center;align-items:center;width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;">
|
<div style="display:flex;justify-content:center;align-items:center;">
|
||||||
<div style="width:8px;height:8px;border-radius:4px;background-color:#409eff;"></div>
|
<div v-if="itteems.select" style="display:flex;justify-content:center;align-items:center;width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;">
|
||||||
|
<div style="width:8px;height:8px;border-radius:4px;background-color:#409eff;"></div>
|
||||||
|
</div>
|
||||||
|
<div v-else style="width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;"></div>
|
||||||
|
{{itteems.singleOptionName}}
|
||||||
</div>
|
</div>
|
||||||
<div v-else style="width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;"></div>
|
|
||||||
{{itteems.singleOptionName}}
|
|
||||||
</div>
|
</div>
|
||||||
|
<img v-if="itteems?.singleOptionPictureAddress" :src="VUE_APP_FILE_PATH + itteems?.singleOptionPictureAddress" alt="" srcset="" style="width: 140px;height:140px;margin-top:5px;">
|
||||||
|
<div v-else-if="isExistImg(values.assessmentSingleChoiceVoList, 1)" style="width: 140px;height:140px;margin-top:5px;"></div>
|
||||||
<!-- <a-radio :value="indexs" defaultValue>{{iitem.singleOptionName}}</a-radio> -->
|
<!-- <a-radio :value="indexs" defaultValue>{{iitem.singleOptionName}}</a-radio> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-bottom:30px;"></div>
|
<div style="margin-bottom:30px;"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -68,15 +73,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="box1" v-for="(itteems, indexss) in values.multipleChoiceVoList" style="margin-left: 55px; margin-top: 20px" :key="indexss">
|
<div class="box1" v-for="(itteems, indexss) in values.multipleChoiceVoList" style="margin-left: 55px; margin-top: 20px; flex-direction:column; justify-content:flex-start;align-items:flex-start;" :key="indexss">
|
||||||
<div class="asstype">选择{{indexss+1}}:</div>
|
<div style="display:flex;">
|
||||||
<div style="display:flex;justify-content:center;align-items:center;">
|
<div class="asstype">选择{{indexss+1}}:</div>
|
||||||
<div v-if="itteems.select" style="display:flex;justify-content:center;align-items:center;width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;">
|
<div style="display:flex;justify-content:center;align-items:center;">
|
||||||
<div style="width:8px;height:8px;border-radius:4px;background-color:#409eff;"></div>
|
<div v-if="itteems.select" style="display:flex;justify-content:center;align-items:center;width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;">
|
||||||
|
<div style="width:8px;height:8px;border-radius:4px;background-color:#409eff;"></div>
|
||||||
|
</div>
|
||||||
|
<div v-else style="width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;"></div>
|
||||||
|
{{itteems.multipleOptionName}}
|
||||||
</div>
|
</div>
|
||||||
<div v-else style="width:16px;height:16px;border-radius:8px;border:1px solid rgba(151, 151, 151, 0.29);margin-right: 8px;"></div>
|
|
||||||
{{itteems.multipleOptionName}}
|
|
||||||
</div>
|
</div>
|
||||||
|
<img v-if="itteems?.multipleOptionPictureAddress" :src="VUE_APP_FILE_PATH + itteems?.multipleOptionPictureAddress" alt="" srcset="" style="width: 140px;height:140px;margin-top:5px;">
|
||||||
|
<div v-else-if="isExistImg(values.multipleChoiceVoList, 2)" style="width: 140px;height:140px;margin-top:5px;"></div>
|
||||||
<!-- <a-radio :value="indexs" defaultValue>{{iitem.singleOptionName}}</a-radio> -->
|
<!-- <a-radio :value="indexs" defaultValue>{{iitem.singleOptionName}}</a-radio> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -138,7 +147,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { reactive, toRefs } from "vue";
|
import { reactive, toRefs, ref } from "vue";
|
||||||
import * as api from "@/api/indexTaskManage";
|
import * as api from "@/api/indexTaskManage";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -217,10 +226,34 @@ export default {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 判断当前题目中是否有的选项有图片有的没有
|
||||||
|
const isExistImg = (data, index) => {
|
||||||
|
let exist = false;
|
||||||
|
data.forEach((i,n)=>{
|
||||||
|
console.log(i,n)
|
||||||
|
if(index==1){
|
||||||
|
if(i.singleOptionPictureAddress){
|
||||||
|
exist = true;
|
||||||
|
return exist;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(i.multipleOptionPictureAddress){
|
||||||
|
exist = true;
|
||||||
|
return exist;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return exist;
|
||||||
|
}
|
||||||
|
|
||||||
|
const VUE_APP_FILE_PATH = ref(process.env.VUE_APP_FILE_PATH);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
afterVisibleChange,
|
afterVisibleChange,
|
||||||
closeDrawer,
|
closeDrawer,
|
||||||
|
isExistImg,
|
||||||
|
VUE_APP_FILE_PATH
|
||||||
// change,
|
// change,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -370,10 +370,10 @@ export default {
|
|||||||
'courseId': props.datasource.courseId,//任务的Id
|
'courseId': props.datasource.courseId,//任务的Id
|
||||||
'courseName': props.title,//任务的名称
|
'courseName': props.title,//任务的名称
|
||||||
'logo': '1',//项目或径的标识 1-项目 2-路径图 3面授课
|
'logo': '1',//项目或径的标识 1-项目 2-路径图 3面授课
|
||||||
'routerTaskId': props.datasource.routerId,//任务的routerTaskld或projectTaskld
|
'routerTaskId': props.datasource.projectId,//任务的routerTaskld或projectTaskld
|
||||||
'targetId': props.datasource.routerId,//路径图的就是routerId,项目的是projectId;根据这张图来看的话
|
'targetId': props.datasource.projectId,//路径图的就是routerId,项目的是projectId;根据这张图来看的话
|
||||||
'taskType': props.datasource.type,//催促的任务的类型
|
'taskType': props.datasource.type,//催促的任务的类型
|
||||||
'chapterId': props.datasource.chapterId,//阶段或关卡Id
|
'chapterId': props.datasource.stageId,//阶段或关卡Id
|
||||||
};
|
};
|
||||||
batchSendMessage(obj).then(res => {
|
batchSendMessage(obj).then(res => {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
|
|||||||
@@ -366,10 +366,10 @@
|
|||||||
'courseId': props.datasource.courseId,//任务的Id
|
'courseId': props.datasource.courseId,//任务的Id
|
||||||
'courseName': props.title,//任务的名称
|
'courseName': props.title,//任务的名称
|
||||||
'logo': '1',//项目或径的标识 1-项目 2-路径图 3面授课
|
'logo': '1',//项目或径的标识 1-项目 2-路径图 3面授课
|
||||||
'routerTaskId': props.datasource.routerId,//任务的routerTaskld或projectTaskld
|
'routerTaskId': props.datasource.projectId,//任务的routerTaskld或projectTaskld
|
||||||
'targetId': props.datasource.routerId,//路径图的就是routerId,项目的是projectId;根据这张图来看的话
|
'targetId': props.datasource.projectId,//路径图的就是routerId,项目的是projectId;根据这张图来看的话
|
||||||
'taskType': props.datasource.type,//催促的任务的类型
|
'taskType': props.datasource.type,//催促的任务的类型
|
||||||
'chapterId': props.datasource.chapterId,//阶段或关卡Id
|
'chapterId': props.datasource.stageId,//阶段或关卡Id
|
||||||
};
|
};
|
||||||
batchSendMessage(obj).then(res => {
|
batchSendMessage(obj).then(res => {
|
||||||
message.success("催促" + props.title + "成功");
|
message.success("催促" + props.title + "成功");
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
:show-count="showCount"
|
:show-count="showCount"
|
||||||
:maxlength="maxlength"
|
:maxlength="maxlength"
|
||||||
/>
|
/>
|
||||||
<div style="color: red; font-size: 10px" v-if="modelV.value && validated===0">
|
<div style="color: red; font-size: 10px" v-if="modelV.value && validated===0 && isExistName">
|
||||||
名称重复,请重新输入
|
名称重复,请重新输入
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {defineProps, defineEmits, watch, ref} from "vue";
|
import {defineProps, defineEmits, watch, ref, onMounted} from "vue";
|
||||||
import {validateName} from "@/api/index1";
|
import {validateName} from "@/api/index1";
|
||||||
import {Form} from "ant-design-vue";
|
import {Form} from "ant-design-vue";
|
||||||
|
|
||||||
@@ -39,7 +39,10 @@ const props = defineProps({
|
|||||||
validated: {
|
validated: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0,
|
default: 0,
|
||||||
}
|
},
|
||||||
|
onceName: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const emit = defineEmits(["update:value",'update:validated']);
|
const emit = defineEmits(["update:value",'update:validated']);
|
||||||
@@ -48,6 +51,8 @@ const modelV = ref({
|
|||||||
value: props.value
|
value: props.value
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const isExistName = ref(true);
|
||||||
|
|
||||||
const rulesRef = ref({
|
const rulesRef = ref({
|
||||||
value: [{
|
value: [{
|
||||||
required: true,
|
required: true,
|
||||||
@@ -60,7 +65,20 @@ const rulesRef = ref({
|
|||||||
|
|
||||||
Form.useForm(modelV, rulesRef, { debounce: { wait: 800 } });
|
Form.useForm(modelV, rulesRef, { debounce: { wait: 800 } });
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
if(props.onceName==modelV.value.value){
|
||||||
|
isExistName.value = false;
|
||||||
|
}else{
|
||||||
|
isExistName.value = true;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
watch(props, () => {
|
watch(props, () => {
|
||||||
|
if(props.onceName==modelV.value.value){
|
||||||
|
isExistName.value = false;
|
||||||
|
}else{
|
||||||
|
isExistName.value = true;
|
||||||
|
}
|
||||||
modelV.value.value = props.value;
|
modelV.value.value = props.value;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -74,7 +92,7 @@ async function validateValue() {
|
|||||||
return Promise.reject("请输入名称");
|
return Promise.reject("请输入名称");
|
||||||
}
|
}
|
||||||
return validateName({ name: modelV.value.value, type: props.type, id: props.id }).then(res => {
|
return validateName({ name: modelV.value.value, type: props.type, id: props.id }).then(res => {
|
||||||
if (res.data.data === 1) {
|
if (res.data.data === 1 && isExistName.value) {
|
||||||
emit("update:validated", 0);
|
emit("update:validated", 0);
|
||||||
return Promise.reject("名称重复");
|
return Promise.reject("名称重复");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,13 +11,16 @@
|
|||||||
{{ formData.name }} 课程
|
{{ formData.name }} 课程
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span style="color:#999">内容分类</span>:12312
|
<span
|
||||||
|
style="color:#999">内容分类</span>:{{
|
||||||
|
(sysTypeOption1?.name || "") + "/" + (sysTypeOption2?.name || "") + (sysTypeOption3?.name || "")
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span style="color:#999">授课教师</span>:{{ formData.sysType1 }}/{{ formData.sysType2 }}/{{ formData.sysType3 }}
|
<span style="color:#999">授课教师</span>:{{ formData.teacherName || ''}}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span style="color:#999">审核状态</span>:{{ formData.status }}
|
<span style="color:#999">审核状态</span>:{{ {1:'草稿',2:'待审核',3:'审核不通过',5:'审核通过'}[formData.status] || '' }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="TableStudent">
|
<div class="TableStudent">
|
||||||
@@ -96,12 +99,13 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {computed, defineExpose, defineProps, ref, watch} from "vue";
|
import {computed, defineExpose, defineProps, ref, watch} from "vue";
|
||||||
import {boeRequest, usePage} from "@/api/request";
|
import {boeRequest,request, usePage} from "@/api/request";
|
||||||
import {STUDENT_LIST} from "@/api/apis";
|
import {ONLINE_COURSE_TEACHER, STUDENT_LIST} from "@/api/apis";
|
||||||
import CommonStudent from "@/components/student/CommonStudent";
|
import CommonStudent from "@/components/student/CommonStudent";
|
||||||
import {checkPer} from "@/utils/utils";
|
import {checkPer} from "@/utils/utils";
|
||||||
import dialog from "@/utils/dialog";
|
import dialog from "@/utils/dialog";
|
||||||
import {ONLINE_COURSE_DEL} from "@/api/ThirdApi";
|
import {ONLINE_COURSE_DEL} from "@/api/ThirdApi";
|
||||||
|
import {useStore} from "vuex";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
permissions: {
|
permissions: {
|
||||||
@@ -120,6 +124,7 @@ const props = defineProps({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const visiable = ref(false);
|
const visiable = ref(false);
|
||||||
|
const store = useStore();
|
||||||
|
|
||||||
const initParams = {
|
const initParams = {
|
||||||
studentName: "",
|
studentName: "",
|
||||||
@@ -240,6 +245,16 @@ const columns = ref([
|
|||||||
|
|
||||||
const formData = ref({});
|
const formData = ref({});
|
||||||
|
|
||||||
|
watch(formData, () => {
|
||||||
|
request(ONLINE_COURSE_TEACHER, { courseId: formData.value.id }).then(res=>{
|
||||||
|
formData.value.teacherName = res.data
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
const sysTypeOption1 = computed(() => store.state.content_type.find(({ code }) => code == formData.value.sysType1));
|
||||||
|
const sysTypeOption2 = computed(() => sysTypeOption1.value?.children.find(({ code }) => code == formData.value.sysType2));
|
||||||
|
const sysTypeOption3 = computed(() => sysTypeOption2.value?.children.find(({ code }) => code == formData.value.sysType2));
|
||||||
|
|
||||||
const { data: studentList, fetch: searchStu, total, loading } = usePage(STUDENT_LIST, searchParams, false);
|
const { data: studentList, fetch: searchStu, total, loading } = usePage(STUDENT_LIST, searchParams, false);
|
||||||
|
|
||||||
const stuPagination = computed(() => ({
|
const stuPagination = computed(() => ({
|
||||||
@@ -250,7 +265,6 @@ const stuPagination = computed(() => ({
|
|||||||
onChange: changePagination
|
onChange: changePagination
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
const openDrawer = (raw) => {
|
const openDrawer = (raw) => {
|
||||||
console.log(raw);
|
console.log(raw);
|
||||||
searchParams.value.pid = raw.id;
|
searchParams.value.pid = raw.id;
|
||||||
@@ -264,13 +278,15 @@ const changePagination = (page) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function del(id) {
|
function del(id) {
|
||||||
dialog({ content: "确定删除?", ok: async () => {
|
dialog({
|
||||||
|
content: "确定删除?", ok: async () => {
|
||||||
if (id) {
|
if (id) {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
await boeRequest(ONLINE_COURSE_DEL(id, formData.value.id))
|
await boeRequest(ONLINE_COURSE_DEL(id, formData.value.id));
|
||||||
searchStu()
|
searchStu();
|
||||||
}
|
}
|
||||||
}});
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function submitCall(flag) {
|
function submitCall(flag) {
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
重置
|
重置
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="batch" @click="cancelOrAuthAll">批量取消证书</div>
|
<div v-if="checkPer(permissions,createId)" class="batch" @click="cancelOrAuthAll">批量取消证书</div>
|
||||||
<div class="tableBox" style="margin-top: 20px">
|
<div class="tableBox" style="margin-top: 20px">
|
||||||
<a-table
|
<a-table
|
||||||
:columns="tablecolumns"
|
:columns="tablecolumns"
|
||||||
@@ -94,6 +94,7 @@ import * as api from "@/api/index1";
|
|||||||
import OrgClass from "@/components/project/OrgClass";
|
import OrgClass from "@/components/project/OrgClass";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
import {checkPer} from "@/utils/utils";
|
||||||
export default {
|
export default {
|
||||||
name: "TableCertificateStudent",
|
name: "TableCertificateStudent",
|
||||||
components: {
|
components: {
|
||||||
@@ -113,6 +114,14 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
createId: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
permissions: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
@@ -171,7 +180,7 @@ export default {
|
|||||||
customRender: (record) => {
|
customRender: (record) => {
|
||||||
// console.log(text.record.checked1);
|
// console.log(text.record.checked1);
|
||||||
return (
|
return (
|
||||||
<div>
|
checkPer(props.permissions,props.createId)?<div>
|
||||||
{record.record.status === -1 ? (
|
{record.record.status === -1 ? (
|
||||||
<div class="opa">
|
<div class="opa">
|
||||||
<span>证书已取消</span>
|
<span>证书已取消</span>
|
||||||
@@ -186,7 +195,7 @@ export default {
|
|||||||
<span>取消证书</span>
|
<span>取消证书</span>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>:''
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -323,6 +332,7 @@ export default {
|
|||||||
stuCertList,
|
stuCertList,
|
||||||
search,
|
search,
|
||||||
reset,
|
reset,
|
||||||
|
checkPer,
|
||||||
onSelectChange,
|
onSelectChange,
|
||||||
changePaginationStu,
|
changePaginationStu,
|
||||||
returnClick,
|
returnClick,
|
||||||
|
|||||||
@@ -323,19 +323,19 @@
|
|||||||
<template #operation="{ text, record, index }">
|
<template #operation="{ text, record, index }">
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button
|
<a-button
|
||||||
v-if="record.auditStatus === 2 && checkPer(record.permissions)"
|
v-if="record.auditStatus === 2 && checkPer(record.permissions,createId)"
|
||||||
@click="() => handlePush(text, index)"
|
@click="() => handlePush(text, index)"
|
||||||
type="link"
|
type="link"
|
||||||
>发布
|
>发布
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button
|
<a-button
|
||||||
v-if="record.auditStatus === 0 && checkPer(record.permissions)"
|
v-if="record.auditStatus === 0 && checkPer(record.permissions,createId)"
|
||||||
@click="() => handleSubmit(text, index)"
|
@click="() => handleSubmit(text, index)"
|
||||||
type="link"
|
type="link"
|
||||||
>提交审核
|
>提交审核
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button
|
<a-button
|
||||||
v-if="record.auditStatus === 2 && checkPer(record.permissions)"
|
v-if="record.auditStatus === 2 && checkPer(record.permissions,createId)"
|
||||||
@click="() => handleEdit(record, String(record.courseform))"
|
@click="() => handleEdit(record, String(record.courseform))"
|
||||||
type="link"
|
type="link"
|
||||||
>编辑
|
>编辑
|
||||||
@@ -347,8 +347,7 @@
|
|||||||
</a-button> -->
|
</a-button> -->
|
||||||
<a-button
|
<a-button
|
||||||
v-if="
|
v-if="
|
||||||
(record.auditStatus === 2 || record.auditStatus === 3) &&
|
(record.auditStatus === 2 || record.auditStatus === 3)
|
||||||
checkPer(record.permissions)
|
|
||||||
"
|
"
|
||||||
@click="() => handleStart(record, String(record.courseform))"
|
@click="() => handleStart(record, String(record.courseform))"
|
||||||
type="link"
|
type="link"
|
||||||
@@ -361,8 +360,7 @@
|
|||||||
</a-button>
|
</a-button>
|
||||||
<a-button
|
<a-button
|
||||||
v-if="
|
v-if="
|
||||||
(record.auditStatus === 2 || record.auditStatus === 3) &&
|
(record.auditStatus === 2 || record.auditStatus === 3)
|
||||||
checkPer(record.permissions)
|
|
||||||
"
|
"
|
||||||
@click="() => handleGuan22(record, String(record.courseform))"
|
@click="() => handleGuan22(record, String(record.courseform))"
|
||||||
type="link"
|
type="link"
|
||||||
@@ -370,7 +368,7 @@
|
|||||||
</a-button>
|
</a-button>
|
||||||
<DropDown
|
<DropDown
|
||||||
v-if="
|
v-if="
|
||||||
checkPer(record.permissions) && checkOwner(record.permissions)
|
checkPer(record.permissions,createId) && checkOwner(record.permissions)
|
||||||
"
|
"
|
||||||
value="授权"
|
value="授权"
|
||||||
>
|
>
|
||||||
@@ -384,7 +382,7 @@
|
|||||||
>管理权</CommonStudent
|
>管理权</CommonStudent
|
||||||
>
|
>
|
||||||
</DropDown>
|
</DropDown>
|
||||||
<DropDown v-if="checkPer(record.permissions)" value="更多">
|
<DropDown v-if="checkPer(record.permissions,createId)" value="更多">
|
||||||
<a-button @click="() => handleCopy(text)" type="link"
|
<a-button @click="() => handleCopy(text)" type="link"
|
||||||
>复制</a-button
|
>复制</a-button
|
||||||
>
|
>
|
||||||
@@ -392,7 +390,7 @@
|
|||||||
v-if="
|
v-if="
|
||||||
record.auditStatus === 3 &&
|
record.auditStatus === 3 &&
|
||||||
record.status &&
|
record.status &&
|
||||||
checkPer(record.permissions)
|
checkPer(record.permissions,createId)
|
||||||
"
|
"
|
||||||
@click="() => handleRejectExit(text, index, record)"
|
@click="() => handleRejectExit(text, index, record)"
|
||||||
type="link"
|
type="link"
|
||||||
@@ -402,7 +400,7 @@
|
|||||||
v-if="
|
v-if="
|
||||||
record.auditStatus === 3 &&
|
record.auditStatus === 3 &&
|
||||||
record.status &&
|
record.status &&
|
||||||
checkPer(record.permissions)
|
checkPer(record.permissions,createId)
|
||||||
"
|
"
|
||||||
@click="() => handleStop(text, index)"
|
@click="() => handleStop(text, index)"
|
||||||
type="link"
|
type="link"
|
||||||
@@ -412,7 +410,7 @@
|
|||||||
v-if="
|
v-if="
|
||||||
record.auditStatus === 3 &&
|
record.auditStatus === 3 &&
|
||||||
!record.status &&
|
!record.status &&
|
||||||
checkPer(record.permissions)
|
checkPer(record.permissions,createId)
|
||||||
"
|
"
|
||||||
@click="() => handleOpen(text, index)"
|
@click="() => handleOpen(text, index)"
|
||||||
type="link"
|
type="link"
|
||||||
@@ -762,7 +760,7 @@
|
|||||||
<div class="search"></div>
|
<div class="search"></div>
|
||||||
<div class="btnText">重置</div>
|
<div class="btnText">重置</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btns">
|
<div class="btns" v-if="checkPer(permissions,createId)">
|
||||||
<div class="btn btn3" @click="createkk">
|
<div class="btn btn3" @click="createkk">
|
||||||
<div class="search"></div>
|
<div class="search"></div>
|
||||||
<div class="btnText">
|
<div class="btnText">
|
||||||
@@ -804,12 +802,13 @@
|
|||||||
<div class="operation">
|
<div class="operation">
|
||||||
<div class="fb">
|
<div class="fb">
|
||||||
<!--新加 签到 -->
|
<!--新加 签到 -->
|
||||||
<div class="jc" @click="qrcodeVisible(record, 2)">
|
<div class="jc" @click="qrcodeVisible(record, 2)" v-if="checkPer(permissions,createId)">
|
||||||
签到
|
签到
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="jc"
|
class="jc"
|
||||||
|
v-if="checkPer(permissions,createId)"
|
||||||
@click="
|
@click="
|
||||||
() => {
|
() => {
|
||||||
handelEditStu(record);
|
handelEditStu(record);
|
||||||
@@ -829,7 +828,7 @@
|
|||||||
管理
|
管理
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a-dropdown>
|
<a-dropdown v-if="checkPer(permissions,createId)">
|
||||||
<template #overlay>
|
<template #overlay>
|
||||||
<a-menu style="margin-left: 20px">
|
<a-menu style="margin-left: 20px">
|
||||||
<a-menu-item
|
<a-menu-item
|
||||||
@@ -1256,7 +1255,7 @@
|
|||||||
>
|
>
|
||||||
<template #extension="{ data: { record } }">
|
<template #extension="{ data: { record } }">
|
||||||
<a-button
|
<a-button
|
||||||
v-if="record.source === 4 && record.status === 1"
|
v-if="record.source === 4 && record.status === 1 && checkPer(permissions,createId)"
|
||||||
@click="
|
@click="
|
||||||
() => {
|
() => {
|
||||||
record.status = 0;
|
record.status = 0;
|
||||||
@@ -1267,7 +1266,7 @@
|
|||||||
>审核通过
|
>审核通过
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button
|
<a-button
|
||||||
v-if="record.source === 4 && record.status === 1"
|
v-if="record.source === 4 && record.status === 1 && checkPer(permissions,createId)"
|
||||||
@click="
|
@click="
|
||||||
() => {
|
() => {
|
||||||
record.status = 2;
|
record.status = 2;
|
||||||
@@ -1281,6 +1280,7 @@
|
|||||||
v-if="
|
v-if="
|
||||||
record.source === 4 &&
|
record.source === 4 &&
|
||||||
(record.status === 0 || record.status === 2)
|
(record.status === 0 || record.status === 2)
|
||||||
|
&& checkPer(permissions,createId)
|
||||||
"
|
"
|
||||||
@click="
|
@click="
|
||||||
() => {
|
() => {
|
||||||
|
|||||||
@@ -108,7 +108,7 @@
|
|||||||
v-if="selectJobId.length !== 0"
|
v-if="selectJobId.length !== 0"
|
||||||
>
|
>
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="selectJobId"
|
v-model:value="selectJobId" v-if="selectJobId.length > 0"
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
style="width: 440px; min-height: 40px"
|
style="width: 440px; min-height: 40px"
|
||||||
placeholder="请选择岗位"
|
placeholder="请选择岗位"
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-if="selectBandId.length !== 0">
|
<div v-if="selectBandId.length !== 0">
|
||||||
<a-select
|
<a-select
|
||||||
v-model:value="selectBandId"
|
v-model:value="selectBandId" v-if="selectBandId.length > 0"
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
style="width: 440px; min-height: 40px"
|
style="width: 440px; min-height: 40px"
|
||||||
placeholder="请选择Band"
|
placeholder="请选择Band"
|
||||||
@@ -425,6 +425,7 @@ export default defineComponent({
|
|||||||
let item = res.data.data;
|
let item = res.data.data;
|
||||||
if (item.jobTypeIds) {
|
if (item.jobTypeIds) {
|
||||||
state.selectJobId = item.jobTypeIds.split(",");
|
state.selectJobId = item.jobTypeIds.split(",");
|
||||||
|
console.log("selectJobId" + JSON.stringify(state.selectJobId));
|
||||||
}
|
}
|
||||||
if (item.bandIds) {
|
if (item.bandIds) {
|
||||||
state.selectBandId = item.bandIds.split(",");
|
state.selectBandId = item.bandIds.split(",");
|
||||||
|
|||||||
@@ -335,6 +335,7 @@
|
|||||||
v-model:validated="validated"
|
v-model:validated="validated"
|
||||||
:maxlength="20"
|
:maxlength="20"
|
||||||
show-count
|
show-count
|
||||||
|
:onceName="onceName"
|
||||||
:type="3"
|
:type="3"
|
||||||
:id="editPathId"
|
:id="editPathId"
|
||||||
></NameInput>
|
></NameInput>
|
||||||
@@ -824,6 +825,7 @@ export default {
|
|||||||
//
|
//
|
||||||
//创建、编辑-------------------------
|
//创建、编辑-------------------------
|
||||||
pathName: "", //创建/编辑路径图名称
|
pathName: "", //创建/编辑路径图名称
|
||||||
|
onceName: "",
|
||||||
organizationList: [
|
organizationList: [
|
||||||
// {
|
// {
|
||||||
// id: 1,
|
// id: 1,
|
||||||
@@ -903,6 +905,7 @@ export default {
|
|||||||
// console.log("打开创建路径弹窗");
|
// console.log("打开创建路径弹窗");
|
||||||
state.confirmLoading = false;
|
state.confirmLoading = false;
|
||||||
state.pathName = "";
|
state.pathName = "";
|
||||||
|
state.onceName = "";
|
||||||
state.pathBg = "";
|
state.pathBg = "";
|
||||||
state.pathBgId = "";
|
state.pathBgId = "";
|
||||||
state.pathIntro = "";
|
state.pathIntro = "";
|
||||||
@@ -914,6 +917,7 @@ export default {
|
|||||||
};
|
};
|
||||||
const handleOut1 = () => {
|
const handleOut1 = () => {
|
||||||
state.pathName = "";
|
state.pathName = "";
|
||||||
|
state.onceName = "";
|
||||||
state.pathBg = "";
|
state.pathBg = "";
|
||||||
state.pathBgId = 1;
|
state.pathBgId = 1;
|
||||||
state.organizationSelectName = null;
|
state.organizationSelectName = null;
|
||||||
@@ -1532,6 +1536,7 @@ export default {
|
|||||||
console.log("获取学习路径详情成功", res.data.data);
|
console.log("获取学习路径详情成功", res.data.data);
|
||||||
let detail = res.data.data.routerInfo;
|
let detail = res.data.data.routerInfo;
|
||||||
state.pathName = detail.name;
|
state.pathName = detail.name;
|
||||||
|
state.onceName = detail.name;
|
||||||
state.pathBg = detail.picUrl;
|
state.pathBg = detail.picUrl;
|
||||||
state.mobilePicUrl = detail.mobilePicUrl;
|
state.mobilePicUrl = detail.mobilePicUrl;
|
||||||
state.pathBgId = "";
|
state.pathBgId = "";
|
||||||
|
|||||||
@@ -499,6 +499,7 @@
|
|||||||
<div
|
<div
|
||||||
class="operation"
|
class="operation"
|
||||||
style="cursor: pointer"
|
style="cursor: pointer"
|
||||||
|
v-if="checkPer(permissions,createId)"
|
||||||
@click="showAA(item.type, item.name, item)"
|
@click="showAA(item.type, item.name, item)"
|
||||||
:style="{
|
:style="{
|
||||||
display:
|
display:
|
||||||
@@ -524,6 +525,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="operation"
|
class="operation"
|
||||||
|
v-if="checkPer(permissions,createId)"
|
||||||
style="cursor: pointer; margin-right: 35px"
|
style="cursor: pointer; margin-right: 35px"
|
||||||
@click="
|
@click="
|
||||||
item.type === 1 ||
|
item.type === 1 ||
|
||||||
|
|||||||
@@ -199,7 +199,7 @@
|
|||||||
>结束</a-button
|
>结束</a-button
|
||||||
>
|
>
|
||||||
<a-button
|
<a-button
|
||||||
v-if="record.status !== -1 && record.type === 3"
|
v-if="record.status == -1"
|
||||||
@click="showBackFinashModal(record.id)"
|
@click="showBackFinashModal(record.id)"
|
||||||
type="link"
|
type="link"
|
||||||
>撤回</a-button
|
>撤回</a-button
|
||||||
@@ -308,6 +308,7 @@
|
|||||||
:type="1"
|
:type="1"
|
||||||
:maxlength="30"
|
:maxlength="30"
|
||||||
show-count
|
show-count
|
||||||
|
:onceName="onceName"
|
||||||
:id="projectInfo.projectId"
|
:id="projectInfo.projectId"
|
||||||
></NameInput>
|
></NameInput>
|
||||||
</div>
|
</div>
|
||||||
@@ -1029,6 +1030,7 @@ export default {
|
|||||||
currentPage1: 1, //项目经理分页
|
currentPage1: 1, //项目经理分页
|
||||||
pageSize1: 10,
|
pageSize1: 10,
|
||||||
projectInfo: {},
|
projectInfo: {},
|
||||||
|
onceName:"",
|
||||||
projectClass: [],
|
projectClass: [],
|
||||||
managerList: [],
|
managerList: [],
|
||||||
managerLoading: false,
|
managerLoading: false,
|
||||||
@@ -1102,7 +1104,7 @@ export default {
|
|||||||
message.warning("项目名称重复,请修改名称!");
|
message.warning("项目名称重复,请修改名称!");
|
||||||
return;
|
return;
|
||||||
} */
|
} */
|
||||||
const offName = await validateName({
|
const offName = state.projectInfo.name == state.onceName ? false : await validateName({
|
||||||
name: state.projectInfo.name,
|
name: state.projectInfo.name,
|
||||||
type: 1,
|
type: 1,
|
||||||
id: state.projectInfo.projectId,
|
id: state.projectInfo.projectId,
|
||||||
@@ -1126,6 +1128,7 @@ export default {
|
|||||||
// 取消按钮 清空输入的数据
|
// 取消按钮 清空输入的数据
|
||||||
const closeModal2 = () => {
|
const closeModal2 = () => {
|
||||||
state.projectInfo = {};
|
state.projectInfo = {};
|
||||||
|
state.onceName = "";
|
||||||
// value1.value = "";
|
// value1.value = "";
|
||||||
// type = "";
|
// type = "";
|
||||||
// manager = "";
|
// manager = "";
|
||||||
@@ -1565,6 +1568,7 @@ export default {
|
|||||||
if (record.type === 1 || record.type === 2) {
|
if (record.type === 1 || record.type === 2) {
|
||||||
state.doublepro = true;
|
state.doublepro = true;
|
||||||
state.projectInfo = record;
|
state.projectInfo = record;
|
||||||
|
state.onceName = record.name;
|
||||||
} else {
|
} else {
|
||||||
router.push({
|
router.push({
|
||||||
path: "/projectadd",
|
path: "/projectadd",
|
||||||
@@ -1591,6 +1595,7 @@ export default {
|
|||||||
};
|
};
|
||||||
const showModal1 = () => {
|
const showModal1 = () => {
|
||||||
state.projectInfo = {};
|
state.projectInfo = {};
|
||||||
|
state.onceName = "";
|
||||||
state.estabish = true;
|
state.estabish = true;
|
||||||
};
|
};
|
||||||
const closeModal1 = () => {
|
const closeModal1 = () => {
|
||||||
@@ -1692,6 +1697,7 @@ export default {
|
|||||||
systemId: record.systemId,
|
systemId: record.systemId,
|
||||||
type: 2,
|
type: 2,
|
||||||
};
|
};
|
||||||
|
state.onceName = "";
|
||||||
state.estabish = true;
|
state.estabish = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,25 +23,25 @@
|
|||||||
<div class="line" v-if="action == 3"></div>
|
<div class="line" v-if="action == 3"></div>
|
||||||
<!-- 显示发布图标 -->
|
<!-- 显示发布图标 -->
|
||||||
<img
|
<img
|
||||||
v-if="action == 2 && checkPer(permissions)"
|
v-if="action == 2 && checkPer(permissions,createId)"
|
||||||
class="img2"
|
class="img2"
|
||||||
src="../../assets/images/leveladd/pub.png"
|
src="../../assets/images/leveladd/pub.png"
|
||||||
/>
|
/>
|
||||||
<!-- 显示撤回发布图标 -->
|
<!-- 显示撤回发布图标 -->
|
||||||
<img
|
<img
|
||||||
v-if="action == 3 && checkPer(permissions)"
|
v-if="action == 3 && checkPer(permissions,createId)"
|
||||||
class="img2"
|
class="img2"
|
||||||
src="../../assets/images/project/finish.png"
|
src="../../assets/images/project/finish.png"
|
||||||
/>
|
/>
|
||||||
<!-- 显示审核图标 -->
|
<!-- 显示审核图标 -->
|
||||||
<img
|
<img
|
||||||
v-if="(action == 0 || action == -2) && checkPer(permissions)"
|
v-if="(action == 0 || action == -2) && checkPer(permissions,createId)"
|
||||||
class="img2"
|
class="img2"
|
||||||
src="../../assets/images/project/reviewsubmit.png"
|
src="../../assets/images/project/reviewsubmit.png"
|
||||||
/>
|
/>
|
||||||
<!-- 显示撤回审核图标 -->
|
<!-- 显示撤回审核图标 -->
|
||||||
<img
|
<img
|
||||||
v-if="action == 1 && checkPer(permissions)"
|
v-if="action == 1 && checkPer(permissions,createId)"
|
||||||
class="img2"
|
class="img2"
|
||||||
src="../../assets/images/project/reviewrecall.png"
|
src="../../assets/images/project/reviewrecall.png"
|
||||||
/>
|
/>
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
<div
|
<div
|
||||||
class="pub"
|
class="pub"
|
||||||
style="width: 56px; color: #a497ff"
|
style="width: 56px; color: #a497ff"
|
||||||
v-if="(action == 0 || action == -2) && checkPer(permissions)"
|
v-if="(action == 0 || action == -2) && checkPer(permissions,createId)"
|
||||||
@click="submitExamine"
|
@click="submitExamine"
|
||||||
>
|
>
|
||||||
{{ act }}
|
{{ act }}
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
<div
|
<div
|
||||||
class="pub"
|
class="pub"
|
||||||
style="width: 56px; color: #a497ff"
|
style="width: 56px; color: #a497ff"
|
||||||
v-if="action == 1 && checkPer(permissions)"
|
v-if="action == 1 && checkPer(permissions,createId)"
|
||||||
@click="showRecallReviewModal"
|
@click="showRecallReviewModal"
|
||||||
>
|
>
|
||||||
{{ act }}
|
{{ act }}
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
<div
|
<div
|
||||||
class="pub"
|
class="pub"
|
||||||
style="width: 28px"
|
style="width: 28px"
|
||||||
v-if="action == 2 && checkPer(permissions)"
|
v-if="action == 2 && checkPer(permissions,createId)"
|
||||||
@click="showProjectPub"
|
@click="showProjectPub"
|
||||||
>
|
>
|
||||||
{{ act }}
|
{{ act }}
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
<div
|
<div
|
||||||
class="pub"
|
class="pub"
|
||||||
style="width: 56px; color: #57c887"
|
style="width: 56px; color: #57c887"
|
||||||
v-if="action == 3 && checkPer(permissions)"
|
v-if="action == 3 && checkPer(permissions,createId)"
|
||||||
@click="showBackModal"
|
@click="showBackModal"
|
||||||
>
|
>
|
||||||
{{ act }}
|
{{ act }}
|
||||||
@@ -185,7 +185,7 @@
|
|||||||
<div class="onerow">
|
<div class="onerow">
|
||||||
<div class="taskmain">快速创建项目详情</div>
|
<div class="taskmain">快速创建项目详情</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="checkPer(permissions)" class="second">
|
<div v-if="checkPer(permissions,createId)" class="second">
|
||||||
<!-- @click="totask" -->
|
<!-- @click="totask" -->
|
||||||
<div
|
<div
|
||||||
class="taskbox"
|
class="taskbox"
|
||||||
@@ -460,7 +460,7 @@
|
|||||||
<button class="btn">批量面授报名</button>
|
<button class="btn">批量面授报名</button>
|
||||||
</ImpoterGroupLeader> -->
|
</ImpoterGroupLeader> -->
|
||||||
<router-link
|
<router-link
|
||||||
v-if="checkPer(permissions)"
|
v-if="checkPer(permissions,createId)"
|
||||||
:to="{ path: `/taskadd`, query: { projectId: projectId } }"
|
:to="{ path: `/taskadd`, query: { projectId: projectId } }"
|
||||||
>
|
>
|
||||||
<button class="edit">
|
<button class="edit">
|
||||||
@@ -608,7 +608,7 @@
|
|||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="checkPer(permissions)" class="operations">
|
<div class="operations">
|
||||||
<div
|
<div
|
||||||
class="operation"
|
class="operation"
|
||||||
style="cursor: pointer"
|
style="cursor: pointer"
|
||||||
@@ -621,7 +621,7 @@
|
|||||||
class="operation"
|
class="operation"
|
||||||
style="cursor: pointer"
|
style="cursor: pointer"
|
||||||
@click="showAA(item.type, item.name, item)"
|
@click="showAA(item.type, item.name, item)"
|
||||||
v-if="item.type == 6 || item.type == 9"
|
v-if="(item.type == 6 || item.type == 9) && checkPer(permissions,createId)"
|
||||||
>
|
>
|
||||||
考勤
|
考勤
|
||||||
</div>
|
</div>
|
||||||
@@ -640,6 +640,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="operation"
|
class="operation"
|
||||||
|
v-if="checkPer(permissions,createId)"
|
||||||
style="cursor: pointer; margin-right: 10px"
|
style="cursor: pointer; margin-right: 10px"
|
||||||
@click="
|
@click="
|
||||||
item.type == '1' ||
|
item.type == '1' ||
|
||||||
@@ -709,7 +710,7 @@
|
|||||||
</router-link>
|
</router-link>
|
||||||
<!-- 无数据创建任务 -->
|
<!-- 无数据创建任务 -->
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="checkPer(permissions)">
|
<div v-else-if="checkPer(permissions,createId)">
|
||||||
<div
|
<div
|
||||||
class="taskbox"
|
class="taskbox"
|
||||||
@click="
|
@click="
|
||||||
@@ -761,13 +762,13 @@
|
|||||||
</a-button>
|
</a-button>
|
||||||
<a-button
|
<a-button
|
||||||
@click="settingTopFlag(record)"
|
@click="settingTopFlag(record)"
|
||||||
v-if="checkPer(permissions)"
|
v-if="checkPer(permissions,createId)"
|
||||||
type="link"
|
type="link"
|
||||||
>{{ record.topFlag ? "取消优秀" : "优秀学员" }}
|
>{{ record.topFlag ? "取消优秀" : "优秀学员" }}
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button
|
<a-button
|
||||||
type="link"
|
type="link"
|
||||||
v-if="checkPer(permissions)"
|
v-if="checkPer(permissions,createId)"
|
||||||
:disabled="record.isLeader === '1'"
|
:disabled="record.isLeader === '1'"
|
||||||
@click="showChangeGroupModal(record)"
|
@click="showChangeGroupModal(record)"
|
||||||
>换组
|
>换组
|
||||||
@@ -795,7 +796,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="second2" v-if="checkPer(permissions)">
|
<div class="second2" v-if="checkPer(permissions,createId)">
|
||||||
<div class="btn1" @click="showModal2()">
|
<div class="btn1" @click="showModal2()">
|
||||||
<img src="../../assets/images/courseManage/add0.png" />
|
<img src="../../assets/images/courseManage/add0.png" />
|
||||||
<span class="btn1text">创建小组</span>
|
<span class="btn1text">创建小组</span>
|
||||||
@@ -832,7 +833,7 @@
|
|||||||
style="color: rgba(0, 0, 0, 0.45); cursor: pointer"
|
style="color: rgba(0, 0, 0, 0.45); cursor: pointer"
|
||||||
>. . .</span
|
>. . .</span
|
||||||
>
|
>
|
||||||
<div class="moreItems" v-if="checkPer(permissions)">
|
<div class="moreItems" v-if="checkPer(permissions,createId)">
|
||||||
<div class="sammo" @click="showModal2(item, true)">
|
<div class="sammo" @click="showModal2(item, true)">
|
||||||
编辑
|
编辑
|
||||||
</div>
|
</div>
|
||||||
@@ -1072,7 +1073,7 @@
|
|||||||
<div
|
<div
|
||||||
class="addcertificate1"
|
class="addcertificate1"
|
||||||
@click="addCertificate"
|
@click="addCertificate"
|
||||||
v-if="checkPer(permissions)"
|
v-if="checkPer(permissions,createId)"
|
||||||
>
|
>
|
||||||
<div class="addcertext">+添加证书</div>
|
<div class="addcertext">+添加证书</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1124,6 +1125,7 @@
|
|||||||
查看
|
查看
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
v-if="checkPer(permissions,createId)"
|
||||||
class="certificateMore2"
|
class="certificateMore2"
|
||||||
style="line-height: 22px; cursor: pointer"
|
style="line-height: 22px; cursor: pointer"
|
||||||
@click="editCertificate(item)"
|
@click="editCertificate(item)"
|
||||||
@@ -1131,6 +1133,7 @@
|
|||||||
编辑
|
编辑
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
v-if="checkPer(permissions,createId)"
|
||||||
class="certificateMore3"
|
class="certificateMore3"
|
||||||
style="line-height: 22px; cursor: pointer"
|
style="line-height: 22px; cursor: pointer"
|
||||||
@click="deleteCertificate(item)"
|
@click="deleteCertificate(item)"
|
||||||
@@ -1158,6 +1161,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 查看证书显示的页面 -->
|
<!-- 查看证书显示的页面 -->
|
||||||
<TableCertificateStudent
|
<TableCertificateStudent
|
||||||
|
:permissions="permissions"
|
||||||
|
:createId="createId"
|
||||||
:projectId="projectId"
|
:projectId="projectId"
|
||||||
:ACertificateCheckId="ACertificateCheckId"
|
:ACertificateCheckId="ACertificateCheckId"
|
||||||
v-if="ischeckCertificate"
|
v-if="ischeckCertificate"
|
||||||
@@ -1181,7 +1186,7 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
<div
|
<div
|
||||||
class="edit"
|
class="edit"
|
||||||
v-if="status != 3 && checkPer(permissions)"
|
v-if="status != 3 && checkPer(permissions,createId)"
|
||||||
@click="toEdit"
|
@click="toEdit"
|
||||||
>
|
>
|
||||||
<div class="img"></div>
|
<div class="img"></div>
|
||||||
@@ -1285,8 +1290,8 @@
|
|||||||
<div class="Gin">
|
<div class="Gin">
|
||||||
<div class="headone">
|
<div class="headone">
|
||||||
<div class="box"></div>
|
<div class="box"></div>
|
||||||
<div class="onetitle">上传共享文档</div>
|
<div class="onetitle" v-if="checkPer(permissions,createId)">上传共享文档</div>
|
||||||
<div class="oneedi">
|
<div class="oneedi" v-if="checkPer(permissions,createId)">
|
||||||
<a-switch
|
<a-switch
|
||||||
size="small"
|
size="small"
|
||||||
v-model:checked="docChecked"
|
v-model:checked="docChecked"
|
||||||
@@ -1296,7 +1301,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btnbox" style="margin: 20px">
|
<div class="btnbox" style="margin: 20px">
|
||||||
<a-upload
|
<a-upload
|
||||||
v-if="docChecked == true"
|
v-if="docChecked == true && checkPer(permissions,createId)"
|
||||||
v-model:file-list="fileList"
|
v-model:file-list="fileList"
|
||||||
name="file"
|
name="file"
|
||||||
:action="uploadAction"
|
:action="uploadAction"
|
||||||
@@ -1320,7 +1325,7 @@
|
|||||||
/>
|
/>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
<div
|
<div
|
||||||
v-if="docChecked == true"
|
v-if="docChecked == true && checkPer(permissions,createId)"
|
||||||
class="btnbox"
|
class="btnbox"
|
||||||
style="margin: 20px"
|
style="margin: 20px"
|
||||||
>
|
>
|
||||||
@@ -1437,6 +1442,7 @@
|
|||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
href="javascript:void(0);"
|
href="javascript:void(0);"
|
||||||
|
v-if="checkPer(permissions,createId)"
|
||||||
@click="
|
@click="
|
||||||
downloadFile(
|
downloadFile(
|
||||||
item.response ? item.response.data : ''
|
item.response ? item.response.data : ''
|
||||||
@@ -1446,6 +1452,7 @@
|
|||||||
>下载</a
|
>下载</a
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
v-if="checkPer(permissions,createId)"
|
||||||
style="color: #4ea6ff; float: right; cursor: pointer"
|
style="color: #4ea6ff; float: right; cursor: pointer"
|
||||||
@click="deFile(item.uid)"
|
@click="deFile(item.uid)"
|
||||||
>删除</span
|
>删除</span
|
||||||
@@ -1586,6 +1593,8 @@
|
|||||||
v-model:chooseGroupName="chooseGroupName"
|
v-model:chooseGroupName="chooseGroupName"
|
||||||
v-model:groupMemberCount="groupMemberCount"
|
v-model:groupMemberCount="groupMemberCount"
|
||||||
v-model:projectId="projectId"
|
v-model:projectId="projectId"
|
||||||
|
:permissions="permissions"
|
||||||
|
:createId="createId"
|
||||||
/>
|
/>
|
||||||
<!-- 面授学员抽屉 -->
|
<!-- 面授学员抽屉 -->
|
||||||
<ProjectFaceStu
|
<ProjectFaceStu
|
||||||
@@ -2255,6 +2264,7 @@ export default {
|
|||||||
const store = useStore();
|
const store = useStore();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
|
createId: "",
|
||||||
permissions: "",
|
permissions: "",
|
||||||
screenHeight: document.body.clientHeight,
|
screenHeight: document.body.clientHeight,
|
||||||
screenWidth: document.body.clientWidth,
|
screenWidth: document.body.clientWidth,
|
||||||
@@ -2820,7 +2830,7 @@ export default {
|
|||||||
startTime: state.rankStartTime ? state.rankStartTime : 0, // 数据查询的起始时间 10位时间戳
|
startTime: state.rankStartTime ? state.rankStartTime : 0, // 数据查询的起始时间 10位时间戳
|
||||||
endTime: state.rankEndTime ? state.rankEndTime : 0,
|
endTime: state.rankEndTime ? state.rankEndTime : 0,
|
||||||
stageId: state.valuestu2, // 阶段ID
|
stageId: state.valuestu2, // 阶段ID
|
||||||
type: Number(state.valuestu3), // 查询类型 0 学员积分榜 1 小组积分榜
|
type: Number(state.valuestu1), // 查询类型 0 学员积分榜 1 小组积分榜
|
||||||
};
|
};
|
||||||
console.log("我是获取得项目进度排行榜--》", obj);
|
console.log("我是获取得项目进度排行榜--》", obj);
|
||||||
api
|
api
|
||||||
@@ -3870,6 +3880,7 @@ export default {
|
|||||||
let info = res.data.data.projectInfo;
|
let info = res.data.data.projectInfo;
|
||||||
console.log(121, info);
|
console.log(121, info);
|
||||||
state.permissions = info.permissions;
|
state.permissions = info.permissions;
|
||||||
|
state.createId = info.createId;
|
||||||
let start = info.beginTime;
|
let start = info.beginTime;
|
||||||
let end = info.endTime;
|
let end = info.endTime;
|
||||||
state.tstartTime = info.beginTime;
|
state.tstartTime = info.beginTime;
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
<div class="split"></div>
|
<div class="split"></div>
|
||||||
<div class="up down">
|
<div class="up down">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="text">学员情况1</div>
|
<div class="text">学员情况</div>
|
||||||
<div class="btn btn2" @click="exportStudentInfo">
|
<div class="btn btn2" @click="exportStudentInfo">
|
||||||
<div class="img2"></div>
|
<div class="img2"></div>
|
||||||
<div class="wz">导出信息</div>
|
<div class="wz">导出信息</div>
|
||||||
@@ -144,7 +144,7 @@ export default {
|
|||||||
|
|
||||||
// 导出学员信息
|
// 导出学员信息
|
||||||
function exportStudentInfo() {
|
function exportStudentInfo() {
|
||||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/assessment/manage/exportAssessmentMessage?assessmentId=${router.currentRoute.value.params.id}`)
|
window.open(`${process.env.VUE_APP_BASE_API}/admin/assessment/manage/exportAssessmentMessage?courseId=${router.currentRoute.value.params.id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
//分页
|
//分页
|
||||||
|
|||||||
Reference in New Issue
Block a user