Shannon_mu 3 年之前
父節點
當前提交
df63d50b9d

+ 7 - 34
accessControlSystem/src/components/common/Header.vue

@@ -1,11 +1,3 @@
-<!--
- * @Author: zouwenying
- * @Date: 2020-10-26 10:32:32
- * @LastEditTime: 2021-04-30 14:34:19
- * @LastEditors: zwy
- * @Description: In User Settings Edit
- * @FilePath: \UMIS\src\components\others\Header.vue
--->
 <template>
     <div class="header" :class="[collapse ? 'collapse' : 'expand']">
         <div class="el-fl-left"><v-tags></v-tags></div>
@@ -17,10 +9,8 @@
                     <i class="iconfont" v-show="!cruUserInfo.photo" v-bottom-txt-tip data-txt="编辑用户信息">&#xe6e8;</i>
                     <img v-show="cruUserInfo.photo" :src="envConfig.baseImgApi + cruUserInfo.photo" style="object-fit: cover" />
                 </div>
-                <!-- <span style="width: 1px; height: 1rem(6); background: #FFFFFF; opacity: 0.5"></span> -->
                 <div class="message">
                     <span class="main" @click="goMessage('unread')">
-                        <!-- <i class="iconfont btn">&#xe6ea;</i> -->
                         <img src="@assets/img/btn_news.png" alt="" />
                         <span class="iconfont point" v-if="messageNumber"></span>
                     </span>
@@ -29,7 +19,7 @@
                         <ul>
                             <li v-for="(items, index) in messageList" :key="index" @click="toUrl(items.typeId)" style="cursor: pointer">
                                 <img :src="imgList[items.typeId]" style="width: 30px; height: 30px" />
-                                <!-- <img :src="imgList[items.typeId - 1]" style="width: 30px; height: 30px" /> -->
+
                                 <div>
                                     <span class="cont">【{{ items.shortName }}】{{ items.messageContent }}</span>
                                     <span class="time">{{ items.dateCreate }}</span>
@@ -46,14 +36,11 @@
                         <el-button type="text" class="more" disabled>查看更多</el-button>
                     </div>
                 </div>
-                <!-- <span style="width: 1px; height: 1rem(6); background: #FFFFFF; opacity: 0.5"></span> -->
                 <span class="border"></span>
                 <div class="logout" @click="logOut">
                     <el-tooltip placement="bottom" content="退出">
-                        <i  class="zoniot_font zoniot-icon-tuichu"></i>
-                        <!-- <img src="@/assets/img/btn_quit.png" class="tab_head-right" @click="logOut" /> -->
+                        <i class="zoniot_font zoniot-icon-tuichu"></i>
                     </el-tooltip>
-                    <!-- <i class="iconfont" v-bottom-txt-tip data-txt="退出">&#xe6e9;</i> -->
                 </div>
             </div>
         </div>
@@ -74,20 +61,6 @@ export default {
                 10: require('@/assets/img/icon_msg9.png'),
                 11: require('@/assets/img/icon_msg9.png'),
                 13: require('@/assets/img/icon_msg9.png')
-
-                //     [
-                //     require('@/assets/img/icon_msg1.png'),
-                //     require('@/assets/img/icon_msg2.png'),
-                //     require('@/assets/img/icon_msg3.png'),
-                //     require('@/assets/img/icon_msg4.png'),
-                //     require('@/assets/img/icon_msg5.png'),
-                //     require('@/assets/img/icon_msg6.png'),
-                //     require('@/assets/img/icon_msg7.png'),
-                //     require('@/assets/img/icon_msg8.png'),
-                //     require('@/assets/img/icon_msg9.png'),
-                //     require('@/assets/img/icon_msg9.png'),
-                //     require('@/assets/img/icon_msg9.png')
-                // ]
             }
         };
     },
@@ -144,7 +117,7 @@ export default {
         editUserInfo() {
             new Promise((resolve) => {
                 this.$store.dispatch('addPopup', {
-                    url: '/system/users/popups/edituser.vue',
+                    url: '/system/edituser.vue',
                     width: '500px',
                     height: '500px',
                     props: {
@@ -336,10 +309,10 @@ export default {
 }
 .logout {
     margin-left: rem(20);
-   i{
-       color: white;
-       font-size: rem(20);
-   }
+    i {
+        color: white;
+        font-size: rem(20);
+    }
 }
 .iconfont {
     font-size: rem(20);

+ 332 - 0
accessControlSystem/src/views/system/edituser.vue

@@ -0,0 +1,332 @@
+<!--
+ * @Author: your name
+ * @Date: 2020-10-22 18:26:27
+ * @LastEditTime: 2020-11-26 08:14:05
+ * @LastEditors: Please set LastEditors
+ * @Description: In User Settings Edit
+ * @FilePath: \vue-manage-system-master\src\views\system\users\popups\AddOrEdit.vue
+-->
+<template>
+    <div class="alert-body__main_content">
+        <zz-form :cols="formCols" :data="formData" :rules="formRules" :errors="formErrors" labelWidth="110" ref="form">
+            <el-select slot="status" v-model="formData.enableState">
+                <el-option v-for="(item, index) in allStatus" :key="index" :label="item.label" :value="item.id">{{ item.label }}</el-option>
+            </el-select>
+            <el-select slot="roleId" v-model="formData.roleId">
+                <el-option v-for="(item, index) in allRoleId" :key="index" :label="item.roleName" :value="item.id">{{
+                    item.roleName
+                }}</el-option>
+            </el-select>
+            <el-select slot="userType" v-model="formData.userType">
+                <el-option v-for="(item, index) in allUserType" :key="index" :label="item.dictValue" :value="item.id">{{
+                    item.dictValue
+                }}</el-option>
+            </el-select>
+            <select-tree
+                :props="defaultProps"
+                slot="companyOrgId"
+                class="new-select-tree"
+                selectTreeTitle='组织机构'
+                width="320"
+                treeWidth="320"
+                :options="organListCompany"
+                @selected="selectedcompanyOrgId"
+                v-model="formData.companyOrgId"
+                :labelModel="formData.companyOrgName"
+            />
+            <select-tree
+                :props="defaultProps"
+                slot="deptOrgId"
+                class="new-select-tree"
+                selectTreeTitle='组织机构'
+                width="320"
+                treeWidth="320"
+                :options="organListdepartment"
+                @selected="selecteddeptOrgId"
+                v-model="formData.deptOrgId"
+            />
+            <div class="imgdis-div" slot="companylogo" v-show="formData.photo">
+                <i class="el-icon-delete" @click="delformphoto"></i>
+                <img :src="envConfig.baseImgApi + formData.photo" alt="" width="60" height="60" />
+                <!-- <div class="tips"><img  style="width:12px;height:12px;vertical-align: middle;" src="@assets/img/icon-warning.png"/><span>支持jpg,jpeg,gif,png,bmp格式的图片</span></div> -->
+            </div>
+            <el-upload
+                v-show="!formData.photo"
+                :headers="token"
+                ref="uploaduserlogo"
+                class="mini-upload"
+                slot="companylogo"
+                limit="1"
+                action="/user-center/user/addUserPhoto"
+                list-type="picture-card"
+                :on-success="uploadsuccess"
+                :auto-upload="true"
+                name="avatarfile"
+            >
+                <i slot="default" class="el-icon-plus"></i>
+                <div slot="file" slot-scope="{ file }">
+                    <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
+                    <span class="el-upload-list__item-actions">
+                        <!-- <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
+                            <i class="el-icon-zoom-in"></i>
+                        </span> -->
+                        <!-- <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
+                            <i class="el-icon-download"></i>
+                        </span> -->
+                        <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
+                            <i class="el-icon-delete"></i>
+                        </span>
+                    </span>
+                </div>
+                <div class="tips"><img  style="width:12px;height:12px;vertical-align: middle;" src="@assets/img/icon-warning.png"/><span>支持jpg,jpeg,gif,png,bmp格式的图片</span></div>
+            </el-upload>
+            <el-dialog :visible.sync="dialogVisible">
+                <img width="100%" :src="dialogImageUrl" alt="" />
+            </el-dialog>
+            
+        </zz-form>
+    </div>
+</template>
+<script>
+import envConfig from '@/config';
+import SelectTree from '@/components/common/SelectTree.vue';
+export default {
+    props: ['params'],
+    components: {
+        SelectTree
+    },
+
+    data() {
+        return {
+            token: {
+                [localStorage.getItem('SC_token') && 'Authorization']: 'Bearer ' + localStorage.getItem('SC_token')
+            },
+            envConfig: envConfig,
+            organList: [
+                {
+                    id: 1,
+                    tenantId: 'string123',
+                    orgName: '公司',
+                    parentOrgId: 0,
+                    orgs: [{ id: 2, tenantId: 'string123', orgName: '部门', parentOrgId: 1, orgs: null, display: true }],
+                    display: true
+                }
+            ],
+            organListCompany:[],
+            organListdepartment:[],
+            phoneNumber:'',
+            defaultProps: {
+                value: 'id', // 唯一标识
+                label: 'orgName', // 标签显示
+                children: 'orgs' // 子级
+            },
+            formData: {
+                companyOrgId: '',
+                companyOrgName: '',
+                createBy: '',
+                dateCreate: '',
+                dateUpdate: '',
+                deptOrgId: '',
+                deptOrgName: '',
+                email: '',
+                enableState: '',
+                id: '',
+                phone: '',
+                photo: '',
+                remark: '',
+                roleId: '',
+                status: '',
+                tenantId: '',
+                updateBy: '',
+                userGroupId: '',
+                userTags: '',
+                userType: '',
+                username: ''
+            },
+            dialogImageUrl: '',
+            dialogVisible: false,
+            disabled: false,
+            allStatus: [
+                {
+                    id: '0',
+                    label: '停用'
+                },
+                {
+                    id: '1',
+                    label: '启用'
+                }
+            ],
+            allRoleId: [],
+            allUserType: [],
+            formCols: [
+                [
+                    {
+                        label: '用户名',
+                        prop: 'username',
+                        input: true
+                    },
+                    {
+                        label: '手机号码',
+                        prop: 'phone',
+                        input: true
+                    },
+                    {
+                        label: '头像',
+                        prop: 'photo',
+                        slot: 'companylogo'
+                    },
+                    {
+                        label: '邮箱',
+                        prop: 'email',
+                        input: true
+                    },
+                    {
+                        label: '备注',
+                        prop: 'remark',
+                        input: true
+                    }
+                ]
+            ],
+            formRules: {
+                companyOrgId: [this.$valid.selectRequired('所属公司')],
+                // deptOrgId: [this.$valid.selectRequired('所属部门')],
+                username: [this.$valid.inputRequired('用户名')],
+                phone: [this.$valid.patternPhone()],
+                enableState: [this.$valid.inputRequired('状态')]
+            },
+            formErrors: {}
+        };
+    },
+
+    methods: {
+        delformphoto() {
+            this.formData.photo = '';
+            this.$refs.uploaduserlogo.clearFiles();
+        },
+        getselectAll() {},
+        submit() {
+            new Promise((resolve) => {
+                this.$refs.form.validate(resolve);
+            }).then(() => {
+                var loading = this.$loading();
+                var posturl = '/user-center/user/updateUserById';
+                this.$http
+                    .post(posturl, this.formData)
+                    .then(({ status, data, msg }) => {
+                        loading.close();
+                        if (0 == status) {
+                            this.$message.success(msg);
+                            if(this.phoneNumber!==this.formData.phone){
+                                this.$alert('你的手机号已变更,需重新登录', '提示', {
+                                    confirmButtonText: '确定',
+                                    showClose:false,
+                                }).then(()=>{
+                                    window.open('http://114.135.61.186:21020/sc-login/', '_self');
+                                    window.relogin = false;
+                                    localStorage.removeItem('UMIS_token');
+                                    sessionStorage.removeItem("tabs");
+                                    return;
+                                });
+                            }else{
+                                this.params.callback && this.params.callback();
+                                this.$emit('close');
+                                if(this.$route.path==='/userInfo'){
+                                    this.$router.go(0);
+                                }
+                            }
+                        } else {
+                            this.$message.error(msg);
+                        }
+                    })
+                    .catch((err) => {
+                        loading.close();
+                    });
+            });
+        },
+        handleRemove(file) {
+            this.$refs.uploaduserlogo.clearFiles();
+        },
+        uploadsuccess(response, file, fileList) {
+            if (0 === response.status) {
+                this.formData.photo = response.data;
+            }
+        }
+    },
+    created() {
+        this.getselectAll();
+        // this.getcompanyTree();
+        this.phoneNumber=this.params.data.phone;
+        this.formData = this.params.data ? this.params.data : this.formData;
+        this.organList = this.params.organList ? this.params.organList : this.organList;
+        this.organListCompany = this.params.organListCompany ? this.params.organListCompany : this.organListCompany;
+        this.organListdepartment = this.params.organListdepartment ? this.params.organListdepartment : this.organListdepartment;
+        this.allRoleId = this.params.allRoleId ? this.params.allRoleId : this.allRoleId;
+        this.allUserType = this.params.allUserType ? this.params.allUserType : this.allUserType;
+    }
+};
+</script>
+
+
+<style lang='scss' scoped>
+</style>
+
+<style lang="scss">
+.mini-upload .el-upload-list--picture-card .el-upload-list__item {
+    width: 60px;
+    height: 60px;
+}
+.mini-upload .el-upload--picture-card {
+    width: 60px;
+    height: 60px;
+    line-height: 60px;
+    font-size: 14px;
+}
+.mini-upload .el-upload--picture-card i {
+    font-size: 20px;
+}
+.imgdis-div {
+    width: 60px;
+    height: 60px;
+    position: relative;
+}
+.imgdis-div i {
+    display: none;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+}
+// .imgdis-div .notice{
+//     display: contents;
+//     font-size: 12px;
+// }
+.imgdis-div:hover i {
+    display: block;
+}
+// .imgdis-div .tips{
+//     position: absolute;
+//     font-size: 0.12px;
+//     font-family: MicrosoftYaHei;
+//     color: #7D7F87;
+//     top: 10px;
+//     right: -261px;
+// }
+.el-upload .tips {
+    position: absolute;
+    top: 0;
+    right: 0;
+    font-size: 12px;
+    color: #7D7F87;
+    // font-size: 12px;
+    // span{
+    //     position: absolute;
+    //     font-size: 12px;
+    //     font-family: MicrosoftYaHei;
+    //     color: #7D7F87;
+    //     top: 0px;
+    //     right: 0px;
+    // }
+}
+    
+</style>
+

+ 20 - 42
energyManagement/src/components/common/Header.vue

@@ -1,11 +1,3 @@
-<!--
- * @Author: zouwenying
- * @Date: 2020-10-26 10:32:32
- * @LastEditTime: 2021-04-30 14:34:19
- * @LastEditors: zwy
- * @Description: In User Settings Edit
- * @FilePath: \UMIS\src\components\others\Header.vue
--->
 <template>
     <div class="header" :class="[collapse ? 'collapse' : 'expand']">
         <div class="el-fl-left"><v-tags></v-tags></div>
@@ -17,10 +9,8 @@
                     <i class="iconfont" v-show="!cruUserInfo.photo" v-bottom-txt-tip data-txt="编辑用户信息">&#xe6e8;</i>
                     <img v-show="cruUserInfo.photo" :src="envConfig.baseImgApi + cruUserInfo.photo" style="object-fit: cover" />
                 </div>
-                <!-- <span style="width: 1px; height: 16px; background: #FFFFFF; opacity: 0.5"></span> -->
                 <div class="message">
                     <span class="main" @click="goMessage('unread')">
-                        <!-- <i class="iconfont btn">&#xe6ea;</i> -->
                         <img src="@assets/img/btn_news.png" alt="" />
                         <span class="iconfont point" v-if="messageNumber"></span>
                     </span>
@@ -28,7 +18,8 @@
                         <p>消息通知</p>
                         <ul>
                             <li v-for="(items, index) in messageList" :key="index" @click="toUrl(items.typeId)" style="cursor: pointer">
-                                <img :src="imgList[items.typeId - 1]" style="width: 30px; height: 30px" />
+                                <img :src="imgList[items.typeId]" style="width: 30px; height: 30px" />
+
                                 <div>
                                     <span class="cont">【{{ items.shortName }}】{{ items.messageContent }}</span>
                                     <span class="time">{{ items.dateCreate }}</span>
@@ -40,18 +31,16 @@
                     <div class="msg-content" v-else>
                         <p>消息通知</p>
                         <ul>
-                            <li style="text-align: center; display: block; padding: 0 20px; line-height: 60px">暂无消息</li>
+                            <li style="text-align: center; display: block; padding: 0 rem(20); line-height: rem(60)">暂无消息</li>
                         </ul>
                         <el-button type="text" class="more" disabled>查看更多</el-button>
                     </div>
                 </div>
-                <!-- <span style="width: 1px; height: 16px; background: #FFFFFF; opacity: 0.5"></span> -->
                 <span class="border"></span>
                 <div class="logout" @click="logOut">
                     <el-tooltip placement="bottom" content="退出">
-                        <img src="@/assets/img/btn_quit.png" class="tab_head-right" @click="logOut" />
+                        <i class="zoniot_font zoniot-icon-tuichu"></i>
                     </el-tooltip>
-                    <!-- <i class="iconfont" v-bottom-txt-tip data-txt="退出">&#xe6e9;</i> -->
                 </div>
             </div>
         </div>
@@ -59,7 +48,6 @@
 </template>
 <script>
 import { mapState, mapGetters, mapMutations, mapActions } from 'vuex';
-import { createSocket } from '@/utils/websoket';
 import envConfig from '@/config';
 import vTags from './Tags.vue';
 export default {
@@ -67,18 +55,13 @@ export default {
         return {
             name: '',
             envConfig: envConfig,
-            imgList: [
-                require('@/assets/img/icon_msg1.png'),
-                require('@/assets/img/icon_msg2.png'),
-                require('@/assets/img/icon_msg3.png'),
-                require('@/assets/img/icon_msg4.png'),
-                require('@/assets/img/icon_msg5.png'),
-                require('@/assets/img/icon_msg6.png'),
-                require('@/assets/img/icon_msg7.png'),
-                require('@/assets/img/icon_msg8.png'),
-                require('@/assets/img/icon_msg9.png')
-            ],
-            websocket: ''
+            imgList: {
+                1: require('@/assets/img/icon_msg1.png'),
+                2: require('@/assets/img/icon_msg7.png'),
+                10: require('@/assets/img/icon_msg9.png'),
+                11: require('@/assets/img/icon_msg9.png'),
+                13: require('@/assets/img/icon_msg9.png')
+            }
         };
     },
     components: {
@@ -110,8 +93,10 @@ export default {
                         message: '您已退出登录'
                     });
                     localStorage.removeItem('SC_token');
+                    sessionStorage.removeItem('SC_listMuen');
                     this.$store.commit('setloginInfo', '');
                     this.$store.dispatch('tags', []);
+
                     sessionStorage.removeItem('tabs');
                     location.href = this.envConfig.loginUrl;
                 } else {
@@ -177,15 +162,8 @@ export default {
         },
         //初始化websoket
         initWebSocket(id) {
-            // createSocket('ws://' + this.envConfig.websoketUrl + '/sc-message/webSocket/' + id);
-            // const getsocketData = (e) => {
-            //     const data = e && e.detail.data;
-            //     console.log(data);
-            // };
-            // window.addEventListener('onmessageWS', getsocketData);
             if ('WebSocket' in window) {
                 var serviceIp = this.envConfig.websoketUrl;
-
                 this.websocket = new WebSocket('ws://' + serviceIp + '/sc-message/webSocket/' + id);
             } else {
                 console.log('当前浏览器 Not support websocket');
@@ -193,10 +171,9 @@ export default {
             let that = this;
             this.interval = window.setInterval(function () {
                 //每隔30秒钟发送一次心跳,避免websocket连接因超时而自动断开
-
                 if (that.websocket != null) {
-                    // that.websocket.send();
-                    console.log('发送心跳包:HeartBeat');
+                    // that.websocket.send('HeartBeat');
+                    // console.log('发送心跳包:HeartBeat');
                 }
             }, 30000);
             //连接发生错误的回调方法
@@ -210,17 +187,18 @@ export default {
                 // this.send('addsocket');
             };
 
-            // 接收到消息的回调方法
+            //接收到消息的回调方法
             this.websocket.onmessage = function (event) {
                 try {
                     let msg = JSON.parse(event.data);
-                    let i = msg.typeId - 1;
+                    // let i = msg.typeId - 1;
+                    let i = msg.typeId;
                     if (msg.userId) {
                         that.$notify({
                             dangerouslyUseHTMLString: true,
                             showClose: true,
                             customClass: 'notice_icon',
-                            offset: 60,
+                            offset: 50,
                             duration: 3000,
                             message:
                                 "<div class='notice'><img src=" +
@@ -238,7 +216,7 @@ export default {
                 } catch (e) {}
             };
 
-            // 连接关闭的回调方法
+            //连接关闭的回调方法
             this.websocket.onclose = function (ev) {
                 console.log('WebSocket连接关闭');
                 this.websocket = null;