feat:增加组织树及学员搜索

This commit is contained in:
lixg
2022-11-28 10:22:48 +08:00
15 changed files with 613 additions and 507 deletions

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-21 14:32:52 * @Date: 2022-11-21 14:32:52
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-26 13:44:54 * @LastEditTime: 2022-11-27 16:55:32
* @FilePath: /fe-manage/src/api/config.js * @FilePath: /fe-manage/src/api/config.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@@ -16,7 +16,7 @@ import axios from "axios";
axios.defaults.withCredentials = true; axios.defaults.withCredentials = true;
const http = axios.create({ const http = axios.create({
baseURL: "/manageApi", baseURL: "/manageApi",
timeout: 1000 * 5, timeout: 1000 * 15,
// headers: { "Content-Type": "multipart/form-data" }, // headers: { "Content-Type": "multipart/form-data" },
headers: { "Content-Type": "application/json" }, headers: { "Content-Type": "application/json" },
}); });

18
src/api/indexOnline.js Normal file
View File

@@ -0,0 +1,18 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-07 17:06:45
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-21 16:39:00
* @FilePath: /fe-manage/src/api/index.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config";
// import qs from 'qs';
// 接口-请求
//查询在线课信息列表接口
export const queryOnlinelList = (obj) => http.post('/queryOnlineClassesDetailList', obj)

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-24 16:39:48 * @Date: 2022-11-24 16:39:48
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-24 16:53:00 * @LastEditTime: 2022-11-28 09:54:17
* @FilePath: /fe-manage/src/components/Modals/addOnlineCourse.vue * @FilePath: /fe-manage/src/components/Modals/addOnlineCourse.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
--> -->
@@ -20,7 +20,7 @@
<iframe <iframe
id="iframe" id="iframe"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
:src="iframeUrl + 'course/noapproved'" :src="iframeUrl + 'course/manages'"
name="myframe" name="myframe"
sandbox="allow-forms allow-scripts allow-same-origin allow-popups" sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
></iframe> ></iframe>

View File

@@ -26,13 +26,13 @@
<a-input <a-input
v-model:value="inputV1" v-model:value="inputV1"
style="width: 264px; height: 40px; border-radius: 8px" style="width: 264px; height: 40px; border-radius: 8px"
placeholder="请输入项目名称" placeholder="请输入案例标题"
/> />
</div> </div>
</div> </div>
</div> </div>
<div class="mi_btns"> <div class="mi_btns">
<div class="btn btn1" @click="getAllCaseText"> <div class="btn btn1" @click="searchList()">
<div class="search"></div> <div class="search"></div>
<div class="btnText">搜索</div> <div class="btnText">搜索</div>
</div> </div>
@@ -45,6 +45,23 @@
<div class="main_table"> <div class="main_table">
<a-table <a-table
v-if="edit"
class="ant-table-striped"
:row-class-name="
(_record, index) => (index % 2 === 1 ? 'table-striped' : null)
"
:row-selection="{
type:'radio',
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:columns="tableDataFunc()"
:data-source="tableData"
:loading="tableDataTotal === -1 ? true : false"
:pagination="false"
/>
<a-table
v-else
class="ant-table-striped" class="ant-table-striped"
:row-class-name=" :row-class-name="
(_record, index) => (index % 2 === 1 ? 'table-striped' : null) (_record, index) => (index % 2 === 1 ? 'table-striped' : null)
@@ -81,9 +98,10 @@
</a-drawer> </a-drawer>
</template> </template>
<script> <script>
import { reactive, toRefs } from "vue"; import { onMounted, reactive, toRefs } from "vue";
import * as api from "../../api/indexCase.js"; import * as api from "../../api/indexCase.js";
import * as apiTask from "../../api/indexTaskadd"; import * as apiTask from "../../api/indexTaskadd";
// import { setCookie } from "../../api/method"
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { RouterEditTask } from "@/api/indexTask"; import { RouterEditTask } from "@/api/indexTask";
// import { addTempTask } from "../../api/indexTaskadd"; // import { addTempTask } from "../../api/indexTaskadd";
@@ -142,6 +160,7 @@ export default {
currentPage: 1, currentPage: 1,
tableDataTotal: 0, tableDataTotal: 0,
pageSize: 10, pageSize: 10,
searching:false,
selectedRowKeys: [], selectedRowKeys: [],
apiTaskList: [], apiTaskList: [],
inputV1: "", inputV1: "",
@@ -177,7 +196,6 @@ export default {
key: "authorName", key: "authorName",
width: "200px", width: "200px",
align: "center", align: "center",
className: "classify",
}, },
{ {
title: "导入时间", title: "导入时间",
@@ -185,7 +203,6 @@ export default {
key: "time", key: "time",
width: "400px", width: "400px",
align: "center", align: "center",
className: "classify",
}, },
]; ];
return columns; return columns;
@@ -205,7 +222,24 @@ export default {
const getTableDate = (tableData) => { const getTableDate = (tableData) => {
let data = tableData; let data = tableData;
let array = []; let array = [];
data.map((value, index) => { if(state.searching){
data.map((value, index) => {
let obj = {
key: index,
authorId: value.authorId,
authorName: value.authorName,
companyId: value.companyId,
coverUrl: value.coverUrl,
id: value.id,
casesId: value.casesId,
title: value.title,
};
if(obj.title == state.inputV1){
array.push(obj);
}
});
} else {
data.map((value, index) => {
let obj = { let obj = {
key: index, key: index,
authorId: value.authorId, authorId: value.authorId,
@@ -218,6 +252,7 @@ export default {
}; };
array.push(obj); array.push(obj);
}); });
}
state.tableData = array; state.tableData = array;
}; };
//获取全部案例信息接口 //获取全部案例信息接口
@@ -227,8 +262,8 @@ export default {
keyWord: state.inputV1, keyWord: state.inputV1,
orderAsc: true, orderAsc: true,
orderField: "", orderField: "",
pageIndex: 0, pageIndex: state.currentPage,
pageSize: 0, pageSize: state.pageSize,
top: true, top: true,
}) })
.then((res) => { .then((res) => {
@@ -313,13 +348,29 @@ export default {
} }
} }
}; };
//搜索案例列表
const searchList = ()=> {
if(state.inputV1 !== ''){
state.searching = true
getAllCaseText()
}else {
state.searching = false
resetCase()
}
}
//重置案例信息 //重置案例信息
const resetCase = () => { const resetCase = () => {
state.inputV1 = "" state.inputV1 = ""
state.searching = false
state.selectedRowKeys=[] state.selectedRowKeys=[]
state.currentPage = 1 state.currentPage = 1
getAllCaseText(); getAllCaseText();
}; };
onMounted(()=>{
// let cookie =
// "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC91LmJvZS5jb20iLCJpYXQiOjE2Njk0MjgwNTAsImV4cCI6MTY2OTQzNTI1MCwiR2l2ZW5OYW1lIjoiYm9ldSIsInVzZXJJZCI6IjZCMDQ5RkFGLUMzMTQtN0NDRi0wRDI4LTBEMjNGNEM0MjUzMSIsInVJZCI6Ijk2NTM0MjAyNzQ5NzYwNzE2OCIsInBlcm1pc3Npb24iOiIifQ==.9ea5ce6d4cd43c2c17f21a293e4dc0d362c2a404b9d50fae5c49fed5a238fb1a";
// setCookie("token", cookie, 10);
})
return { return {
...toRefs(state), ...toRefs(state),
afterVisibleChange, afterVisibleChange,
@@ -330,6 +381,7 @@ export default {
getTableDate, getTableDate,
updateTask, updateTask,
getAllCaseText, getAllCaseText,
searchList,
resetCase, resetCase,
}; };
}, },
@@ -447,10 +499,6 @@ export default {
.main_table { .main_table {
position: relative; position: relative;
padding-bottom: 80px; padding-bottom: 80px;
.classify {
margin-left: 10px !important;
padding-left: 9px !important;
}
.ant-checkbox-wrapper { .ant-checkbox-wrapper {
align-items: center; align-items: center;
margin-top: -2px; margin-top: -2px;

View File

@@ -34,6 +34,7 @@
<div class="ipt_name">内容分类</div> <div class="ipt_name">内容分类</div>
<div class="select"> <div class="select">
<a-select <a-select
v-model:value="selectV"
dropdownClassName="dropdown-style" dropdownClassName="dropdown-style"
style="width: 240px" style="width: 240px"
placeholder="请选择" placeholder="请选择"
@@ -45,7 +46,7 @@
</div> </div>
</div> </div>
<div class="mi_btns"> <div class="mi_btns">
<div class="btn btn1"> <div class="btn btn1" @click="searchList()">
<div class="search"></div> <div class="search"></div>
<div class="btnText">搜索</div> <div class="btnText">搜索</div>
</div> </div>
@@ -72,7 +73,25 @@
</div> </div>
</div> </div>
<div class="main_table"> <div class="main_table">
<!-- 编辑的表格 -->
<a-table <a-table
v-if="edit"
class="ant-table-striped"
:row-class-name="
(_record, index) => (index % 2 === 1 ? 'table-striped' : null)
"
:row-selection="{
type:'radio',
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:columns="tableDataFunc()"
:data-source="tableData"
:loading="tableDataTotal === -1 ? true : false"
:pagination="false"
/>
<a-table
v-else
class="ant-table-striped" class="ant-table-striped"
:row-class-name=" :row-class-name="
(_record, index) => (index % 2 === 1 ? 'table-striped' : null) (_record, index) => (index % 2 === 1 ? 'table-striped' : null)
@@ -80,7 +99,6 @@
:row-selection="{ :row-selection="{
selectedRowKeys: selectedRowKeys, selectedRowKeys: selectedRowKeys,
onChange: onSelectChange, onChange: onSelectChange,
onSelect: onSelected,
}" }"
:columns="tableDataFunc()" :columns="tableDataFunc()"
:data-source="tableData" :data-source="tableData"
@@ -89,6 +107,7 @@
/> />
<div class="pa"> <div class="pa">
<a-pagination <a-pagination
v-if="tableDataTotal > 10"
showSizeChanger="true" showSizeChanger="true"
showQuickJumper="true" showQuickJumper="true"
hideOnSinglePage="true" hideOnSinglePage="true"
@@ -109,12 +128,12 @@
</a-drawer> </a-drawer>
</template> </template>
<script> <script>
import { reactive, toRefs } from "vue"; import { onMounted, reactive, toRefs } from "vue";
import * as api from "../../api/indexInvist.js"; import * as api from "../../api/indexOnline.js";
import * as apiTask from "../../api/indexTaskadd"; import * as apiTask from "../../api/indexTaskadd";
// import { setCookie } from "../../api/method"
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { RouterEditTask } from "@/api/indexTask"; import { RouterEditTask } from "@/api/indexTask";
import dayjs from "dayjs";
import { addTempTask } from "../../api/indexTaskadd"; import { addTempTask } from "../../api/indexTaskadd";
export default { export default {
name: "AddOnline", name: "AddOnline",
@@ -123,7 +142,7 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
EditInvistId: { EditOnlineId: {
type: Number, type: Number,
default: null, default: null,
}, },
@@ -168,15 +187,22 @@ export default {
inputV1: "", inputV1: "",
options1: [ options1: [
{ {
value: "value1", value: "微课",
label: "未完成", label: "微课",
}, },
{
value: "录播课",
label: "录播课"
}
], ],
time: undefined, time: undefined,
assessmentId: null, onlineClassesId: null,
assessmentName: "", onlineName: "",
searching:false,
selectV: "",
selectedRowKeys: [], selectedRowKeys: [],
tableData: [], tableData: [],
addOnlineList:[],
currentPage: 1, currentPage: 1,
tableDataTotal: 0, tableDataTotal: 0,
pageSize: 10, pageSize: 10,
@@ -184,11 +210,17 @@ export default {
const closeDrawer = () => { const closeDrawer = () => {
ctx.emit("update:addonlineVisible", false); ctx.emit("update:addonlineVisible", false);
ctx.emit("update:edit", false); ctx.emit("update:edit", false);
state.inputV1 = "";
state.selectedRowKeys = [];
state.addOnlineList = [];
state.currentPage = 1;
localStorage.setItem("stageId", props.chooseStageId); localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive); localStorage.setItem("chapterId", props.isactive);
}; };
const afterVisibleChange = () => { const afterVisibleChange = (bol) => {
getAllOnlineText(); if(bol == true){
getAllOnlineText();
}
}; };
const tableDataFunc = () => { const tableDataFunc = () => {
const columns = [ const columns = [
@@ -196,21 +228,20 @@ export default {
title: "课程编号", title: "课程编号",
dataIndex: "num", dataIndex: "num",
key: "num", key: "num",
width: "200px", width: "80px",
align: "center", align: "left",
}, },
{ {
title: "名称", title: "名称",
dataIndex: "name", dataIndex: "name",
key: "name", key: "name",
width: "100px", width: "100px",
align: "left", align: "center",
className: "classify",
}, },
{ {
title: "内容分类", title: "内容分类",
dataIndex: "content", dataIndex: "contenttype",
key: "content", key: "contenttype",
width: "80px", width: "80px",
align: "center", align: "center",
}, },
@@ -218,82 +249,104 @@ export default {
title: "授课教师", title: "授课教师",
dataIndex: "teacher", dataIndex: "teacher",
key: "teacher", key: "teacher",
width: "80px", width: "100px",
align: "center", align: "center",
}, },
{ {
title: "创建人", title: "创建人",
dataIndex: "creator", dataIndex: "sysCreateBy",
key: "creator", key: "sysCreateBy",
width: "80px", width: "80px",
align: "center", align: "center",
}, },
{ {
title: "完成时间", title: "完成时间",
dataIndex: "time", dataIndex: "overtime",
key: "time", key: "time",
width: "200px", width: "150px",
align: "center", align: "center",
}, },
]; ];
return columns; return columns;
}; };
const onSelected = (record) => { const onSelectChange = (selectedRowKeys,selectedRows) => {
state.assessmentId = record.assessmentId; state.selectedRowKeys = selectedRowKeys;
state.assessmentName = record.name; state.addOnlineList = selectedRows
};
const onSelectChange = (selectedRowKeys, b) => {
state.selectedRowKeys = selectedRowKeys;
console.log(b);
}; };
//清空所选 //清空所选
const clearLine = () => { const clearLine = () => {
state.selectedRowKeys = []; state.selectedRowKeys = [];
state.addOnlineList = [];
}; };
const handelChangePage = (page, pageSize) => { const handelChangePage = (page) => {
state.currentPage = page; state.currentPage = page;
state.pageSize = pageSize;
getAllOnlineText(); getAllOnlineText();
}; };
const getTableDate = (tableData) => { const getTableDate = (tableData) => {
let data = tableData; let data = tableData;
let array = []; let array = [];
data.map((value, index) => { data.map((value,index) => {
let obj = { if(state.searching){
key: index + 1, let obj = {
assessmentId: value.assessmentId, key: index + 1,
num: value.essayQuestionVoList.length, num:"",
name: value.assessmentName ? value.assessmentName : "-", name:value.name,
creator: value.createUser ? value.createUser : "-", contenttype:value.contentType == 10 ? "微课" : "录播课",
time: dayjs(value.createTime).format("YYYY-MM-DD"), teacher:value.teacher,
}; sysCreateBy:value.sysCreateBy,
array.push(obj); overtime:"",
};
if(obj.name == state.inputV1 || obj.contenttype == state.selectV){
array.push(obj);
}
} else {
let obj = {
key: index + 1,
num:"",
name:value.name,
contenttype:value.contentType == 10 ? "微课" : "录播课",
teacher:value.teacher,
sysCreateBy:value.sysCreateBy,
overtime:"",
};
array.push(obj);
}
}); });
state.tableData = array; state.tableData = array;
state.tableDataTotal = state.tableData.length
}; };
//获取全部在线信息接口 //获取全部在线信息接口
const getAllOnlineText = () => { const getAllOnlineText = () => {
api api
.queryAssessmentDetailList({ .queryOnlinelList({
assessmentName: "", "createUser": "",
pageNo: state.currentPage, "keyword": state.inputV1,
pageSize: state.pageSize, "orderAsc": true,
"orderField": "",
"pageIndex": state.currentPage,
"pageSize": state.pageSize,
"publish": true,
"status": 0,
"sysType1": "",
"sysType2": "",
"sysType3": "",
}) })
.then((res) => { .then((res) => {
let arr = res.data.data.rows; let arr = res.data.data;
if (res.status === 200) { if (res.status === 200) {
getTableDate(arr); getTableDate(arr);
state.tableDataTotal = Number(res.data.data.total);
} }
}) })
.catch(() => {}); .catch((err) => {
console.log(err,'请求失败在线');});
}; };
const updateTask = () => { const updateTask = () => {
if (props.isLevel == 1) { if (props.isLevel == 1) {
RouterEditTask({ state.addOnlineList.map((value) => {
chapterId: props.isactive, RouterEditTask({
courseId: state.assessmentId, chapterId: Number(props.isactive),
name: state.assessmentName, courseId: value.onlineClassesId,
name: value.name,
routerId: props.routerId, routerId: props.routerId,
routerTaskId: props.routerTaskId || 0, routerTaskId: props.routerTaskId || 0,
type: 1, type: 1,
@@ -309,11 +362,13 @@ export default {
message.destroy(); message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`); message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`);
}); });
})
} else if (props.isLevel == 2) { } else if (props.isLevel == 2) {
apiTask state.addOnlineList.map((value) => {
apiTask
.addTask({ .addTask({
courseId: state.assessmentId, courseId: value.onlineClassesId,
name: state.assessmentName, name: value.name,
projectId: props.projectId, projectId: props.projectId,
projectTaskId: props.projectTaskId || 0, projectTaskId: props.projectTaskId || 0,
stageId: props.chooseStageId, stageId: props.chooseStageId,
@@ -329,10 +384,11 @@ export default {
message.destroy(); message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`); message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`);
}); });
})
} else if (props.isLevel == 3) { } else if (props.isLevel == 3) {
addTempTask({ addTempTask({
courseId: state.assessmentId, courseId: state.onlineClassesId,
name: state.assessmentName, name: state.onlineName,
projectId: props.projectId, projectId: props.projectId,
projectTaskId: props.projectTaskId || 0, projectTaskId: props.projectTaskId || 0,
stageId: props.chooseStageId, stageId: props.chooseStageId,
@@ -340,33 +396,52 @@ export default {
}) })
.then(() => { .then(() => {
message.destroy(); message.destroy();
message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`); message.success(`${props.edit ? "编辑" : "新增"}模板库任务成功`);
ctx.emit("changeData", false); ctx.emit("changeData", false);
closeDrawer(); closeDrawer();
}) })
.catch(() => { .catch(() => {
message.destroy(); message.destroy();
message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`); message.error(`${props.edit ? "编辑" : "新增"}模板库任务失败`);
}); });
} }
}; };
//搜索在线列表
const searchList = ()=> {
if(state.inputV1 !== '' || state.selectV !== ''){
state.searching = true
getAllOnlineText()
}else {
resetOnline()
}
}
//重置在线信息 //重置在线信息
const resetOnline = () => { const resetOnline = () => {
state.inputV1 = ""; state.inputV1 = "";
state.selectV = "";
state.searching = false;
state.selectedRowKeys = [];
state.addOnlineList = [];
state.currentPage = 1;
getAllOnlineText(); getAllOnlineText();
}; };
onMounted(()=>{
// let cookie =
// "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC91LmJvZS5jb20iLCJpYXQiOjE2Njk0MjgwNTAsImV4cCI6MTY2OTQzNTI1MCwiR2l2ZW5OYW1lIjoiYm9ldSIsInVzZXJJZCI6IjZCMDQ5RkFGLUMzMTQtN0NDRi0wRDI4LTBEMjNGNEM0MjUzMSIsInVJZCI6Ijk2NTM0MjAyNzQ5NzYwNzE2OCIsInBlcm1pc3Npb24iOiIifQ==.9ea5ce6d4cd43c2c17f21a293e4dc0d362c2a404b9d50fae5c49fed5a238fb1a";
// setCookie("token", cookie, 10);
})
return { return {
...toRefs(state), ...toRefs(state),
afterVisibleChange, afterVisibleChange,
closeDrawer, closeDrawer,
tableDataFunc, tableDataFunc,
onSelected,
onSelectChange, onSelectChange,
clearLine, clearLine,
handelChangePage, handelChangePage,
getAllOnlineText, getAllOnlineText,
getTableDate, getTableDate,
updateTask, updateTask,
searchList,
resetOnline, resetOnline,
}; };
}, },
@@ -506,17 +581,12 @@ export default {
.main_table { .main_table {
position: relative; position: relative;
padding-bottom: 80px; padding-bottom: 80px;
.classify {
margin-left: 10px !important;
padding-left: 9px !important;
}
.ant-checkbox-wrapper { .ant-checkbox-wrapper {
align-items: center; align-items: center;
margin-top: -2px; margin-top: -2px;
} }
.ant-table-selection-column { .ant-table-selection-column {
padding: 0px !important; padding: 0px !important;
padding-left: 60px !important;
} }
.ant-table-thead > tr > th { .ant-table-thead > tr > th {
background-color: rgba(239, 244, 252, 1); background-color: rgba(239, 244, 252, 1);
@@ -533,8 +603,6 @@ export default {
.pa { .pa {
left: 0; left: 0;
width: 100%; width: 100%;
// height: 20px;
// background-color: red;
display: flex; display: flex;
justify-content: center; justify-content: center;
position: absolute; position: absolute;

View File

@@ -242,10 +242,10 @@ export default {
//获取选择考试列表 //获取选择考试列表
const getManageList = () => { const getManageList = () => {
let obj = { let obj = {
"keyWord": state.inputPname, keyWord: state.inputPname,
"pageIndex": state.pageSize, pageIndex: state.pageSize,
"pageSize": state.pageSize, pageSize: state.pageSize,
"published": true published: true,
}; };
api api
.queryExaminationList(obj) .queryExaminationList(obj)

View File

@@ -84,6 +84,12 @@
:tree-data="treeData" :tree-data="treeData"
@select="departmentSelect" @select="departmentSelect"
v-model:selectedKeys="selectedKeys" v-model:selectedKeys="selectedKeys"
:fieldNames="{
children: 'treeChildList',
key: 'id',
title: 'name',
value: 'name',
}"
> >
<template #suffixIcon></template> <template #suffixIcon></template>
</a-tree> </a-tree>
@@ -529,16 +535,27 @@
</template> </template>
<script> <script>
import { reactive, toRefs, onMounted, onUnmounted, watch } from "vue"; import {
reactive,
toRefs,
onMounted,
onUnmounted,
// watch
} from "vue";
import elementResizeDetectorMaker from "element-resize-detector"; import elementResizeDetectorMaker from "element-resize-detector";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
// import { toDate } from "../../api/method"; // import { toDate } from "../../api/method";
// import * as api from '../../api/indexStu'
import { import {
getAudienceInfoApi, getAudienceInfoApi,
getMemberInfoApi, getMemberInfoApi,
getOrgInfoApi, getOrgInfoApi,
} from "@/api/indexStu"; } from "@/api/indexStu";
import { traverseArr, deepClone, batchLoadList } from "../../utils/utils"; import {
traverseArr,
// deepClone,
batchLoadList,
} from "../../utils/utils";
export default { export default {
name: "StuAdd", name: "StuAdd",
@@ -551,9 +568,12 @@ export default {
setup(props, ctx) { setup(props, ctx) {
const state = reactive({ const state = reactive({
screenHeight: document.body.clientHeight, // 屏幕高度 screenHeight: document.body.clientHeight, // 屏幕高度
pageSize: 9999999, pageSize: 10,
currentPage: 1, currentPage: 1,
tableDataTotal: 0, tableDataTotal: 0,
selectOrgId: null, //选中的组织id
selectOrgName: null, //选中的组织
pageSize2: 10, pageSize2: 10,
currentPage2: 1, currentPage2: 1,
tableDataTotal2: 0, tableDataTotal2: 0,
@@ -1049,18 +1069,19 @@ export default {
selectedRowKeys2: [], //表格选中的key selectedRowKeys2: [], //表格选中的key
//受众关联------------------------------------- //受众关联-------------------------------------
}); });
const closeDrawer = () => { const closeDrawer = () => {
state.activeKey = "1"; state.activeKey = "1";
ctx.emit("update:Stuvisible", false); ctx.emit("update:Stuvisible", false);
}; };
watch( // watch(
() => props.Stuvisible, // () => props.Stuvisible,
(newVal) => { // (newVal) => {
console.log(newVal); // console.log("watch", newVal);
getComOnce(); // getComOnce();
} // }
); // );
const handleClose = () => { const handleClose = () => {
deleteAll(); deleteAll();
@@ -1112,59 +1133,100 @@ export default {
} }
); );
}; };
const getComOnce = async () => {
const item1 = await getOrgInfoApi({
pageNo: state.currentPage,
pageSize: state.pageSize,
id: 0,
keyWord: state.com,
}).then((res) => {
// console.log("res", res);
if (res.data.code === 200) return res.data.data.rows;
});
state.treeData = [];
const arr = traverseArr(item1, {
title: "name",
value: "id",
children: "children",
});
batchLoadList(
arr,
arr.length,
undefined,
(data) => {
data.forEach((item) => {
state.treeData.push(item);
});
},
() => {
console.log("完成");
}
);
state.copyTreeData = deepClone(arr); // const getComOnce = async () => {
// const item1 = await getOrgInfoApi({
// pageNo: 1,
// pageSize: 20,
// id: -1,
// keyWord: "",
// })
// .then((res) => {
// console.log("res", res);
// if (res.data.code === 200) return res.data.data;
// })
// .catch((err) => {
// console.log("获取失败", err);
// });
// state.treeData = [];
// const arr = traverseArr(item1, {
// title: "name",
// value: "id",
// children: "treeChildList",
// });
// batchLoadList(
// arr,
// arr.length,
// undefined,
// (data) => {
// data.forEach((item) => {
// state.treeData.push(item);
// });
// },
// () => {
// console.log("完成");
// }
// );
// state.copyTreeData = deepClone(arr);
// };
//获取组织树
const getTree = () => {
let obj = {
keyWord: "",
id: -1,
pageNo: 1,
pageSize: 20,
};
getOrgInfoApi(obj)
.then((res) => {
console.log("组织树获取成功", res);
if (res.data.code === 200) {
state.treeData = res.data.data;
}
})
.catch((err) => {
console.log("组织树获取失败", err);
});
}; };
//获取学员
const getMember = async (org) => { const getMember = async (org) => {
if (!state.nameSearch && org === 0) { if (!state.nameSearch && !org) {
return false; return false;
} }
console.log("org", org);
const item1 = await getMemberInfoApi({ const item1 = await getMemberInfoApi({
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: state.pageSize, pageSize: state.pageSize,
keyWord: state.nameSearch, keyWord: state.nameSearch,
org, org: state.nameSearch ? null : org,
}).then((res) => { }).then((res) => {
if (res.data.code === 200) return res.data.data.rows; if (res.data.code === 200) {
console.log("获取学员", res.data);
state.tableDataTotal = res.data.data.total;
return res.data.data.rows;
}
}); });
state.tabledata = traverseArr(item1, { state.tabledata = traverseArr(item1, {
key: "id", key: "id",
name: "realName", name: "realName",
bum: "id", bum: "depName",
numb: "depName", numb: "id",
guishu: "orgName", guishu: "orgName",
}); });
}; };
getMember(0); //分页获取学员
const changePagination = (page) => {
state.currentPage = page;
getMember(state.selectOrgId);
};
//搜索学员
const handleSearchStu = () => {
deleteDepSelect();
getMember(state.selectOrgId);
};
const getShouzong = async () => { const getShouzong = async () => {
if (!state.nameaddd) { if (!state.nameaddd) {
return false; return false;
@@ -1186,9 +1248,6 @@ export default {
}; };
getShouzong(); getShouzong();
const handleSearchStu = () => {
getMember(0);
};
const handleSearchRest = () => { const handleSearchRest = () => {
state.nameSearch = ""; state.nameSearch = "";
state.tabledata = []; state.tabledata = [];
@@ -1209,6 +1268,10 @@ export default {
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
console.log("state", bool); console.log("state", bool);
if (bool) {
// getComOnce();
getTree();
}
}; };
const getClientHeight = () => { const getClientHeight = () => {
state.screenHeight = document.body.clientHeight; state.screenHeight = document.body.clientHeight;
@@ -1232,9 +1295,19 @@ export default {
// 开始 快速选人------------------------------------------------------------------ // 开始 快速选人------------------------------------------------------------------
//选中部门 //选中部门
const departmentSelect = (e, k) => { const departmentSelect = (e, k) => {
console.log("选中的部门", e, k); if (!k.node.treeChildList) {
state.selectedKeys = [k.node.key]; console.log("选中的部门", e, k);
getMember(k.selectedNodes[0].value); state.selectedKeys = [k.node.key];
state.selectOrgId = k.selectedNodes[0].id;
state.selectOrgName = k.selectedNodes[0].name;
getMember(k.selectedNodes[0].id);
}
};
//清空选择部门信息
const deleteDepSelect = () => {
state.selectedKeys = null;
state.selectOrgId = null;
state.selectOrgName = null;
}; };
//快速选人 选中的数组 //快速选人 选中的数组
const onSelectChange = (selectedRowKeys, item) => { const onSelectChange = (selectedRowKeys, item) => {
@@ -1592,6 +1665,7 @@ export default {
deleteAll, deleteAll,
searchOrg, searchOrg,
changePagination,
}; };
}, },
}; };

View File

@@ -79,9 +79,6 @@
</div> </div>
</div> </div>
<!-- 查看投票弹窗 -->
<queryStem @closeDrawer="closeStem"
v-model:addStemVisible="addStemVisible" />
@@ -102,6 +99,7 @@
<div class="btnbox"> <div class="btnbox">
<a-range-picker <a-range-picker
style="width: 424px" style="width: 424px"
v-model:value="time"
:placeholder="[' 开始时间', ' 结束时间']" :placeholder="[' 开始时间', ' 结束时间']"
/> />
</div> </div>
@@ -111,7 +109,12 @@
<span style="margin-right: 3px">基础投票数</span> <span style="margin-right: 3px">基础投票数</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<button class="xkbtn">点击上传</button> <a-upload
@change="handleChange"
action="/vote/baseVoteupload"
v-model:file-list="fileList"
>
<button class="xkbtn">点击上传</button></a-upload>
</div> </div>
</div> </div>
<div class="main_item" style="margin-top: -25px"> <div class="main_item" style="margin-top: -25px">
@@ -150,13 +153,13 @@ import { message } from "ant-design-vue";
import { RouterEditTask } from "@/api/indexTask"; import { RouterEditTask } from "@/api/indexTask";
import dayjs from "dayjs"; import dayjs from "dayjs";
import * as apiTask from "../../api/indexTaskadd"; import * as apiTask from "../../api/indexTaskadd";
import queryStem from "./queryStem.vue" import { addTempTask } from "../../api/indexTaskadd";
export default { export default {
name: "AddVote", name: "AddVote",
components: { components: {
CreateVote, CreateVote
queryStem,
}, },
props: { props: {
addvoteVisible: { addvoteVisible: {
@@ -167,7 +170,7 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
voteId: { EditVoteId: {
type: Number, type: Number,
default: null, default: null,
}, },
@@ -213,7 +216,7 @@ export default {
basevote: "", basevote: "",
ascriptionId: "", ascriptionId: "",
voteStemId: null, voteStemId: null,
voteId:"", EditVoteId:"",
voteStemName:"", voteStemName:"",
ballotName: "", ballotName: "",
editStem: false, //编辑状态 editStem: false, //编辑状态
@@ -221,6 +224,7 @@ export default {
optionId: "", //删除修改选项id optionId: "", //删除修改选项id
addStemVisible:false, // addStemVisible:false, //
editChild:false, editChild:false,
fileList: [],
}); });
const closeDrawer = () => { const closeDrawer = () => {
state.inputV1 = "", state.inputV1 = "",
@@ -231,54 +235,54 @@ export default {
ctx.emit("update:edit", false); ctx.emit("update:edit", false);
}; };
const afterVisibleChange = () => { const afterVisibleChange = () => {
if(props.edit){
queryVoteInfo(); queryVoteInfo();
}
}; };
const showDrawerCreVote = () => { const showDrawerCreVote = () => {
state.createVoteVisible = true; state.createVoteVisible = true;
state.editChild = props.edit; state.editChild = props.edit;
};
const getStemId = (data) => {
state.ballotName = data.ballotName;
state.ballotId =data.ballotId;
}
const delBox = () => { };
state.creVote = false;
const handleChange = info => {
if (info.file.status !== "uploading") {
console.log("基础票数rinfo======",info);
}
}; };
//删除题干信息接口 //删除题干信息接口
const dleVoteStem = () => { const dleVoteStem = () => {
let objdelstem = { api.deleteVoteStem({voteStemId:state.ballotId})
voteStemId:state.voteStemId
}
api.deleteVoteStem(objdelstem)
.then(() => { .then(() => {
message.success('删除题干信息成功') message.success('删除题干信息成功')
delBox()
}) })
} }
//根据投票id获取投票信息 //根据投票id获取投票信息
const queryVoteInfo = ()=>{ const queryVoteInfo = ()=>{
/**
let obj = { api.queryVoteDetailById({voteId:props.EditVoteId})
voteId:props.voteId
}
.queryVoteText(obj)
.then((res)=>{ .then((res)=>{
console.log('获取投票信息成功',res); console.log('获取投票信息成功',res);
state.inputV1 = res.data.data.voteName state.inputV1 = res.data.data.voteName;
state.time = [dayjs(res.data.data.voteEndTime).format("YYYY-MM-DD"), dayjs(res.data.data.voteEndTime).format("YYYY-MM-DD")] state.textV1 = res.data.data.voteExplain;
state.textV1 = res.data.data.voteExplain state.baseVote = res.data.data.baseVote;
state.baseVote = res.data.data.baseVote state.ascriptionId = res.data.data.ascriptionId;
state.ascriptionId = res.data.data.ascriptionId state.ballotId = res.data.data.ballotId;
state.ballotId = res.data.data.ballotId state.time = [
dayjs(res.data.data.voteStartTime, "YYYY-MM-DD"),
dayjs(res.data.data.voteEndTime, "YYYY-MM-DD"),
];
}) })
.catch((err)=>{ .catch((err)=>{
console.log('获取投票信息失败',err); console.log('获取投票信息失败',err);
}) });
**/
} }
const updateToTask =(res)=>{ const updateToTask =(res)=>{
@@ -316,8 +320,24 @@ export default {
.catch(() => { .catch(() => {
message.error(`${props.edit ? '编辑' : '新增'}阶段任务失败`) message.error(`${props.edit ? '编辑' : '新增'}阶段任务失败`)
}); });
}else if(props.isLevel ==3){ }else if (props.isLevel == 3) {
console.log(""); console.log("");
addTempTask({
duration: 0,
flag: true,
courseId: Number(res.data.data.EditVoteId),
name: res.data.data.data.voteName,
projectId: props.projectId,
projectTaskId: props.projectTaskId || 0,
stageId: props.chooseStageId,
type: 10,
})
.then(() => {
message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`);
})
.catch(() => {
message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`);
});
} }
} }
//修改投票信息接口 //修改投票信息接口
@@ -326,6 +346,10 @@ export default {
message.destroy(); message.destroy();
return message.info("请输入投票名称"); return message.info("请输入投票名称");
} }
if (!state.ballotId) {
message.destroy();
return message.info("请创建题干信息");
}
if (state.basevote == "") { if (state.basevote == "") {
state.basevote = 1; state.basevote = 1;
@@ -336,16 +360,14 @@ export default {
} }
let obj = { let obj = {
voteId: props.edit?state.voteId : 0, voteId: props.edit?state.EditVoteId : 0,
voteName: state.inputV1, voteName: state.inputV1,
voteStartTime: state.startTime, voteStartTime: dayjs(state.time[0]).format("YYYY-MM-DD"),
voteEndTime: state.endTime, voteEndTime: dayjs(state.time[1]).format("YYYY-MM-DD"),
ballotId: state.ballotId, ballotId: state.ballotId,
baseVote: state.basevote, baseVote: state.basevote,
voteExplain: state.textV1, voteExplain: state.textV1,
createUser:0,
updateUser:0,
voteTag:"",
} }
if(props.edit){ if(props.edit){
api api
@@ -383,13 +405,12 @@ export default {
showDrawerCreVote, showDrawerCreVote,
afterVisibleChange, afterVisibleChange,
closeDrawer, closeDrawer,
getStemId,
queryVoteInfo, queryVoteInfo,
dleVoteStem, dleVoteStem,
updateVoteInfo, updateVoteInfo,
delBox,
queryStem, queryStem,
closeStem, closeStem,
handleChange,
}; };
}, },
}; };

View File

@@ -26,7 +26,7 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input <a-input
v-model:value="voteName" v-model:value="ballotName"
style="width: 424px; height: 32px" style="width: 424px; height: 32px"
placeholder="请输入任务名称" placeholder="请输入任务名称"
maxlength="20" maxlength="20"
@@ -47,7 +47,7 @@
<!-- 创建投票侧弹窗 --> <!-- 创建投票侧弹窗 -->
</div> </div>
<div v-for="(item, index) in allFormsData" :key="index"> <div v-for="(item, index) in allFormsData" :key="index">
<VoteQuestion :item="item" :ballotId="ballotId" @del="handleDel" /> <VoteQuestion :item="item" :optionId="optionId" @del="handleDel" />
</div> </div>
<div class="footer"> <div class="footer">
@@ -84,20 +84,22 @@
</template> </template>
<script> <script>
import { reactive, toRefs } from "vue"; import { reactive, toRefs } from "vue";
// import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
// import { createResearch } from "../../api/indexResearch"; // import { createResearch } from "../../api/indexResearch";
import VoteQuestion from "./VoteQuestion.vue"; import VoteQuestion from "./VoteQuestion.vue";
import { import {
// sortBy, // sortBy,
traverseArr, traverseArr,
// filterCommon, //filterCommon,
// deepCloneFilterString, // deepCloneFilterString,
} from "../../utils/utils"; } from "../../utils/utils";
//import store from "@/store"; //import store from "@/store";
import * as api from "@/api/indexVote"; import * as api from "@/api/indexVote";
//import { useRouter } from "vue-router";
import {} from "@/api/indexResearch"; import {} from "@/api/indexResearch";
//import { message } from "ant-design-vue"; //import { message } from "ant-design-vue";
export default { export default {
@@ -124,51 +126,71 @@ export default {
ballotId: "", ballotId: "",
ballotName: "", ballotName: "",
allFormsData: [], allFormsData: [],
}); });
// const router = useRouter();
const afterVisibleChange = () => { const afterVisibleChange = () => {
handleTypes(); getInfoDate();
/*
if(){
}else{
handleTypes();
}
*/
}; };
const closeDrawer = () => { const closeDrawer = () => {
ctx.emit("update:createVoteVisible", false); ctx.emit("update:createVoteVisible", false);
ctx.emit("update:ballotId", state.ballotId);
handleAllCancel();
}; };
// 详情 // 详情
const getInfoDate = async () => { const getInfoDate = async () => {
if (props.editChild) { console.log("props.editChild=====",props.editChild);
//stemId 多余字段 if (props.ballotId>0) {
console.log("props.editChild2=====",props.editChild);
let res = await api let res = await api
.queryStemByStemId({ .queryStemByStemId({ballotId:props.ballotId})
stemId: 0,
ballotId: state.ballotId,
})
.then((res) => { .then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
return res.data.data; return res.data.data;
} }
}); });
state.ballotName = res[0].ballotId; console.log("res====",res);
let renderArr = [...res]; state.ballotName = res.ballotId;
// let renderArr = [...res];
// sortBy(renderArr, "orderNumber"); //序号 // sortBy(renderArr, "orderNumber"); //序号
state.allFormsData = parseData(renderArr); //类型 state.allFormsData = parseData(res); //类型
console.log( state.allFormsData);
} }
}; };
getInfoDate();
// 转换成前端格式 // 转换成前端格式
const parseData = (arr) => { const parseData = (arr) => {
const resultArr = []; const resultArr = [];
arr.forEach((item) => { state.ballotId = arr.ballotId;
state.ballotName =arr.ballotName;
console.log("arr.voteStemVoList=====",arr.voteStemVoList);
arr.voteStemVoList.forEach((item) => {
let obj = {}; let obj = {};
let restList = traverseArr(item.optionDetailList, { let restList = traverseArr(item.optionDetailList, {
inputVal: "singleOptionName", inputVal: "optionName",
imgVal: "singleOptionPictureAddress", imgVal: "optionPictureAddress",
optionId: "singleOptionId", optionId: "optionId",
voteStemId:"voteStemId",
stem:"stem",
}).map((itm, idx) => { }).map((itm, idx) => {
itm.id = idx + 1; itm.id = idx + 1;
return itm; return itm;
}); });
obj = { obj = {
voteStemName: item.singleStemName, voteStemId:item.voteStemId,
valueSingle: item.voteStemName,
singleList: restList, singleList: restList,
}; };
resultArr.push(obj); resultArr.push(obj);
@@ -179,78 +201,41 @@ export default {
}); });
return resultArr; return resultArr;
}; };
/**
// 转换成后端格式 // 转换成后端格式
const restData = (arr, typeKey) => { const restData = (arr) => {
const resultArr = []; const resultArr = [];
arr.forEach((item) => { arr.forEach((item) => {
let obj = {}; let obj = {};
if (item[typeKey] === 1) { console.log("item=======",item);
// if (item[typeKey] === 1) {
let restList = traverseArr(item.singleList, { let restList = traverseArr(item.singleList, {
singleOptionName: "inputVal", optionName: "inputVal",
singleOptionPictureAddress: "imgVal", optionPictureAddress: "imgVal",
singleOptionId: "optionId", optionId: "optionId",
voteStemId:"voteStemId",
stem:"stem",
}).map((itm, idx) => { }).map((itm, idx) => {
itm.optionOrderNum = idx + 1; itm.optionOrderNum = idx + 1;
return itm; return itm;
}); });
restList.forEach((item) => { restList.forEach((item) => {
item.singleOptionId = item.singleOptionId item.optionId = item.optionId
? item.singleOptionId ? item.optionId
: ""; : "";
}); });
obj = { obj = {
questionType: item[typeKey],
singleStemName: item.valueSingle,
singleList: restList,
orderNumber: item.orderNumber,
};
resultArr.push(obj);
}
if (item[typeKey] === 2) {
let restList = traverseArr(item.mutilList, {
multipleOptionName: "inputVal",
multipleOptionPictureAddress: "imgVal",
multipleOptionId: "optionId",
}).map((itm, idx) => {
itm.optionOrderNum = idx + 1;
return itm;
});
restList.forEach((item) => {
item.multipleOptionId = item.multipleOptionId
? item.multipleOptionId
: "";
});
obj = { voteStemName: item.valueSingle,
questionType: item[typeKey], optionDetailList: restList,
multipleStemName: item.valueMutil, voteStemId:item.voteStemId,
mutilList: restList,
orderNumber: item.orderNumber,
}; };
resultArr.push(obj); resultArr.push(obj);
} // }
if (item[typeKey] === 3) { console.log("resultArr=======",resultArr);
obj = {
questionType: item[typeKey],
assessmentQaTitle: item.valueAsk,
assessmentQaDescribe: item.valueAskDesc,
assessmentQaId: item.optionId ? item.optionId : "",
};
resultArr.push(obj);
}
if (item[typeKey] === 4) {
obj = {
questionType: item[typeKey],
assessmentScTitle: item.valuePin,
assessmentMinScore: item.minScore,
assessmentMaxScore: item.maxScore,
weightScale: item.pinQuan,
assessmentScId: item.optionId ? item.optionId : "",
};
resultArr.push(obj);
}
}); });
resultArr.map((itm, idx) => { resultArr.map((itm, idx) => {
itm.orderNumber = idx + 1; itm.orderNumber = idx + 1;
@@ -260,55 +245,37 @@ export default {
}; };
// 解散传值 // 解散传值
const parseItem = (arr) => { const parseItem = (arrr) => {
const filterComObj = filterCommon(arr, "questionType"); // const filterComObj = filterCommon(arr, "questionType");
let resultObj = {}; let resultObj = {};
for (let key in filterComObj) { // for (let key in filterComObj) {
if (key === "1") { // if (key === "1") {
let arrSingle = filterComObj[key]; // let arrSingle = arrr
//filterComObj[key];
console.log("arrr======",arrr);
/*
let arr = []; let arr = [];
arrSingle.forEach((item) => { arrSingle.forEach((item) => {
console.log("item======",item);
if (item.singleList.length) { if (item.singleList.length) {
item.singleList.forEach((itm) => { item.singleList.forEach((itm) => {
arr.push({ arr.push({
...itm, ...itm,
singleStemName: item.singleStemName, optionName: item.optionName,
orderNumber: item.orderNumber, optionOrderNum: item.optionOrderNum,
questionType: item.questionType,
}); });
}); });
} }
}); });*/
resultObj.assessmentSingleChoiceDtoList = arr; resultObj.voteStemDtoList = arrr;
} // }
if (key === "2") { console.log("resultObj======",resultObj);
let arrMulti = filterComObj[key]; // }
let arr = [];
arrMulti.forEach((item) => {
if (item.mutilList.length) {
item.mutilList.forEach((itm) => {
arr.push({
...itm,
multipleStemName: item.multipleStemName,
orderNumber: item.orderNumber,
questionType: item.questionType,
});
});
}
});
resultObj.assessmentMultipleChoiceDtoList = arr;
}
if (key === "3") {
resultObj.assessmentEssayQuestionDtoList = filterComObj[key];
}
if (key === "4") {
resultObj.assessmentScoringQuestionDtoList = filterComObj[key];
}
}
return resultObj; return resultObj;
}; };
*/
const handleTypes = () => { const handleTypes = () => {
let obj = { let obj = {
id: state.allFormsData.length, id: state.allFormsData.length,
@@ -339,14 +306,21 @@ export default {
}; };
const handleSave = () => { const handleSave = () => {
/**
let resultPost = {}; let resultPost = {};
let filterData = parseItem(restData(state.allFormsData, "type")); let filterData = parseItem(restData(state.allFormsData, "type"));
if (!state.ballotName) {
return message.warning("请输入投票名称");
}
// 校验s
// 校验 // 校验
if (!checkVal(filterData)) { if (!checkVal(filterData)) {
return false; return false;
} }
// checkVal(filterData);
console.log(12121212); console.log(12121212);
console.log(filterData); console.log(filterData);
@@ -356,105 +330,71 @@ export default {
ballotName: state.ballotName, ballotName: state.ballotName,
...filterData, ...filterData,
}; };
/*
resultPost = deepCloneFilterString(resultPost, [ resultPost = deepCloneFilterString(resultPost, [
"assessmentMaxScore", "assessmentMaxScore",
"assessmentMinScore", "assessmentMinScore",
]); ]);*/
console.log(1212334); console.log(1212334);
console.log(resultPost); console.log(resultPost);
editResearchMessage(resultPost).then((res) => { api.updateStemMessage(resultPost).then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
state.ballotId=res.data.data.ballotId
console.log("res.data.data==============",res.data.data);
console.log("res.state.ballotId==============",state.ballotId);
message.success("编辑成功"); message.success("编辑成功");
router.push({ closeDrawer();
path: "/researchmanage",
});
} }
}); });
} else { } else {
resultPost = { resultPost = {
ballotName: state.ballotNameNew, ballotName: state.ballotName,
assessmentMark: state.valueMore,
...filterData, ...filterData,
}; };
/*
resultPost = deepCloneFilterString(resultPost, [ resultPost = deepCloneFilterString(resultPost, [
"assessmentMaxScore", "assessmentMaxScore",
"assessmentMinScore", "assessmentMinScore",
]); ]);*/
createOptionMessage(resultPost).then((res) => {
if (res.data.code === 200) {
message.success("创建成功");
console.log("=========",resultPost);
api.createStemMessage(resultPost).then((res) => {
if (res.data.code === 200) {
state.ballotId=res.data.data.ballotId
console.log("res.data.data2==============",res.data.data);
console.log("res.state.ballotId=2s=============",state.ballotId);
message.success("创建成功");
closeDrawer();
} }
}); });
} }
*/
}; };
const handleAllCancel = () => { const handleAllCancel = () => {
state.allFormsData = []; state.allFormsData = [];
}; };
/**
const checkVal = (filterData) => { const checkVal = (filterData) => {
// 问答 console.log("filterData.====",filterData);
if ( console.log("filterData.voteStemVoList====",filterData.voteStemDtoList);
filterData.assessmentEssayQuestionDtoList &&
filterData.assessmentEssayQuestionDtoList.length if(!filterData.voteStemDtoList){
) { message.error("请添加题干");
let arr = filterData.assessmentEssayQuestionDtoList; return false;
for (let item of arr) { }
if (!item.assessmentQaTitle) { let arr = filterData.voteStemDtoList;
message.error("问答题干为必填 请确认"); arr.forEach((item) => {
console.log("item===",item);
console.log("!item.voteStemName===",!item.voteStemName);
if (!item.voteStemName) {
console.log("item.voteStemName===",item.voteStemName);
message.error("题干为必填 请确认",item.voteStemName);
return false; return false;
} }
} });
} return true;
// 多选
if (
filterData.assessmentMultipleChoiceDtoList &&
filterData.assessmentMultipleChoiceDtoList.length
) {
let arr = filterData.assessmentMultipleChoiceDtoList;
for (let item of arr) {
if (!item.multipleStemName) {
message.error("多选题干为必填 请确认");
return false;
}
}
}
// 评分
if (
filterData.assessmentScoringQuestionDtoList &&
filterData.assessmentScoringQuestionDtoList.length
) {
let CountNum = 0;
let CountArr = filterData.assessmentScoringQuestionDtoList;
for (let item of CountArr) {
if (!item.assessmentScTitle) {
message.error("评分题干为必填 请确认");
return false;
}
CountNum += Number(item["weightScale"]);
}
if (CountNum !== 100) {
message.error("当前权重设置是百分制 请重新配置");
return false;
}
}
// 单选
if (
filterData.assessmentSingleChoiceDtoList &&
filterData.assessmentSingleChoiceDtoList.length
) {
let arr = filterData.assessmentSingleChoiceDtoList;
for (let item of arr) {
if (!item.singleStemName) {
message.error("单选题干为必填 请确认");
return false;
}
}
}
return true;
}; };
*/
return { return {
...toRefs(state), ...toRefs(state),

View File

@@ -23,6 +23,7 @@ export function traverseArr(arr, traverseObj, saveOld = false) {
newArr.push(obj); newArr.push(obj);
}); });
} }
// console.log('newArr', newArr)
return newArr; return newArr;
} }

View File

@@ -48,7 +48,7 @@
</div> </div>
</div> </div>
<div class="tmplh_btn"> <div class="tmplh_btn">
<div class="btn btn1" @click="search"> <div class="btn btn1" @click="getList">
<div class="search"></div> <div class="search"></div>
<div class="btnText btnText1">搜索</div> <div class="btnText btnText1">搜索</div>
</div> </div>
@@ -106,9 +106,9 @@ export default {
label: "rose", label: "rose",
}, },
], ],
valueproj: null, valueproj: "",
valuecreater: null, valuecreater: "",
valuename: null, valuename: "",
currentPage: 1, currentPage: 1,
total: null, total: null,
pageSize: 10, pageSize: 10,
@@ -184,12 +184,12 @@ export default {
// }, // },
], ],
}); });
const getList = (obj) => { const getList = () => {
let objn = obj || { let objn = {
auditStatus: 0, auditStatus: 0,
categoryId: 0, categoryId: 0,
createName: "", createName: state.valuecreater,
name: "", name: state.valuename,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: 10, pageSize: 10,
}; };
@@ -233,17 +233,6 @@ export default {
}); });
state.tableData1 = array; state.tableData1 = array;
}; };
const search = () => {
let obj = {
auditStatus: 0,
categoryId: state.valueproj,
createName: state.valuecreater,
name: state.valuename,
pageNo: state.currentPage,
pageSize: 10,
};
getList(obj);
};
const reset = () => { const reset = () => {
(state.valueproj = null), (state.valueproj = null),
(state.valuecreater = null), (state.valuecreater = null),
@@ -265,7 +254,6 @@ export default {
...toRefs(state), ...toRefs(state),
getList, getList,
setTableData, setTableData,
search,
handleChangeproj, handleChangeproj,
reset, reset,
changePagination, changePagination,

View File

@@ -48,7 +48,7 @@
</div> </div>
</div> </div>
<div class="tmplh_btn"> <div class="tmplh_btn">
<div class="btn btn1" @click="search"> <div class="btn btn1" @click="getFaceList">
<div class="search"></div> <div class="search"></div>
<div class="btnText btnText1">搜索</div> <div class="btnText btnText1">搜索</div>
</div> </div>
@@ -426,9 +426,9 @@ export default {
label: "rose", label: "rose",
}, },
], ],
valueproj: null, valueproj: "",
valuecreater: null, valuecreater: "",
valuename: null, valuename: "",
// currentFacePage: 1, // currentFacePage: 1,
currentPage: 1, currentPage: 1,
total: null, total: null,
@@ -526,14 +526,14 @@ export default {
iframeUrl: iframeUrl, iframeUrl: iframeUrl,
}); });
const getFaceList = (obj) => { const getFaceList = () => {
let objn = obj || { let objn = {
auditStatus: 1, auditStatus: 1,
// beginTime: 0, // beginTime: 0,
categoryId: 0, categoryId: 0,
createName: "", createName: state.valuecreater,
// endTime: 0, // endTime: 0,
name: "", name: state.valuename,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: 10, pageSize: 10,
projectName: "", projectName: "",
@@ -586,21 +586,6 @@ export default {
state.valuename = null; state.valuename = null;
getFaceList(); getFaceList();
}; };
const search = () => {
let obj = {
auditStatus: 1,
// beginTime: 0,
// categoryId: state.valueproj,
categoryId: 0,
createName: state.valuecreater,
// endTime: 0,
name: state.valuename,
pageNo: state.currentPage,
pageSize: 10,
projectName: "",
};
getFaceList(obj);
};
const changePagination = (pagina) => { const changePagination = (pagina) => {
state.currentPage = pagina; state.currentPage = pagina;
getFaceList(); getFaceList();
@@ -646,7 +631,6 @@ export default {
...toRefs(state), ...toRefs(state),
getFaceList, getFaceList,
setFaceData, setFaceData,
search,
reset, reset,
changePagination, changePagination,
showAudit, showAudit,

View File

@@ -60,7 +60,7 @@
</div> </div>
</div> </div>
<div class="tmplh_btn"> <div class="tmplh_btn">
<div class="btn btn1" @click="search"> <div class="btn btn1" @click="getProjList">
<div class="search"></div> <div class="search"></div>
<div class="btnText btnText1">搜索</div> <div class="btnText btnText1">搜索</div>
</div> </div>
@@ -112,7 +112,6 @@ import { onMounted, reactive, toRefs } from "vue";
import ProjectAudit from "../../components/drawers/ProjectAudit"; import ProjectAudit from "../../components/drawers/ProjectAudit";
import { projlist } from "../../api/indexAudit"; import { projlist } from "../../api/indexAudit";
import { toDate } from "@/api/method"; import { toDate } from "@/api/method";
import dayjs from "dayjs";
export default { export default {
name: "ProjectViewedN", name: "ProjectViewedN",
components: { ProjectAudit }, components: { ProjectAudit },
@@ -131,7 +130,7 @@ export default {
valueproj: null, valueproj: null,
valuecreater: null, valuecreater: null,
valuename: null, valuename: null,
valueDate: [], valueDate: undefined,
ProjAuditvisible: false, ProjAuditvisible: false,
currentPage: 1, currentPage: 1,
total: null, total: null,
@@ -211,15 +210,6 @@ export default {
}, },
], ],
tableData1: [ tableData1: [
{
number: "1",
name: "课程1",
belong: "管理者进阶/管理者进阶腾飞班",
manager: "黄华,刘军",
status: "待审核",
creater: "管理员",
time: "-",
},
], ],
}); });
const showProjAudit = (id, createId, creater) => { const showProjAudit = (id, createId, creater) => {
@@ -228,15 +218,15 @@ export default {
state.chooseCreateId = createId; state.chooseCreateId = createId;
state.chooseCreater = creater; state.chooseCreater = creater;
}; };
const getProjList = (obj) => { const getProjList = () => {
let objn = obj || { let objn = {
beginTime: 0, beginTime: state.valueDate == undefined ? "" : Date.parse(state.valueDate[0]) ,
createName: "", createName: state.valuecreater,
endTime: 0, endTime: state.valueDate == undefined ? "" : Date.parse(state.valueDate[1]),
manager: "", manager: state.valuename,
name: "", name: state.valueproj,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: 10, pageSize: state.pageSize,
status: 1, status: 1,
}; };
projlist(objn) projlist(objn)
@@ -244,9 +234,7 @@ export default {
console.log("获取待审核项目成功", res); console.log("获取待审核项目成功", res);
let result = res.data.data; let result = res.data.data;
state.total = result.total; state.total = result.total;
if (result.total > 0) {
setProjList(result.rows); setProjList(result.rows);
}
}) })
.catch((err) => { .catch((err) => {
console.log("获取待审核项目失败", err); console.log("获取待审核项目失败", err);
@@ -255,11 +243,13 @@ export default {
const setProjList = (tableData) => { const setProjList = (tableData) => {
let data = tableData; let data = tableData;
let array = []; let array = [];
data.map((item) => { data.map((item,index) => {
if(item.type == 3){
let obj = { let obj = {
key:index+1,
number: item.projectId, number: item.projectId,
name: getName(item), name: item.name,
belong: getBelong(item), belong: item.parentId,
manager: item.manager || "-", manager: item.manager || "-",
status: status:
item.status == 0 item.status == 0
@@ -281,52 +271,38 @@ export default {
createId: item.createId, createId: item.createId,
}; };
array.push(obj); array.push(obj);
} else {
let obj = {
key:index+1,
number: item.projectId,
name: item.name,
belong: item.parentId,
manager: item.manager || "-",
status:
item.status == 0
? "草稿"
: item.status == 1
? "待审核"
: item.status == 2
? "通过"
: item.status == 3
? "发布"
: item.status == -1
? "已结束"
: item.status == -2
? "拒绝"
: "-",
creater: item.createName,
time: toDate(item.createTime, "Y-M-D h-m"),
projectId: item.projectId,
createId: item.createId,
children: item.subList ? setProjList(item.subList) : [] ,
};
array.push(obj);
}
}); });
state.tableData1 = []; state.tableData1 = array
}; return array
const getName = (item) => {
if (
Object.prototype.hasOwnProperty.call(item.subList[0], "name") &&
!Object.prototype.hasOwnProperty.call(
item.subList[0].subList[0],
"name"
)
) {
// 两层
return item.subList[0].name;
} else if (
Object.prototype.hasOwnProperty.call(item.subList[0], "name") &&
Object.prototype.hasOwnProperty.call(item.subList[0].subList[0], "name")
) {
//三层
return item.subList[0].subList[0].name;
// return item.name
} else {
// 单层
return item.name;
}
};
const getBelong = (item) => {
if (
Object.prototype.hasOwnProperty.call(item.subList[0], "name") &&
!Object.prototype.hasOwnProperty.call(
item.subList[0].subList[0],
"name"
)
) {
// 两层
return item.name;
} else if (
Object.prototype.hasOwnProperty.call(item.subList[0], "name") &&
Object.prototype.hasOwnProperty.call(item.subList[0].subList[0], "name")
) {
//三层
return item.subList[0].name + "/" + item.subList[0].subList[0].name;
// return item.name
} else {
// 单层
return item.name;
}
}; };
const changePagination = (pagina) => { const changePagination = (pagina) => {
state.currentPage = pagina; state.currentPage = pagina;
@@ -339,19 +315,6 @@ export default {
(state.valueDate = []); (state.valueDate = []);
getProjList(); getProjList();
}; };
const search = () => {
let obj = {
beginTime: dayjs(state.valueDate[0]).format("YYYY-MM-DD"),
createName: state.valuecreater,
endTime: dayjs(state.valueDate[1]).format("YYYY-MM-DD"),
manager: state.valuename,
name: state.valueproj,
pageNo: state.currentPage,
pageSize: 10,
status: 1,
};
getProjList(obj);
};
onMounted(() => { onMounted(() => {
getProjList(); getProjList();
}); });
@@ -360,11 +323,8 @@ export default {
showProjAudit, showProjAudit,
getProjList, getProjList,
setProjList, setProjList,
getName,
getBelong,
changePagination, changePagination,
reset, reset,
search,
}; };
}, },
}; };

View File

@@ -219,11 +219,15 @@
<add-online <add-online
v-model:addonlineVisible="addonlinevisible" v-model:addonlineVisible="addonlinevisible"
@changeData="updateTableData" @changeData="updateTableData"
v-model:edit="edit" v-model:isactive="isactive"
v-model:routerId="routerId"
v-model:routerTaskId="routerTaskId"
v-model:projectId="projectId" v-model:projectId="projectId"
v-model:chooseStageId="chooseStageId" v-model:chooseStageId="chooseStageId"
v-model:projectTaskId="projectTaskId" v-model:projectTaskId="projectTaskId"
v-model:edit="edit"
v-model:EditOnlineId="EditOnlineId" v-model:EditOnlineId="EditOnlineId"
:isLevel="isLevel"
/> />
</div> </div>
<!-- 添加在线侧弹窗 --> <!-- 添加在线侧弹窗 -->
@@ -263,14 +267,15 @@
<add-case <add-case
v-model:addcaseVisible="addcasevisible" v-model:addcaseVisible="addcasevisible"
@changeData="updateTableData" @changeData="updateTableData"
:isLevel="isLevel"
v-model:isactive="isactive" v-model:isactive="isactive"
v-model:routerId="routerId" v-model:routerId="routerId"
v-model:edit="edit" v-model:routerTaskId="routerTaskId"
v-model:projectId="projectId" v-model:projectId="projectId"
v-model:chooseStageId="chooseStageId" v-model:chooseStageId="chooseStageId"
v-model:projectTaskId="projectTaskId" v-model:projectTaskId="projectTaskId"
v-model:edit="edit"
v-model:EditCaseId="EditCaseId" v-model:EditCaseId="EditCaseId"
:isLevel="isLevel"
/> />
</div> </div>
<!-- 添加案例侧弹窗 --> <!-- 添加案例侧弹窗 -->
@@ -420,16 +425,16 @@
<div> <div>
<add-eval <add-eval
v-model:addevalVisible="addevalvisible" v-model:addevalVisible="addevalvisible"
:isLevel="isLevel"
@changeData="updateTableData" @changeData="updateTableData"
v-model:isactive="isactive" v-model:isactive="isactive"
v-model:routerTaskId="routerTaskId"
v-model:edit="edit"
v-model:routerId="routerId" v-model:routerId="routerId"
v-model:routerTaskId="routerTaskId"
v-model:projectId="projectId" v-model:projectId="projectId"
v-model:chooseStageId="chooseStageId" v-model:chooseStageId="chooseStageId"
v-model:projectTaskId="projectTaskId" v-model:projectTaskId="projectTaskId"
v-model:edit="edit"
v-model:EditEvalId="EditEvalId" v-model:EditEvalId="EditEvalId"
:isLevel="isLevel"
/> />
</div> </div>
<!-- 添加测评侧弹窗 --> <!-- 添加测评侧弹窗 -->
@@ -501,7 +506,7 @@
v-model:chooseStageId="chooseStageId" v-model:chooseStageId="chooseStageId"
v-model:EditProjectId="EditProjectId" v-model:EditProjectId="EditProjectId"
v-model:routerTaskId="routerTaskId" v-model:routerTaskId="routerTaskId"
v-model:chooseProjectList = "chooseProjectList" v-model:chooseProjectList="chooseProjectList"
/> />
</div> </div>
</div> </div>
@@ -515,7 +520,7 @@
</div> </div>
<div class="tit_right"> <div class="tit_right">
<div class="btn btn1" @click="showChangeModal"> <div class="btn btn1" @click="showChangeModal">
<div class="btnText">移动任务阶段</div> <div class="btnText">移动任务到关卡</div>
</div> </div>
<div class="btn btn2"> <div class="btn btn2">
<div class="imgIcon"></div> <div class="imgIcon"></div>
@@ -1924,7 +1929,6 @@ export default {
closeChangeModal, closeChangeModal,
handleChangeStage, handleChangeStage,
showDeleteChapter, showDeleteChapter,
closeDeleteChapter, closeDeleteChapter,
deleteChapter, deleteChapter,

View File

@@ -14,7 +14,7 @@ module.exports = defineConfig({
port: 8080, port: 8080,
proxy: { proxy: {
"/manageApi": { "/manageApi": {
// target:"http://192.168.100.208:30001", // target:"http://192.168.56.245:30001/",
target: "http://111.231.196.214:30001/", //这里后台的地址模拟的;应该填写你们真实的后台接口 target: "http://111.231.196.214:30001/", //这里后台的地址模拟的;应该填写你们真实的后台接口
changeOrigin: true, //表示是否改变原域名 changeOrigin: true, //表示是否改变原域名
// secure: false, // secure: false,