From e8d946a82907aa530ff086987d3ec7d2c04a90d2 Mon Sep 17 00:00:00 2001
From: Admin <978517621@qq.com>
Date: 星期二, 15 十一月 2022 13:09:55 +0800
Subject: [PATCH] 默认更改列表

---
 src/views/systemManage/userManage/index.vue |  195 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 159 insertions(+), 36 deletions(-)

diff --git a/src/views/systemManage/userManage/index.vue b/src/views/systemManage/userManage/index.vue
index 8d50985..9805a7c 100644
--- a/src/views/systemManage/userManage/index.vue
+++ b/src/views/systemManage/userManage/index.vue
@@ -1,10 +1,19 @@
 <template>
     <div class="app-container">
-        <div>
+        <div class="filter-container">
             <el-form :inline="true" :model="queryForm">
                 <el-form-item label="用户名">
                     <el-input
                         v-model="queryForm.username"
+                        class="filter-item"
+                        placeholder=""
+                        style="width: 150px;"
+                        @keyup.enter.native="queryHandle"
+                    />
+                </el-form-item>
+                <el-form-item label="真实姓名">
+                    <el-input
+                        v-model="queryForm.realname"
                         class="filter-item"
                         placeholder=""
                         style="width: 150px;"
@@ -16,7 +25,7 @@
                         v-model="queryForm.company"
                         class="filter-item"
                         placeholder=""
-                        style="width: 200px;"
+                        style="width: 150px;"
                         @keyup.enter.native="queryHandle"
                     />
                 </el-form-item>
@@ -67,6 +76,17 @@
                         icon="el-icon-upload2"
                         @click="showImportHandle"
                     >导入</el-button>
+                </el-form-item>
+                <el-form-item>
+                    <el-button
+                        v-if="getBtnPermission('export')"
+                        v-show="userType != 3"
+                        class="filter-item"
+                        style="margin-left: 10px;"
+                        type="primary"
+                        icon="el-icon-upload2"
+                        @click="showExportHandle"
+                    >导出</el-button>
                 </el-form-item>
             </el-form>
         </div>
@@ -160,9 +180,9 @@
                         <span>{{ scope.row.company }}</span>
                     </template>
                 </el-table-column>
-                <el-table-column label="部门" prop="department" align="center" sortable="custom" width="100px">
+                <el-table-column label="部门" prop="departmentname" align="center" sortable="custom" width="100px">
                     <template slot-scope="scope">
-                        <span>{{ scope.row.department }}</span>
+                        <span>{{ scope.row.departmentname }}</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="职位" prop="job" align="center" sortable="custom" width="100px">
@@ -180,7 +200,7 @@
                         <span>{{ scope.row.roles | parseRoles }}</span>
                     </template>
                 </el-table-column>
-                <el-table-column label="人员MAC地址" prop="deviceNo" align="center" width="100px">
+                <!-- <el-table-column label="人员MAC地址" prop="deviceNo" align="center" width="100px">
                     <template slot-scope="scope">
                         <span>{{ scope.row.deviceNo}}</span>
                     </template>
@@ -206,7 +226,7 @@
                         <span>{{ scope.row.endtime}}</span>
                     </template>
 
-                </el-table-column>
+                </el-table-column> -->
                 <el-table-column label="是否单位负责人" prop="iscompany" align="center" width="100px">
                     <template slot-scope="scope">
                         <div v-for="item in isList">
@@ -328,11 +348,11 @@
                 <el-row>
                     <el-col :span="12">
                         <el-form-item label="单位:" prop="company">
-                            <el-select v-model.trim="dataForm.company"  auto-complete="on" style="width:100%;">
+                            <el-select v-model.trim="dataForm.company"  value-key="item" auto-complete="on" style="width:100%;" @change="companyChange">
                                 <el-option
                                     v-for="item in companyList"
                                     :key="item.id"
-                                    :value="item.company"
+                                    :value="item"
                                     :label="item.company"
                                 >
                                 </el-option>
@@ -340,12 +360,12 @@
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="部门:" prop="department">
+                        <el-form-item label="部门:" prop="department" v-if="isMain">
                             <el-select v-model.trim="dataForm.department"  auto-complete="on" style="width:100%;">
                                 <el-option
                                     v-for="item in departmentList"
                                     :key="item.id"
-                                    :value="item.department"
+                                    :value="item.id"
                                     :label="item.department"
                                 >
                                 </el-option>
@@ -405,6 +425,19 @@
                 </el-row>
                 <el-row>
                     <el-col :span="12">
+                        <el-form-item label="是否安全员:" prop="issecurityofficer">
+                            <el-select v-model.trim="dataForm.issecurityofficer"  auto-complete="on" style="width:100%;">
+                                <el-option
+                                    v-for="item in isSecurityOfficerList"
+                                    :key="item.id"
+                                    :value="item.id"
+                                    :label="item.name"
+                                >
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
                         <el-form-item label="状态:" prop="status">
                             <el-select v-model.trim="dataForm.status"  auto-complete="on" style="width:100%;">
                                 <el-option
@@ -417,13 +450,14 @@
                             </el-select>
                         </el-form-item>
                     </el-col>
+
+                </el-row>
+                <el-row>
                     <el-col :span="12">
                         <el-form-item label="定位卡编号:" prop="empNo">
                             <el-input v-model.trim="dataForm.empNo"></el-input>
                         </el-form-item>
                     </el-col>
-                </el-row>
-                <el-row>
                     <el-col :span="12">
                         <el-form-item label="定位卡MAC地址:" prop="deviceNo">
                             <el-input v-model.trim="dataForm.deviceNo"></el-input>
@@ -634,8 +668,11 @@
                 tableKey: 0,
                 userData: null,
                 listLoading: true,
+                isMain:false,
                 iscompanyList:[{id:1,name:'否'},{id:0,name:'是'}],
+                isSecurityOfficerList:[{id:1,name:'是'},{id:0,name:'否'}],
                 queryForm: {
+                    realname:'',
                     username: '',
                     company:'',
                     department:'',
@@ -654,6 +691,7 @@
                     idcard:'',
                     email:'',
                     company:'',
+                    companyid:'',
                     department:'',
                     job:'',
                     type:'',
@@ -669,6 +707,7 @@
                     lastmodifieddate:'',
                     empNo:'',
                     deviceNo:'',
+                    issecurityofficer:'',
                 },
                 cardDataForm:{
                     username:'',
@@ -710,6 +749,7 @@
                 userRoleDataFormRules: {
                     userRoles: [{ type: 'array', required: true, message: '角色不能为空', trigger: 'change' }]
                 },
+                typeList:[{id:1,name:'超级管理员'},{id:2,name:'管理员'},{id:3,name:'普通用户'}],
                 roleList: [],
                 passwordType: 'password',
                 confirmPasswordType: 'password',
@@ -739,6 +779,16 @@
                 this.order = param.order;
                 this.getUserList()
             },
+            companyChange(val){
+                this.dataForm.company = val.company
+                this.dataForm.companyid = val.id
+                if (val.ismain === 1) {
+                    this.isMain = true;
+                }else{
+                    this.isMain = false;
+                    this.dataForm.department = ''
+                }
+            },
             getUserList() {
                 const _this = this
                 const params = {}
@@ -747,6 +797,8 @@
                 params['pageIndex'] = _this.currentPage
                 params['pageSize'] = _this.pageSize
                 params['type'] = _this.userType
+                params['realname'] = _this.realname
+                params['isMain'] = true
                 for (const i in _this.queryForm) {
                     if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
                         params[i] = _this.queryForm[i]
@@ -762,8 +814,14 @@
                         _this.pageTotal = computePageCount(result.totalCount, result.pageSize)
                         _this.currentPage = result.pageIndex
                         _this.userData = result.result
-                    } else {
-                        parseError({ error: res.data.message, vm: _this })
+                    }else if(res.code === '100'){
+                            this.$store.dispatch('LogOut').then(() => {
+                            location.reload()// In order to re-instantiate the vue-router object to avoid bugs
+                            parseError({ error: res.message, vm: _this })
+                        })
+                    }
+                     else {
+                        parseError({ error: res.message, vm: _this })
                     }
                     _this.listLoading = false
                 }).catch(error => {
@@ -796,7 +854,7 @@
                                 })
                                 _this.getUserList()
                             } else {
-                                parseError({ error: res.data.message, vm: _this })
+                                parseError({ error: res.message, vm: _this })
                             }
                         }).catch(error => {
                             parseError({ error: error, vm: _this })
@@ -832,7 +890,7 @@
                         })
                         _this.getUserList()
                     } else {
-                        parseError({ error: res.data.message, vm: _this })
+                        parseError({ error: res.message, vm: _this })
                     }
                 }).catch(error => {
                     parseError({ error: error, vm: _this })
@@ -860,6 +918,7 @@
                     createddate:'',
                     lastmodifiedby:'',
                     lastmodifieddate:'',
+                    issecurityofficer:'',
                 }
             },
             getDepartmentData(){
@@ -920,7 +979,7 @@
                                 })
                                 _this.getUserList()
                             } else {
-                                parseError({ error: res.data.message, vm: _this })
+                                parseError({ error: res.message, vm: _this })
                             }
                         }).catch(error => {
                             parseError({ error: error, vm: _this })
@@ -978,7 +1037,7 @@
                                 })
                                 _this.getUserList()
                             } else {
-                                parseError({ error: res.data.message, vm: _this })
+                                parseError({ error: res.message, vm: _this })
                             }
                         })
                     }
@@ -988,8 +1047,11 @@
                 this.resetDataForm()
                 this.dataForm = row
                 this.dataForm.password = null
+                this.dataForm.companyid = row.companyInfo.id
                 this.dialogStatus = 'update'
                 this.dialogFormVisible = true
+                let ismain = this.companyList.find(item=>item.company === row.company).ismain
+                this.isMain = ismain === 1;
                 this.$nextTick(() => {
                     this.$refs['dataForm'].clearValidate()
                 })
@@ -1048,6 +1110,70 @@
                 this.importDisabled = false
                 this.importDialogFormVisible = true
             },
+
+
+            showExportHandle() {
+                const _this = this
+                const params = {}
+                params['sort'] = _this.sort
+                params['order'] = _this.order
+                params['pageIndex'] = 0
+                params['pageSize'] = 99999
+                params['type'] = _this.userType
+                params['realname'] = _this.realname
+                params['isMain'] = true
+                for (const i in _this.queryForm) {
+                    if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
+                        params[i] = _this.queryForm[i]
+                    }
+                }
+                userList(params)
+                    .then((response) => {
+                        const res = response.data
+                        if (res.code == 200) {
+                            const allData = res.result.result
+                            if (allData.length == 0) {
+                                parseError({ error: '没有录入数据', vm: _this })
+                                return
+                            }
+                            import('@/vendor/Export2Excel').then((excel) => {
+                                const tHeader = [
+                                    '用户名',
+                                    '真实姓名',
+                                    '身份证号',
+                                    '单位',
+                                    '部门',
+                                    '职位',
+                                    '用户类型',
+                                    '角色',
+                                ]
+
+                                const data =  allData.map(v=>{
+                                    return [
+                                        v.username,
+                                        v.realname,
+                                        v.idcard,
+                                        v.company,
+                                        v.department,
+                                        v.job,
+                                        this.typeList.find(item=>item.id === v.type).name,
+                                        v.roles.map(item=>item.name).join(","),
+                                    ]
+                                })
+                                excel.export_json_to_excel({
+                                    header: tHeader,
+                                    data,
+                                    filename: '用户'
+                                })
+                            })
+                        } else {
+                            parseError({ error: res.message, vm: _this })
+                        }
+                    })
+                    .catch((error) => {
+                        parseError({ error: error, vm: _this })
+                    })
+            },
             viewHandle() {
                 window.open(exampleFile, '_blank')
             },
@@ -1061,23 +1187,21 @@
                     formData.append('file', files[0])
                 }
                 formData.append('action', 'import')
-                importUser(formData)
-                    .then((response) => {
-                        const res = response.data
-                        if (res.code == 200) {
-                            _this.importDialogFormVisible = false
-                            _this.$message({
-                                message: '导入成功',
-                                type: 'success'
-                            })
-                            _this.getUserList()
-                        } else {
-                            parseError({ error: res.data.message, vm: _this })
-                        }
-                    })
-                    .catch((error) => {
-                        parseError({ error: error, vm: _this })
-                    })
+                importUser(formData).then((response) => {
+                    const res = response.data
+                    if (res.code == 200) {
+                        _this.importDialogFormVisible = false
+                        _this.$message({
+                            message: '导入成功',
+                            type: 'success'
+                        })
+                        _this.getUserList()
+                    } else {
+                        parseError({ error: res.message, vm: _this })
+                    }
+                }).catch((error) => {
+                    parseError({ error: error, vm: _this })
+                })
             },
             getProvince(){
                 const _this = this
@@ -1243,7 +1367,6 @@
                 const _this = this;
                 bindCard(_this.cardDataForm).then(response => {
                     const res = response.data
-                    debugger
                     if (res.code === '200'){
                         _this.$message({
                             message: '绑定成功',

--
Gitblit v1.9.2