From 62c740e91951c0c4782165ce667eb8017fe76f38 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 16 十月 2024 13:51:07 +0800
Subject: [PATCH] 部门管理员没有标签菜单
---
src/views/user/student/list.vue | 196 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 176 insertions(+), 20 deletions(-)
diff --git a/src/views/user/student/list.vue b/src/views/user/student/list.vue
index 736da4c..346d738 100644
--- a/src/views/user/student/list.vue
+++ b/src/views/user/student/list.vue
@@ -4,6 +4,14 @@
<el-form-item label="鐪熷疄濮撳悕锛�">
<el-input v-model="queryParam.userName" size="small" clearable></el-input>
</el-form-item>
+ <el-form-item label="閮ㄩ棬锛�">
+ <el-cascader
+ clearable
+ v-model="queryParam.departmentId"
+ :options="depts"
+ :props="{ emitPath: false, value: 'id', label: 'name', checkStrictly: true, multiple: true }"
+ ></el-cascader>
+ </el-form-item>
<el-form-item >
<div style="display: flex">
<el-button type="primary" @click="submitForm" size="small">鏌ヨ</el-button>
@@ -29,9 +37,9 @@
<el-table-column prop="userName" label="鐢ㄦ埛鍚�"/>
<el-table-column prop="realName" label="鐪熷疄濮撳悕" width="150"/>
<el-table-column prop="deptNames" label="閮ㄩ棬" />
- <el-table-column label="鏍囩" prop="tagNames" width="80px">
+ <el-table-column label="鏍囩" prop="tagNames" align="center">
<template slot-scope="{row}">
- <el-tag style="margin: 5px;" v-for="(item,index) in row.tagNames" :key="index">{{ item }}</el-tag>
+ <el-tag v-for="(item, index) in row.tagNames" :key="index">{{ item }}</el-tag>
</template>
</el-table-column>
<el-table-column label="浜哄憳鐘舵��" prop="condition" align="center" width="100px">
@@ -49,17 +57,15 @@
</el-tag>
</template>
</el-table-column>
- <el-table-column :width="deptAdmin() ? '310px' : '400px'" label="鎿嶄綔" fixed="right" align="center">
+ <el-table-column :width="deptAdmin() ? '310px' : '350px'" label="鎿嶄綔" fixed="right" align="center">
<template slot-scope="{row}">
<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">
- <el-button size="mini" >缂栬緫</el-button>
- </router-link>
- <router-link :to="{path:'/log/user/list', query:{userId:row.id}}" class="link-left">
+ <el-button size="mini" @click="handleEdit(row.id)">缂栬緫</el-button>
+ <!-- <router-link :to="{path:'/log/user/list', query:{userId:row.id}}" class="link-left">
<el-button size="mini" >鏃ュ織</el-button>
- </router-link>
+ </router-link> -->
<el-button type="primary" 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-popconfirm title="纭鍒犻櫎鍚�" @confirm="deleteUser(row)">
@@ -87,19 +93,76 @@
</span>
</el-dialog>
+ <el-dialog
+ title="缂栬緫"
+ :visible.sync="editShow"
+ width="800px"
+ :before-close="handleClose">
+ <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
+ <el-form-item label="鐢ㄦ埛鍚嶏細" prop="userName" required>
+ <el-input v-model="form.userName"></el-input>
+ </el-form-item>
+ <el-form-item label="瀵嗙爜锛�" required>
+ <el-input v-model="form.password" type="password"></el-input>
+ </el-form-item>
+ <el-form-item label="鐪熷疄濮撳悕锛�" prop="realName" required>
+ <el-input v-model="form.realName"></el-input>
+ </el-form-item>
+ <el-form-item label="骞撮緞锛�">
+ <el-input v-model="form.age"></el-input>
+ </el-form-item>
+ <el-form-item label="鎬у埆锛�">
+ <el-select v-model="form.sex" placeholder="鎬у埆" clearable>
+ <el-option v-for="item in sexEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍑虹敓鏃ユ湡锛�" prop="birthDay">
+ <el-date-picker v-model="form.birthDay" required type="date" value-format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" />
+ </el-form-item>
+ <el-form-item label="鎵嬫満锛�">
+ <el-input v-model="form.phone"></el-input>
+ </el-form-item>
+ <el-form-item label="閮ㄩ棬锛�" prop="deptIds" required>
+ <!-- <el-select v-model="form.deptIds" multiple collapse-tags placeholder="閮ㄩ棬" :disabled="this.$route.query.id">
+ <el-option v-for="item in depts" :key="item.id" :value="item.id" :label="item.name"></el-option>
+ </el-select> -->
+ <el-cascader
+ clearable
+ :disabled="this.$route.query.id"
+ v-model="form.deptIds"
+ :options="depts"
+ :props="{ emitPath: false, multiple: true, value: 'id', label: 'name', checkStrictly: true }"
+ ></el-cascader>
+ </el-form-item>
+ <el-form-item label="鏍囩锛�" prop="tagIds">
+ <el-select v-model="form.tagIds" multiple collapse-tags placeholder="鏍囩">
+ <el-option v-for="item in tags" :key="item.id" :value="item.id" :label="item.name"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鐘舵�侊細" required>
+ <el-select v-model="form.status" placeholder="鐘舵��">
+ <el-option v-for="item in statusEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="handleClose">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitEdit">鎻� 浜�</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>
+ <el-cascader
+ clearable
+ :disabled="this.$route.query.id"
+ v-model="examine.departmentId"
+ :options="deptList"
+ :props="{ emitPath: false, multiple: true, value: 'id', label: 'name', checkStrictly: true }"
+ ></el-cascader>
<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">
@@ -115,6 +178,7 @@
import Pagination from '@/components/Pagination'
import userApi from '@/api/user'
import departmentExamineApi from '@/api/departmentExamine'
+import department from '@/api/department'
import Upload from '@/components/UploadC'
export default {
@@ -126,12 +190,43 @@
},
data () {
return {
+ editShow: false,
+ depts: [],
+ tags: [],
+ value2:[],
+ form: {
+ id: null,
+ userName: '',
+ password: '',
+ realName: '',
+ role: 1,
+ status: 1,
+ age: '',
+ sex: '',
+ birthDay: null,
+ phone: null,
+ deptIds: [],
+ tagIds: []
+ },
+ formLoading: false,
+ rules: {
+ userName: [
+ { required: true, message: '璇疯緭鍏ョ敤鎴峰悕', trigger: 'blur' }
+ ],
+ realName: [
+ { required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�', trigger: 'blur' }
+ ],
+ deptIds: [
+ { required: true, message: '璇烽�夋嫨閮ㄩ棬', trigger: 'change' }
+ ]
+ },
user:{},
statusVisible: false,
upLoadUrl:'/api/admin/user/import',
fileList:[],
queryParam: {
userName: '',
+ departmentId: [],
roles: [1],
pageIndex: 1,
pageSize: 10
@@ -162,9 +257,36 @@
}
},
created () {
- this.search()
+ this.search();
+ this.getTags();
+ department.getDeptAdmins().then(res => {
+ this.depts = res.response;
+ })
},
methods: {
+ handleClose() {
+ this.form = {
+ id: null,
+ userName: '',
+ password: '',
+ realName: '',
+ role: 1,
+ status: 1,
+ age: '',
+ sex: '',
+ birthDay: null,
+ phone: null,
+ deptIds: [],
+ tagIds: []
+ }
+ this.editShow = false
+ this.search()
+ },
+ getTags () {
+ userApi.tagList(null).then(data => {
+ this.tags = data.response
+ })
+ },
deptAdmin() {
return sessionStorage.getItem('deptAdmin') === '1'
},
@@ -197,14 +319,14 @@
})
},
transposition(item) {
- if (item.conditionExamineResult) {
- this.$message.warning("璇ョ敤鎴风姸鎬佸緟瀹℃牳");
+ if (item.departmentExamineResult) {
+ this.$message.warning("璇ョ敤鎴疯皟鍔ㄥ緟瀹℃牳");
return
}
this.examine.userId = item.id
this.examine.departmentId = item.deptIdList
this.examine.nowDepartmentIds = item.deptIdList.join(',')
- departmentExamineApi.getDeptList().then(res => {
+ department.getDeptAdmins().then(res => {
if (res.code === 1) {
this.deptList = res.response
this.dialogVisible = true
@@ -267,6 +389,20 @@
this.listLoading = false
})
},
+ handleEdit(id) {
+ this.formLoading = true
+ userApi.selectUser(id).then(re => {
+ this.form = re.response
+ this.formLoading = false
+ const isEmpty = re.response.deptIds.trim().length === 0;
+ if (isEmpty){
+ this.form.deptIds = []
+ }else {
+ this.form.deptIds = re.response.deptIds.split(',').map(Number)
+ }
+ this.editShow = true
+ })
+ },
changeStatus (row) {
let _this = this
userApi.changeStatus(row.id).then(re => {
@@ -289,6 +425,26 @@
}
})
},
+ submitEdit () {
+ this.$refs.form.validate((valid) => {
+ if (valid) {
+ this.formLoading = true
+ userApi.createUser(this.form).then(data => {
+ if (data.code === 1) {
+ this.$message.success(data.message)
+ this.handleClose()
+ } else {
+ this.$message.error(data.message)
+ this.formLoading = false
+ }
+ }).catch(e => {
+ this.formLoading = false
+ })
+ } else {
+ return false
+ }
+ })
+ },
submitForm () {
this.queryParam.pageIndex = 1
this.search()
--
Gitblit v1.8.0