Merge branch 'pre-dev' into 'develop'

Pre dev

See merge request !37
This commit is contained in:
huangshengfa
2022-12-30 11:27:05 +08:00
18 changed files with 138 additions and 60 deletions

View File

@@ -2,6 +2,8 @@ NODE_ENV=boe
VUE_APP_BASE=/manage
VUE_APP_BASE_API=/manageApi
VUE_APP_LOGIN_URL=https://u-pre.boe.com/web
VUE_APP_BOE_API_URL=https://u-pre.boe.com

View File

@@ -2,6 +2,8 @@ NODE_ENV=prod
VUE_APP_BASE=/manage
VUE_APP_BASE_API=/manageApi
VUE_APP_LOGIN_URL=https://u.boe.com/web
VUE_APP_BOE_API_URL=https://u.boe.com
VUE_APP_IFRAME_URL=https://u.boe.com/pc/iframe

View File

@@ -1,7 +1,7 @@
NODE_ENV=release
VUE_APP_BASE=/manage-release
VUE_APP_BASE_API=/manageApi-release
VUE_APP_LOGIN_URL=https://u.boe.com/web
VUE_APP_LOGIN_URL=https://u.boe.com/web-release
VUE_APP_BOE_API_URL=https://u.boe.com

View File

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

View File

@@ -62,6 +62,7 @@ import { reactive, toRefs } from "vue";
import DownLoad from "../components/drawers/DownLoad";
import * as api from "../api/index1";
import { studentUrl } from "../api/method";
import router from "@/router";
export default {
name: "NavTop",
components: {
@@ -76,7 +77,7 @@ export default {
{
id: 1,
name: "管理员",
go: "/learningpath",
go: "/manage/learningpath",
},
{
id: 2,
@@ -137,7 +138,7 @@ export default {
localStorage.removeItem("projectId");
localStorage.removeItem("projectTemplateId");
localStorage.removeItem("orgtreeList");
window.open("https://u-pre.boe.com/web/", "_self");
process.env.NODE_ENV === 'development' ? router.push({path: 'login'}) : (window.location.href = process.env.VUE_APP_LOGIN_URL)
};
return {
...toRefs(state),

View File

@@ -593,8 +593,8 @@ export default {
state.duration = result.duration;
if (result.beginTime && result.endTime) {
state.chooseTime = [
dayjs(result.beginTime, "YYYY-MM-DD"),
dayjs(result.endTime, "YYYY-MM-DD"),
dayjs(result.beginTime, "YYYY-MM-DD HH-mm"),
dayjs(result.endTime, "YYYY-MM-DD HH-mm"),
];
} else {
state.chooseTime = [];

View File

@@ -1,3 +1,4 @@
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
<template>
<a-drawer
:visible="Seevisible"
@@ -47,6 +48,7 @@
<span class="total">/{{ totalReqCnt }}</span>
</div>
</div>
<!--
<a-divider
type="vertical"
style="
@@ -61,13 +63,11 @@
<span class="nub1">{{ certCnt }}</span>
</div>
</div>
-->
</div>
<div class="secondrow">
<div class="rowleft">{{ name }}</div>
<div class="rowbox" @click="showProMess">
<div class="shuom">说明</div>
<div><img src="../../assets/images/studentimg/chak.png" /></div>
</div>
</div>
<div class="mainbox">
<a-collapse v-model:activeKey="stageListActive">
@@ -86,12 +86,28 @@
v-for="value in stageList"
:key="value.stageId"
:header="value.stageName"
>
<div
>
<template #extra >
<div @click.stop="">
<div class="rowbox">
<a-popover title="阶段说明">
<template #content>
<p>这里是阶段说明</p>
</template>
<div class="shuom">说明</div>
</a-popover>
<div><img src="../../assets/images/studentimg/chak.png" /></div>
</div>
</div>
</template>
<div
class="rowclass"
v-for="(item, key) in value.taskProcessList"
:key="key"
>
<div class="leftclass">
<div>
<img
@@ -141,6 +157,7 @@
</div>
<div class="altext">{{ item.complete }}</div>
</div>
</div>
</a-collapse-panel>
</a-collapse>
@@ -293,14 +310,30 @@ export default {
const setStageList = (tableData) => {
let data = tableData;
let array = [];
data.map((value) => {
//无阶段任务
if(data?.length ==1 && data[0].stageId ==0){
data.map((value) => {
let obj = {
stageName:"无阶段任务",
stageId:0,
taskProcessList: taskProcessList(value.taskProcessList),
};
array.push(obj);
});
}else{ //有阶段
data.map((value) => {
let obj = {
stageName: value.stageName,
stageId: value.stageId,
taskProcessList: taskProcessList(value.taskProcessList),
};
array.push(obj);
if(value.stageId >0){
array.push(obj);
}
});
}
state.stageList = array;
};
const check = () => {
@@ -433,6 +466,14 @@ export default {
color: rgba(51, 51, 51, 1);
font-size: 16px;
}
}
.mainbox {
// height: 463px;
margin-right: 37px;
margin-top: 32px;
//border: 1px solid rgba(221, 238, 255, 1);
//border-radius: 6px;
.rowbox {
width: 64px;
height: 24px;
@@ -442,6 +483,7 @@ export default {
margin-left: 24px;
border: 1px solid rgba(64, 158, 255, 1);
background: rgba(64, 158, 255, 0.1);
margin-right: 700px;
cursor: pointer;
.shuom {
color: rgba(64, 158, 255, 1);
@@ -450,13 +492,6 @@ export default {
margin-right: 5px;
}
}
}
.mainbox {
// height: 463px;
margin-right: 37px;
margin-top: 32px;
//border: 1px solid rgba(221, 238, 255, 1);
//border-radius: 6px;
.ant-collapse {
background-color: #ffffff;
border: 0;

View File

@@ -5,11 +5,15 @@
return triggerNode.parentNode || document.body;
}
"
v-model:value="id"
v-model:value="labelValue"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择归属组织"
:labelInValue="true"
allow-clear
v-model:treeExpandedKeys="stuTreeExpandedKeys"
:loading="orgLoading"
:load-data="onLoadData"
:tree-data="options"
:fieldNames="{
children: 'treeChildList',
@@ -23,30 +27,50 @@
</a-tree-select>
</template>
<script setup>
import {computed, defineEmits, defineProps} from "vue";
import {useStore} from "vuex";
const store = useStore();
import {defineEmits, defineProps, ref, watch} from "vue";
import {request, useBoeApi} from "@/api/request";
import {ORG_CHILD_LIST, ORG_LIST} from "@/api/ThirdApi";
const props = defineProps({
value: String,
name: String,
disabled: {
type: Boolean,
default: false
}
})
const emit = defineEmits({})
const options = computed(() => store.state.orgtreeList)
const id = computed(() => {
return props.value
const stuTreeExpandedKeys = ref([])
const labelValue = ref({})
const {
data: options,
loading: orgLoading,
} = useBoeApi(ORG_LIST, {keyword: ''}, {
init: true,
result: (res) => res.result.map(e => ({...e, isLeaf: false})),
})
function change(key, obj, {triggerNode: {props: {namePath}}}) {
emit('update:name', obj[0])
watch(props, () => {
stuTreeExpandedKeys.value = []
if (labelValue.value.value !== props.value) {
labelValue.value = {value: props.value, label: props.name}
}
if (labelValue.value.label !== props.name) {
labelValue.value = {value: props.value, label: props.name}
}
})
function onLoadData(treeNode) {
return request(ORG_CHILD_LIST, {keyword: '', orgId: treeNode.id}).then(r => {
treeNode.dataRef.treeChildList = r.result.directChildList
options.value = [...options.value]
})
}
function change({label,value}, obj, {triggerNode: {props: {namePath}}}) {
emit('update:name', label)
emit('update:fullName', namePath)
emit('update:value', key)
emit('update:value', value)
}
</script>

View File

@@ -28,7 +28,7 @@
<a-form-item label="姓名">
<a-input
v-model:value="nameSearch.keyword"
style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入姓名"
@change="peopleName"
@@ -67,6 +67,8 @@
allow-clear
tree-default-expand-all
:tree-data="treeData"
:loading="orgLoading"
:load-data="onLoadData"
v-model:selectedKeys="stuTreeSelectKeys"
v-model:expandedKeys="stuTreeExpandedKeys"
:fieldNames="{
@@ -393,12 +395,10 @@
</template>
<script setup>
import {computed, defineEmits, defineProps, ref, watch} from "vue";
import {useStore} from "vuex";
import {useBoeApiPage} from "@/api/request";
import {AUDIENCE_LIST, USER_LIST} from "@/api/ThirdApi";
import {request, useBoeApi, useBoeApiPage} from "@/api/request";
import {AUDIENCE_LIST, ORG_CHILD_LIST, ORG_LIST, USER_LIST} from "@/api/ThirdApi";
import {saveStu} from "@/api/index1";
const store = useStore();
const emit = defineEmits({});
const props = defineProps({
type: Number,
@@ -457,7 +457,14 @@ const {
// const {
// data: orgData,
// fetch: searchOrg,
// } = useBoeApi(ORG_LIST, searchOrgName.value)
// } = useBoeApiPage(ORG_LIST, searchOrgName.value)
const {
data: treeData,
loading: orgLoading,
} = useBoeApi(ORG_LIST, {keyword: ''}, {
init: true,
result: (res) => res.result.map(e => ({...e,isLeaf:false})),
})
const {
data: audiData,
fetch: searchAudi,
@@ -578,9 +585,13 @@ const closeDrawer = () => {
visiable.value = false;
stuData.value = [];
nameSearch.value.keyword = "";
};
function onLoadData(treeNode){
return request(ORG_CHILD_LIST, {keyword:'',orgId:treeNode.id}).then(r => {
treeNode.dataRef.treeChildList = r.result.directChildList
treeData.value = [...treeData.value]
})
}
const closeChangeModal = () => {
stageVisible.value = false;
};
@@ -588,9 +599,9 @@ const openDrawer = () => {
visiable.value = true;
};
//获取组织树
const treeData = computed(() => {
return store.state.orgtreeList ? store.state.orgtreeList : [];
});
// const treeData = computed(() => {
// return store.state.orgtreeList ? store.state.orgtreeList : [];
// });
function onSearchStu() {
nameSearch.value.page = 1;
@@ -654,6 +665,7 @@ const auditChangePagination = (page) => {
audienceName.value.page = page;
searchAudi();
};
//重置
function peopleName(name) {
console.log('people-name', name.target.value)

View File

@@ -165,9 +165,10 @@ const tablecolumns = ref([
title: "姓名",
dataIndex: "studentName",
key: "studentName",
width: "8%",
width: "12%",
align: "left",
className: "h",
ellipsis: true,
customRender: ({record: {studentName, topFlag}}) => (topFlag ? <div
style={{
display: "flex",
@@ -188,7 +189,7 @@ const tablecolumns = ref([
title: "工号",
dataIndex: "studentUserNo",
key: "studentUserNo",
width: "20%",
width: "15%",
align: "center",
className: "h",
ellipsis: true,

View File

@@ -111,6 +111,9 @@
</div>
<div class="mbl_items2" v-if="detail.intro">
<div class="item_nam">
<div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk" />
</div>
<span style="margin-right: 14px">课程简介</span>
</div>
<div class="item_inp">

View File

@@ -958,7 +958,7 @@
<span style="color: #999999">{{ remark }}</span>
</div>
</div>
<div class="set_content" v-if="isPass">
<div class="set_content" v-if="passInfo">
<div class="setc_name"><span>审核意见:</span></div>
<div class="setc_main">
<span style="color: #333333">{{ passInfo }}</span>
@@ -3351,13 +3351,10 @@ export default {
console.log("get task", res.data.data);
if (res.data.code === 200) {
// 判断当前审核是否通过
if (
res.data.data.status == -5 &&
res.data.data.projectAuditLogDtoList !== null
) {
if (res.data.data.projectAuditLogDtoList && res.data.data.projectAuditLogDtoList.length) {
console.log("审核信息是什么", res.data.data.projectAuditLogDtoList);
let dataset = res.data.data.projectAuditLogDtoList;
state.passInfo = dataset[dataset.length - 1];
state.passInfo = dataset[dataset.length - 1].description;
/**
for (let i = 0; i < dataset.length; i++) {

View File

@@ -46,7 +46,7 @@
@del="handleDel"
/>
</div>
<div class="opinion name2">
<!-- <div class="opinion name2">
<div class="namebox">
<div class="inname" style="margin-top: 13px">您的其他意见</div>
</div>
@@ -58,7 +58,7 @@
:maxlength="200"
/>
</div>
</div>
</div> -->
<div class="footer">
<div class="btn">
<a-button

View File

@@ -22,7 +22,7 @@
v-model:value="curItem.valueAsk"
placeholder="请输入标题名称"
show-count
:maxlength="20"
:maxlength="100"
style="border-radius: 8px"
/>
</div>
@@ -33,6 +33,7 @@
</div>
<div class="in">
<a-textarea
:maxlength="100"
v-model:value="curItem.valueAskDesc"
style="height: 148px"
/>

View File

@@ -10,7 +10,7 @@
<a-input
v-model:value="curItem.inputVal"
show-count
:maxlength="30"
:maxlength="100"
style="border-radius: 8px"
/>
</div>

View File

@@ -22,7 +22,7 @@
v-model:value="curItem.valueMutil"
placeholder="请输入题干名称"
show-count
:maxlength="20"
:maxlength="100"
style="border-radius: 8px"
/>
</div>

View File

@@ -22,7 +22,7 @@
v-model:value="curItem.valuePin"
placeholder="请输入标题名称"
show-count
:maxlength="20"
:maxlength="100"
style="border-radius: 8px"
/>
</div>

View File

@@ -22,7 +22,7 @@
v-model:value="curItem.valueSingle"
placeholder="请输入题干名称"
show-count
:maxlength="20"
:maxlength="100"
style="border-radius: 8px"
/>
</div>