Browse Source

实现后台企业更换管理员审核流程模态框以及审核操作

huxz 7 năm trước cách đây
mục cha
commit
5a85e3be79

+ 20 - 4
sso-manage-console-web/src/components/admin/ChangeAdmin.vue

@@ -34,11 +34,11 @@
                   <data-list>
                     <div class="x-data-list" v-if="changesList.length > 0">
                       <div class="x-item" v-for="change in changesList">
-                        <div class="x-icon"><a class="x-btn-image" href="javascript:void(0}">
+                        <div class="x-icon"><a class="x-btn-image" href="javascript:void(0)">
                           <img src="http://dfs.ubtob.com/group1/M00/4F/38/CgpkyFnKB9qAUhrXAAvqH_kipG8228.jpg"
                           width="50px" height="50px"/></a>
                         </div>
-                        <p><a class="x-title x-editor-trigger" href="javascript:void(0)">{{ change.userspace.spaceName || '企业名称' }}</a>
+                        <p><a class="x-title x-editor-trigger" href="javascript:void(0)" @click="showEditDialog(change)">{{ change.userspace.spaceName || '企业名称' }}</a>
                           <span class="pull-right x-text-muted">{{ change.submitDate | date }}</span>
                         </p>
                         <div class="x-text-muted">{{change.userspace.businessCode || '营业执照'}}<span
@@ -57,6 +57,10 @@
         </div>
       </div>
     </div>
+    <div>
+      <!-- modal -->
+      <change-audit-or-show-modal :visible.sync="showModal" :changeRecord="selectedChange" @success="fetchData()"/>
+    </div>
   </div>
 </template>
 
@@ -65,13 +69,15 @@
   import axios from '@/assets/js/axios'
   import {DataList, SearchDialog} from '@/components/common'
   import PageBar from '@/components/common/PageBar'
+  import {ChangeAuditOrShowModal} from './modal'
 
   export default {
     name: 'AppHome',
     components: {
       SearchDialog,
       DataList,
-      PageBar
+      PageBar,
+      ChangeAuditOrShowModal
     },
     data () {
       return {
@@ -87,12 +93,18 @@
         totalPages: 0,
         totalElements: 0,
         changesList: [],
-        selectedStatus: 'UNAUDIT'
+        selectedStatus: 'UNAUDIT',
+        showModal: false,
+        selectedChange: {}
       }
     },
     methods: {
       beginSearchChanges () {
         this.loadChangeAdminList()
+
+        this.pageParams.spaceName = null
+        this.pageParams.businessCode = null
+        this.pageParams.userName = null
       },
       fetchData () {
         this.loadChangeAdminList()
@@ -144,6 +156,10 @@
         }
 
         this.loadChangeAdminList()
+      },
+      showEditDialog (change) {
+        this.selectedChange = change || {}
+        this.showModal = true
       }
     },
     created () {

+ 148 - 0
sso-manage-console-web/src/components/admin/modal/ChangeAuditOrShowModal.vue

@@ -0,0 +1,148 @@
+<template>
+  <div class="modal fade in" role="dialog" aria-hidden="false" style="display: block;" v-if="isVisible">
+    <div class="modal-dialog x-modal-dialog modal-lg" role="document">
+      <div class="modal-content">
+        <!-- tab切换 start-->
+        <ul class="nav nav-tabs x-nav-tabs x-navbar-right hidden-xs modal-header" role="tablist">
+          <!--<li><a href="#changeAdminDetailModal_log" aria-controls="changeAdminDetailModal_log" role="tab" data-toggle="tab">操作日志</a></li>-->
+          <li class="active"><a aria-controls="changeAdminDetailModal_info" role="tab" data-toggle="tab">详细资料</a></li>
+          <h2 class="hidden-xs">
+            <i class="fa fa-file-text-o"></i>
+          </h2>
+        </ul>
+        <!-- tab切换 end-->
+        <div role="tabpanel" id="changeAdminDetailModal_info" class="x-tab-pane active">
+          <div class="modal-body">
+            <div class="x-group-header">
+              <h4>企业注册信息</h4>
+            </div>
+            <dl class="dl-horizontal x-dl-horizontal">
+              <dt>企业名称</dt>
+              <dd>{{changeRecord.userspace.spaceName}}</dd>
+              <dt>营业执照</dt>
+              <dd>
+                {{changeRecord.userspace.businessCode}}&nbsp;<a class="x-btn-image" href="javascript:void(0);" data-src="http://dfs.ubtob.com/group1/M00/4F/38/CgpkyFnKB9qAUhrXAAvqH_kipG8228.jpg">查看附件</a>
+              </dd>
+            </dl>
+            <div class="x-group-header" v-if="changeRecord.userspace.admin">
+              <h4>管理员信息</h4>
+            </div>
+            <dl class="dl-horizontal x-dl-horizontal" v-if="changeRecord.userspace.admin">
+              <dt>姓名</dt>
+              <dd>{{changeRecord.userspace.admin.userUU}}</dd>
+              <dt>手机号</dt>
+              <dd>{{changeRecord.userspace.admin.mobile}}</dd>
+              <dt>邮箱</dt>
+              <dd>hejq@usoftchina.com &nbsp;<a class="x-btn-send" style="display: none" href="javascript:void(0};" data-src="hejq@usoftchina.com">重新发送激活邮件</a>&nbsp;<a class="x-editor-trigger" style="display: none" href="javascript:void(0};" data-src="hejq@usoftchina.com">邮箱填错了?修改一下</a></dd>
+            </dl>
+            <div id="reasonWrap" style="display: block" v-if="changeRecord.validCode === 3">
+              <div class="x-group-header">
+                <h4>审批意见</h4>
+              </div>
+              <dl class="dl-horizontal x-dl-horizontal">
+                <dt>未通过原因</dt>
+                <dd>{{changeRecord.changeReason}}</dd>
+              </dl>
+            </div>
+            <div id="auditWrap" v-if="changeRecord.validCode === 1">
+              <div class="x-group-header">
+                <h4>审批意见</h4>
+              </div>
+              <form class="x-form">
+                <div class="form-group">
+                  <label class="radio-inline"> <input type="radio" name="enable" :value="true" v-model="handleResult"> 批准通过
+                  </label>
+                  <label class="radio-inline"> <input type="radio" name="enable" :value="false" v-model="handleResult"> 残忍拒绝
+                  </label>
+                </div>
+                <div class="form-group" id="reasonChooseWrap" style="display: block" v-show="!handleResult">
+                  <label>您拒绝的理由是?</label>
+                  <div class="radio" v-for="reason in changeReasons">
+                    <label> <input type="radio" name="reason" :value="reason" v-model="selectedReason"> {{reason}}
+                    </label>
+                  </div>
+                  <!-- 其他原因 -->
+                  <textarea id="otherReason" name="otherReason" class="form-control" placeholder="您拒绝的理由是?" maxlength="100" v-show="selectedReason === '其他原因'" v-model="otherReason"></textarea>
+                </div>
+              </form>
+            </div>
+          </div>
+          <div class="modal-footer">
+            <button type="button" class="btn btn-blank" data-dismiss="modal" @click="isVisible = false">关闭</button>
+            <button type="button" class="btn btn-default btn-submit" @click="submitAuditResult()">确认</button>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import axios from '@/assets/js/axios'
+
+  const changeReasons = [
+    '营业执照附件看不清',
+    '营业执照附件上的企业名称与填写的企业名称不一致',
+    '营业执照附件上的注册号与填写的营业执照号不一致',
+    '其他原因'
+  ];
+
+  export default {
+    name: 'ChangeAuditOrShowModal',
+    props: {
+      visible: Boolean,
+      changeRecord: Object
+    },
+    data () {
+      return {
+        isVisible: false,
+        handleResult: true,
+        changeReasons: changeReasons,
+        selectedReason: changeReasons[0],
+        otherReason: ''
+      }
+    },
+    watch: {
+      visible: function (value) {
+        this.isVisible = value
+      },
+      isVisible: function (value) {
+        this.$emit('update:visible', value)
+      }
+    },
+    methods: {
+      submitAuditResult () {
+        const params = {}
+        params.handlerId = this.changeRecord.id
+        params.auditor = '系统管理员'
+        params.validCode = this.handleResult ? 2 : 3
+
+        if (!this.handleResult) {
+          if (this.selectedReason === '其他原因') {
+            params.invalidReason = this.otherReason
+          } else {
+            params.invalidReason = this.selectedReason
+          }
+        }
+
+        console.log(params)
+
+        const success = result => {
+          console.log(result)
+          this.isVisible = false
+          this.$emit('success')
+        }
+        const error = error => {
+          console.log('error', error)
+          alert(error)
+        }
+
+        axios.put('/api/user/space/admin//auditChange', params).then(success).catch(error)
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 5 - 0
sso-manage-console-web/src/components/admin/modal/index.js

@@ -0,0 +1,5 @@
+import ChangeAuditOrShowModal from './ChangeAuditOrShowModal'
+
+export {
+  ChangeAuditOrShowModal
+}

+ 16 - 3
sso-manage-console/src/main/java/com/uas/sso/sso/backend/service/impl/ChangeAdminServiceImpl.java

@@ -32,6 +32,8 @@ import org.springframework.util.StringUtils;
 @Service
 public class ChangeAdminServiceImpl implements ChangeAdminService {
 
+    private static final short ENABLE = 2;
+
     private final ChangeAdminDao changeAdminDao;
 
     private final UserspaceDao userspaceDao;
@@ -130,16 +132,27 @@ public class ChangeAdminServiceImpl implements ChangeAdminService {
     }
 
     @Override
+    @Transactional(rollbackFor = RuntimeException.class)
     public Boolean auditChangeAdminRequest(@NotNull ChangeAdminAudit audit) {
-
         ChangeAdmin changeAdmin = changeAdminDao.findOne(audit.getHandlerId());
         Assert.notNull(changeAdmin, String.format("更换管理员记录%s不存在", audit.getHandlerId()));
 
         changeAdmin = audit.fillChangeAdmin(changeAdmin);
-        changeAdminDao.save(changeAdmin);
 
-        // 更新企业管理信息,并发送通知信息
 
+        // 如果审核通过,更新企业管理信息,并发送通知信息
+        if (ENABLE == changeAdmin.getValidCode()) {
+            User admin = userDao.findOne(changeAdmin.getAfterAdminUU());
+            Assert.notNull(changeAdmin, String.format("用户%d不存在", changeAdmin.getAfterAdminUU()));
+
+            Userspace userspace = changeAdmin.getUserspace();
+            userspace.setAdminUU(admin.getUserUU());
+            userspace.setAdmin(admin);
+
+            userspaceDao.save(userspace);
+        }
+
+        changeAdminDao.save(changeAdmin);
         return true;
     }
 }