master
tangyi 2022-01-14 18:05:11 +08:00
parent 48b35dc835
commit 3b2ae2001b
8 changed files with 917 additions and 230 deletions

View File

@ -1,114 +1,148 @@
<template>
<div class="nav">
<div class="logo">
<img src="../assets/logo.png" alt="" />
<div>
<p>巴音孟克</p>
<p>火眼识才系统</p>
</div>
</div>
<div class="user">
<img src="" alt="" />
<p><span>用户名</span><span>Loretta</span></p>
</div>
<div class="navigation">
<router-link class="navigationList" to="/consumer"><img src="../assets/user.png" alt="" />
<p>用户管理</p>
</router-link>
<router-link class="navigationList" to="/projectManagement"><img src="../assets/xiangmu.png" alt="" />
<p>项目管理</p>
</router-link>
<div>
<div class="navigationList">
<img src="../assets/zhanghu.png" alt="" />
<p>账户管理</p>
<img src="" alt="">
</div>
</div>
</div>
</div>
<div class="nav">
<div class="logo">
<img src="../assets/logo.png" alt="" />
<div>
<p>巴音孟克</p>
<p>火眼识才系统</p>
</div>
</div>
<div class="user">
<img :src="userData.avatar" alt="" />
<p>
<span>用户名</span><span>{{ userData.account }}</span>
</p>
</div>
<div class="navigation">
<router-link
class="navigationList"
:class="[navIf == 'consumer' ? 'navIF' : '']"
to="/consumer"
><img src="../assets/user.png" alt="" />
<p>用户管理</p>
</router-link>
<router-link
class="navigationList"
:class="[navIf == 'projectManagement' ? 'navIF' : '']"
to="/projectManagement"
><img src="../assets/xiangmu.png" alt="" />
<p>项目管理</p>
</router-link>
<router-link
class="navigationList"
:class="[navIf == 'generateTest' ? 'navIF' : '']"
to="/generateTest"
><img src="../assets/user.png" alt="" />
<p>测试管理</p>
</router-link>
<router-link
class="navigationList"
:class="[navIf == 'topicParameters' ? 'navIF' : '']"
to="/topicParameters"
><img src="../assets/user.png" alt="" />
<p>题型配置</p>
</router-link>
<!-- <div>
<div class="navigationList" :class="[navIf ? 'navIF':'']">
<img src="../assets/zhanghu.png" alt="" />
<p>账户管理</p>
<img src="" alt="" />
</div>
</div> -->
</div>
</div>
</template>
<script>
export default {
props: {
msg: String,
},
};
export default {
props: {
navIf: String,
},
data() {
return {
userData: {},
};
},
mounted() {
this.userData = JSON.parse(localStorage.userData);
},
};
</script>
<style scoped>
.nav {
width: 260px;
height: 100vh;
background: linear-gradient(126deg, #0d338a 0%, #0d338a 0%, #2884d3 100%);
border-radius: 0px 30px 30px 0px;
padding-top: 30px;
box-sizing: border-box;
}
.nav {
width: 260px;
height: 100vh;
background: linear-gradient(126deg, #0d338a 0%, #0d338a 0%, #2884d3 100%);
border-radius: 0px 30px 30px 0px;
padding-top: 30px;
box-sizing: border-box;
}
.logo {
display: flex;
align-items: flex-end;
justify-content: center;
}
.logo {
display: flex;
align-items: flex-end;
justify-content: center;
}
.navIF {
background: rgba(255, 255, 255, 0.15);
}
.logo div {
margin-left: 17px;
}
.logo div {
margin-left: 17px;
}
.logo div p {
font-size: 22px;
font-family: PangMenZhengDao;
color: #ffffff;
letter-spacing: 3px;
text-align: center;
}
.logo div p {
font-size: 22px;
font-family: PangMenZhengDao;
color: #ffffff;
letter-spacing: 3px;
text-align: center;
}
.user {
width: 260px;
height: 50px;
margin-top: 40px;
.user {
width: 260px;
height: 50px;
margin-top: 40px;
display: flex;
align-items: center;
padding-left: 40px;
background: rgba(255, 255, 255, 0.15);
}
display: flex;
align-items: center;
padding-left: 40px;
background: rgba(255, 255, 255, 0.15);
}
.user img {
width: 36px;
border-radius: 50%;
margin-right: 31px;
height: 36px;
}
.user img {
width: 36px;
border-radius: 50%;
margin-right: 31px;
height: 36px;
}
.user p {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
}
.user p {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
}
.navigation {
margin-top: 58px;
}
.navigation {
margin-top: 58px;
}
.navigationList {
display: flex;
margin-bottom: 20px;
padding: 20px 0px;
justify-content: center;
}
.navigationList {
display: flex;
margin-bottom: 42px;
justify-content: center;
}
.navigationList p {
font-size: 18px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
.navigationList p {
font-size: 18px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
line-height: 25px;
margin-left: 20px;
}
line-height: 25px;
margin-left: 20px;
}
</style>

View File

@ -11,7 +11,7 @@ import consumer from '../view/consumer.vue'
import projectManagement from '../view/projectManagement.vue'
import projectTopic from '../view/projectTopic.vue'
import generateTest from '../view/generateTest.vue'
import topicParameters from '../view/topicParameters.vue'
//配置路由
const router = createRouter({
history: createWebHistory(),
@ -45,6 +45,11 @@ const router = createRouter({
path: '/generateTest', //
name: 'generateTest',
component: generateTest
} ,
{
path: '/topicParameters', //
name: 'topicParameters',
component: topicParameters
}
]
})

View File

@ -1,6 +1,6 @@
<template>
<div class="disFlex">
<NavLeft />
<NavLeft navIf="consumer" />
<div class="consumer">
<div class="pull-title">
<ul class="title-item">
@ -11,7 +11,7 @@
<ul class="consumer-seach-item">
<li>
<el-input
v-model="consumerData.keywordt"
v-model="consumerData.keyword"
placeholder="请输入手机号"
class="input-with-select"
style="width: 340px"
@ -62,6 +62,9 @@
<el-button type="text" size="small" @click="queryName(scope)"
>用户详情</el-button
>
<el-button type="text" size="small" @click="queryNamea(scope)"
>测试列表</el-button
>
</el-table-column>
</el-table>
</div>
@ -87,8 +90,18 @@
>
<div class="elementUl">
<div class="usernameDatatit">
<p>用户信息</p>
<p>测评报告</p>
<p
@click="usernameDatatitIf(true)"
:class="usernameDataIf ? 'usernameDatatitIf' : ''"
>
用户信息
</p>
<p
@click="usernameDatatitIf(fales)"
:class="usernameDataIf ? '' : 'usernameDatatitIf'"
>
测评报告
</p>
</div>
<div v-if="usernameDataIf" class="usernameData">
@ -107,6 +120,7 @@
<img src="" alt="" />
<p>{{ usernameData.wxMiniShowname }}</p>
</div>
<p>钉钉</p>
<div class="wxDdCon">
<img src="" alt="" />
<p></p>
@ -146,7 +160,7 @@ export default {
tableData: [],
ReportListData: [],
total: 1,
usernameDataIf: false,
usernameDataIf: true,
consumerData: {
current: 1,
keyword: "",
@ -167,22 +181,45 @@ export default {
let yy = new Date(data).getFullYear();
let mm = new Date(data).getMonth() + 1;
let dd = new Date(data).getDate();
return yy + "-" + mm + "-" + "-" + dd;
return yy + "-" + mm + "-" + dd;
},
usernameDatatitIf(ifS) {
this.usernameDataIf = ifS;
},
//
queryName(data) {
this.drawer = true;
console.log(data);
this.getReportList(data.row);
this.usernameData = data.row;
this.usernameDataIf = true;
},
//
queryNamea(data) {
this.drawer = true;
this.getReportList(data.row);
this.usernameData = data.row;
this.usernameDataIf = false;
},
handleCurrentChange(data) {
this.consumerData.current = data;
this.getConsumer();
},
handleClose() {
this.drawer = false;
},
phonetest(data) {
const reg = /^1([38]\d|5[0-35-9]|7[3678])\d{8}$/;
if (data == "" || data.length <= 10 || !reg.test(data)) {
return false;
} else {
return true;
}
},
//
getConsumer() {
let param = new URLSearchParams();
param.append("current", this.consumerData.current);
param.append("keyword", this.consumerData.keyword);
param.append("size", this.consumerData.size);
@ -229,7 +266,16 @@ export default {
// endTime: "",
// startTime: "",
// },
console.log(this.consumerData.Time);
console.log(this.consumerData.type);
if (this.consumerData.type == "手机号" || this.consumerData.type == "") {
if (!this.phonetest(this.consumerData.keyword)) {
this.$alert("请正确输入手机号", "手机号错误", {
confirmButtonText: "确定",
});
return;
}
}
if (this.consumerData.Time) {
this.consumerData.startTime = this.newDate(this.consumerData.Time[0]);
this.consumerData.endTime = this.newDate(this.consumerData.Time[1]);
@ -246,8 +292,7 @@ export default {
.usernameDatatit {
display: flex;
position: absolute;
width: 100%;
padding-bottom: 20px;
width: 80%;
top: 0px;
border-bottom: 1px solid #e4eaee;
padding-left: 40px;
@ -267,6 +312,7 @@ export default {
border-bottom: 1px solid #e4eaee;
margin-bottom: 18px;
}
.usernameData > .p span {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
@ -279,13 +325,17 @@ export default {
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #454d67;
width: 100px;
margin-right: 30px;
line-height: 22px;
}
.consumer {
width: calc(100% - 260px);
padding: 50px 60px;
}
.reportListCon {
background: #f8fafb;
padding: 20px;
}
.reportListCon > p {
width: 93%;
padding-bottom: 16px;
@ -413,4 +463,10 @@ export default {
line-height: 20px;
margin-left: 20px;
}
.usernameDatatit > .usernameDatatitIf {
color: #0544a4;
font-weight: 600;
padding-bottom: 20px;
border-bottom: 2px solid #0544a4;
}
</style>

View File

@ -1,79 +1,422 @@
<!-- <template>
<div >
<p>新建测试 </p>
<div class="generateTest">
<p class="tit">测试信息</p>
<div class="generateTestCon">
<div class="inputCss">
<p>问题</p>
<div>
<el-input
class="w-50 m-2"
size="large"
placeholder="请输入问题"
<template>
<div class="disFlex">
<NavLeft navIf="generateTest" />
<div class="projectManagement zdin">
<div class="title">项目管理</div>
<div class="search">
<div class="searchInput">
<el-input
v-model="projectName"
placeholder="请输入项目名称"
></el-input>
</div>
<div class="searchInput">
<el-date-picker
v-model="projectDate"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
>
</el-date-picker>
</div>
<button type="button" @click="queryProject()" class="queryProject">
<img src="" alt="" /> 查询
</button>
</div>
<div class="projectTable">
<div
class="generateTestList"
v-for="item in GenerateTestData"
:key="item.id"
>
<div class="generateTestListOne">
<div>
<p>{{ item.name }}</p>
<p>单位名称{{ item.companyName }}</p>
<p>创建时间{{ item.createTime }}</p>
<p>
二维码有效期 {{ item.qrCodeUrlEndTime }}{{
item.qrCodeUrlStartTime
}}
</p>
</div>
<p>
参与人数<span>{{ item.personCount }}</span>
</p>
</div>
<div class="buttonFunction">
<p></p>
<p></p>
<p></p>
<div class="buttonFunctionMake">
<p>查看结果</p>
<p>下载二维码</p>
<p @click="resetCode(item)"></p>
<p>配置白名单</p>
<p>停用</p>
<p>删除</p>
</div>
</div>
</div>
</div>
</div>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage4"
layout="prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</div>
</div>
<el-drawer
v-model="drawer"
title="重置二维码"
:direction="direction"
:before-close="handleClose"
>
<div class="generateTestCode">
<p>测试名称{{ codeDate.name }}</p>
<div>
<p>
当前二维码有效期{{ codeDate.qrCodeUrlEndTime }}{{
codeDate.qrCodeUrlStartTime
}}
</p>
<el-date-picker
v-model="resetCodeModifyData"
type="datetimerange"
range-separator="To"
start-placeholder="开始时间"
end-placeholder="结束时间"
>
</el-date-picker>
</div>
<el-button type="primary" @click="resetCodeModify()"></el-button>
<el-button @click="resetForm(ruleFormRef)"></el-button>
</div>
</el-drawer>
<!-- <div class="makeBer">
</div> -->
<el-drawer
v-model="iDcrt"
title="配置白名单"
:direction="direction"
:before-close="handleClose"
>
<div class="generateTestCode">
<p>测试名称{{ codeDate.name }}</p>
<div>
<p>
当前二维码有效期{{ codeDate.qrCodeUrlEndTime }}{{
codeDate.qrCodeUrlStartTime
}}
</p>
</div>
<el-button type="primary" @click="resetCodeModify()"></el-button>
<el-button @click="resetForm(ruleFormRef)"></el-button>
</div>
</el-drawer>
</div>
</template>
<script>
import NavLeft from "../components/nav.vue";
export default {
components: {
NavLeft,
},
props: {
msg: String,
},
data() {
return {};
return {
total: "1",
codeDate: "",
resetCodeModifyData: "",
drawer: false,
direction: "rtl",
iDcrt:false,
generateData: {
current: 1,
endTime: "",
name: "",
size: 10,
startTime: "",
},
GenerateTestData: [],
pickerOptions: {
shortcuts: [
{
text: "本月",
onClick(picker) {
picker.$emit("pick", [new Date(), new Date()]);
},
},
{
text: "今年至今",
onClick(picker) {
const end = new Date();
const start = new Date(new Date().getFullYear(), 0);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近六个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setMonth(start.getMonth() - 6);
picker.$emit("pick", [start, end]);
},
},
],
},
};
},
deleteProject() {},
mounted() {
//
this.getGenerateTest();
},
methods: {
//
projectDelete(id) {
let that = this;
this.axios
.post("/hysc/project/delProject", {
id: id,
})
.then(function () {
that.getProject();
})
.catch(function (error) {
console.log(error);
});
},
projectDisable(data) {
let that = this;
this.axios
.post("/hysc/project/updProject", data)
.then(function () {
that.getProject();
})
.catch(function (error) {
console.log(error);
});
},
handleCurrentChange(data) {
this.generateData.current = data;
this.getProject();
},
handleClose() {
this.drawer = false;
},
methods: {},
//
newDate(data) {
let yy = new Date(data).getFullYear();
let mm = new Date(data).getMonth() + 1;
let dd = new Date(data).getDate();
let hh = new Date(data).getHours();
let mf = new Date(data).getMinutes();
let ss = new Date(data).getSeconds();
if (mm < 10) {
mm = "0" + mm;
}
if (dd < 10) {
dd = "0" + dd;
}
if (hh < 10) {
hh = "0" + hh;
}
if (mf < 10) {
mf = "0" + mf;
}
if (ss < 10) {
ss = "0" + ss;
}
return yy + "-" + mm + "-" + dd + " " + hh + ":" + mf + ":" + ss;
},
//
resetCode(data) {
this.drawer = true;
this.codeDate = data;
},
resetCodeModify() {
let data = [];
if (this.resetCodeModifyData[0]) {
data.push(this.newDate(this.resetCodeModifyData[0]));
data.push(this.newDate(this.resetCodeModifyData[1]));
}
this.axios
.post("/hysc/test/updTest", {
id: this.codeDate.id,
qrCodeUrlStartTime: data[0],
qrCodeUrlEndTime: data[1],
})
.then(function (response) {
console.log(response.data);
})
.catch(function (error) {
console.log(error);
});
},
//
queryProject() {
this.generateData.name = this.projectName;
this.getProject();
},
//
getGenerateTest() {
let param = new URLSearchParams();
let that = this;
param.append("current", that.generateData.current);
param.append("endTime", that.generateData.endTime);
param.append("name", that.generateData.name);
param.append("size", that.generateData.size);
param.append("startTime", that.generateData.startTime);
this.axios
.get("/hysc/test/getTestPage", {
params: param,
})
.then(function (response) {
console.log(response.data);
that.total = response.data.data.total;
that.GenerateTestData = response.data.data.records;
})
.catch(function (error) {
console.log(error);
});
},
},
};
</script>
<style scoped>
.generateTest{
min-height: 50vh;
background: #f8fafb;
border-radius: 3px;
width: 80%;
margin:auto;
margin-top: 30px;
border: 1px solid #dde3e8;
<style >
.buttonFunctionMake {
display: none;
width: 200px;
background-color: #fff;
position: absolute;
left: -80px;
box-shadow: 5px 5px 10px rgba(120, 137, 149, 0.25);
height: 300px;
z-index: 30;
}
.generateTest .tit{
font-size: 18px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #454d67;
padding-top: 30px;
font-weight: 600;
padding-left: 40px;
border-bottom: 1px solid #e4eaee;
padding-bottom: 20px;
margin-bottom: 60px;}
.inputCss>p{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #8e8e8e;
line-height: 26px;
}
.inputCss>div{
width: 300px
;
}
.generateTestCon{
padding:0 40px 40px 40px;}
</style> -->
.generateTestCode p {
font-size: 16px;
}
.zdin > .el-overlay {
z-index: 5 !important;
}
.zdin > .el-teleport {
z-index: 8 !important;
}
.generateTestCode > p {
margin-bottom: 20px;
}
.generateTestCode > div {
margin-bottom: 20px;
}
.generateTestCode > div > p {
margin-bottom: 20px;
}
.buttonFunction {
position: relative;
cursor: pointer;
}
.buttonFunction:hover .buttonFunctionMake {
display: block;
}
.buttonFunctionMake > p {
color: #0544a4;
text-align: center;
padding-top: 20px;
font-size: 14px;
}
.buttonFunction > p {
width: 30px;
height: 4px;
border-radius: 3px;
margin-bottom: 4px;
background-color: #0544a4;
}
.generateTestListOne {
display: flex;
align-items: flex-end;
}
.generateTestListOne > div {
margin-right: 100px;
}
.generateTestListOne > div > :nth-child(1) {
font-size: 30px;
margin-bottom: 30px;
}
.generateTestListOne p {
font-size: 16px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #515151;
margin-bottom: 20px;
line-height: 20px;
}
.pagination {
display: flex;
justify-content: flex-end;
margin-top: 120px;
}
.disFlex {
display: flex;
}
.projectManagement {
flex: 1;
box-sizing: border-box;
padding: 60px;
}
.generateTestList {
width: 100%;
padding: 30px;
margin-bottom: 30px;
padding-bottom: 10px;
background: #f8fafb;
display: flex;
padding-right: 100px;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
border-radius: 3px;
border: 1px solid #dde3e8;
}
.title {
font-size: 16px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #454d67;
line-height: 22px;
padding-left: 23px;
border-bottom: 1px solid #e4eaee;
padding-bottom: 7px;
margin-bottom: 60px;
}
</style>

View File

@ -41,14 +41,13 @@ export default {
let param = new URLSearchParams();
param.append("account", this.username);
param.append("password", this.password);
console.log(param);
let that = this;
this.axios
.post("/hysc/auth/token", param)
.then(function (response) {
if (response.data.code == 200) {
localStorage.token="bearer "+response.data.data.accessToken
localStorage.userData= JSON.stringify(response.data.data)
that.$router.push("/index");
}else{
that.$alert(response.data.msg,"登录失败", {
@ -151,6 +150,7 @@ export default {
font-family: STYuanti-SC-Regular, STYuanti-SC;
font-weight: 400;
color: #dddde8;
cursor:pointer
}
.footer {
width: 100%;

View File

@ -1,6 +1,6 @@
<template>
<div class="disFlex">
<NavLeft />
<NavLeft navIf="projectManagement" />
<div class="projectManagement">
<div class="title">项目管理</div>
<div class="search">
@ -63,7 +63,10 @@
size="small"
@click.prevent="open(scope, 2)"
>
停用
<div v-if="scope.row.status == 0"></div>
<div v-else></div>
</el-button>
<el-button
@ -158,12 +161,10 @@ export default {
direction: "rtl",
projectName: "",
projectDate: "",
promptData: {
confirmText: "",
message: "",
},
projectData: {
current: 1,
endTime: "",
@ -214,8 +215,14 @@ export default {
this.promptData.confirmText = "是否确定删除";
this.promptData.message = "删除成功";
} else {
this.promptData.confirmText = "是否确定停用";
if (obj.row.status == 0) {
this.promptData.confirmText = "是否确定停用";
this.promptData.message = "停用成功";
}else{
this.promptData.confirmText = "是否确定启用";
this.promptData.message = "启用成功";
}
}
ElMessageBox.confirm(this.promptData.confirmText, {
confirmButtonText: "取消",
@ -319,7 +326,7 @@ export default {
})
.then(function () {
that.drawer = false;
this.getProject();
that.getProject();
})
.catch(function (error) {
console.log(error);
@ -406,6 +413,7 @@ export default {
.queryProject {
width: 90px;
height: 36px;
cursor:pointer;
background: #0544a4;
box-shadow: 0px 2px 7px 0px rgba(120, 137, 149, 0.25);
border-radius: 3px;
@ -418,6 +426,7 @@ export default {
}
.addProject {
width: 90px;
cursor:pointer;
height: 36px;
background: #fbc861;
box-shadow: 0px 2px 7px 0px #fff0cb;

View File

@ -1,6 +1,6 @@
<template>
<div class="disFlex">
<NavLeft />
<NavLeft navIf="projectTopic" />
<div class="projectManagement">
<div class="title">编辑题库</div>
@ -93,7 +93,9 @@
<button class="buttonCss" @click="cancelTopic()" type="button">
取消选题
</button>
<button class="buttonCss" type="button">新建</button>
<button class="buttonCss" @click="addProject()" type="button">
新建
</button>
<button class="buttonCss" type="button">批量导入</button>
<button class="buttonCss" type="button">下载导入模板</button>
</div>
@ -160,24 +162,18 @@
</div>
<!-- 题目类型 -->
<div class="selectClass" v-if="topicType == 2 || topicType == 4">
<div v-for="item in selectClassData" :key="item.dictValue">
{{ item.dictValue }}
</div>
<p>请选择对应类型</p>
<el-select
v-model="topicData.topicType"
class="m-2"
placeholder="请选择类型"
size="large"
>
<el-option
<select v-model="topicData.topicType" class="selectCss">
<option
class="option"
v-for="item in selectClassData"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
{{ item.dictValue }}
</option>
</select>
</div>
<div>
@ -229,71 +225,72 @@
<div v-if="topicType == 1 || topicType == 3">
<div class="selectClass" v-if="optionsIf == 1">
<p>选择对应类型</p>
<el-select
v-model="topicData.options[0].topicType"
class="m-2"
<select
placeholder="请选择类型"
size="large"
v-model="topicData.options[0].topicType"
class="selectCss"
>
<el-option
<option
class="option"
v-for="item in selectClassData"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
{{ item.dictValue }}
</option>
</select>
</div>
<div class="selectClass" v-if="optionsIf == 2">
<p>选择对应类型</p>
<el-select
v-model="topicData.options[1].topicType"
class="m-2"
<select
placeholder="请选择类型"
size="large"
v-model="topicData.options[1].topicType"
class="selectCss"
>
<el-option
<option
class="option"
v-for="item in selectClassData"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
{{ item.dictValue }}
</option>
</select>
</div>
<div class="selectClass" v-if="optionsIf == 3">
<p>选择对应类型</p>
<el-select
v-model="topicData.options[2].topicType"
class="m-2"
<select
placeholder="请选择类型"
size="large"
v-model="topicData.options[2].topicType"
class="selectCss"
>
<el-option
<option
class="option"
v-for="item in selectClassData"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
{{ item.dictValue }}
</option>
</select>
</div>
<div class="selectClass" v-if="optionsIf == 4">
<p>选择对应类型</p>
<el-select
v-model="topicData.options[3].topicType"
class="m-2"
<select
placeholder="请选择类型"
size="large"
v-model="topicData.options[3].topicType"
class="selectCss"
>
<el-option
<option
class="option"
v-for="item in selectClassData"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
{{ item.dictValue }}
</option>
</select>
</div>
</div>
<div class="selectClass" v-if="topicType == 2 || topicType == 3">
@ -494,7 +491,17 @@ export default {
direction: "rtl",
projectTopicData: {},
optionsIf: 1,
selectClassData: [],
selectClassData: [
{
a: "123",
},
{
a: "123",
},
{
a: "123",
},
],
};
},
mounted() {
@ -503,10 +510,10 @@ export default {
this.generateTestData.name = this.projectData.name;
this.generateTestData.companyName = this.projectData.companyName;
this.getProject();
this.getRandomTopicCount();
},
methods: {
//
//
upLoad(e) {
let that = this;
let key = null;
@ -552,11 +559,12 @@ export default {
console.log(error);
});
},
//
handleCurrentChange(data) {
this.TopicPageData.current = data;
this.getProject();
},
//
options(num) {
this.optionsIf = num;
},
@ -576,11 +584,11 @@ export default {
} else {
this.generateTestData.isAllowWhiteList = "0";
}
console.log();
this.axios
.post("hysc/test/addTest",this.generateTestData)
this.generateTestIf=false
this.axios
.post("hysc/test/addTest", this.generateTestData)
.then(function (data) {
console.log(data)
console.log(data);
})
.catch(function (error) {
console.log(error);
@ -624,6 +632,7 @@ export default {
this.TopicPageData.libraryType = "topic_type_4";
this.topicData.libraryType = "topic_type_4";
}
console.log(this.topicData, "as");
this.getProject();
},
projectTopicDelete(id) {
@ -644,10 +653,16 @@ export default {
this.drawer = true;
this.buttonDataIF = false;
this.topicData = { ...data.row };
for (let index = 0; index < this.topicData.options.length; index++) {
this.topicData.options[index].topicType =
this.topicData.options[index].topicTypeValue;
}
},
updTopic() {
let that = this;
this.axios
.post("/hysc/library/updTopic", this.topicData)
.then(function () {
@ -670,6 +685,7 @@ export default {
})
.then(function () {
// that.libraryType1CountData={...response.data.data}
that.getRandomTopicCount();
that.getProject();
})
.catch(function (error) {
@ -689,6 +705,7 @@ export default {
.then(function (response) {
that.libraryType1CountData = { ...response.data.data };
that.getProject();
that.getRandomTopicCount();
})
.catch(function (error) {
console.log(error);
@ -696,6 +713,7 @@ export default {
},
//
addprojectTopic() {
this.drawer = false;
if (this.topicType == 1 || this.topicType == 3) {
for (let index = 0; index < this.topicData.options.length; index++) {
for (
@ -716,17 +734,103 @@ export default {
}
}
let that = this;
this.axios
.post("/hysc/library/addTopic", this.topicData)
.then(function (response) {
console.log(response.data.data);
console.log(response);
that.getProject();
})
.catch(function (error) {
console.log(error);
});
},
//
getRandomTopicCount() {
let param = new URLSearchParams();
param.append("projectId", this.projectData.id);
let that = this;
this.axios
.get("/hysc/library/getRandomTopicCount", {
params: param,
})
.then(function (response) {
console.log(response);
that.libraryType1CountData = { ...response.data.data };
})
.catch(function (error) {
console.log(error);
});
},
//
clearFata() {
this.topicData = {
createTime: "",
projectId: "",
score: "",
libraryType: "topic_type_1",
options: [
{
content: "",
createTime: "",
libraryType: "",
optionIndex: "",
optionIndexEn: "",
score: "",
topicId: 0,
topicType: "",
topicTypeValue: "",
},
{
content: "",
createTime: "",
id: "",
libraryType: "",
optionIndex: "",
optionIndexEn: "",
score: "",
topicId: 0,
topicType: "",
topicTypeValue: "",
},
{
content: "",
createTime: "",
id: "",
libraryType: "",
optionIndex: "",
optionIndexEn: "",
score: "",
topicId: 0,
topicType: "",
topicTypeValue: "",
},
{
content: "",
createTime: "",
id: "",
libraryType: "",
optionIndex: "",
optionIndexEn: "",
score: "",
topicId: 0,
topicType: "",
topicTypeValue: "",
},
],
topic: "",
topicType: "",
};
},
addProject() {
console.log();
this.drawer = true;
this.clearFata();
this.topicData.libraryType = this.TopicPageData.libraryType;
console.log(this.generateTestData);
this.addCation();
this.topicData.projectId = this.projectData.id;
},
@ -769,7 +873,7 @@ export default {
})
.then(function (response) {
console.log(response.data.data, "123");
that.selectClassData = response.data.data;
that.selectClassData = { ...response.data.data };
})
.catch(function (error) {
console.log(error);
@ -999,6 +1103,7 @@ export default {
.imgFm {
width: 200px;
position: relative;
overflow: hidden;
border: 1px solid #ddd;
height: 200px;
}
@ -1014,4 +1119,16 @@ export default {
.imgFm img {
width: 100%;
}
.selectCss {
height: 40px;
border: 1px solid #ddd;
width: 200px;
}
.selectCss .option {
font-size: 14px;
padding: 5px 6px;
color: #515151;
margin-bottom: 5px;
}
</style>

View File

@ -0,0 +1,123 @@
<template>
<div class="disFlex">
<NavLeft navIf="topicParameters projectManagement" />
<div class="topicParametersCon projectManagement">
<div class="title">项目管理</div>
<div class="topicParametersConLsit">
<div class="topicParametersNav">
<p>题型一</p>
<p>题型二</p>
<p>题型三</p>
<p>题型四</p>
</div>
<div class="topicParametersData">
<div class="topicParametersDataNav">
<p>支配/老板型</p>
<p>支配/老板型</p>
<p>支配/老板型</p>
<p>支配/老板型</p>
</div>
<div class="topicParametersDataCon">
<p class="addtopicParameters"> <button>新增</button></p>
<div>
<p> </p> <button></button><button></button>
<div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import NavLeft from "../components/nav.vue";
export default {
components: {
NavLeft,
},
props: {
msg: String,
},
data() {
return {};
},
methods: {},
};
</script>
<style scoped>
.topicParametersCon {
flex: 1;
box-sizing: border-box;
height: 100vh;
}
.topicParametersConLsit {
padding:120px 60px;
background: #f8fafb;
padding-bottom: 0px;
display: flex;
height: 86%;
box-sizing: border-box;
}
.topicParametersNav p{
font-size: 20px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #1B2125;
padding-bottom: 60px;
line-height: 22px;
}
.topicParametersData{
margin-left: 120px;
flex: 1;
}
.topicParametersDataNav{
display: flex;
font-size: 16px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #1B2125;
padding-bottom: 30px;
line-height: 22px;
}
.topicParametersDataNav>p{
margin-right: 60px;
}
.topicParametersDataCon{
background-color: rgb(142, 142, 142,0.5);
width: 100%;
height: 90%;
overflow-x:auto;
}
.addtopicParameters{
text-align: right;
padding-right:20px;
padding-top: 20px;
}
.addtopicParameters button{
width: 90px;
height: 36px;
cursor: pointer;
background: #0544a4;
box-shadow: 0px 2px 7px 0px rgb(120 137 149 / 25%);
border-radius: 3px;
margin-left: 20px;
border: none;
font-size: 15px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
}
</style>