Browse Source

用户信息编辑模态框企业信息展示

huxz 8 years ago
parent
commit
69df71afb6

+ 6 - 6
sso-manage-console-web/src/components/user/UserHome.vue

@@ -137,18 +137,18 @@
     </div>
     <div>
       <!-- modal -->
-      <user-edit-modal :visible.sync="showModal" :data="selectedUser"/>
+      <user-edit-modal :visible.sync="showModal" :user="selectedUser"/>
     </div>
   </div>
 </template>
 
 <script>
-import _ from 'lodash'
-import axios from '@/assets/js/axios'
-import PageBar from '@/components/common/PageBar'
-import UserEditModal from './modal/UserEditModal'
+  import _ from 'lodash'
+  import axios from '@/assets/js/axios'
+  import PageBar from '@/components/common/PageBar'
+  import UserEditModal from './modal/UserEditModal'
 
-export default {
+  export default {
   name: 'AppHome',
   components: {
     PageBar,

+ 54 - 48
sso-manage-console-web/src/components/user/modal/UserEditModal.vue

@@ -4,11 +4,10 @@
       <div class="modal-content">
         <!-- tab切换 start-->
         <ul class="nav nav-tabs x-nav-tabs x-navbar-right hidden-xs modal-header" role="tablist">
-          <li :class="{active: showTab === 'logs'}"><a aria-controls="userDetailModal_log" role="tab" data-toggle="tab" @click="showTab = 'logs'">操作日志</a></li>
-          <li :class="{active: showTab === 'apps'}"><a aria-controls="userDetailModal_apps" role="tab" data-toggle="tab" @click="showTab = 'apps'">绑定企业、应用</a></li>
+          <li :class="{active: showTab === 'apps'}"><a aria-controls="userDetailModal_apps" role="tab" data-toggle="tab" @click="showBindApps()">绑定企业、应用</a></li>
           <li :class="{active: showTab === 'default'}"><a aria-controls="userDetailModal_info" role="tab" data-toggle="tab" @click="showTab = 'default'">详细资料</a></li>
           <h2 class="hidden-xs">
-            <i class="fa fa-file-text-o"></i> {{data.realName || '姓名'}}
+            <i class="fa fa-file-text-o"></i> {{user.realName || '姓名'}}
           </h2>
         </ul>
         <!-- tab切换 end-->
@@ -19,11 +18,11 @@
             </div>
             <dl class="dl-horizontal x-dl-horizontal">
               <dt>姓名</dt>
-              <dd v-text="data.realName || '姓名'"></dd>
+              <dd v-text="user.realName || '姓名'"></dd>
               <dt>性别</dt>
               <dd>男</dd>
               <dt>身份证号</dt>
-              <dd v-text="data.idCard"></dd>
+              <dd v-text="user.idCard"></dd>
               <dt>出生日期</dt>
               <dd></dd>
             </dl>
@@ -32,12 +31,12 @@
             </div>
             <dl class="dl-horizontal x-dl-horizontal">
               <dt>绑定手机</dt>
-              <dd>{{data.mobile}}&nbsp;<a class="x-btn-text" href="javascript:void(0)">更换</a></dd>
+              <dd>{{user.mobile}}&nbsp;<a class="x-btn-text" href="javascript:void(0)">更换</a></dd>
               <dt>绑定邮箱</dt>
-              <dd v-if="!data.email">&nbsp;<a class="x-btn-text" href="javascript:void(0)">绑定</a></dd>
-              <dd v-if="data.email">{{data.email}}&nbsp;<a class="x-btn-text" href="javascript:void(0)">更换</a></dd>
+              <dd v-if="!user.email">&nbsp;<a class="x-btn-text" href="javascript:void(0)">绑定</a></dd>
+              <dd v-if="user.email">{{user.email}}&nbsp;<a class="x-btn-text" href="javascript:void(0)">更换</a></dd>
             </dl>
-            <div class="x-group-header">
+            <!--<div class="x-group-header">
               <h4>组织架构</h4>
             </div>
             <dl class="dl-horizontal x-dl-horizontal">
@@ -45,7 +44,7 @@
               <dd></dd>
               <dt>职称</dt>
               <dd>管理员</dd>
-            </dl>
+            </dl>-->
           </div>
           <div class="modal-footer">
             <button type="button" class="btn btn-blank x-btn-reset">重置密码</button>
@@ -58,6 +57,19 @@
               <div class="x-mod-body">
                 <div class="x-common-list" id="apps">
                   <!-- users -->
+                  <div class="x-item" v-for="space in spaces">
+                    <div class="x-icon"><i class="fa fa-file-o"></i></div>
+                    <p>
+                      <span class="x-title text-info">{{space.spaceName}}</span><!--<span
+                      class="pull-right x-text-muted">b2b</span>-->
+                    </p>
+                    <div class="x-text-muted">管理员<span class="pull-right">{{space.spaceUU}}</span></div>
+                    <div class="x-title pull-right"><a type="button"
+                                                       class="btn btn-blank btn-synchrodata"
+                                                       onclick="app.synchrodata(170828)">同步数据</a><a
+                      type="button" class="btn btn-blank btn-userpwd" onclick="app.userpwd(170828)">查询密码</a>
+                    </div>
+                  </div>
                 </div>
                 <div class="x-empty">
                   <i class="fa fa-coffee"></i>
@@ -68,28 +80,7 @@
           </div>
           <div class="modal-footer">
             <button type="button" class="btn btn-blank">添加到企业</button>
-            <button type="button" class="btn btn-blank">设置为管理员</button>
-            <button type="button" class="btn btn-blank" data-dismiss="modal" @click="isVisible = false">关闭</button>
-          </div>
-        </div>
-        <div role="tabpanel" id="userDetailModal_log" class="x-tab-pane" :class="{active: showTab === 'logs'}">
-          <div class="modal-body">
-            <!-- 日志列表 start -->
-            <div class="x-mod x-list x-log-list" style="margin: -15px">
-              <div class="x-mod-body">
-                <div class="x-common-list">
-                  <!-- log item -->
-                </div>
-                <div class="x-empty" style="display: none">
-                  <i class="fa fa-coffee"></i>
-                  <p>还没有留下任何足迹!</p>
-                </div>
-              </div>
-            </div>
-            <!-- 日志列表 end -->
-          </div>
-          <div class="modal-footer">
-            <ul class="pagination pull-left" style="margin: 0"></ul>
+            <!--<button type="button" class="btn btn-blank">设置为管理员</button>-->
             <button type="button" class="btn btn-blank" data-dismiss="modal" @click="isVisible = false">关闭</button>
           </div>
         </div>
@@ -99,27 +90,42 @@
 </template>
 
 <script>
+  import axios from '@/assets/js/axios'
+
   export default {
-    name: 'UserEditModal',
-    props: {
-      visible: Boolean,
-      data: Object
-    },
-    data () {
-      return {
-        isVisible: false,
-        showTab: 'default'
-      }
+  name: 'UserEditModal',
+  props: {
+    visible: Boolean,
+    user: Object
+  },
+  data () {
+    return {
+      isVisible: false,
+      showTab: 'default',
+      spaces: []
+    }
+  },
+  watch: {
+    visible: function (value) {
+      this.isVisible = value
     },
-    watch: {
-      visible: function (value) {
-        this.isVisible = value
-      },
-      isVisible: function (value) {
-        this.$emit('update:visible', value)
+    isVisible: function (value) {
+      this.$emit('update:visible', value)
+    }
+  },
+  methods: {
+    showBindApps () {
+      const success = spaces => {
+        this.showTab = 'apps'
+        this.spaces = spaces
+        console.log(spaces)
       }
+      const error = response => { console.log('error', response) }
+
+      axios.get(`/api/user/${this.user.userUU}/findSpacesByUser`).then(success).catch(error)
     }
   }
+}
 </script>
 
 <style scoped>

+ 63 - 26
sso-manage-console-web/src/components/userspace/modal/SpaceEditModal.vue

@@ -4,7 +4,7 @@
       <div class="modal-content">
         <!-- tab切换 start-->
         <ul class="nav nav-tabs x-nav-tabs x-navbar-right hidden-xs modal-header" role="tablist">
-          <li :class="{active: showTab === 'logs'}"><a aria-controls="userSpaceDetailModal_log" role="tab" data-toggle="tab" aria-expanded="false" @click="showTab = 'logs'">操作日志</a></li>
+          <!--<li :class="{active: showTab === 'logs'}"><a aria-controls="userSpaceDetailModal_log" role="tab" data-toggle="tab" aria-expanded="false" @click="showTab = 'logs'">操作日志</a></li>-->
           <li :class="{active: showTab === 'apps'}"><a aria-controls="userSpaceDetailModal_apps" role="tab" data-toggle="tab" aria-expanded="false" @click="showTab = 'apps'">绑定应用</a></li>
           <li :class="{active: showTab === 'default'}"><a aria-controls="userSpaceDetailModal_info" role="tab" data-toggle="tab" aria-expanded="true" @click="showTab = 'default'">详细资料</a></li>
           <h2 class="hidden-xs">
@@ -40,7 +40,7 @@
               <dt>注册地区</dt>
               <dd>{{data.regAddress || '注册地区'}} <span class="x-text-muted x-text-small">您可以根据营业执照<a href="">填写</a></span></dd>
               <dt>企业地址</dt>
-              <dd id="primaryAdress">{{data.province || '企业地址'}} <span class="x-text-muted x-text-small"></span></dd>
+              <dd id="primaryAdress">{{data.companyAddress || '企业地址'}} <span class="x-text-muted x-text-small"></span></dd>
               <dd id="renewAdress" style="display: none"><input type="text" value="广东省深圳市罗湖区罗湖路266号" name="renewAdress">
               </dd>
               <dt>所属行业</dt>
@@ -48,10 +48,10 @@
               <dt>官网地址</dt>
               <dd>http://ww.exempIe.com</dd>
             </dl>
-            <div class="x-group-header">
+            <div class="x-group-header" v-show="data.admin">
               <h4>管理员信息</h4>
             </div>
-            <dl class="dl-horizontal x-dl-horizontal">
+            <dl class="dl-horizontal x-dl-horizontal" v-show="data.admin">
               <dt>姓名</dt>
               <dd>王超</dd>
               <dt>手机号</dt>
@@ -123,10 +123,19 @@
           <div class="modal-body">
             <div class="x-mod x-list" style="margin: -15px">
               <div class="x-mod-body">
-                <div class="x-common-list" id="apps">
+                <div class="x-common-list" id="apps" v-if="data.apps.length > 0">
                   <!-- userspaces -->
+                  <div class="x-item" v-for="app in data.apps">
+                    <div class="x-icon"><i class="fa fa-file-o"></i></div>
+                    <p><span class="x-title text-info" v-text="app.description"></span><span
+                      class="pull-right x-text-muted" v-text="app.uid"></span></p>
+                    <div>
+                      <div class="x-text-muted" v-text="data.spaceName">公司名称<span
+                        class="pull-right" v-text="data.spaceUU">企业UU</span></div>
+                    </div>
+                  </div>
                 </div>
-                <div class="x-empty" style="display: none">
+                <div class="x-empty" v-if="data.apps.length === 0">
                   <i class="fa fa-coffee"></i>
                   <p>还没有绑定任何应用</p>
                 </div>
@@ -134,16 +143,21 @@
             </div>
           </div>
           <div class="modal-footer">
+            <div v-if="canBindApp" style="width: 300px; display: inline-block;">
+              <input type="text" v-model="appUid" placeholder="应用Uid,如b2b"/>
+              <button type="button" class="btn btn-blank" data-close="modal" @click="bindAppWithSpace(appUid)">保存</button>
+            </div>
+            <button type="button" class="btn btn-blank" data-dismiss="modal" @click="canBindApp = true" v-show="!canBindApp">开通应用</button>
             <button type="button" class="btn btn-blank" data-dismiss="modal" @click="isVisible = false">关闭</button>
           </div>
         </div>
-        <div role="tabpanel" id="userSpaceDetailModal_log" class="x-tab-pane" :class="{active: showTab === 'logs'}">
+        <!--<div role="tabpanel" id="userSpaceDetailModal_log" class="x-tab-pane" :class="{active: showTab === 'logs'}">
           <div class="modal-body">
-            <!-- 日志列表 start -->
+            &lt;!&ndash; 日志列表 start &ndash;&gt;
             <div class="x-mod x-list x-log-list" style="margin: -15px">
               <div class="x-mod-body">
                 <div class="x-common-list">
-                  <!-- log item -->
+                  &lt;!&ndash; log item &ndash;&gt;
                 </div>
                 <div class="x-empty" style="display: none">
                   <i class="fa fa-coffee"></i>
@@ -151,40 +165,63 @@
                 </div>
               </div>
             </div>
-            <!-- 日志列表 end -->
+            &lt;!&ndash; 日志列表 end &ndash;&gt;
           </div>
           <div class="modal-footer">
             <ul class="pagination pull-left" style="margin: 0"></ul>
             <button type="button" class="btn btn-blank" data-dismiss="modal" @click="isVisible = false">关闭</button>
           </div>
-        </div>
+        </div>-->
       </div>
     </div>
   </div>
 </template>
 
 <script>
+  import axios from '@/assets/js/axios'
+
   export default {
-    name: 'SpaceEditModal',
-    props: {
-      visible: Boolean,
-      data: Object
+  name: 'SpaceEditModal',
+  props: {
+    visible: Boolean,
+    data: Object
+  },
+  data () {
+    return {
+      isVisible: false,
+      showTab: 'default',
+      canBindApp: false,
+      appUid: ''
+    }
+  },
+  watch: {
+    visible: function (value) {
+      this.isVisible = value
     },
-    data () {
-      return {
-        isVisible: false,
-        showTab: 'default'
+    isVisible: function (value) {
+      this.$emit('update:visible', value)
+    }
+  },
+  methods: {
+    bindAppWithSpace (appUid) {
+      console.log(appUid)
+      const params = { appUid: appUid }
+
+      const success = status => {
+        if (status) {
+          this.isVisible = false
+          this.canBindApp = false
+        }
       }
-    },
-    watch: {
-      visible: function (value) {
-        this.isVisible = value
-      },
-      isVisible: function (value) {
-        this.$emit('update:visible', value)
+      const error = response => {
+        alert(response)
+        console.log('error', response)
       }
+
+      axios.put(`/api/user/space/${this.data.spaceUU}/bindAppWithSpace`, {}, { params }).then(success).catch(error)
     }
   }
+}
 </script>
 
 <style scoped>

+ 2 - 0
sso-server/src/main/java/com/uas/sso/entity/User.java

@@ -183,6 +183,7 @@ public class User implements Serializable {
     @Column(name = "_lock")
     private Integer lock;
 
+    @JsonIgnore
     @OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST})
     @JoinColumn(name = "record_id")
     private UserRecord userRecord;
@@ -190,6 +191,7 @@ public class User implements Serializable {
     /**
      * 密保问题
      */
+    @JsonIgnore
     @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.REMOVE})
     @JoinColumn(name = "useruu", nullable = false)
     private List<UserQuestion> questions;