From 807436a80eb7a61d7417f864c8411d0525fc8953 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期二, 14 五月 2024 10:10:00 +0800
Subject: [PATCH] feat:部门调动
---
src/api/departmentExamine.js | 9 ++
src/views/user/departmentExamine/list.vue | 165 +++++++++++++++++++++++++++++++++++++++++
src/views/user/student/list.vue | 58 ++++++++++++++
src/router.js | 6 +
4 files changed, 236 insertions(+), 2 deletions(-)
diff --git a/src/api/departmentExamine.js b/src/api/departmentExamine.js
new file mode 100644
index 0000000..f5d8c75
--- /dev/null
+++ b/src/api/departmentExamine.js
@@ -0,0 +1,9 @@
+import { get,post } from '@/utils/request'
+
+export default {
+ list: query => post('/api/admin/department/examine/list', query),
+ save: query => post('/api/admin/department/examine/save', query),
+ audit: query => post('/api/admin/department/examine/audit', query),
+ delete: id => post('/api/admin/department/examine/delete/' + id),
+ getDeptList: id => post('/api/admin/department/list'),
+}
diff --git a/src/router.js b/src/router.js
index 6fb3e17..039b408 100644
--- a/src/router.js
+++ b/src/router.js
@@ -72,6 +72,12 @@
hidden: true
},
{
+ path: 'departmentExamine/list',
+ component: () => import('@/views/user/departmentExamine/list'),
+ name: 'departmentExamineList',
+ meta: { title: '璋冨姩瀹℃牳', noCache: true }
+ },
+ {
path: 'tag/list',
component: () => import('@/views/user/tag/list'),
name: 'TagAdminPageList',
diff --git a/src/views/user/departmentExamine/list.vue b/src/views/user/departmentExamine/list.vue
new file mode 100644
index 0000000..0f2d1e8
--- /dev/null
+++ b/src/views/user/departmentExamine/list.vue
@@ -0,0 +1,165 @@
+<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="departmentName" label="閮ㄩ棬鍚嶇О" />
+ <el-table-column prop="nowDepartmentName" label="鍘熼儴闂ㄥ悕绉�" />
+ <el-table-column prop="result" label="瀹℃牳缁撴灉">
+ <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="createUserName" label="鍒涘缓浜�" />
+ <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="160px" />
+ <el-table-column label="鎿嶄綔" align="center">
+ <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 departmentExamineApi from '@/api/departmentExamine'
+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: {
+ transposition(user) {
+ this.statusVisible = true;
+ this.user = { ...user };
+ },
+ statusConfirm() {
+ if (this.user.result === null) {
+ this.$message.error("璇烽�夋嫨鐘舵��")
+ return
+ }
+ departmentExamineApi.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
+ departmentExamineApi.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
+ departmentExamineApi.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/student/list.vue b/src/views/user/student/list.vue
index 94b1815..ba02de0 100644
--- a/src/views/user/student/list.vue
+++ b/src/views/user/student/list.vue
@@ -63,7 +63,7 @@
<el-button size="mini" >鏃ュ織</el-button>
</router-link>
<el-button size="mini" @click="status(row)" class="link-left">鐘舵��</el-button>
- <el-button type="primary" size="mini" @click="move(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>
</template>
</el-table-column>
@@ -85,6 +85,25 @@
<el-button @click="statusVisible = false">鍙� 娑�</el-button>
</span>
</el-dialog>
+
+ <!-- 璋冨姩寮圭獥 -->
+ <el-dialog
+ :title="title"
+ :visible.sync="dialogVisible"
+ width="400px">
+ <el-select v-model="examine.departmentId" multiple filterable placeholder="璇烽�夋嫨閮ㄩ棬">
+ <el-option
+ v-for="item in deptList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitExamine">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
</div>
</template>
@@ -92,6 +111,7 @@
import { mapGetters, mapState } from 'vuex'
import Pagination from '@/components/Pagination'
import userApi from '@/api/user'
+import departmentExamineApi from '@/api/departmentExamine'
export default {
components: { Pagination },
@@ -109,13 +129,47 @@
},
listLoading: true,
tableData: [],
- total: 0
+ total: 0,
+ examine: {
+ userId: '',
+ departmentId: [],
+ departmentIds: '',
+ nowDepartmentIds: '',
+ },
+ title: '閮ㄩ棬璋冨姩',
+ dialogVisible: false,
+ deptList: []
}
},
created () {
this.search()
},
methods: {
+ submitExamine() {
+ this.examine.departmentIds = this.examine.departmentId.join(',')
+ departmentExamineApi.save(this.examine).then(res => {
+ if (res.code === 1) {
+ this.$message.success("鎻愪氦鎴愬姛锛屽鏍稿悗鐢熸晥")
+ this.dialogVisible = false
+ this.search()
+ } else {
+ this.$message.error("鎿嶄綔澶辫触")
+ }
+ })
+ },
+ transposition(item) {
+ this.examine.userId = item.id
+ this.examine.departmentId = item.deptIdList
+ this.examine.nowDepartmentIds = item.deptIdList.join(',')
+ departmentExamineApi.getDeptList().then(res => {
+ if (res.code === 1) {
+ this.deptList = res.response
+ this.dialogVisible = true
+ } else {
+ this.$message.error(res.message)
+ }
+ })
+ },
status(user) {
this.statusVisible = true;
this.user = { ...user };
--
Gitblit v1.8.0