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

This commit is contained in:
wyx
2022-12-04 17:54:36 +08:00
20 changed files with 1164 additions and 991 deletions

View File

@@ -32,6 +32,7 @@
v-model:value="name"
style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入姓名"
maxlength="20"
/>
</div>
<div class="namecon" style="margin-right: 30px">

View File

@@ -33,7 +33,7 @@
v-model:value="inputV1"
style="width: 424px; height: 32px"
placeholder="请输入活动名称"
maxlength="20"
maxlength="50"
/>
</div>
</div>
@@ -52,7 +52,8 @@
v-model:value="textV1"
placeholder="请输入活动公告"
allow-clear
maxlength="150"
:rows="6"
show-count :maxlength="200"
/>
</div>
</div>
@@ -65,7 +66,8 @@
v-model:value="textV2"
placeholder="请输入活动说明"
allow-clear
maxlength="150"
:rows="6"
show-count :maxlength="200"
/>
</div>
</div>
@@ -127,6 +129,7 @@
v-model:value="inputV3"
style="width: 424px; height: 32px"
placeholder="请输入活动地址"
maxlength="100"
/>
</div>
</div>
@@ -589,7 +592,27 @@ export default {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox {
width: 120px;
display: flex;

View File

@@ -27,6 +27,8 @@
v-model:value="inputV1"
style="width: 264px; height: 40px; border-radius: 8px"
placeholder="请输入案例标题"
show-count
:maxlength="20"
/>
</div>
</div>

View File

@@ -46,6 +46,7 @@
v-model:value="textV1"
placeholder="请输入讨论说明"
allow-clear
:rows="6"
show-count
:maxlength="200"
/>

View File

@@ -18,7 +18,8 @@
</div>
<div class="btnbox">
<a-input v-model:value="inputV1" style="width: 424px; height: 32px" placeholder="请输入测评名称"
maxlength="20" />
show-count
:maxlength="50" />
</div>
</div>
<div class="main_item">
@@ -53,9 +54,9 @@
<span style="margin-right: 3px">测评说明</span>
</div>
<div class="textarea">
<a-textarea maxlength="150" v-model:value="description" placeholder="请输入测评说明"
style="width: 424px; height: 120px" allowClear />
<span style="position:relative;top:96px;left:-54px;z-index:9999;">{{ description.length }}/150</span>
<a-textarea show-count :maxlength="200" v-model:value="description" placeholder="请输入测评说明"
style="width: 424px;" allowClear :rows="6"/>
</div>
</div>
</div>
@@ -423,7 +424,27 @@ export default {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox {
width: 120px;
display: flex;

View File

@@ -18,7 +18,7 @@
</div>
<div class="btnbox">
<a-input v-model:value="courseName" style="width: 384px; height: 32px" placeholder="请输入名称"
maxlength="20"/>
:maxlength="50"/>
</div>
</div>
<div class="main_item">
@@ -30,12 +30,8 @@
</div>
<div class="btnbox">
<button class="xkbtn" @click="showDrawerSelFacet">
<!--
{{ chooseCourse == null ? "选择" : chooseCourseName }}面授课
</button> -->
{{ chooseCourse == null ? "选择" : "重选" }}面授课
</button>
</button>
<div v-if="chooseCourse">
<a-tag closable color="processing" @close="logC">
<span style="font-size:14px;line-height: 33px;">删除课程</span>
@@ -54,7 +50,7 @@
<span style="margin-right: 3px">面授说明</span>
</div>
<div class="textarea">
<a-textarea v-model:value="description" placeholder="请输入说明" allow-clear maxlength="100"/>
<a-textarea v-model:value="description" placeholder="请输入说明" allow-clear show-count :maxlength="200" :rows="6"/>
</div>
</div>
<div class="main_item">
@@ -107,7 +103,7 @@
</div>
<div class="btnbox">
<a-input v-model:value="address" style="width: 384px; height: 32px" placeholder="请输入上课地址"
maxlength="100"/>
:maxlength="100"/>
</div>
</div>
<div class="main_item2">
@@ -797,7 +793,27 @@ export default {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox {
width: 120px;
display: flex;

View File

@@ -29,6 +29,7 @@
v-model:value="valuen"
placeholder="请输入小组名称"
style="border-radius: 8px; height: 40px"
maxlength="20"
/>
</div>
</div>
@@ -45,6 +46,7 @@
v-model:value="valueg"
placeholder="请输入小组长"
style="border-radius: 8px; height: 40px"
maxlength="20"
/>
</div>
</div>

View File

@@ -12,7 +12,7 @@
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
@click="closeDrawer2"
/>
</div>
<a-form
@@ -31,25 +31,31 @@
<div class="btnbox">
<a-form-item has-feedback label="作业名称" name="workName">
<a-input
maxLength="20"
v-model:value="formState.workName"
style="width: 424px; height: 32px; margin-left: 35px"
placeholder="请输入作业名称"
autocomplete="off"
show-count :maxlength="50"
/>
</a-form-item>
</div>
</div>
<div class="main_item2">
<a-form-item has-feedback label="作业要求" name="workRequirement">
<div class="textarea">
<a-textarea
v-model:value="formState.workRequirement"
placeholder="请输入作业要求"
autocomplete="off"
allow-clear
style="margin-left: 35px;width: 426px;height: 200px;"
maxlength="150"
/>
:rows="6"
style="margin-left: 35px"
show-count :maxlength="200"
/></div>
</a-form-item>
</div>
<div class="main_item">
@@ -96,7 +102,7 @@
</div>
</div>
<div class="main_btns">
<a-button class="btn1" @click="closeDrawer">取消</a-button>
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" html-type="submit" @click="cle">确定</a-button>
</div>
</a-form>
@@ -284,6 +290,10 @@ export default {
state.workEnclosureAddress = "";
resetForm();
};
const closeDrawer2 = () => {
ctx.emit("update:addhomeworkVisible", false);
resetForm();
};
const afterVisibleChange = () => {
if (props.EditWorkId > 0) {
state.EditWorkId = props.EditWorkId;
@@ -439,6 +449,7 @@ export default {
return {
afterVisibleChange,
closeDrawer,
closeDrawer2,
handleChange,
fileList,
formState,
@@ -528,7 +539,27 @@ export default {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox {
width: 120px;
display: flex;

View File

@@ -31,6 +31,7 @@
v-model:value="name"
style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入姓名"
maxlength="20"
/>
</div>
<div class="btns">
@@ -126,6 +127,7 @@
v-model:value="nameadd"
style="width: 200px; height: 40px; border-radius: 8px"
placeholder="请输入姓名"
maxlength="20"
/>
</div>
</div>
@@ -205,6 +207,7 @@
v-model:value="nameaddd"
style="width: 200px; height: 40px; border-radius: 8px"
placeholder="请输入姓名"
maxlength="20"
/>
</div>
</div>

View File

@@ -47,7 +47,10 @@
v-model:value="textV1"
placeholder="请输入考试说明"
allow-clear
maxlength="364px"
show-count
:maxlength="200"
:rows="6"
/>
</div>
</div>
@@ -155,6 +158,7 @@
v-model:value="inputV4"
style="width: 424px; height: 32px"
placeholder="请输入直播链接"
:maxlength="100"
/>
</div>
</div>
@@ -176,6 +180,7 @@
v-model:value="inputV5"
style="width: 424px; height: 32px"
placeholder="请输入回放链接"
:maxlength="100"
/>
</div>
</div>
@@ -881,7 +886,27 @@ export default {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox {
width: 120px;
display: flex;

View File

@@ -27,6 +27,7 @@
v-model:value="inputV1"
style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入项目名称"
maxlength="20"
/>
</div>
</div>

View File

@@ -15,21 +15,22 @@
<div class="ipt_name">项目名称</div>
<div class="fi_input">
<a-input v-model:value="inputV1" style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入项目名称" />
placeholder="请输入项目名称"
maxlength="20"/>
</div>
</div>
<div class="mii_ipt">
<div class="ipt_name">项目经理</div>
<div class="fi_input">
<a-input v-model:value="inputV2" style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入项目经理" />
placeholder="请输入项目经理" maxlength="20"/>
</div>
</div>
<div class="mii_ipt">
<div class="ipt_name">创建人</div>
<div class="fi_input">
<a-input v-model:value="inputV3" style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入创建人" />
placeholder="请输入创建人" maxlength="20"/>
</div>
</div>
</div>

View File

@@ -42,7 +42,7 @@
v-model:value="inputV1"
style="width: 424px; height: 32px"
placeholder="请输入外链名称"
maxlength="20"
show-count :maxlength="50"
/>
</div>
</div>
@@ -61,6 +61,8 @@
v-model:value="inputV2"
style="width: 424px; height: 32px"
placeholder="请输入链接"
show-count :maxlength="100"
/>
</div>
</div>
@@ -73,6 +75,8 @@
v-model:value="textV1"
placeholder="请输入外链说明"
allow-clear
:rows="6"
show-count :maxlength="200"
/>
</div>
</div>

View File

@@ -12,7 +12,7 @@
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
@click="closeDrawer2"
/>
</div>
<!-- 2022-11-30注释 后面放开 修改div的padding-topL:32 -->
@@ -58,7 +58,7 @@
style="width: 424px; height: 32px; margin-left: 35px"
autocomplete="off"
placeholder="请输入考试名称"
maxlength="20"
show-count :maxlength="50"
/>
</a-form-item>
</div>
@@ -68,14 +68,15 @@
has-feedback
label="考试说明"
name="examinationExplain"
>
><div class="textarea">
<a-textarea
v-model:value="formState.examinationExplain"
placeholder="请输入考试说明"
allow-clear
:rows="6"
style="margin-left: 35px"
maxlength="150"
/>
show-count :maxlength="200"
/></div>
</a-form-item>
</div>
<div class="main_item">
@@ -300,7 +301,7 @@
</div>
</div>
<div class="main_btns">
<a-button class="btn1" @click="closeDrawer">取消</a-button>
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" html-type="submit">确定</a-button>
</div>
</a-form>
@@ -329,7 +330,7 @@
style="width: 424px; height: 32px; margin-left: 35px"
autocomplete="off"
placeholder="请输入考试名称"
maxlength="20"
show-count :maxlength="50"
/>
</a-form-item>
</div>
@@ -346,7 +347,7 @@
style="width: 424px; height: 32px; margin-left: 35px"
autocomplete="off"
placeholder="数据来源"
maxlength="20"
show-count :maxlength="50"
/>
</a-form-item>
</div>
@@ -358,19 +359,21 @@
label="考试说明"
name="examinationExplain"
>
<div class="textarea">
<a-textarea
v-model:value="formState.examinationExplain"
placeholder="请输入考试说明"
allow-clear
:rows="6"
style="margin-left: 35px"
maxlength="150"
/>
show-count :maxlength="200"
/></div>
</a-form-item>
</div>
</div>
</div>
<div class="main_btns">
<a-button class="btn1" @click="closeDrawer">取消</a-button>
<a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" html-type="submit">确定</a-button>
</div>
</a-form>
@@ -647,6 +650,11 @@ export default {
localStorage.setItem("chapterId", props.isactive);
resetForm();
};
const closeDrawer2 = () => {
formState.choosedTime = "";
ctx.emit("update:addtestVisible", false);
resetForm();
};
const afterVisibleChange = () => {
if (props.addtestVisible && props.edit) {
// 该页面显示同时 edit为true 时,发送查询请求,
@@ -661,7 +669,7 @@ export default {
state.paperName = "";
};
const queryTest = () => {
state.addLoading = true;
// state.addLoading = true;
queryExaminationDetailById({ examinationId: props.EditTestId })
.then((res) => {
formState.examinationName = res.data.data.examinationName;
@@ -858,6 +866,7 @@ export default {
formState,
afterVisibleChange,
closeDrawer,
closeDrawer2,
selectTest,
cloradio1,
cloradio2,
@@ -966,6 +975,27 @@ export default {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox {
width: 120px;
display: flex;

View File

@@ -31,6 +31,7 @@
v-model:value="name"
style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入姓名"
maxlength="20"
/>
</div>
<div class="btns">

View File

@@ -138,7 +138,7 @@
//import { ApiFilled } from "@ant-design/icons-vue";
import {reactive, toRefs, computed} from "vue";
// import { planList } from "../../api/indexTaskadd";
// import {detail} from "../../api/indexCourse";
//import {detail} from "../../api/indexCourse";
import {list} from "../../api/indexTaskadd";
import {toDate} from "../../api/method";

View File

@@ -4393,6 +4393,7 @@ export default defineComponent({
state.valueE1 = "";
state.qdms_inputV1 = state.xzinputV1;
state.xzinputV1 = "";
getDictList("faceclassPic");
}
if (state.bs_hs && state.valueE1 != "") {
state.addOnlineCoursevisible = true;

View File

@@ -44,7 +44,6 @@
placeholder="请选择状态"
:options="sProjectStateList"
allowClear
showSearch
></a-select>
</div>
<div class="select">
@@ -1526,6 +1525,7 @@ export default {
onClick={() => {
router.push({
path: "/taskpage",
query: {projectId: value.record.projectId}
});
storage.set("projectId", value.record.projectId);
}}

View File

@@ -1027,7 +1027,7 @@
</template>
<script>
import {reactive, toRefs, onMounted, onUnmounted, onUpdated} from "vue";
import {reactive, toRefs, onMounted, onUnmounted, onUpdated, watch} from "vue";
import AddOnline from "../../components/drawers/AddOnline.vue";
import AddFaceteach from "../../components/drawers/AddFaceteach.vue";
import AddCase from "../../components/drawers/AddCase.vue";
@@ -1048,7 +1048,7 @@ import draggable from "vuedraggable";
import {storage} from "../../api/storage";
// import UnlockMode from "../../components/drawers/UnlockMode.vue";
// import * as api1 from "../../api/index1";
import {useRouter} from "vue-router";
import {useRoute, useRouter} from "vue-router";
export default {
name: "TaskAdd",
@@ -1070,10 +1070,9 @@ export default {
},
setup() {
const router = useRouter();
const route = useRoute();
const state = reactive({
projectId: storage.get("projectId")
? JSON.parse(storage.get("projectId"))
: null,
projectId: route.query.projectId,
chooseStageId: null,
removeStageId: null,
edit: false,
@@ -1160,6 +1159,10 @@ export default {
console.log("visible", bool);
};
watch(route, () => {
console.log(route)
})
// 把数据放到state里
const getTableData = (tableData) => {
let data = tableData;
@@ -1360,90 +1363,86 @@ export default {
//获取任务列表
const getTask = async () => {
// console.log("state.projectId", state.projectId);
let obj = {
projectId: state.projectId,
// projectId: 28,
};
await api
.getTask(obj)
.then((res) => {
if (res.status == 200) {
console.log("22222", res.data.data.stageList);
// console.log("22222", res.data.data.stageList);
state.projectTitle = res.data.data.projectInfo.name;
state.picUrl = res.data.data.projectInfo.picUrl;
state.stageList = res.data.data.stageList;
let leng = res.data.data.stageList.length;
if (leng > 0) {
let stage = localStorage.getItem("stageId") ? localStorage.getItem("stageId") : null;
// console.log("stage",Object.prototype.toString.call(stage))
getStageData(res.data.data.stageList);
if (stage != null) {
console.log(stage);
let stageList = res.data.data.stageList; //阶段数组
let result = stageList.find((item) => item.stageId == stage);
console.log("又找到了", result);
if (result != null) {
getTableData(result.taskList);
} else {
//没有选中的阶段时,获取全部的任务
console.log(stage);
let stageList = res.data.data.stageList; //阶段数组
if (stageList != null) {
let taskListAll;
stageList.forEach((item) => {
taskListAll = [...item.taskList];
});
console.log("taskListAll", taskListAll);
getTableData(taskListAll);
}
}
} else {
console.log(stage);
let stageList = res.data.data.stageList; //阶段数组
if (stageList != null) {
let taskListAll;
stageList.forEach((item) => {
taskListAll = [...item.taskList];
});
console.log("taskListAll", taskListAll);
getTableData(taskListAll);
}
}
// 每次都获取了第一条taskList
// let arr = res.data.data.stageList[0].taskList;
// console.log("任务列表", stage, arr);
// getTableData(arr);
}
// //获取阶段列表
let stagearr = res.data.data.stageList;
// let arrlist = state.curLevel;
console.log(stagearr, 111111);
if (stagearr.length > 0) {
getStageData(stagearr);
// stagearr.map((value) => {
// console.log(value);
// // arrlist.push(value);
// });
}
//给阶段id赋初始值
let stageid = localStorage.getItem("stageId")
? localStorage.getItem("stageId")
: null;
if (stageid !== "null") {
state.chooseStageId = stageid;
} else {
state.chooseStageId = leng > 0 ? stagearr[0].stageId : null;
}
let final = state.level.find((item) => item.id == state.chooseStageId);
getTableData(final.taskList);
}
console.log("22222", res.data.data.stageList);
state.projectTitle = res.data.data.projectInfo.name;
state.picUrl = res.data.data.projectInfo.picUrl;
state.stageList = res.data.data.stageList;
getStageData(res.data.data.stageList);
updateStageChoosd()
// let leng = res.data.data.stageList.length;
// if (leng > 0) {
// let stage = localStorage.getItem("stageId") ? localStorage.getItem("stageId") : null;
//
// // console.log("stage",Object.prototype.toString.call(stage))
// if (stage != null) {
// console.log(stage);
// let stageList = res.data.data.stageList; //阶段数组
//
//
//
// let result = stageList.find((item) => item.stageId == stage);
// console.log("又找到了", result);
// if (result != null) {
// getTableData(result.taskList);
// } else {
// //没有选中的阶段时,获取全部的任务
// console.log(stage);
// let stageList = res.data.data.stageList; //阶段数组
// if (stageList != null) {
// let taskListAll;
// stageList.forEach((item) => {
// taskListAll = [...item.taskList];
// });
// console.log("taskListAll", taskListAll);
// getTableData(taskListAll);
// }
// }
// } else {
// console.log(stage);
// let stageList = res.data.data.stageList; //阶段数组
// if (stageList != null) {
// let taskListAll;
// stageList.forEach((item) => {
// taskListAll = [...item.taskList];
// });
// console.log("taskListAll", taskListAll);
// getTableData(taskListAll);
// }
// }
// // 每次都获取了第一条taskList
// // let arr = res.data.data.stageList[0].taskList;
// // console.log("任务列表", stage, arr);
// // getTableData(arr);
// }
// // //获取阶段列表
// let stagearr = res.data.data.stageList;
// // let arrlist = state.curLevel;
// console.log(stagearr, 111111);
// if (stagearr.length > 0) {
// getStageData(stagearr);
// // stagearr.map((value) => {
// // console.log(value);
// // // arrlist.push(value);
// // });
// }
// //给阶段id赋初始值
// let stageid = localStorage.getItem("stageId")
// ? localStorage.getItem("stageId")
// : null;
// if (stageid !== "null") {
// state.chooseStageId = stageid;
// } else {
// state.chooseStageId = leng > 0 ? stagearr[0].stageId : null;
// }
// let final = state.level.find((item) => item.id == state.chooseStageId);
// getTableData(final.taskList);
})
.catch((err) => {
console.log("获取任务列表失败", err);
});
};
//获取修改、删除id投票)
@@ -1459,18 +1458,28 @@ export default {
};
//删除任务
const deleteTask = () => {
let obj = {projectTaskIds: state.deleteID};
api
.deleteTask(obj)
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
const deleteTask = async () => {
await api.deleteTask({projectTaskIds: state.deleteID})
//删除后更新索引
};
function updateStageChoosd() {
console.log('updateStageChoosd')
console.log(state.chooseStageId)
if (state.chooseStageId && state.stageList.find(e => e.stageId == state.chooseStageId)) {
getTableData(state.stageList.find(e => e.stageId == state.chooseStageId)?.taskList);
return
}
state.chooseStageId = ''
const arr = state.stageList.filter(e => e.name);
arr && arr.length && (state.chooseStageId = arr[0].stageId);
if (!state.chooseStageId) {
getTableData(state.stageList[0].taskList)
return
}
getTableData(state.stageList.find(e => e.stageId == state.chooseStageId)?.taskList);
}
const showChangeModal = () => {
if (state.selectRow.length == 0) {
message.destroy();
@@ -1771,7 +1780,7 @@ export default {
state.selectAll = 0; //0未选择1全选2部分选择
console.log("state.level", id, state.level);
state.chooseStageId = id;
let final = state.level.find((item) => item.id === id);
let final = state.level.find((item) => item.id == id);
getTableData(final.taskList);
};

File diff suppressed because it is too large Load Diff