From e68eebdf0a7cd3162eb0fac83b39c446bd665b12 Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期五, 24 五月 2024 09:09:24 +0800
Subject: [PATCH] Merge branch 'master' into dev-zhang
---
src/api/user.js | 2
src/views/exam/question/list.vue | 47 +--
src/api/UserConditionExamine.js | 9
src/api/question.js | 4
src/views/exam/question/edit/multiple-choice.vue | 8
src/views/user/student/list.vue | 75 ++++-
src/api/dashboard.js | 2
src/router.js | 48 ++-
src/views/answer/dataStatistics.vue | 257 +++++++++++++++++++
src/utils/request.js | 16 +
src/views/exam/paper/list.vue | 2
src/views/exam/question/edit/single-choice.vue | 8
src/views/exam/question/edit/true-false.vue | 13
src/components/UploadC.vue | 3
src/views/questionAnswer/edit.vue | 37 ++
src/views/user/departmentExamine/list.vue | 27 +
src/views/exam/question/edit/short-answer.vue | 8
src/views/exam/question/edit/gap-filling.vue | 8
src/views/questionAnswer/list.vue | 10
src/views/user/UserConditionExamine/list.vue | 180 +++++++++++++
20 files changed, 651 insertions(+), 113 deletions(-)
diff --git a/src/api/UserConditionExamine.js b/src/api/UserConditionExamine.js
new file mode 100644
index 0000000..759eafb
--- /dev/null
+++ b/src/api/UserConditionExamine.js
@@ -0,0 +1,9 @@
+import { get,post } from '@/utils/request'
+
+export default {
+ list: query => post('/api/admin/userCondition/examine/list', query),
+ save: query => post('/api/admin/userCondition/examine/save', query),
+ audit: query => post('/api/admin/userCondition/examine/audit', query),
+ delete: id => post('/api/admin/userCondition/examine/delete/' + id),
+ getDeptList: id => post('/api/admin/userCondition/list'),
+}
diff --git a/src/api/dashboard.js b/src/api/dashboard.js
index bbd6429..6a9614e 100644
--- a/src/api/dashboard.js
+++ b/src/api/dashboard.js
@@ -3,6 +3,8 @@
export default {
index: () => post('/api/admin/dashboard/index'),
getData: query => post('/api/admin/examPaperAnswer/statistic', query),
+ data: query => post('/api/admin/examPaperAnswer/data', query),
+ queryCondition: query => get('/api/admin/exam/paper/queryCondition', query),
examPaperList: query => get('/api/admin/exam/paper/list', query),
page: query => post('/api/admin/examPaperAnswer/page', query)
}
diff --git a/src/api/question.js b/src/api/question.js
index 7d983a9..27a3121 100644
--- a/src/api/question.js
+++ b/src/api/question.js
@@ -1,4 +1,4 @@
-import { post, download } from '@/utils/request'
+import { post, download, downloadPost } from '@/utils/request'
export default {
pageList: query => post('/api/admin/question/page', query),
@@ -6,5 +6,5 @@
select: id => post('/api/admin/question/select/' + id),
deleteQuestion: id => post('/api/admin/question/delete/' + id),
downloadImportTemplate: () => download('/api/admin/question/download/question/import/temp'),
- exportQuestion: query => download('/api/admin/question/question/export', query)
+ exportQuestion: query => downloadPost('/api/admin/question/question/export', query)
}
diff --git a/src/api/user.js b/src/api/user.js
index 14bc64c..0716aeb 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -19,5 +19,5 @@
selectByUserName: query => post('/api/admin/user/selectByUserName', query),
addMeetin:query => post('/api/admin/video/add', query),
delMeetin:query => post('/api/admin/video/clear', query),
- setStatus:query => post('/api/admin/user/setStatus', query)
+ setStatus:query => post('/api/admin/userCondition/examine/save', query)
}
diff --git a/src/components/UploadC.vue b/src/components/UploadC.vue
index 3a8df6e..0e8fe0d 100644
--- a/src/components/UploadC.vue
+++ b/src/components/UploadC.vue
@@ -43,8 +43,9 @@
uploadUrl: "http://localhost:8085/api/upload/upload",
fileTypeList: {
'video': ['mp4', 'avi'],
- 'img': ['jgp', 'png', 'jpeg'],
+ 'img': ['jpg', 'png', 'jpeg'],
'pdf': ['pdf'],
+ 'file': ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'png', 'jpg', 'jpeg', 'pdf'],
}
};
},
diff --git a/src/router.js b/src/router.js
index 81a3245..0027693 100644
--- a/src/router.js
+++ b/src/router.js
@@ -78,6 +78,12 @@
meta: { title: '璋冨姩瀹℃牳', noCache: true }
},
{
+ path: 'UserConditionExamine/list',
+ component: () => import('@/views/user/UserConditionExamine/list'),
+ name: 'UserConditionExamineList',
+ meta: { title: '鐘舵�佸鏍�', noCache: true }
+ },
+ {
path: 'tag/list',
component: () => import('@/views/user/tag/list'),
name: 'TagAdminPageList',
@@ -308,7 +314,13 @@
path: 'sheetStatistics',
component: () => import('@/views/answer/sheetStatistics.vue'),
name: 'AnswerPageList',
- meta: { title: '绛斿嵎缁熻', noCache: true }
+ meta: { title: '浜烘暟鍒嗗竷', noCache: true }
+ },
+ {
+ path: 'dataStatistics',
+ component: () => import('@/views/answer/dataStatistics.vue'),
+ name: 'AnswerPageList',
+ meta: { title: '鍒嗘暟缁熻', noCache: true }
},
{
path: 'achievementStatistics',
@@ -484,6 +496,12 @@
name: 'departmentExamineList',
meta: { title: '璋冨姩瀹℃牳', noCache: true }
},
+ {
+ path: 'UserConditionExamine/list',
+ component: () => import('@/views/user/UserConditionExamine/list'),
+ name: 'UserConditionExamineList',
+ meta: { title: '鐘舵�佸鏍�', noCache: true }
+ },
]
},
{
@@ -496,19 +514,19 @@
},
alwaysShow: true,
children: [
- {
- path: 'paper/list',
- component: () => import('@/views/exam/paper/list'),
- name: 'ExamPaperPageList',
- meta: { title: '璇曞嵎鍒楄〃', noCache: true }
- },
- {
- path: 'paper/edit',
- component: () => import('@/views/exam/paper/edit'),
- name: 'ExamPaperEdit',
- meta: { title: '璇曞嵎缂栬緫', noCache: true, activeMenu: '/exam/paper/list' },
- hidden: true
- },
+ // {
+ // path: 'paper/list',
+ // component: () => import('@/views/exam/paper/list'),
+ // name: 'ExamPaperPageList',
+ // meta: { title: '璇曞嵎鍒楄〃', noCache: true }
+ // },
+ // {
+ // path: 'paper/edit',
+ // component: () => import('@/views/exam/paper/edit'),
+ // name: 'ExamPaperEdit',
+ // meta: { title: '璇曞嵎缂栬緫', noCache: true, activeMenu: '/exam/paper/list' },
+ // hidden: true
+ // },
{
path: 'personalRandomTemplate/list',
component: () => import('@/views/exam/personalRandomTemplate/list'),
@@ -558,7 +576,7 @@
path: 'sheetStatistics',
component: () => import('@/views/answer/sheetStatistics.vue'),
name: 'AnswerPageList',
- meta: { title: '绛斿嵎缁熻', noCache: true }
+ meta: { title: '浜烘暟鍒嗗竷', noCache: true }
},
]
},
diff --git a/src/utils/request.js b/src/utils/request.js
index 9c397ae..3e174b7 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -119,6 +119,19 @@
return request(false, query)
}
+const downloadPost = function (url, params) {
+ const query = {
+ baseURL: process.env.VUE_APP_URL,
+ url: url,
+ method: 'post',
+ withCredentials: true,
+ timeout: 300000,
+ data: params,
+ responseType: 'blob' // 鍏抽敭
+ }
+ return request(false, query)
+}
+
export const down = function (url, params) {
const query = {
baseURL: process.env.VUE_APP_URL,
@@ -137,5 +150,6 @@
postWithOutLoadTip,
get,
form,
- download
+ download,
+ downloadPost
}
diff --git a/src/views/answer/dataStatistics.vue b/src/views/answer/dataStatistics.vue
new file mode 100644
index 0000000..997726f
--- /dev/null
+++ b/src/views/answer/dataStatistics.vue
@@ -0,0 +1,257 @@
+<template>
+ <div style="padding: 10px" ref="pageContent">
+ <el-form :model="queryParam" ref="queryForm" :inline="true" style="display: flex">
+ <el-form-item label="璇曞嵎锛�">
+ <el-select v-model="queryParam.id" filterable placeholder="璇曞嵎">
+ <el-option v-for="item in examPaperList" :key="item.id" :value="item.id" :label="item.name" @change="getType(item.type)" />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="submitForm">鏌ヨ</el-button>
+ </el-form-item>
+
+ </el-form>
+ <el-row :gutter="20">
+ <el-col :xl="12" class="echarts-row">
+ <el-card>
+ <div class="card-chart-container">
+ <div id="ageChart" ref="ageChart" class="chart-style" v-loading="chartLoading1" />
+ </div>
+ </el-card>
+ </el-col>
+
+ <el-col :xl="12" class="echarts-row">
+ <el-card>
+ <div class="card-chart-container">
+ <div id="scoreChart" ref="scoreChart" class="chart-style" v-loading="chartLoading2" />
+ </div>
+ </el-card>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :xl="24">
+ <el-card>
+ <div class="card-chart-container">
+ <div id="peopleChart" ref="peopleChart" class="chart-style" v-loading="chartLoading3" />
+ </div>
+ </el-card>
+ </el-col>
+ </el-row>
+ </div>
+</template>
+<script>
+import { mapGetters, mapState } from 'vuex';
+import dashboardApi from '@/api/dashboard';
+
+const colorList = ['#3498DB', '#E74C3C', '#F1C40F', '#95A5A6', '#8E44AD', '#F39C12', '#D35400'];
+
+
+const ageLabel = {
+ 'age0To19': '0-19宀�',
+ 'age20To29': '20-29宀�',
+ 'age30To39': '30-39宀�',
+ 'age40To49': '40-49宀�',
+ 'ageOver50': '澶т簬50宀�',
+};
+const scoreLabel = {
+ 'score0To59': '灏忎簬60鍒�',
+ 'score60To69': '60-69鍒�',
+ 'score70To79': '70-79鍒�',
+ 'score80To89': '80-89鍒�',
+ 'score90To100': '90-100鍒�'
+};
+const pieLabel = {
+ 'totalAttended': '鍙備笌鑰冭瘯',
+ 'totalAbsent': '鏈弬涓庤�冭瘯'
+};
+let ageChart = null;
+let scroeChart = null;
+let peopleChart = null;
+let observer = null;
+export default {
+ data() {
+ return {
+ examPaperList: [],
+ chartLoading1: false,
+ chartLoading2: false,
+ chartLoading3: false,
+ queryParam: {
+ id: '',
+ type: 1
+ },
+ admin: true
+ };
+ },
+ mounted() {
+ if (sessionStorage.getItem('deptAdmin') == 1) {
+ this.admin = false;
+ }
+ ageChart = echarts.init(this.$refs.ageChart);
+ scroeChart = echarts.init(this.$refs.scoreChart);
+ peopleChart = echarts.init(this.$refs.peopleChart);
+ dashboardApi.queryCondition().then(res => {
+ this.examPaperList = res.response;
+ this.queryParam.id = this.examPaperList[0].id
+ this.queryParam.type = this.examPaperList[0].paperType
+ this.getChartData();
+ this.observe();
+ });
+ },
+ methods: {
+ getType(type) {
+ this.queryParam.type = type;
+ this.getChartData();
+ },
+ getChartData() {
+ this.chartLoading1 = true;
+ this.chartLoading2 = true;
+ this.chartLoading3 = true;
+ dashboardApi.data(this.queryParam).then(re => {
+ const { age, score, examPeopleNum } = re.response;
+
+ const ageOption = this.barOption('骞撮緞娈电粺璁�', age, ageLabel);
+ const scoreOption = this.barOption('鍒嗘暟娈电粺璁�', score, scoreLabel);
+ const peopleOption = this.pieOption('鑰冭瘯浜烘暟', examPeopleNum, pieLabel);
+
+ ageChart.setOption(ageOption, true);
+ scroeChart.setOption(scoreOption, true);
+ peopleChart.setOption(peopleOption, true);
+
+ this.chartLoading1 = false;
+ this.chartLoading2 = false;
+ this.chartLoading3 = false;
+ });
+ },
+ barOption(title, data, labelList) {
+ const dataKeys = data.map(item => labelList[Object.keys(item)[0]]);
+ const dataValues = data.map(item => Object.values(item)[0]);
+ return {
+ title: {
+ text: title,
+ x: 'left'
+ },
+ color: colorList,
+ tooltip: {
+ trigger: 'item'
+ },
+ grid: {
+ left: 10,
+ right: 10,
+ bottom: 20,
+ top: 40,
+ containLabel: true
+ },
+ xAxis: {
+ type: 'category',
+ data: dataKeys
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ type: 'bar',
+ label: {
+ show: true,
+ fontSize: 16
+ },
+ barMaxWidth: '40%',
+ data: dataValues,
+ }
+ ]
+
+ };
+
+ },
+ pieOption(title, data, labelList) {
+ const pieData = data.map(item => {
+ return {
+ name: labelList[Object.keys(item)[0]],
+ value: Object.values(item)[0]
+ };
+ });
+ return {
+ title: {
+ text: title,
+ x: 'left'
+ },
+ color: ['#E74C3C', '#3498DB', '#F1C40F', '#95A5A6', '#8E44AD', '#F39C12', '#D35400'],
+ tooltip: {
+ trigger: 'item'
+ },
+ legend: {
+ orient: 'horizontal',
+ },
+ series: [
+ {
+ type: 'pie',
+ radius: '50%',
+ data: pieData,
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+
+ };
+
+ },
+ submitForm() {
+ this.getChartData();
+ },
+
+ // 鐩戝惉鍙樺寲
+ observe() {
+ if (!observer) {
+ observer = new ResizeObserver(entries => {
+ this.handleResize();
+ });
+ }
+ observer.observe(this.$refs.pageContent);
+ },
+ // 绐楀彛鍙樻崲
+ handleResize() {
+ if (ageChart) {
+ ageChart.resize();
+ }
+ if (scroeChart) {
+ scroeChart.resize();
+ }
+ if (peopleChart) {
+ peopleChart.resize();
+ }
+ }
+ },
+ beforeDestroy() {
+ observer.unobserve(this.$refs.pageContent);
+ },
+ computed: {
+ ...mapGetters('enumItem', ['enumFormat']),
+ ...mapState('enumItem', {
+ levelEnum: state => state.user.levelEnum
+ })
+ }
+};
+</script>
+
+<style scoped lang="scss">
+.echarts-row {
+ margin-bottom: 20px;
+}
+
+.card-chart-container {
+ width: 100%;
+ height: 400px;
+}
+
+
+.chart-style {
+ width: 100%;
+ height: 100%;
+}
+</style>
diff --git a/src/views/exam/paper/list.vue b/src/views/exam/paper/list.vue
index a4d2e75..cad549d 100644
--- a/src/views/exam/paper/list.vue
+++ b/src/views/exam/paper/list.vue
@@ -9,7 +9,7 @@
</el-form-item>
<el-form-item label="璇剧洰锛�" >
<el-select v-model="queryParam.subjectId" clearable>
- <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' '"></el-option>
+ <el-option v-for="item in subjects" :key="item.id" :value="item.id" :label="item.name+' '"></el-option>
</el-select>
</el-form-item>
<el-form-item>
diff --git a/src/views/exam/question/edit/gap-filling.vue b/src/views/exam/question/edit/gap-filling.vue
index 5e2160e..2f92735 100644
--- a/src/views/exam/question/edit/gap-filling.vue
+++ b/src/views/exam/question/edit/gap-filling.vue
@@ -1,8 +1,8 @@
<template>
<div class="app-container">
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
- <el-form-item label="閮ㄩ棬锛�" prop="gradeLevel" style="display: none">
- <el-select v-model="form.gradeLevel" placeholder="閮ㄩ棬" @change="levelChange">
+ <el-form-item label="鎵�灞為儴闂細" prop="deptIds">
+ <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable>
<el-option v-for="item in depart" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
@@ -72,7 +72,7 @@
id: null,
questionType: 4,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [
],
@@ -236,7 +236,7 @@
id: null,
questionType: 4,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [
],
diff --git a/src/views/exam/question/edit/multiple-choice.vue b/src/views/exam/question/edit/multiple-choice.vue
index 8f859e9..8b156c8 100644
--- a/src/views/exam/question/edit/multiple-choice.vue
+++ b/src/views/exam/question/edit/multiple-choice.vue
@@ -1,8 +1,8 @@
<template>
<div class="app-container">
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
- <el-form-item label="閮ㄩ棬锛�" prop="gradeLevel" style="display: none">
- <el-select v-model="form.gradeLevel" placeholder="閮ㄩ棬" @change="levelChange">
+ <el-form-item label="鎵�灞為儴闂細" prop="deptIds">
+ <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable>
<el-option v-for="item in depart" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
@@ -79,7 +79,7 @@
id: null,
questionType: 2,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [
{ id: null, prefix: 'A', content: '' },
@@ -228,7 +228,7 @@
id: null,
questionType: 2,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [
{ id: null, prefix: 'A', content: '' },
diff --git a/src/views/exam/question/edit/short-answer.vue b/src/views/exam/question/edit/short-answer.vue
index 9df5928..553bc26 100644
--- a/src/views/exam/question/edit/short-answer.vue
+++ b/src/views/exam/question/edit/short-answer.vue
@@ -1,8 +1,8 @@
<template>
<div class="app-container">
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
- <el-form-item label="閮ㄩ棬锛�" prop="gradeLevel" style="display: none">
- <el-select v-model="form.gradeLevel" placeholder="閮ㄩ棬" @change="levelChange">
+ <el-form-item label="鎵�灞為儴闂細" prop="deptIds">
+ <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable>
<el-option v-for="item in depart" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
@@ -69,7 +69,7 @@
id: null,
questionType: 5,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [],
analyze: '',
@@ -189,7 +189,7 @@
id: null,
questionType: 5,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [],
analyze: '',
diff --git a/src/views/exam/question/edit/single-choice.vue b/src/views/exam/question/edit/single-choice.vue
index 4042019..dae935f 100644
--- a/src/views/exam/question/edit/single-choice.vue
+++ b/src/views/exam/question/edit/single-choice.vue
@@ -1,8 +1,8 @@
<template>
<div class="app-container">
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
- <el-form-item label="閮ㄩ棬锛�" prop="gradeLevel" style="display: none">
- <el-select v-model="form.gradeLevel" placeholder="閮ㄩ棬" @change="levelChange" clearable>
+ <el-form-item label="鎵�灞為儴闂細" prop="deptIds">
+ <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable>
<el-option v-for="item in depart" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
@@ -79,7 +79,7 @@
id: null,
questionType: 1,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [
{ prefix: 'A', content: '' },
@@ -219,7 +219,7 @@
id: null,
questionType: 1,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [
{ prefix: 'A', content: '' },
diff --git a/src/views/exam/question/edit/true-false.vue b/src/views/exam/question/edit/true-false.vue
index 7756919..585a402 100644
--- a/src/views/exam/question/edit/true-false.vue
+++ b/src/views/exam/question/edit/true-false.vue
@@ -1,14 +1,13 @@
<template>
<div class="app-container">
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
- <el-form-item label="閮ㄩ棬锛�" prop="gradeLevel" style="display: none">
- <el-select v-model="form.gradeLevel" placeholder="閮ㄩ棬" @change="levelChange">
+ <el-form-item label="鎵�灞為儴闂細" prop="deptIds">
+ <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable>
<el-option v-for="item in depart" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="璇剧洰锛�" prop="subjectIds" required>
- <el-select v-model="form.subjectIds" placeholder="璇剧洰" multiple
- collapse-tags>
+ <el-select v-model="form.subjectIds" placeholder="璇剧洰" multiple collapse-tags>
<el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' '"></el-option>
</el-select>
</el-form-item>
@@ -74,11 +73,10 @@
},
depart:[],
form: {
-
id: null,
questionType: 3,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [
{ id: null, prefix: 'A', content: '鏄�' },
@@ -202,7 +200,7 @@
id: null,
questionType: 3,
gradeLevel: null,
-
+ deptIds: [],
title: '',
items: [
{ id: null, prefix: 'A', content: '鏄�' },
@@ -216,7 +214,6 @@
this.form.id = lastId
},
levelChange () {
-
this.subjectFilter = this.subjects.filter(data => data.level === this.form.gradeLevel)
},
showQuestion () {
diff --git a/src/views/exam/question/list.vue b/src/views/exam/question/list.vue
index bb4d189..c333b0b 100644
--- a/src/views/exam/question/list.vue
+++ b/src/views/exam/question/list.vue
@@ -33,22 +33,13 @@
<el-form
label-position="top"
>
- <el-form-item label="棰樺瀷锛�">
- <el-select v-model="exportForm.questionType" clearable>
- <el-option v-for="item in questionType" :key="item.key" :value="item.key" :label="item.value"></el-option>
+ <el-form-item label="璇剧洰锛�">
+ <el-select v-model="exportForm.subjectIds" clearable filterable multiple>
+ <el-option v-for="item in subjectIdList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="鍒涘缓鏃堕棿锛�">
- <el-date-picker
- v-model="timeRange"
- type="daterange"
- range-separator="鑷�"
- start-placeholder="寮�濮嬫棩鏈�"
- end-placeholder="缁撴潫鏃ユ湡">
- </el-date-picker>
- <el-form-item style="text-align: center;margin-top: 5px">
+ <el-form-item>
<el-button type="primary" @click="exportQuestion">瀵煎嚭</el-button>
- </el-form-item>
</el-form-item>
</el-form>
<el-button slot="reference" class="op-item" type="success">瀵煎嚭</el-button>
@@ -72,6 +63,7 @@
</el-form>
<el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
<el-table-column prop="subjectId" label="璇剧洰" :formatter="subjectIdFormatte" width="120px"/>
+ <el-table-column prop="deptNames" label="鎵�灞為儴闂�" width="150px"/>
<el-table-column prop="questionType" label="棰樺瀷" :formatter="questionTypeFormatter" width="70px"/>
<el-table-column prop="shortTitle" label="棰樺共" show-overflow-tooltip/>
<el-table-column prop="score" label="鍒嗘暟" width="60px"/>
@@ -98,17 +90,16 @@
import Pagination from '@/components/Pagination'
import QuestionShow from './components/Show'
import questionApi from '@/api/question'
+import SubjectApi from '@/api/subject'
import { downloadExcel } from '@/utils/download'
-
export default {
components: { Pagination, QuestionShow },
data () {
return {
+ subjectIdList: [],
timeRange: [],
exportForm: {
- questionType: null,
- start: null,
- end: null
+ subjectIds: [],
},
upLoadUrl: '/api/admin/question/import',
fileList: [],
@@ -136,16 +127,13 @@
created () {
this.initSubject()
this.search()
+ this.getSubjectIds()
this.queryParam.subjectId = null
this.subjectFilter = this.subjects
},
methods: {
// 瀵煎嚭棰樼洰
exportQuestion () {
- if (this.timeRange && this.timeRange.length > 1) {
- this.exportForm.startStr = this.timeRange[0]
- this.exportForm.endStr = this.timeRange[1]
- }
questionApi.exportQuestion(this.exportForm).then(res => {
downloadExcel(res, '棰樼洰瀵煎嚭')
})
@@ -175,17 +163,6 @@
this.$message.warning('鏂囦欢鏍煎紡涓嶅锛屼粎闄恱ls鍜寈lsx')
return false
}
- // console.log(file)
- // const isJPG = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
- // // const isLt2M = file.size / 1024 / 1024 < 2;
- //
- // if (!isJPG) {
- // this.$message.error('涓婁紶鏂囦欢鍙兘鏄疎xcel!');
- // }
- // // if (!isLt2M) {
- // // this.$message.error('涓婁紶澶村儚鍥剧墖澶у皬涓嶈兘瓒呰繃 2MB!');
- // // }
- // return isJPG ;
},
submitForm () {
this.queryParam.pageIndex = 1
@@ -217,6 +194,11 @@
_this.questionShow.question = re.response
_this.questionShow.loading = false
})
+ },
+ getSubjectIds() {
+ SubjectApi.list().then(res => {
+ this.subjectIdList = res.response
+ });
},
editQuestion (row) {
let url = this.enumFormat(this.editUrlEnum, row.questionType)
@@ -250,7 +232,6 @@
...mapActions('exam', { initSubject: 'initSubject' })
},
computed: {
-
headers: function () {
// console.log(store.getters.Admin-Token)
// const tenantId = store.getters.userInfo.tenantId
diff --git a/src/views/questionAnswer/edit.vue b/src/views/questionAnswer/edit.vue
index 222ffd2..e8325f5 100644
--- a/src/views/questionAnswer/edit.vue
+++ b/src/views/questionAnswer/edit.vue
@@ -3,10 +3,13 @@
<el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
<el-form-item label="闂锛�" prop="question">
- <el-input v-model="form.question"></el-input>
+ <el-input v-model="form.question" maxlength="48"></el-input>
</el-form-item>
<el-form-item label="绛旀锛�" prop="answer">
- <el-input v-model="form.answer"></el-input>
+ <el-input v-model="form.answer" maxlength="1000"></el-input>
+ </el-form-item>
+ <el-form-item label="闄勪欢锛�" prop="attachment">
+ <upload :fileUrl="form.contentUrl" :fileSizeLimitM="1024" :uploadNum="1" @getUploadUrl="getUploadAttachmentUrl" @removeFile="removeAttachmentFile"/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">鎻愪氦</el-button>
@@ -19,14 +22,27 @@
<script>
import { mapGetters, mapState, mapActions } from 'vuex'
import questionAnswerApi from '@/api/questionAnswer'
+import Upload from '@/components/UploadC'
export default {
+ components: { Upload },
+ computed: {
+ fileContentUrl: () => {
+ return this.form ? this.form.contentUrl ? [this.form.contentUrl] : [] : [];
+ }
+ },
data () {
return {
form: {
id: null,
question: '',
- answer: ''
+ answer: '',
+ contentType: 'file',
+ subject: '',
+ belongType: 2,
+ contentUrl: [],
+ attachment: '',
+ temp: []
},
formLoading: false,
rules: {
@@ -45,17 +61,30 @@
if (id && parseInt(id) !== 0) {
_this.formLoading = true
questionAnswerApi.query(id).then(re => {
- _this.form = re.response
+ _this.form.id = re.response.id
+ _this.form.question = re.response.question
+ _this.form.answer = re.response.answer
+ _this.form.attachment = re.response.attachment ? re.response.attachment : ''
+ _this.form.contentUrl = re.response.attachment ? JSON.parse(re.response.attachment) : []
_this.formLoading = false
})
}
},
methods: {
+ removeAttachmentFile(fileList, fileName) {
+ this.form.attachment = JSON.stringify(fileList.filter(item => item.name !== fileName));
+ this.form.contentUrl = fileList.filter(item => item.name !== fileName);
+ },
+ getUploadAttachmentUrl(uploadData) {
+ this.form.attachment = JSON.stringify(uploadData);
+ this.form.contentUrl = uploadData;
+ },
submitForm () {
let _this = this
this.$refs.form.validate((valid) => {
if (valid) {
this.formLoading = true
+
questionAnswerApi.save(this.form).then(data => {
if (data.code === 1) {
_this.$message.success(data.message)
diff --git a/src/views/questionAnswer/list.vue b/src/views/questionAnswer/list.vue
index 0910646..5309804 100644
--- a/src/views/questionAnswer/list.vue
+++ b/src/views/questionAnswer/list.vue
@@ -17,6 +17,13 @@
<el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
<el-table-column prop="question" label="闂" />
<el-table-column prop="answer" label="鍥炵瓟" />
+ <el-table-column prop="attachment" label="闄勪欢" show-overflow-tooltip>
+ <template slot-scope="scope">
+ <div v-for="item in getUrl(scope.row.attachment)" :key="item.url">
+ <el-link :underline="false" type="primary" :href="'/api/upload/download?url=' + item.url +'&fileName=' + item.name" >{{ item.name }}</el-link>
+ </div>
+ </template>
+ </el-table-column>
<el-table-column label="鐘舵��" prop="status" width="70px">
<template slot-scope="{row}">
<el-tag :type="row.status !== '鍚敤' ? 'danger' : 'success'">
@@ -67,6 +74,9 @@
this.search()
},
methods: {
+ getUrl(urlJson) {
+ return urlJson ? JSON.parse(urlJson) : [];
+ },
search() {
this.listLoading = true
questionAnswerApi.pageList(this.queryParam).then(data => {
diff --git a/src/views/user/UserConditionExamine/list.vue b/src/views/user/UserConditionExamine/list.vue
new file mode 100644
index 0000000..72fc162
--- /dev/null
+++ b/src/views/user/UserConditionExamine/list.vue
@@ -0,0 +1,180 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParam" ref="queryForm" :inline="true">
+ <el-form-item label="鐢ㄦ埛鍚嶏細">
+ <el-input v-model="queryParam.userName"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <div style="display: flex">
+ <el-button type="primary" @click="search()">鏌ヨ</el-button>
+ </div>
+ </el-form-item>
+ </el-form>
+
+ <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
+ <el-table-column prop="userName" label="鐢ㄦ埛" />
+ <el-table-column prop="targetCondition" label="鐢宠鐘舵��" />
+ <el-table-column prop="sourceCondition" label="褰撳墠鐘舵��" />
+ <el-table-column prop="reason" label="璋冨姩鍘熷洜" show-overflow-tooltip/>
+ <el-table-column prop="attachment" label="闄勪欢" show-overflow-tooltip>
+ <template slot-scope="scope">
+ <div v-for="item in getUrl(scope.row.attachment)" :key="item.url">
+ <el-link :underline="false" type="primary" :href="'/api/upload/download?url=' + item.url +'&fileName=' + item.name" >{{ item.name }}</el-link>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="result" label="瀹℃牳缁撴灉" width="90px" align="center">
+ <template slot-scope="{row}">
+ <el-tag :type="row.result === '瀹℃牳閫氳繃' ? 'success' : row.result === '瀹℃牳椹冲洖' ? 'danger' : 'info'">{{row.result}}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" label="瀹℃牳鎰忚" show-overflow-tooltip />
+ <el-table-column prop="createUserName" label="鍒涘缓浜�" />
+ <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="160px" />
+ <el-table-column label="鎿嶄綔" align="center" v-if="!deptAdmin()">
+ <template slot-scope="{row}">
+ <el-button v-if="row.result === '寰呭鏍�'" type="primary" size="mini" @click="transposition(row)" class="link-left">瀹℃牳</el-button>
+ <el-popconfirm title="纭鍒犻櫎" @confirm="deleteUser(row)">
+ <el-button slot="reference" size="mini" type="danger" class="link-left">鍒犻櫎</el-button>
+ </el-popconfirm>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
+ @pagination="search" />
+
+ <!-- 瀹℃牳寮圭獥 -->
+ <el-dialog :visible.sync="statusVisible" append-to-body :show-close="false" center width="400px">
+ <el-radio-group v-model="user.result">
+ <el-radio label="瀹℃牳閫氳繃">閫氳繃</el-radio>
+ <el-radio label="瀹℃牳椹冲洖">椹冲洖</el-radio>
+ </el-radio-group>
+ <el-input type="textarea" maxlength="100" show-word-limit :autosize="{ minRows: 4 }" :rows="2"
+ v-model="user.remark" placeholder="璇疯緭鍏ュ鏍告剰瑙�" style="margin-top: 30px;"></el-input>
+ <span slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="statusConfirm">纭� 瀹�</el-button>
+ <el-button @click="statusVisible = false">鍙� 娑�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import UserConditionExamineApi from '@/api/UserConditionExamine'
+import Pagination from '@/components/Pagination'
+import { mapGetters, mapState } from 'vuex'
+
+export default {
+ components: { Pagination },
+ data() {
+ return {
+ user: {},
+ statusVisible: false,
+ fileList: [],
+ queryParam: {
+ userName: '',
+ role: 1,
+ pageIndex: 1,
+ pageSize: 10
+ },
+ listLoading: true,
+ tableData: [],
+ total: 0,
+ }
+ },
+ created() {
+ this.search()
+ },
+ methods: {
+ getUrl(urlJson) {
+ return urlJson ? JSON.parse(urlJson) : [];
+ },
+ deptAdmin() {
+ return sessionStorage.getItem('deptAdmin') === '1'
+ },
+ transposition(user) {
+ this.statusVisible = true;
+ this.user = { ...user };
+ },
+ statusConfirm() {
+ if (this.user.result === "寰呭鏍�") {
+ this.$message.error("璇烽�夋嫨瀹℃牳缁撴灉")
+ return
+ }
+ UserConditionExamineApi.audit(this.user).then(res => {
+ if (res.code === 1) {
+ this.$message.success("鎿嶄綔鎴愬姛")
+ this.statusVisible = false;
+ this.search()
+ } else {
+ this.$message.error("鎿嶄綔澶辫触")
+ }
+ })
+ },
+ search() {
+ this.listLoading = true
+ UserConditionExamineApi.list(this.queryParam).then(data => {
+ const re = data.response
+ this.tableData = re.list
+ this.total = re.total
+ this.queryParam.pageIndex = re.pageNum
+ this.listLoading = false
+ })
+ },
+ changeStatus(row) {
+ let _this = this
+ userApi.changeStatus(row.id).then(re => {
+ if (re.code === 1) {
+ row.status = re.response
+ _this.$message.success(re.message)
+ } else {
+ _this.$message.error(re.message)
+ }
+ })
+ },
+ deleteUser(row) {
+ let _this = this
+ UserConditionExamineApi.delete(row.id).then(re => {
+ if (re.code === 1) {
+ _this.search()
+ _this.$message.success(re.message)
+ } else {
+ _this.$message.error(re.message)
+ }
+ })
+ },
+ levelFormatter(row, column, cellValue, index) {
+ return this.enumFormat(this.levelEnum, cellValue)
+ },
+ sexFormatter(row, column, cellValue, index) {
+ return this.enumFormat(this.sexEnum, cellValue)
+ },
+ statusFormatter(status) {
+ return this.enumFormat(this.statusEnum, status)
+ },
+ statusTagFormatter(status) {
+ return this.enumFormat(this.statusTag, status)
+ },
+ statusBtnFormatter(status) {
+ return this.enumFormat(this.statusBtn, status)
+ }
+ },
+ computed: {
+ ...mapGetters('enumItem', [
+ 'enumFormat'
+ ]),
+ ...mapState('enumItem', {
+ sexEnum: state => state.user.sexEnum,
+ statusEnum: state => state.user.statusEnum,
+ statusTag: state => state.user.statusTag,
+ statusBtn: state => state.user.statusBtn,
+ levelEnum: state => state.user.levelEnum
+ })
+ }
+}
+</script>
+<style lang="scss" scoped>
+.upload-demo {
+ margin-left: 5px;
+}
+</style>
diff --git a/src/views/user/departmentExamine/list.vue b/src/views/user/departmentExamine/list.vue
index 511e447..4d7b64b 100644
--- a/src/views/user/departmentExamine/list.vue
+++ b/src/views/user/departmentExamine/list.vue
@@ -12,9 +12,17 @@
</el-form>
<el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
- <el-table-column prop="userName" label="鐢ㄦ埛鍚�" />
- <el-table-column prop="departmentName" label="閮ㄩ棬鍚嶇О" />
- <el-table-column prop="nowDepartmentName" label="鍘熼儴闂ㄥ悕绉�" />
+ <el-table-column prop="userName" label="鐢ㄦ埛" />
+ <el-table-column prop="departmentName" label="璋冨姩閮ㄩ棬" />
+ <el-table-column prop="nowDepartmentName" label="鍘熼儴闂�" />
+ <el-table-column prop="reason" label="璋冨姩鍘熷洜" show-overflow-tooltip/>
+ <el-table-column prop="attachment" label="闄勪欢" show-overflow-tooltip>
+ <template slot-scope="scope">
+ <div v-for="item in getUrl(scope.row.attachment)" :key="item.url">
+ <el-link :underline="false" type="primary" :href="'/api/upload/download?url=' + item.url +'&fileName=' + item.name" >{{ item.name }}</el-link>
+ </div>
+ </template>
+ </el-table-column>
<el-table-column prop="result" label="瀹℃牳缁撴灉" width="90px" align="center">
<template slot-scope="{row}">
<el-tag :type="row.result === '瀹℃牳閫氳繃' ? 'success' : row.result === '瀹℃牳椹冲洖' ? 'danger' : 'info'">{{row.result}}</el-tag>
@@ -23,7 +31,7 @@
<el-table-column prop="remark" label="瀹℃牳鎰忚" show-overflow-tooltip />
<el-table-column prop="createUserName" label="鍒涘缓浜�" />
<el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="160px" />
- <el-table-column label="鎿嶄綔" align="center" v-if="isDeptAdmin()">
+ <el-table-column label="鎿嶄綔" align="center" v-if="!deptAdmin()">
<template slot-scope="{row}">
<el-button v-if="row.result === '寰呭鏍�'" type="primary" size="mini" @click="transposition(row)" class="link-left">瀹℃牳</el-button>
<el-popconfirm title="纭鍒犻櫎" @confirm="deleteUser(row)">
@@ -78,16 +86,19 @@
this.search()
},
methods: {
- isDeptAdmin() {
- return sessionStorage.getItem('deptAdmin') !== '1'
+ getUrl(urlJson) {
+ return urlJson ? JSON.parse(urlJson) : [];
+ },
+ deptAdmin() {
+ return sessionStorage.getItem('deptAdmin') === '1'
},
transposition(user) {
this.statusVisible = true;
this.user = { ...user };
},
statusConfirm() {
- if (this.user.result === null) {
- this.$message.error("璇烽�夋嫨鐘舵��")
+ if (this.user.result === "寰呭鏍�") {
+ this.$message.error("璇烽�夋嫨瀹℃牳缁撴灉")
return
}
departmentExamineApi.audit(this.user).then(res => {
diff --git a/src/views/user/student/list.vue b/src/views/user/student/list.vue
index dd4f531..38fcd86 100644
--- a/src/views/user/student/list.vue
+++ b/src/views/user/student/list.vue
@@ -20,7 +20,6 @@
:file-list="fileList"
:before-upload="beforeAvatarUpload">
<el-button type="primary">瀵煎叆</el-button>
- <!-- <div slot="tip" class="el-upload__tip">鍙兘涓婁紶Excel鏂囦欢</div>-->
</el-upload>
</div>
</el-form-item>
@@ -40,7 +39,6 @@
<el-tag :type="row.condition == '姝e父' || row.condition == null ? 'success' : 'warning'">{{ row.condition ? row.condition : '姝e父' }}</el-tag>
</template>
</el-table-column>
- <el-table-column prop="conditionDetail" label="鍏蜂綋鎯呭喌" :show-overflow-tooltip="true"/>
<el-table-column prop="sex" label="鎬у埆" width="60px;" :formatter="sexFormatter"/>
<el-table-column prop="phone" label="鎵嬫満鍙�" width="120"/>
<el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="160px"/>
@@ -51,9 +49,9 @@
</el-tag>
</template>
</el-table-column>
- <el-table-column width="400px" label="鎿嶄綔" fixed="right" align="center">
+ <el-table-column :width="deptAdmin() ? '310px' : '400px'" label="鎿嶄綔" fixed="right" align="center">
<template slot-scope="{row}">
- <el-button size="mini" @click="changeStatus(row)" class="link-left">
+ <el-button size="mini" v-if="!deptAdmin()" @click="changeStatus(row)" class="link-left">
{{ statusBtnFormatter(row.status) }}
</el-button>
<router-link :to="{path:'/user/student/edit', query:{id:row.id}}" class="link-left">
@@ -64,7 +62,9 @@
</router-link>
<el-button size="mini" @click="status(row)" class="link-left">鐘舵��</el-button>
<el-button type="primary" size="mini" @click="transposition(row)" class="link-left">璋冨姩</el-button>
- <el-button size="mini" type="danger" @click="deleteUser(row)" class="link-left">鍒犻櫎</el-button>
+ <el-popconfirm title="纭鍒犻櫎鍚�" @confirm="deleteUser(row)">
+ <el-button v-if="!deptAdmin()" slot="reference" size="mini" type="danger" class="link-left">鍒犻櫎</el-button>
+ </el-popconfirm>
</template>
</el-table-column>
</el-table>
@@ -72,14 +72,15 @@
@pagination="search"/>
<!-- 鐘舵�佸脊绐� -->
- <el-dialog :visible.sync="statusVisible" append-to-body :close-on-click-modal="false" :show-close="false" center width="400px">
- <el-radio-group v-model="user.condition">
+ <el-dialog :visible.sync="statusVisible" append-to-body :show-close="false" center width="400px">
+ <el-radio-group v-model="conditionExamine.targetCondition">
<el-radio label="姝e父">姝e父</el-radio>
<el-radio label="鐥呭亣">鐥呭亣</el-radio>
<el-radio label="鍑哄樊">鍑哄樊</el-radio>
<el-radio label="鍏朵粬">鍏朵粬</el-radio>
</el-radio-group>
- <el-input type="textarea" maxlength="100" show-word-limit :autosize="{ minRows: 4}" :rows="2" v-model="user.conditionDetail" placeholder="璇疯緭鍏ヨ缁嗘儏鍐�" style="margin-top: 30px;"></el-input>
+ <el-input type="textarea" maxlength="100" show-word-limit :autosize="{ minRows: 4}" :rows="2" v-model="conditionExamine.reason" placeholder="璇疯緭鍏ヨ缁嗘儏鍐�" style="margin-top: 30px;"></el-input>
+ <upload :fileUrl="conditionExamine.contentUrl" :fileSizeLimitM="1024" :uploadNum="1" @getUploadUrl="getConditionUploadAttachmentUrl" @removeFile="removeConditionAttachmentFile" style="margin-top: 30px;"/>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="statusConfirm">纭� 瀹�</el-button>
<el-button @click="statusVisible = false">鍙� 娑�</el-button>
@@ -99,6 +100,8 @@
:value="item.id">
</el-option>
</el-select>
+ <el-input type="textarea" maxlength="100" show-word-limit :autosize="{ minRows: 4}" :rows="2" v-model="examine.reason" placeholder="璇疯緭鍏ユ儏鍐佃鏄�" style="margin-top: 30px;"></el-input>
+ <upload :fileUrl="examine.contentUrl" :fileSizeLimitM="1024" :uploadNum="1" @getUploadUrl="getUploadAttachmentUrl" @removeFile="removeAttachmentFile" style="margin-top: 30px;"/>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">鍙� 娑�</el-button>
<el-button type="primary" @click="submitExamine">纭� 瀹�</el-button>
@@ -112,9 +115,15 @@
import Pagination from '@/components/Pagination'
import userApi from '@/api/user'
import departmentExamineApi from '@/api/departmentExamine'
+import Upload from '@/components/UploadC'
export default {
- components: { Pagination },
+ components: { Pagination, Upload },
+ computed: {
+ fileContentUrl: () => {
+ return this.form ? this.form.contentUrl ? [this.form.contentUrl] : [] : [];
+ }
+ },
data () {
return {
user:{},
@@ -135,6 +144,17 @@
departmentId: [],
departmentIds: '',
nowDepartmentIds: '',
+ contentUrl: [],
+ attachment: ''
+ },
+ conditionExamine: {
+ userId: '',
+ targetCondition: '',
+ sourceCondition: '',
+ reason: '',
+ result: 0,
+ contentUrl: [],
+ attachment: ''
},
title: '閮ㄩ棬璋冨姩',
dialogVisible: false,
@@ -145,6 +165,25 @@
this.search()
},
methods: {
+ deptAdmin() {
+ return sessionStorage.getItem('deptAdmin') === '1'
+ },
+ removeAttachmentFile(fileList, fileName) {
+ this.examine.attachment = JSON.stringify(fileList.filter(item => item.name !== fileName));
+ this.examine.contentUrl = fileList.filter(item => item.name !== fileName);
+ },
+ getUploadAttachmentUrl(uploadData) {
+ this.examine.attachment = JSON.stringify(uploadData);
+ this.examine.contentUrl = uploadData;
+ },
+ removeConditionAttachmentFile(fileList, fileName) {
+ this.conditionExamine.attachment = JSON.stringify(fileList.filter(item => item.name !== fileName));
+ this.conditionExamine.contentUrl = fileList.filter(item => item.name !== fileName);
+ },
+ getConditionUploadAttachmentUrl(uploadData) {
+ this.conditionExamine.attachment = JSON.stringify(uploadData);
+ this.conditionExamine.contentUrl = uploadData;
+ },
submitExamine() {
this.examine.departmentIds = this.examine.departmentId.join(',')
departmentExamineApi.save(this.examine).then(res => {
@@ -172,14 +211,15 @@
},
status(user) {
this.statusVisible = true;
- this.user = { ...user };
+ this.conditionExamine.sourceCondition = user.condition ? user.condition : '0';
+ this.conditionExamine.userId = user.id
},
statusConfirm() {
- if (this.user.condition === null) {
+ if (this.conditionExamine.targetCondition === null) {
this.$message.error("璇烽�夋嫨鐘舵��")
return
}
- userApi.setStatus(this.user).then(res => {
+ userApi.setStatus(this.conditionExamine).then(res => {
if (res.code === 1) {
this.$message.success("鎿嶄綔鎴愬姛")
this.statusVisible = false;
@@ -208,17 +248,6 @@
this.$message.warning('鏂囦欢鏍煎紡涓嶅锛屼粎闄恱ls鍜寈lsx')
return false
}
- // console.log(file)
- // const isJPG = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
- // // const isLt2M = file.size / 1024 / 1024 < 2;
- //
- // if (!isJPG) {
- // this.$message.error('涓婁紶鏂囦欢鍙兘鏄疎xcel!');
- // }
- // // if (!isLt2M) {
- // // this.$message.error('涓婁紶澶村儚鍥剧墖澶у皬涓嶈兘瓒呰繃 2MB!');
- // // }
- // return isJPG ;
},
search () {
this.listLoading = true
--
Gitblit v1.8.0