瀏覽代碼

后台管理员 加 景区录入权限

lfj 3 年之前
父節點
當前提交
527d986024

+ 6 - 0
fjs-scenic-entity/pom.xml

@@ -16,5 +16,11 @@
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
       </dependency>
+      <dependency>
+          <groupId>com.baomidou</groupId>
+          <artifactId>mybatis-plus-annotation</artifactId>
+          <version>3.4.3</version>
+          <scope>compile</scope>
+      </dependency>
   </dependencies>
 </project>

+ 5 - 2
fjs-scenic-entity/src/main/java/com/fjs/scenic/entity/system/TypeAuthority.java

@@ -2,19 +2,22 @@ package com.fjs.scenic.entity.system;
 
 import java.io.Serializable;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
  * 后台管理员 景区资料录入权限信息(TypeAuthority)实体类
  *
  * @author lfj
- * @since 2021-09-27 11:46:45
+ * @since 2021-09-27 15:18:34
  */
 
 @Data
 public class TypeAuthority implements Serializable {
-    private static final long serialVersionUID = -70209948025701673L;
+    private static final long serialVersionUID = 756719672169315134L;
 
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
     /**
      * 公司

+ 29 - 11
fjs-scenic-manager/src/main/java/com/fjs/scenic/controller/system/ManageController.java

@@ -6,17 +6,16 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fjs.scenic.entity.system.TypeAuthority;
+import com.fjs.scenic.service.system.TypeAuthorityService;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
 import com.fjs.scenic.controller.common.BaseController;
@@ -40,6 +39,8 @@ public class ManageController extends BaseController<Manage> {
     private ManageServiceImpl manageService;
     @Autowired
     private BCryptPasswordEncoder passwordEncoder;
+    @Autowired
+    private TypeAuthorityService typeAuthorityService;
 
     @GetMapping("/index")
     public ModelAndView sceniclist(HttpSession session) {
@@ -48,7 +49,7 @@ public class ManageController extends BaseController<Manage> {
 
     @PostMapping("/addManage")
     public ReturnResult addManage(Manage record, HttpServletRequest request) {
-       /* WSessionInfo sessionInfo = (WSessionInfo) request.getSession().getAttribute(Cons.SESSION_INFO);*/
+        /* WSessionInfo sessionInfo = (WSessionInfo) request.getSession().getAttribute(Cons.SESSION_INFO);*/
 
         //检验用户名是否存在
         Manage nameRepet = new Manage();
@@ -82,6 +83,22 @@ public class ManageController extends BaseController<Manage> {
         return manageService.saveManageRole(id, roles);
     }
 
+    @PostMapping("/saveTypeAuthority")
+    @ResponseBody
+    public ReturnResult saveTypeAuthority(@RequestBody List<TypeAuthority> typeAuthoritys) {
+        typeAuthorityService.remove(new LambdaQueryWrapper<TypeAuthority>().eq(TypeAuthority::getManager, typeAuthoritys.get(0).getManager()));
+        return ReturnResult.ok(typeAuthorityService.saveBatch(typeAuthoritys));
+    }
+
+    @PostMapping("/getTypeAuthority/{id}")
+    @ResponseBody
+    public ReturnResult getTypeAuthority(@PathVariable("id") Integer id) {
+        return ReturnResult.ok(typeAuthorityService.listMaps(new LambdaQueryWrapper<TypeAuthority>()
+                .select(TypeAuthority::getCompany, TypeAuthority::getScenic, TypeAuthority::getAuthority)
+                .eq(TypeAuthority::getManager, id)
+        ));
+    }
+
     @GetMapping("/get/{id}")
     public ReturnResult get(@PathVariable("id") Integer id) {
         return manageService.get(id);
@@ -112,9 +129,10 @@ public class ManageController extends BaseController<Manage> {
 
     /**
      * 修改密码
+     *
      * @param principal
-     * @param oldPWD 原密码
-     * @param newPWD 新密码
+     * @param oldPWD    原密码
+     * @param newPWD    新密码
      * @return
      */
     @PostMapping("/updatePWD")
@@ -133,9 +151,9 @@ public class ManageController extends BaseController<Manage> {
     @PostMapping("/update")
     public ReturnResult update(Manage record) {
         String password = record.getPassword();
-        if(!StringUtils.isEmpty(password)){
+        if (!StringUtils.isEmpty(password)) {
             record.setPassword(passwordEncoder.encode(password));
-        }else{
+        } else {
             record.setPassword(null);
         }
         return ReturnResult.ok(manageService.update(record));

+ 291 - 280
fjs-scenic-manager/src/main/resources/templates/system/manage.html

@@ -1,209 +1,208 @@
-<#include "/incloud/header.ftl"/>
+<#include "/incloud/header.ftl" />
 <!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
-<html >
+<html>
 <@header></@header>
+
 <body class="hold-transition skin-blue sidebar-mini">
-<div class="wrapper">
+    <div class="wrapper">
 
-    <@top></@top>
-    <@left></@left>
+        <@top></@top>
+        <@left></@left>
 
-    <!-- Content Wrapper. Contains page content -->
-    <div class="content-wrapper">
-        <!-- Content Header (Page header) -->
-        <section class="content-header">
-            <h1>
-                后台管理员维护
-                <small>Optional description</small>
-            </h1>
-            <ol class="breadcrumb">
-                <li><a href="#"><i class="fa fa-dashboard"></i> Level</a></li>
-                <li class="active">Here</li>
-            </ol>
-        </section>
-        <!-- Main content -->
-        <section class="content container-fluid" id="app">
-            <div class="box-body">
-                <!--查询区域-->
-                <div class="query">
-                    <el-form :inline="true" :model="con" class="demo-form-inline">
-                        <el-form-item label="姓名" :label-width="queryLabelWidth">
-                            <el-input v-model="con.name" placeholder="姓名" maxlength="4" minlength="2"></el-input>
-                        </el-form-item>
-                        <el-form-item>
-                            <el-button type="primary" @click="loadTable1()">查询</el-button>
-                        </el-form-item>
-                    </el-form>
-                </div>
-                <!--功能按钮区-->
-                <div class="buttonDiv">
-                    <el-button
-                            size="mini" type="primary" class="pagination-but"
-                            @click="dialog1Visible = true">新增
-                    </el-button>
-                </div>
-                <!--表格区-->
-                <el-table border
-                          :data="tableData"
-                          style="width: 100%">
-                    <el-table-column min-width="150px"
-                                     label="姓名"
-                                     prop="name">
-                    </el-table-column>
-                    <el-table-column min-width="150px"
-                                     label="账号"
-                                     prop="account">
-                    </el-table-column>
-                    <el-table-column min-width="150px"
-                                     label="电话"
-                                     prop="phone">
-                    </el-table-column>
-                    <el-table-column min-width="150px"
-                                     label="状态">
-                        <template slot-scope="scope">
-                            {{scope.row.status|getEnumVal(MANAGE_STATUS)}}
-                        </template>
-                    </el-table-column>
-                    <el-table-column min-width="150px"
-                                     label="创建时间"
-                                     prop="createTime">
-                    </el-table-column>
-                    <el-table-column min-width="150px"
-                                     label="修改时间"
-                                     prop="updateTime">
-                    </el-table-column>
-                    <el-table-column label="操作" min-width="300px">
-                        <template slot-scope="scope">
-                            <el-button
-                                    size="mini"
-                                    type="primary"
-                                    @click="table1Edit(scope.$index, scope.row)">修改
-                            </el-button>
-                            <el-button
-                                    size="mini" type="danger"
-                                    @click="table1Del(scope.$index, scope.row)">删除
-                            </el-button>
-                            <!--<el-button
-                                    size="mini" type="primary"
-                                    @click="table1Role(scope.$index, scope.row)">分配角色
-                            </el-button>-->
-                            <el-button v-if="scope.row.status===MANAGE_STATUS.正常" size="mini" type="warning"
+        <!-- Content Wrapper. Contains page content -->
+        <div class="content-wrapper">
+            <!-- Content Header (Page header) -->
+            <section class="content-header">
+                <h1>
+                    后台管理员维护
+                    <small>Optional description</small>
+                </h1>
+                <ol class="breadcrumb">
+                    <li><a href="#"><i class="fa fa-dashboard"></i> Level</a></li>
+                    <li class="active">Here</li>
+                </ol>
+            </section>
+            <!-- Main content -->
+            <section class="content container-fluid" id="app">
+                <div class="box-body">
+                    <!--查询区域-->
+                    <div class="query">
+                        <el-form :inline="true" :model="con" class="demo-form-inline">
+                            <el-form-item label="姓名" :label-width="queryLabelWidth">
+                                <el-input v-model="con.name" placeholder="姓名" maxlength="4" minlength="2"></el-input>
+                            </el-form-item>
+                            <el-form-item>
+                                <el-button type="primary" @click="loadTable1()">查询</el-button>
+                            </el-form-item>
+                        </el-form>
+                    </div>
+                    <!--功能按钮区-->
+                    <div class="buttonDiv">
+                        <el-button size="mini" type="primary" class="pagination-but" @click="dialog1Visible = true">新增
+                        </el-button>
+                    </div>
+                    <!--表格区-->
+                    <el-table border :data="tableData" style="width: 100%">
+                        <el-table-column min-width="150px" label="姓名" prop="name">
+                        </el-table-column>
+                        <el-table-column min-width="150px" label="账号" prop="account">
+                        </el-table-column>
+                        <el-table-column min-width="150px" label="电话" prop="phone">
+                        </el-table-column>
+                        <el-table-column min-width="150px" label="状态">
+                            <template slot-scope="scope">
+                                {{scope.row.status|getEnumVal(MANAGE_STATUS)}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column min-width="150px" label="创建时间" prop="createTime">
+                        </el-table-column>
+                        <el-table-column min-width="150px" label="修改时间" prop="updateTime">
+                        </el-table-column>
+                        <el-table-column label="操作" min-width="300px">
+                            <template slot-scope="scope">
+                                <el-button size="mini" type="primary" @click="table1Edit(scope.$index, scope.row)">修改
+                                </el-button>
+                                <el-button size="mini" type="danger" @click="table1Del(scope.$index, scope.row)">删除
+                                </el-button>
+                                <el-button size="mini" type="primary" @click="authorityClick(scope.$index, scope.row)">
+                                    分配权限
+                                </el-button>
+                                <el-button v-if="scope.row.status===MANAGE_STATUS.正常" size="mini" type="warning"
                                     @click="table1FreezeUnfreeza(scope.row.id,MANAGE_STATUS.无效)">冻结
-                            </el-button>
-                            <el-button v-if="scope.row.status===MANAGE_STATUS.无效" size="mini" type="primary"
+                                </el-button>
+                                <el-button v-if="scope.row.status===MANAGE_STATUS.无效" size="mini" type="primary"
                                     @click="table1FreezeUnfreeza(scope.row.id,MANAGE_STATUS.正常)">解冻
-                            </el-button>
-                        </template>
-                    </el-table-column>
-                </el-table>
-                <!--分页-->
-                <div class="block">
-                    <el-pagination
-                            @size-change="handleSizeChange"
-                            @current-change="handleCurrentChange"
-                            :current-page="con.currentPage"
-                            :page-sizes="[1,10, 50, 200, 500]"
-                            :page-size="con.pageSize"
-                            layout="total, sizes, prev, pager, next, jumper, slot"
-                            :total="con.total">
-                    </el-pagination>
-                </div>
-                <!--对话框1 新增-->
-                <el-dialog title="新增"
-                           :visible.sync="dialog1Visible"
-                           :custom-class="'ele-dialog'"
-                           :center="true"
-                           @close="closeAddDialog1">
-                    <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
-                        <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                            <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
-                        </el-form-item>
-                        <el-form-item label="电话" :label-width="formLabelWidth" prop="phone">
-                            <el-input v-model="addData.phone" placeholder="请输入电话"></el-input>
-                        </el-form-item>
-                        <el-form-item label="账号" :label-width="formLabelWidth" prop="account">
-                            <el-input v-model="addData.account" placeholder="请输入账号"></el-input>
-                        </el-form-item>
-                        <el-form-item label="密码" :label-width="formLabelWidth" prop="password">
-                            <el-input type="password" v-model="addData.password" placeholder="请输入密码"></el-input>
-                        </el-form-item>
-                        <el-form-item label="确认密码" :label-width="formLabelWidth" prop="password2">
-                            <el-input type="password" v-model="addData.password2" placeholder="请再次输入密码"></el-input>
-                        </el-form-item>
-                    </el-form>
-                    <div slot="footer" class="dialog-footer">
-                        <el-button type="primary" @click="dialog1Sub('dialog1')">提 交</el-button>
-                        <el-button @click="dialog1Visible = false">取 消</el-button>
+                                </el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <!--分页-->
+                    <div class="block">
+                        <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                            :current-page="con.currentPage" :page-sizes="[1,10, 50, 200, 500]" :page-size="con.pageSize"
+                            layout="total, sizes, prev, pager, next, jumper, slot" :total="con.total">
+                        </el-pagination>
                     </div>
-                </el-dialog>
+                    <!--对话框1 新增-->
+                    <el-dialog title="新增" :visible.sync="dialog1Visible" :custom-class="'ele-dialog'" :center="true"
+                        @close="closeAddDialog1">
+                        <el-form :model="addData" status-icon :rules="rules" ref="dialog1">
+                            <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
+                                <el-input v-model="addData.name" placeholder="请输入姓名"></el-input>
+                            </el-form-item>
+                            <el-form-item label="电话" :label-width="formLabelWidth" prop="phone">
+                                <el-input v-model="addData.phone" placeholder="请输入电话"></el-input>
+                            </el-form-item>
+                            <el-form-item label="账号" :label-width="formLabelWidth" prop="account">
+                                <el-input v-model="addData.account" placeholder="请输入账号"></el-input>
+                            </el-form-item>
+                            <el-form-item label="密码" :label-width="formLabelWidth" prop="password">
+                                <el-input type="password" v-model="addData.password" placeholder="请输入密码"></el-input>
+                            </el-form-item>
+                            <el-form-item label="确认密码" :label-width="formLabelWidth" prop="password2">
+                                <el-input type="password" v-model="addData.password2" placeholder="请再次输入密码"></el-input>
+                            </el-form-item>
+                        </el-form>
+                        <div slot="footer" class="dialog-footer">
+                            <el-button type="primary" @click="dialog1Sub('dialog1')">提 交</el-button>
+                            <el-button @click="dialog1Visible = false">取 消</el-button>
+                        </div>
+                    </el-dialog>
 
-                <!--对话框2 编辑-->
-                <el-dialog title="编辑"
-                           :visible.sync="dialog2Visible"
-                           :custom-class="'ele-dialog'"
-                           :center="true"
-                           @close="closeEditDialog2">
-                    <el-form :model="editData" status-icon :rules="rules2" ref="dialog2">
-                        <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
-                            <el-input v-model="editData.name" placeholder="请输入姓名"></el-input>
-                        </el-form-item>
-                        <el-form-item label="电话" :label-width="formLabelWidth" prop="phone">
-                            <el-input v-model="editData.phone" placeholder="请输入电话"></el-input>
-                        </el-form-item>
-                        <el-form-item label="账号" :label-width="formLabelWidth" prop="account">
-                            <el-input v-model="editData.account" placeholder="请输入账号"></el-input>
-                        </el-form-item>
-                        <el-form-item label="密码" :label-width="formLabelWidth" prop="password">
-                            <el-input type="password" v-model="editData.password" placeholder="请输入密码,留空不作修改"></el-input>
-                        </el-form-item>
-                        <el-form-item label="确认密码" :label-width="formLabelWidth" prop="password2">
-                            <el-input type="password" v-model="editData.password2" placeholder="请再次输入密码,留空不作修改"></el-input>
-                        </el-form-item>
-                    </el-form>
-                    <div slot="footer" class="dialog-footer">
-                        <el-button type="primary" @click="dialog2Sub('dialog2')">提 交</el-button>
-                        <el-button @click="dialog2Visible = false">取 消</el-button>
-                    </div>
-                </el-dialog>
-                <!--对话框3 角色-->
-                <el-dialog title="角色" :visible.sync="dialog3Visible" :custom-class="'ele-dialog'" :center="true">
-                    <el-form :model="roleData" status-icon :rules="rules3" ref="dialog3">
-                        <el-form-item :label-width="formLabelWidth" prop="id">
-                            <el-input type="hidden" v-model="roleData.id"></el-input>
-                        </el-form-item>
-                        <el-form-item label="角色" :label-width="formLabelWidth" prop="roles">
-                            <el-select v-model="roleData.roles" placeholder="请选择角色" multiple>
-                                <el-option
-                                        v-for="item in roleIds"
-                                        :key="item.id"
-                                        :label="item.name"
-                                        :value="item.id">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                    </el-form>
-                    <div slot="footer" class="dialog-footer">
-                        <el-button type="primary" @click="dialog3Sub('dialog3')">提 交</el-button>
-                        <el-button @click="dialog3Visible = false">取 消</el-button>
-                    </div>
-                </el-dialog>
-            </div>
-        </section>
-        <!-- /.content -->
+                    <!--对话框2 编辑-->
+                    <el-dialog title="编辑" :visible.sync="dialog2Visible" :custom-class="'ele-dialog'" :center="true"
+                        @close="closeEditDialog2">
+                        <el-form :model="editData" status-icon :rules="rules2" ref="dialog2">
+                            <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
+                                <el-input v-model="editData.name" placeholder="请输入姓名"></el-input>
+                            </el-form-item>
+                            <el-form-item label="电话" :label-width="formLabelWidth" prop="phone">
+                                <el-input v-model="editData.phone" placeholder="请输入电话"></el-input>
+                            </el-form-item>
+                            <el-form-item label="账号" :label-width="formLabelWidth" prop="account">
+                                <el-input v-model="editData.account" placeholder="请输入账号"></el-input>
+                            </el-form-item>
+                            <el-form-item label="密码" :label-width="formLabelWidth" prop="password">
+                                <el-input type="password" v-model="editData.password" placeholder="请输入密码,留空不作修改">
+                                </el-input>
+                            </el-form-item>
+                            <el-form-item label="确认密码" :label-width="formLabelWidth" prop="password2">
+                                <el-input type="password" v-model="editData.password2" placeholder="请再次输入密码,留空不作修改">
+                                </el-input>
+                            </el-form-item>
+                        </el-form>
+                        <div slot="footer" class="dialog-footer">
+                            <el-button type="primary" @click="dialog2Sub('dialog2')">提 交</el-button>
+                            <el-button @click="dialog2Visible = false">取 消</el-button>
+                        </div>
+                    </el-dialog>
+                    <!--对话框3 权限-->
+                    <el-dialog title="权限" :visible.sync="dialog3Visible" :custom-class="'ele-dialog'" :center="true">
+                        <el-form :model="typeAuthority" status-icon ref="dialog3">
+                            <el-form-item label="景区" :label-width="formLabelWidth" prop="companyScenic"
+                                :rules="{ required: true, message: '请选择', trigger: 'change' }">
+                                <el-cascader v-model="typeAuthority.companyScenic" :options="companyScenicOptions"
+                                    :props="{ multiple: true }" @change="companyScenicChange"></el-cascader>
+                            </el-form-item>
+                            <el-form-item label="权限" :label-width="formLabelWidth" prop="authority"
+                                :rules="{ required: true, message: '请选择', trigger: 'change' }">
+                                <el-select v-model="typeAuthority.authority" placeholder="请选择">
+                                    <el-option label="录入" :value="0"></el-option>
+                                    <el-option label="查看" :value="1"></el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-form>
+                        <div slot="footer" class="dialog-footer">
+                            <el-button type="primary" @click="dialog3Sub('dialog3')">提 交</el-button>
+                            <el-button @click="dialog3Visible = false">取 消</el-button>
+                        </div>
+                    </el-dialog>
+                </div>
+            </section>
+            <!-- /.content -->
+        </div>
+        <!-- Main Footer -->
+        <!--<@footer></@footer>-->
+        <@footer></@footer>
     </div>
-    <!-- Main Footer -->
-    <!--<@footer></@footer>-->
-    <@footer></@footer>
-</div>
 </body>
 <script src="/js/util/dyAjax.js"></script>
 <script>
     $(function () {
+        const TYPE_AUTHORITY = { authority: 0, companyScenic: [[0, 0]] }
         var option = {
             mixins: [dyMixin],
             data() {
                 return {
-                    con: {currentPage: 1, pageSize: 10, total: 0},//查询条件
+                    companyScenic: undefined,
+                    companyScenicOptions: [
+                        {
+                            value: 0,
+                            label: '巴拉胡景区管理公司',
+                            children: [
+                                { value: 0, label: '大峡谷景区' },
+                                { value: 1, label: '水车坪景区' },
+                                { value: 2, label: '濯水景区' },
+                                { value: 3, label: '小南海' },
+                                { value: 4, label: '十三寨' }]
+                        }, {
+                            value: 1,
+                            label: '芭拉胡公司',
+                            children: [
+                                { value: 0, label: '水师码头' },
+                                { value: 1, label: '神龟峡景区' }]
+                        }, {
+                            value: 2,
+                            label: '爱莉丝公司',
+                            children: [
+                                { value: 0, label: '官村' },
+                                { value: 1, label: '爱莉丝' }]
+                        }, {
+                            value: 3,
+                            label: '阿蓬江旅行社公司',
+                            children: [{ value: 0, label: '阿蓬江旅行社公司' }]
+                        }],
+                    con: { currentPage: 1, pageSize: 10, total: 0 },//查询条件
                     tableData: [],
                     dialog1Visible: false,//对话框隐藏
                     addData: {
@@ -214,38 +213,44 @@
                         password2: ''
                     },//新增数据模板
                     editData: {},//编辑数据
-                    roleData: {roles:[]},//角色数据
-                    roleIds:[],
+                    typeAuthority: Object.assign(TYPE_AUTHORITY),//角色数据
+                    roleIds: [],
                     dialog2Visible: false,//编辑弹框隐藏
                     dialog3Visible: false,//角色弹框隐藏
                     rules: {
                         name: [
-                            {required: true,validator: (rule, value, callback) => {
-                                if (!(/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/.test(value))) {
-                                    callback(new Error('请输入正确的姓名,只能输入汉字,长度在2-4个字符之间'));
-                                } else {
-                                    callback();
-                                }
-                            }, trigger: 'blur'}
+                            {
+                                required: true, validator: (rule, value, callback) => {
+                                    if (!(/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/.test(value))) {
+                                        callback(new Error('请输入正确的姓名,只能输入汉字,长度在2-4个字符之间'));
+                                    } else {
+                                        callback();
+                                    }
+                                }, trigger: 'blur'
+                            }
                         ],
                         phone: [
-                            {required: true,validator: (rule, value, callback) => {
-                                if (!(/^1[34578]\d{9}$/.test(value))) {
-                                    callback(new Error('请输入正确的联系方式'));
-                                } else {
-                                    callback();
-                                }
-                            }, trigger: 'blur'}
+                            {
+                                required: true, validator: (rule, value, callback) => {
+                                    if (!(/^1[34578]\d{9}$/.test(value))) {
+                                        callback(new Error('请输入正确的联系方式'));
+                                    } else {
+                                        callback();
+                                    }
+                                }, trigger: 'blur'
+                            }
                         ],
                         account: [
-                            {required: true,
+                            {
+                                required: true,
                                 validator: (rule, value, callback) => {
                                     if (!(/^[a-zA-Z0-9]+$/.test(value))) {
                                         callback(new Error('请输入字母或数字'));
                                     } else {
                                         callback();
                                     }
-                                }, trigger: 'blur'},
+                                }, trigger: 'blur'
+                            },
                             { min: 6, max: 12, message: '长度在6-12个字符', trigger: 'blur' }
                         ],
                         password: [
@@ -266,53 +271,59 @@
                         password2: [
                             {
                                 required: true, validator: (rule, value, callback) => {
-                                if (value === '') {
-                                    callback(new Error('请再次输入密码'));
-                                } else if (value !== this.addData.password) {
-                                    callback(new Error('两次输入密码不一致!'));
-                                } else {
-                                    callback();
-                                }
-                            }, trigger: 'blur'
+                                    if (value === '') {
+                                        callback(new Error('请再次输入密码'));
+                                    } else if (value !== this.addData.password) {
+                                        callback(new Error('两次输入密码不一致!'));
+                                    } else {
+                                        callback();
+                                    }
+                                }, trigger: 'blur'
                             }
                         ]
                     },//对话框1验证规则
                     rules2: {
                         name: [
-                            {required: true,validator: (rule, value, callback) => {
-                                if (!(/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/.test(value))) {
-                                    callback(new Error('请输入正确的姓名'));
-                                } else {
-                                    callback();
-                                }
-                            }, trigger: 'blur'}
+                            {
+                                required: true, validator: (rule, value, callback) => {
+                                    if (!(/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/.test(value))) {
+                                        callback(new Error('请输入正确的姓名'));
+                                    } else {
+                                        callback();
+                                    }
+                                }, trigger: 'blur'
+                            }
                         ],
                         phone: [
-                            {required: true,validator: (rule, value, callback) => {
-                                if (!(/^1[34578]\d{9}$/.test(value))) {
-                                    callback(new Error('请输入正确的联系方式'));
-                                } else {
-                                    callback();
-                                }
-                            }, trigger: 'blur'}
+                            {
+                                required: true, validator: (rule, value, callback) => {
+                                    if (!(/^1[34578]\d{9}$/.test(value))) {
+                                        callback(new Error('请输入正确的联系方式'));
+                                    } else {
+                                        callback();
+                                    }
+                                }, trigger: 'blur'
+                            }
                         ],
                         account: [
-                            {required: true,
+                            {
+                                required: true,
                                 validator: (rule, value, callback) => {
                                     if (!(/^[a-zA-Z0-9]+$/.test(value))) {
                                         callback(new Error('请输入字母或数字'));
                                     } else {
                                         callback();
                                     }
-                                }, trigger: 'blur'},
+                                }, trigger: 'blur'
+                            },
                             { min: 6, max: 12, message: '长度在6-12个字符', trigger: 'blur' }
                         ],
                         password: [
                             {
                                 required: false,
                                 validator: (rule, value, callback) => {
-                                // console.log(value===null)
-                                    if(value !== null && value !==''){
+                                    // console.log(value===null)
+                                    if (value !== null && value !== '') {
                                         if (!(/^.{6,12}$/.test(value))) {
                                             callback(new Error('请输入6-12位密码'));
                                         } else {
@@ -321,7 +332,7 @@
                                             }
                                             callback();
                                         }
-                                    }else{
+                                    } else {
                                         callback();
                                     }
 
@@ -331,39 +342,37 @@
                         password2: [
                             {
                                 required: false, validator: (rule, value, callback) => {
-                                // if (value === '') {
-                                //     callback(new Error('请再次输入密码'));
-                                // } else
-                                console.log(value,typeof(value),typeof(value) !== 'undefined',"b:"+this.editData.password)
-                                console.log(this.editData.password)
-                                if((this.editData.password !== null && this.editData.password !== '') || typeof(value) !== 'undefined' && value !==  null){
-                                    if ( value !== this.editData.password) {
-                                        callback(new Error('两次输入密码不一致!'));
+                                    // if (value === '') {
+                                    //     callback(new Error('请再次输入密码'));
+                                    // } else
+                                    console.log(value, typeof (value), typeof (value) !== 'undefined', "b:" + this.editData.password)
+                                    console.log(this.editData.password)
+                                    if ((this.editData.password !== null && this.editData.password !== '') || typeof (value) !== 'undefined' && value !== null) {
+                                        if (value !== this.editData.password) {
+                                            callback(new Error('两次输入密码不一致!'));
+                                        } else {
+                                            callback();
+                                        }
                                     } else {
                                         callback();
                                     }
-                                }else{
-                                    callback();
-                                }
 
-                            }, trigger: 'blur'
+                                }, trigger: 'blur'
                             }
                         ]
                     },//对话框2验证规则
-                    rules3: {
-                        roles: [
-                            {required: true, message: '请选择角色', trigger: 'change'}
-                        ]
-                    },//对话框3验证规则
-                    MANAGE_STATUS:{'正常':"1",'无效':"0"},//账户状态
+                    MANAGE_STATUS: { '正常': "1", '无效': "0" },//账户状态
                 }
             },
             mounted: function () {
                 this.loadTable1();
             },
             methods: {
-//                表1 冻结 解结
-                table1FreezeUnfreeza(id,stutes){
+                companyScenicChange(value) {
+                    console.log(value);
+                },
+                // 表1 冻结 解结
+                table1FreezeUnfreeza(id, stutes) {
                     let _this = this;
                     let isFreeze = stutes === _this.MANAGE_STATUS.无效;
                     this.$confirm(isFreeze ? '确定冻结' : '确定解冻?', '提示', {
@@ -371,8 +380,8 @@
                         cancelButtonText: '取消',
                         type: 'warning'
                     }).then(() => {
-                        $.dyAjax('/manage/freezeUnfreeza', {id: id, status: stutes}, function (data) {
-                            _this.$message({message: '操作成功', type: 'success'});
+                        $.dyAjax('/manage/freezeUnfreeza', { id: id, status: stutes }, function (data) {
+                            _this.$message({ message: '操作成功', type: 'success' });
                             _this.loadTable1();
                         });
                     }).catch(() => {
@@ -383,7 +392,7 @@
                     let _this = this;
                     $.dyAjax('/manage/get/' + row.id, {}, function (data) {
                         _this.editData = data;
-//                        _this.editData.password2 = '';
+                        //                        _this.editData.password2 = '';
                         _this.dialog2Visible = true;
                         console.log(data);
                     }, 'get');
@@ -407,7 +416,7 @@
                     this.$refs[formName].validate((valid) => {
                         if (valid) {
                             $.dyAjax('/manage/addManage', _this.addData, function (data) {
-                                if(data.status===200){
+                                if (data.status === 200) {
                                     _this.loadTable1(function () {
                                         _this.$message({
                                             message: '成功',
@@ -416,7 +425,7 @@
                                         _this.dialog1Visible = false;
                                         _this.jsonClear(_this.addData);
                                     });
-                                }else {
+                                } else {
                                     _this.loadTable1(function () {
                                         _this.$message({
                                             message: data.msg,
@@ -454,7 +463,7 @@
                         cancelButtonText: '取消',
                         type: 'warning'
                     }).then(() => {
-                        $.dyAjax('/manage/del', {id: row.id}, function (data) {
+                        $.dyAjax('/manage/del', { id: row.id }, function (data) {
                             _this.loadTable1(function () {
                                 _this.$message({
                                     type: 'success',
@@ -465,22 +474,21 @@
                     }).catch(() => {
                     });
                 },
-                //分配角色
-                table1Role: function (index, row) {
-                    let _this = this;
-                    $.dyAjax('/role/getAll', {}, function (data) {
-                        var list=row.roleList;
-                        ids=[];
-                        for(var i=0;i<list.length;i++){
-                            ids.push(list[i].id);
+                //分配权限
+                authorityClick: function (index, row) {
+                    var _this = this;
+                    $.dyAjax('/manage/getTypeAuthority/' + row.id, undefined, function (data) {
+                        if (data.length > 0) {
+                            let companyScenic = data.reduce((acc, cur) => {
+                                acc.push([cur.company, cur.scenic])
+                                return acc
+                            }, [])
+                            _this.typeAuthority = { authority: data[0].authority?1:0, companyScenic, manager: row.id }
+                        } else {
+                            _this.typeAuthority = Object.assign(TYPE_AUTHORITY, {manager: row.id})
                         }
-                        console.log(ids);
-                        _this.roleIds=data;
-                        _this.roleData.roles=ids;
-                        _this.roleData.id=row.id;
-                        console.log(_this.roleData.id);
                         _this.dialog3Visible = true;
-                    }, 'get');
+                    });
                 },
                 //对话框2 编辑提交事件
                 dialog2Sub: function (formName) {
@@ -508,17 +516,19 @@
                     var _this = this;
                     this.$refs[formName].validate((valid) => {
                         if (valid) {
-                            console.log(_this.roleData);
-                            $.dyAjax('/manage/saveRole', {id:_this.roleData.id,roles:_this.roleData.roles.join(',')}, function (data) {
+                            const { companyScenic, authority, manager } = _this.typeAuthority
+                            let datas = []
+                            companyScenic.forEach(element => {
+                                datas.push({ company: element[0], scenic: element[1], authority, manager })
+                            });
+                            $.dyjAjax('/manage/saveTypeAuthority', datas, function (data) {
                                 _this.loadTable1(function () {
                                     _this.$message({
                                         message: '成功',
                                         type: 'success'
                                     });
                                     _this.dialog3Visible = false;
-                                    _this.jsonClear(_this.roleData.roles);
-                                    _this.jsonClear(_this.roleData.id);
-                                },'post');
+                                }, 'post');
                             });
                         } else {
                             return false;
@@ -526,11 +536,11 @@
                     });
                 },
 
-                closeAddDialog1: function(){
+                closeAddDialog1: function () {
                     this.$refs['dialog1'].resetFields()
                 },
 
-                closeEditDialog2 :function () {
+                closeEditDialog2: function () {
                     this.$refs['dialog2'].resetFields()
                 },
 
@@ -542,4 +552,5 @@
         new app().$mount('#app');
     });
 </script>
+
 </html>