Pārlūkot izejas kodu

租户管理页面搭建

ming 3 gadi atpakaļ
vecāks
revīzija
5a8269371c

+ 80 - 26
src/store/modules/routes.js

@@ -82,35 +82,89 @@ const actions = {
         })
 
         data.push({
-            "path": "/systemManage",
-            "hidden": false,
-            "redirect": "/systemManage/userManage",
-            "component": "Layout",
-            "meta": {
-                "title": "租户管理",
-                "icon": "systemManage",
-                "affix": null
+            path: "/tenantManage",
+            hidden: false,
+            redirect: "/tenantManage/tenantUnit",
+            component: "Layout",
+            meta: {
+                title: "租户管理",
+                icon: "systemManage",
+
             },
-            "children": [{
-                "path": "userManage",
-                "hidden": false,
-                "component": "@/views/systemManage/userManage/index",
-                "meta": {
-                    "title": "租户单位配置",
-                    "icon": "systemManage",
-                    "affix": null
-                }
+            children: [{
+                meta: {
+                    title: "租户单位配置",
+                    icon: "systemManage",
+
+                },
+                path: "/tenantUnit",
+                hidden: false,
+                component: "@/views/tenantManage/tenantUnit",
+
             }, {
-                "path": "rolePermission1",
-                "hidden": false,
-                "component": "@/views/tenantManage/rolePermission1/index",
-                "meta": {
-                    "title": "管理员配置",
-                    "icon": "systemManage",
-                    "affix": null
-                }
-            }]
+                meta: {
+                    title: "管理员配置",
+                    icon: "systemManage",
+
+                },
+                path: "/adminConfig",
+                hidden: false,
+                component: "@/views/tenantManage/adminConfig",
+
+            }, {
+                meta: {
+                    title: "系统配置",
+                    icon: "systemManage",
+
+                },
+                path: "/systemConfig",
+                hidden: false,
+                component: "@/views/tenantManage/systemConfig",
+
+            }, {
+                meta: {
+                    title: "权限配置",
+                    icon: "systemManage",
+
+                },
+                path: "/authConfig",
+                hidden: false,
+                component: "@/views/tenantManage/authConfig",
+
+            }, ]
         })
+
+
+        // data.push({
+        //     "path": "/systemManage",
+        //     "hidden": false,
+        //     "redirect": "/systemManage/userManage",
+        //     "component": "Layout",
+        //     "meta": {
+        //         "title": "租户管理",
+        //         "icon": "systemManage",
+        //         "affix": null
+        //     },
+        //     "children": [{
+        //         "path": "userManage",
+        //         "hidden": false,
+        //         "component": "@/views/systemManage/userManage/index",
+        //         "meta": {
+        //             "title": "租户单位配置",
+        //             "icon": "systemManage",
+        //             "affix": null
+        //         }
+        //     }, {
+        //         "path": "rolePermission1",
+        //         "hidden": false,
+        //         "component": "@/views/tenantManage/rolePermission1/index",
+        //         "meta": {
+        //             "title": "管理员配置",
+        //             "icon": "systemManage",
+        //             "affix": null
+        //         }
+        //     }]
+        // })
         data.forEach(function(item) {
             if (item.children.length > 1) {
                 item.children.forEach(function(i) {

+ 4 - 1
src/views/login/index.vue

@@ -118,7 +118,10 @@ export default {
     if (router.currentRoute.value.query.userName === 'admin') {
       this.handleSubmit()
     }
+
     this.getLoginStyle()
+    // this.companyName='永天智慧电力平台'
+    // this.backdropUrl=require('@/assets/login_images/login_background.png')
   },
   methods: {
 
@@ -130,7 +133,7 @@ export default {
         })
         .then((requset) => {
           if (requset.status === 'SUCCESS') {
-            this.backdropUrl = requset.data[0].loginBackUrl?'requset.data[0].loginBackUrl':require('@/assets/login_images/login_background.png')
+            this.backdropUrl = requset.data[0].loginBackUrl?requset.data[0].loginBackUrl:require('@/assets/login_images/login_background.png')
             this.companyName = requset.data[0].loginTitle?requset.data[0].loginTitle:'永天智慧电力平台'
           } else {
             alert(requset.msg)

+ 0 - 0
src/views/tenantManage/userManage/dialogComponent.vue → src/views/tenantManage/adminConfig/dialogComponent.vue


+ 320 - 0
src/views/tenantManage/adminConfig/index.vue

@@ -0,0 +1,320 @@
+<template>
+  <div class="app-container">
+    <!-- 筛选start -->
+    <div class="filter-container mb-10">
+      <div class="left">
+        <div>
+          <span class="" style="margin-right: 30px">管理员配置待排版222</span>
+          <el-button :disabled="store.state.authorities.indexOf('新增')==-1" icon="el-icon-plus" type="success" @click="addItem()">
+            新增
+          </el-button>
+        </div>
+        <div style="margin-top: 20px">
+          <div class="filter-item">
+            账号:
+            <el-input
+              v-model="userName"
+              placeholder="请输入内容"
+              style="width: 180px"
+               :disabled="store.state.authorities.indexOf('查询')==-1"
+            ></el-input>
+          </div>
+
+          <div class="filter-item">
+            账号状态:
+            <el-select
+              v-model="status"
+              placeholder="请选择"
+              style="width: 150px"
+              clearable
+               :disabled="store.state.authorities.indexOf('查询')==-1"
+            >
+              <el-option label="正常" value="0"></el-option>
+              <el-option label="停用" value="1"></el-option>
+            </el-select>
+          </div>
+
+          <div class="filter-item planOutage">
+            选择时间范围:
+            <el-date-picker
+              v-model="dateTime"
+              type="datetimerange"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              style="width: auto"
+               :disabled="store.state.authorities.indexOf('查询')==-1"
+            ></el-date-picker>
+          </div>
+          <el-button
+          :disabled="store.state.authorities.indexOf('查询')==-1"
+            type="primary"
+            icon="el-icon-search"
+            class="search-button"
+            @click="list()"
+          >
+            查询
+          </el-button>
+        </div>
+      </div>
+
+      <!-- <div class="right">
+        <el-button type="primary">导出</el-button>
+      </div> -->
+    </div>
+    <!-- 筛选end -->
+
+    <!-- 表格start -->
+    <el-table :data="tableData" border stripe :header-cell-style="headClass">
+      <!-- <el-table-column prop="xh" label="序号" width="70">
+      </el-table-column> -->
+      <el-table-column prop="nickName" label="用户名"></el-table-column>
+      <el-table-column prop="userName" label="账号"></el-table-column>
+      <el-table-column prop="sex" label="性别" width="100">
+        <template #default="scope">
+          <span>{{ scope.row.sex == 1 ? '男' : '女' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="phonenumber" label="手机号码" min-width="120"></el-table-column>
+      <el-table-column prop="createTime" label="创建时间" min-width="160"></el-table-column>
+      <!-- <el-table-column
+        prop="roles.roleName"
+        label="角色名称"
+       
+      ></el-table-column> -->
+      <el-table-column fixed="right" label="操作" width="180">
+        <template #default="scope">
+          <el-button
+            @click="checkItem(scope.row)"
+            type="text"
+            size="small"
+            class="delete-text"
+          >
+            查看
+          </el-button>
+          <el-button
+          :disabled="store.state.authorities.indexOf('修改')==-1"
+            type="text"
+            size="small"
+            @click.prevent="editRow(scope.row)"
+          >
+            编辑
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 表格end -->
+
+    <!-- 分页start -->
+    <div class="paginationBlock">
+      <el-pagination
+        v-model:currentPage="currentPage"
+        :page-sizes="[15, 20, 25, 30]"
+        :page-size="pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="total"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        background
+      ></el-pagination>
+    </div>
+
+    <!-- 分页end -->
+
+    <!--弹框组件开始-----------------------start-->
+    <dialog-component
+      :dialogTitle="dialogTitle"
+      :itemInfo="tableItem"
+      @closeDialog="closeDialog"
+      :flag="showDialog"
+      v-if="tableItem"
+    ></dialog-component>
+    <!--弹框组件开始-----------------------end-->
+  </div>
+</template>
+
+<script>
+import { useStore } from 'vuex'
+import { defineComponent, ref, reactive, onMounted } from 'vue'
+import * as api from '@/api/systemManage/userManage.js'
+import { ElMessage } from 'element-plus'
+
+import DialogComponent from './dialogComponent'
+
+export default defineComponent({
+  components: { DialogComponent },
+  setup() {
+    const store = useStore()
+    const total = ref(0)
+    const pageSize = ref(10)
+    const currentPage = ref(1)
+
+    const dateTime = ref('')
+
+    const userName = ref('')
+    const phone = ref('')
+    const status = ref('')
+    const role = ref('')
+    const currentPage4 = ref(4)
+    const dialogTitle = ref('')
+    const showDialog = ref(false)
+    const tableData = ref([])
+    const siteIdArr=ref([])
+
+    // // 表头样式设置
+    const headClass = () => {
+      return 'background:#FAFAFA;'
+    }
+
+    const handleSizeChange = (val) => {
+      pageSize.value = val
+      list()
+    }
+    const handleCurrentChange = (val) => {
+      currentPage.value = val
+      list()
+    }
+
+    //用户列表
+    function list() {
+      store.commit('TimeAll_function', dateTime.value)
+      const time = store.state.Time_Data
+      api
+        .list({
+          pageSize: pageSize.value,
+          pageNum: currentPage.value,
+          status: status.value,
+          userName: userName.value,
+          beginTime: time[0],
+          endTime: time[1],
+          // platformAreaName: platformAreaName.value,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            tableData.value = requset.data.rows
+            total.value = requset.data.total
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+
+    const tableItem = reactive([])
+    // 添加操作
+    const addItem = () => {
+      tableItem.value = {
+        nickName: '',
+        userName: '',
+        sex: '1',
+        phonenumber: '',
+        createTime: '',
+        roleName: '',
+        password: '',
+      }
+      dialogTitle.value = '新增'
+      showDialog.value = true
+    }
+
+    // 查看
+    const checkItem = (row) => {
+      siteIdArr.value=[]
+      console.log(row)
+      api.authRole({}, row.userId).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          tableItem.value.roleId= requset.data.user.roles[0].roleId
+          var newArray= requset.data.userSite
+           newArray.forEach(function(item){
+             siteIdArr.value.push(item.siteId)
+
+           })
+           tableItem.value.siteId= siteIdArr.value
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+      tableItem.value = row
+      dialogTitle.value = '查看'
+      showDialog.value = true
+    }
+
+    // 编辑操作
+    const editRow = (row) => {
+      siteIdArr.value=[]
+      console.log(row)
+      api.authRole({}, row.userId).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          tableItem.value.roleId= requset.data.user.roles[0].roleId
+
+           var newArray= requset.data.userSite
+           newArray.forEach(function(item){
+             siteIdArr.value.push(item.siteId)
+
+           })
+           tableItem.value.siteId= siteIdArr.value
+            
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+
+
+      // tableItem.value = row
+      tableItem.value={
+        nickName:row.nickName,
+        userName:row.userName,
+        sex:row.sex,
+        phonenumber:row.phonenumber,
+        password:row.password,
+        createTime:row.createTime,
+        roleId:row.roleId,
+        userId:row.userId
+      }
+
+      dialogTitle.value = '编辑'
+      showDialog.value = true
+    }
+
+    // 关闭操作
+    const closeDialog = () => {
+      showDialog.value = false
+      
+      list()
+    }
+
+    onMounted(() => {
+      list()
+    })
+
+    return {
+      userName,
+      phone,
+      status,
+      role,
+      tableItem,
+      currentPage4,
+      dialogTitle,
+      showDialog,
+      tableData,
+      total,
+      pageSize,
+      currentPage,
+
+      dateTime,
+      store,
+      siteIdArr,
+      list,
+      handleSizeChange,
+      handleCurrentChange,
+      headClass,
+      checkItem,
+      addItem,
+      editRow,
+      closeDialog,
+    }
+  },
+})
+</script>
+
+
+<style lang="scss" scoped>
+</style>

+ 331 - 0
src/views/tenantManage/authConfig/dialogComponent.vue

@@ -0,0 +1,331 @@
+<template>
+  <el-dialog
+    :title="dialogTitle"
+    v-model="dialogVisible"
+    width="640px"
+    @close="closeDialog()"
+    @open="open"
+  >
+    <el-form
+      ref="formInfo"
+      :model="form"
+      class="demo-form-inline userManageDialog"
+      label-width="100px"
+      :rules="rules"
+    >
+      <el-form-item label="用户名:" prop="nickName">
+        <el-input
+          v-model="form.nickName"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="账号:" prop="userName">
+        <el-input
+          v-model="form.userName"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="性别:" prop="sex">
+        <el-radio-group v-model="form.sex" :disabled="dialogTitle === '查看'">
+          <el-radio label="1" value="1">男</el-radio>
+          <el-radio label="2" value="2">女</el-radio>
+        </el-radio-group>
+      </el-form-item>
+
+      <el-form-item label="手机号码:" prop="phonenumber">
+        <el-input
+          v-model="form.phonenumber"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="密码" prop="password" v-if="dialogTitle == '新增'">
+        <el-input
+          v-model="form.password"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+
+      <!-- <el-form-item
+        label="创建时间:"
+        prop="createTime"
+        style="margin-top: 0px"
+      >
+        <el-date-picker
+          v-model="form.createTime"
+          width="100%"
+          type="datetime"
+          placeholder="选择日期时间"
+          :disabled="dialogTitle === '查看'"
+        ></el-date-picker>
+      </el-form-item> -->
+
+      <el-form-item label="角色名称:" prop="roleId">
+        <!-- <el-input v-model="form.roleName"></el-input> -->
+        <el-select
+          v-model="form.roleId"
+          placeholder="请选择"
+          clearable
+          :disabled="dialogTitle === '查看'"
+        >
+          <el-option
+            v-for="(item, index) in roleSelectData"
+            :key="index"
+            :label="item.roleName"
+            :value="item.roleId"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="所属站点:" prop="siteId">
+         <el-select
+              v-model="form.siteId"
+              placeholder="请选择"
+              clearable
+               multiple
+              filterable
+              collapse-tags
+               @change="linkChange()"
+              
+            >
+              <el-option
+                v-for="site in store.state.siteList"
+                :key="site"
+                :label="site.siteName"
+                :value="site.id"
+                
+              ></el-option>
+            </el-select>
+      </el-form-item>
+
+
+      <br />
+      <br />
+      <br />
+      <div style="text-align: right">
+        <el-button @click="closeDialog(0)">取消</el-button>
+        <el-button
+          type="primary"
+          @click="submitForm('formInfo')"
+          :disabled="isDisable"
+          v-if="dialogTitle !== '查看'"
+        >
+          确定
+        </el-button>
+      </div>
+    </el-form>
+  </el-dialog>
+</template>
+
+<script>
+import { defineComponent, ref, onMounted, watchEffect,watch } from 'vue'
+import * as api from '@/api/systemManage/userManage.js'
+import { ElMessage } from 'element-plus'
+import { parseTime, validatorPhone } from '@/utils'
+import { useStore } from 'vuex'
+
+export default defineComponent({
+  name: 'DialogComponent',
+  emits: ['closeDialog'],
+  props: {
+    flag: Boolean,
+    dialogTitle: String,
+    itemInfo: Object,
+  },
+  setup(props, context) {
+    context
+    const store = useStore()
+    const dialogVisible = ref(false)
+    const formInfo = ref(null)
+    const isDisable = ref(false)
+
+    const form = ref([])
+    const roleSelectData = ref([])
+
+    // open(): Dialog弹窗打开之前做的事
+    const open = () => {
+    
+      form.value = props.itemInfo.value
+       console.log('form.value')
+       console.log(form.value)
+      console.log(form.value.siteId)
+    }
+
+  
+
+    // 关闭弹框
+    const closeDialog = () => {
+      resetForm()
+      context.emit('closeDialog', false)
+      dialogVisible.value = false
+    }
+
+    watchEffect((fn, options) => {
+      fn, options
+      dialogVisible.value = props.flag
+    })
+
+    const roleValid = (rule, value, callback) => {
+      rule
+      if (value.length === 0) {
+        callback(new Error('角色不能为空'))
+      } else {
+        callback()
+      }
+    }
+
+    // 保存-修改操作
+    const submitForm = () => {
+      form.value.createTime = parseTime(new Date())
+
+      formInfo.value.validate((valid) => {
+        if (valid) {
+          isDisable.value = true
+           setTimeout(() => {
+                  isDisable.value = false //点击一次时隔两秒后才能再次点击
+                }, 2000)
+          form.value.roleIds = [form.value.roleId] //roleIds 传给后台
+          if (props.dialogTitle === '新增') {
+            api.userAdd(form.value).then((requset) => {
+              if (requset.status === 'SUCCESS') {
+                ElMessage.success({
+                  message: '新增成功',
+                  type: 'success',
+                })
+                setTimeout(() => {
+                  isDisable.value = false //点击一次时隔两秒后才能再次点击
+                }, 2000)
+
+                closeDialog()
+              } else {
+                alert(requset.msg)
+                // ElMessage.error(requset.msg)
+              }
+            })
+          } else {
+            api.userUpdate(form.value).then((requset) => {
+              if (requset.status === 'SUCCESS') {
+                ElMessage.success({
+                  message: '修改成功',
+                  type: 'success',
+                })
+                closeDialog()
+              } else {
+                ElMessage.error(requset.msg)
+              }
+            })
+          }
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    }
+
+    //角色下拉请求
+    function optionselect() {
+      api.optionselect().then((requset) => {
+        if (requset.status === 'SUCCESS') {
+     
+          roleSelectData.value = requset.data
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+    }
+
+    function resetForm() {
+      formInfo.value.resetFields()
+      
+      
+     
+    }
+    function linkChange(){
+
+
+    }
+
+     //监听变化
+    watch(
+      () => props.siteIdArr,
+      (newVal) => {
+        alert(1)
+        newVal
+       
+      }
+    )
+
+    onMounted(() => {
+      optionselect()
+    })
+
+    return {
+      store,
+      linkChange,
+      closeDialog,
+      dialogVisible,
+      roleValid,
+      formInfo,
+      form,
+      roleSelectData,
+      open,
+      submitForm,
+      resetForm,
+      isDisable,
+      rules: {
+       
+        nickName: [
+          { required: true, message: '请输入用户名', trigger: 'blur' },
+          {
+            min: 2,
+
+            message: '用户名长度至少2个字符',
+            trigger: 'blur',
+          },
+        ],
+        userName: [
+          { required: true, message: '请输入账号', trigger: 'blur' },
+          {
+            max: 10,
+            message: '账号最多输入 10 个字符',
+            trigger: 'blur',
+          },
+        ],
+        sex: [{ required: true, message: '请选择性别', trigger: 'change' }],
+        phonenumber: [
+          { required: true, message: '请输入手机号码', trigger: 'blur' },
+          {
+            validator: validatorPhone,
+            message: '输入的电话号码不正确',
+            trigger: 'blur',
+          },
+        ],
+        createTime: [
+          { required: true, message: '请输入创建时间', trigger: 'blur' },
+        ],
+        roleId: [
+          { required: true, message: '请选择角色名称', trigger: 'blur' },
+        ],
+         siteId:  [{ required: true, message: '请选择站点', trigger: 'blur' }],
+        password: [
+          { required: true, message: '请输入密码', trigger: 'blur' },
+          {
+            min: 3,
+            max: 6,
+            message: '长度在 3 到 6 个字符',
+            trigger: 'blur',
+          },
+        ],
+      },
+    }
+  },
+})
+</script>
+ 
+<style scoped lang="scss">
+.el-input,
+.el-select {
+  width: 240px;
+}
+</style>
+<style lang="scss">
+</style>

+ 1 - 1
src/views/tenantManage/userManage/index.vue → src/views/tenantManage/authConfig/index.vue

@@ -4,7 +4,7 @@
     <div class="filter-container mb-10">
       <div class="left">
         <div>
-          <span class="" style="margin-right: 30px">用户管理列表</span>
+          <span class="" style="margin-right: 30px">权限配置待排版444</span>
           <el-button :disabled="store.state.authorities.indexOf('新增')==-1" icon="el-icon-plus" type="success" @click="addItem()">
             新增
           </el-button>

+ 0 - 169
src/views/tenantManage/rolePermission1/addRoleCom.vue

@@ -1,169 +0,0 @@
-<template>
-  <el-dialog
-    :title="dialogTitle"
-    v-model="dialogVisible"
-    width="400px"
-    @close="closeDialog()"
-    @open="open"
-  >
-    <el-form
-      ref="formInfo"
-      :model="form"
-      class="demo-form-inline"
-      label-width="100px"
-      :rules="rules"
-    >
-      <el-form-item label="角色名称:" prop="roleName">
-        <el-input v-model="form.roleName"></el-input>
-      </el-form-item>
-      <el-form-item label="角色权限:" prop="roleKey">
-        <el-input v-model="form.roleKey"></el-input>
-      </el-form-item>
-      <el-form-item label="角色状态:" prop="status">
-        <el-radio-group v-model="form.status">
-          <el-radio label="0" value="0">正常</el-radio>
-          <el-radio label="1" value="1">停用</el-radio>
-        </el-radio-group>
-      </el-form-item>
-
-      <el-form-item label="角色排序:" prop="roleSort">
-        <el-input-number
-          v-model="form.roleSort"
-          controls-position="right"
-          :min="0"
-          :max="255"
-        ></el-input-number>
-      </el-form-item>
-
-      <div style="text-align: right">
-        <el-button type="primary" @click="submitForm('formInfo')">
-          保存
-        </el-button>
-      </div>
-    </el-form>
-  </el-dialog>
-</template>
-<script>
-import { defineComponent, ref, watchEffect } from 'vue'
-import * as api from '@/api/systemManage/rolePermission.js'
-import { ElMessage } from 'element-plus'
-
-export default defineComponent({
-  name: 'AddRoleCom',
-  emits: ['closeDialog'],
-  props: {
-    flag: Boolean,
-    dialogTitle: String,
-    itemInfo: Object,
-  },
-  setup(props, context) {
-    context
-
-    const dialogVisible = ref(false)
-    const formInfo = ref(null)
-
-    const form = ref([])
-
-    // open(): Dialog弹窗打开之前做的事
-    const open = () => {
-      console.log('')
-      form.value = props.itemInfo.value
-      console.log()
-    }
-
-    // 关闭弹框
-    const closeDialog = () => {
-      context.emit('closeDialog', false)
-      dialogVisible.value = false
-
-      
-    }
-
-    watchEffect((fn) => {
-      fn
-      dialogVisible.value = props.flag
-    })
-
-    const roleValid = (rule, value, callback) => {
-      rule
-      if (value.length === 0) {
-        callback(new Error('角色不能为空'))
-      } else {
-        callback()
-      }
-    }
-
-    // 保存-修改操作
-    const submitForm = () => {
-      console.log(formInfo)
-      formInfo.value.validate((valid) => {
-        if (valid) {
-          // 走保存请求
-          if (props.dialogTitle === '角色新增') {
-            api.roleAdd(form.value).then((requset) => {
-              if (requset.status === 'SUCCESS') {
-                ElMessage.success({
-                  message: '新增成功',
-                  type: 'success',
-                })
-                closeDialog()
-
-
-                //角色新增成功后,提交全选按钮权限给后台
-
-
-
-
-              } else {
-                ElMessage.error(requset.msg)
-              }
-            })
-          } else {
-              // alert('修改')
-            api.roleUpdate(form.value).then((requset) => {
-            
-              if (requset.status === 'SUCCESS') {
-                ElMessage.success({
-                  message: '修改成功',
-                  type: 'success',
-                })
-                
-                closeDialog()
-              } else {
-                ElMessage.error(requset.msg)
-              }
-            })
-          }
-        } else {
-          console.log('error submit!!')
-          return false
-        }
-      })
-    }
-
-    return {
-      closeDialog,
-      dialogVisible,
-      roleValid,
-      formInfo,
-      form,
-      open,
-      submitForm,
-      rules: {
-        roleName: [
-          { required: true, message: '请输入角色名称', trigger: 'blur' },
-        ],
-        roleKey: [
-          { required: true, message: '请输入角色权限', trigger: 'blur' },
-        ],
-        status: [
-          { required: true, message: '请选择角色状态', trigger: 'change' },
-        ],
-      },
-    }
-  },
-})
-</script>
- 
-<style scoped lang="scss">
-</style>

+ 0 - 297
src/views/tenantManage/rolePermission1/index.vue

@@ -1,297 +0,0 @@
-<template>
-  <div class="app-container page-nesting" style="position: relative">
-    <!-- 左侧start -->
-    <div class="grid-content treeDom roleLeft">
-      <div style="" class="mb-20 addBox">
-        <b>角色类型</b>
-        <el-button type="success" @click="addRole()" :disabled="store.state.authorities.indexOf('新增')==-1">新增</el-button>
-        <el-button type="primary" @click="editRole()" :disabled="store.state.authorities.indexOf('修改')==-1">修改</el-button>
-      </div>
-      <el-radio-group v-model="radio1">
-        <el-radio-button
-          @change="listTabsChange(radio1, item)"
-          v-for="(item, index) in roleData"
-          :label="item.roleId"
-          :key="index"
-        >
-          <img src="@/assets/images/userIcon.svg" />
-          {{ item.roleName }}
-          <i v-if="store.state.authorities.indexOf('删除')!=-1" class="el-icon-delete" @click="deleteRoleItem(item)"></i>
-        </el-radio-button>
-      </el-radio-group>
-    </div>
-    <!-- 左侧end -->
-
-    <!-- 右侧表格start -->
-    <div class="grid-content nestingDom" style="width: calc(100% - 300px)">
-      <role-info-com
-        class="basicInfo"
-        style="height: calc(100vh - 140px)"
-        v-if="menuData.length > 0&&menuData2.length > 0"
-        :menuData="menuData"
-        :menuData2="menuData2"
-        :checkedKeys="checkedKeys"
-        :objItem="objItem"
-        :radio1="radio1"
-      ></role-info-com>
-    </div>
-    <!-- 右侧表格end -->
-
-    <!-- 新建角色start -->
-    <add-role-com
-      :dialog-title="dialogTitle"
-      :itemInfo="tableItem"
-      @closeDialog="closeDialog"
-      :flag="showDialog"
-     
-    ></add-role-com>
-    <!-- 新建角色end -->
-  </div>
-</template>
-
-<script>
-import { defineComponent, ref, reactive, onMounted } from 'vue'
-import * as api from '@/api/systemManage/rolePermission.js'
-import { ElMessage } from 'element-plus'
-
-import roleInfoCom from './roleInfoCom'
-import addRoleCom from './addRoleCom'
-import { useStore } from 'vuex'
-
-export default defineComponent({
-  components: { roleInfoCom, addRoleCom },
-  setup() {
-    const store = useStore()
-    const radio1 = ref('1')
-    const showDialog = ref(false)
-    const roleData = ref([])
-    const menuData = ref([])
-    const menuData2 = ref([])
-    const newMenuData = ref([])
-    const checkedKeys = ref([])
-    const objItem = ref({})
-
-    const dialogTitle = ref('')
-
-    // 删除左侧角色列表
-    function deleteRoleItem(item) {
-      // item
-      // console.log(radio1.value)
-      // console.log(item.roleId)
-      // this.roleData.splice(params, 1)
-
-      api.roleDelete({}, item.roleId).then((requset) => {
-        if (requset.status === 'SUCCESS') {
-          ElMessage.success({
-            message: '删除成功',
-            type: 'success',
-          })
-          roleList()
-        } else {
-          ElMessage.error(requset.msg)
-        }
-      })
-    }
-
-    // 新增角色
-    const tableItem = reactive([])
-
-    function addRole() {
-      // alert('新增')
-      tableItem.value = {
-        roleName: '',
-        roleKey: '',
-        status: '',
-        roleSort: 1,
-      }
-      dialogTitle.value = '角色新增'
-      showDialog.value = true
-    }
-
-    // 修改角色
-    function editRole() {
-      // alert('修改')
-      // console.log(radio1.value)
-      api.roleDetail({}, radio1.value).then((requset) => {
-        if (requset.status === 'SUCCESS') {
-          tableItem.value = {
-            roleName: requset.data.roleName,
-            roleKey: requset.data.roleKey,
-            status: requset.data.status,
-            roleSort: Number(requset.data.roleSort),
-            roleId: requset.data.roleId,
-          }
-
-          dialogTitle.value = '角色修改'
-          showDialog.value = true
-        } else {
-          ElMessage.error(requset.msg)
-        }
-      })
-    }
-
-    const listTabsChange = (value, item) => {
-      // console.log('value')
-      console.log(radio1.value)
-      radio1.value = value
-      objItem.value = item
-      // console.log('objItem.value')
-      // console.log(objItem.value)
-      roleMenuTreeselect()
-      getAuthorityTable()
-
-    }
-    
-
-    // 表格树结构渲染
-    function roleMenuTreeselect() {
-      menuData.value = []
-      api.roleMenuTreeselect({}, radio1.value).then((requset) => {
-        if (requset.code == 200) {
-          menuData.value = requset.data.menus
-          // getTreeData2(menuData.value) //对树结构返回值进行重组
-          checkedKeys.value = requset.data.checkedKeys
-
-          //当返回值没有选中菜单时,否
-          if (!checkedKeys.value.length) {
-            menuData.value.map((item) => {
-              item.authority2 = '0'
-            })
-
-            if (radio1.value == 1) {
-              menuData.value.map(function (item) {
-                checkedKeys.value.push(item.id)
-                checkedKeys.value.map(function (num) {
-                  if (JSON.stringify(item).indexOf(num) != -1) {
-                    item.authority2 = '1'
-                  }
-                })
-              })
-            }
-          } else {
-            menuData.value.map(function (item) {
-              item.authority2 = '0'
-              checkedKeys.value.map(function (num) {
-                if (JSON.stringify(item).indexOf(num) != -1) {
-                  item.authority2 = '1'
-                }
-              })
-            })
-          }
-        } else {
-          ElMessage.error(requset.msg)
-        }
-      })
-    }
-
-    //小吉新接口渲染右侧表格树数据
-    function getAuthorityTable() {
-      menuData2.value = []
-      api.getAuthorityTable({roleId:radio1.value}).then((requset) => {
-        if (requset.code == 200) {
-          menuData2.value = requset.data
-        } else {
-          ElMessage.error(requset.msg)
-        }
-      })
-    }
-
-
-    function getTreeData2(data) {
-      for (var i = 0; i < data.length; i++) {
-        if (data[i].label == data[i].children[0].label) {
-          // console.log(data[i].label)
-          data[i].children = data[i].children[0].children
-        }
-      }
-      return data
-    }
-
-    // 关闭弹框操作
-    const closeDialog = () => {
-      showDialog.value = false
-      roleList()
-      console.log('1111aaa'+radio1.value)
-    }
-    //角色列表
-    function roleList() {
-
-      api.roleList().then((requset) => {
-        if (requset.code === 200) {
-          roleData.value = requset.rows
-          // var item = requset.rows[0]
-          // objItem.value = {
-          //   roleSort: item.roleSort,
-          //   roleKey: item.roleKey,
-          //   roleName: item.roleName,
-          // }
-        } else {
-          ElMessage.error(requset.msg)
-        }
-      })
-    }
-
- 
-    onMounted(() => {
-
-      roleList()
-      roleMenuTreeselect()
-      getAuthorityTable()
-    })
-
-    return {
-      radio1,
-      showDialog,
-      roleData,
-      dialogTitle,
-      tableItem,
-      menuData,
-      menuData2,
-      newMenuData,
-      checkedKeys,
-      listTabsChange,
-      roleMenuTreeselect,
-      getAuthorityTable,
-      deleteRoleItem,
-      addRole,
-      editRole,
-      closeDialog,
-      objItem,
-      getTreeData2,
-      store,
-      
-    }
-  },
-})
-</script>
-
-<style scoped lang="scss">
-.el-button + .el-button {
-  margin-left: 0;
-}
-.app-container.page-nesting {
-  padding: 0;
-  background: rgba(0, 0, 0, 0);
-}
-.grid-content {
-  background: #fff;
-  height: calc(100vh - 140px);
-  overflow-y: auto;
-}
-.el-input__inner {
-  border-radius: 20px !important;
-}
-.treeDom {
-  width: 270px;
-  position: absolute;
-  left: 0;
-  // margin-left: 20px;
-  padding: 15px;
-  // min-height: calc(100vh - 130px);
-  height: calc(100vh - 140px);
-
-}
-.nestingDom {
-  margin-left: 285px;
-}
-</style>

+ 0 - 122
src/views/tenantManage/rolePermission1/roleInfoCom/index-old.vue

@@ -1,122 +0,0 @@
-<template>
-  <div class="siteManage-main roleInfoPage">
-    <div style="text-align: right; margin-bottom: 20px">
-      <!-- <el-button type="success" >新增</el-button> -->
-      <el-button type="primary" @click="saveMenu()">保存</el-button>
-    </div>
-
-    <el-table :data="menuData" border stripe>
-      <el-table-column prop="label" label="菜单" width="180"></el-table-column>
-      <el-table-column prop="authority2" label="权限" class="roleLeft">
-        <template #default="scope">
-          <el-radio-group
-            v-model="scope.row.authority2"
-            @change="listTabsChange(scope.row)"
-          >
-            <el-radio label="1" :disabled="radio1 == 1 ? true : false">
-              是
-            </el-radio>
-            <el-radio label="0" :disabled="radio1 == 1 ? true : false">
-              否
-            </el-radio>
-          </el-radio-group>
-        </template>
-      </el-table-column>
-    </el-table>
-  </div>
-</template>
-
-<script>
-import { defineComponent, ref, onMounted, watch } from 'vue'
-import * as api from '@/api/systemManage/rolePermission.js'
-import { ElMessage } from 'element-plus'
-
-export default defineComponent({
-  name: 'RoleInfoCom',
-  props: ['menuData', 'objItem', 'radio1'],
-
-  // props: {
-  //   menuData: Object,
-  //   objItem: Object,
-  //   radio1: String,
-  // },
-
-  setup(props) {
-    const aa = ref([])
-    const saveArr = ref([])
-
-    function saveMenu() {
-   
-
-
-
-      api
-        .saveMenu({
-          menuIds: saveArr.value,
-          roleId: props.radio1,
-          roleKey: props.objItem.roleKey,
-          roleName: props.objItem.roleName,
-          roleSort: props.objItem.roleSort,
-        })
-        .then((requset) => {
-          if (requset.status === 'SUCCESS') {
-            ElMessage.success({
-              message: '权限修改成功',
-              type: 'success',
-            })
-          } else {
-            ElMessage.error(requset.msg)
-          }
-        })
-    }
-
-    const listTabsChange = (value) => {
-      saveArr.value = []
-      value
-
-
-      props.menuData.forEach(function (item) {
-        if (item.authority2 == '1') {
-          saveArr.value.push(item.id)
-          var aa = item.children
-          aa.forEach(function (item) {
-              saveArr.value.push(item.id)
-            
-          })
-        }
-      })
-   
-    }
-
-    onMounted(() => {})
-    //监听变化
-    watch(
-      () => props.radio1,
-      (newVal) => {
-        newVal
-
-     
-        // if (newVal == '1') {
-        //   alert(1)
-        //   props.menuData.forEach(function (item) {
-        //     item.authority2 = '1'
-        //     saveArr.value.push(item.id)
-        //   })
-        //   console.log(' 22props.menuData')
-        //   console.log(props.menuData)
-        // }
-      }
-    )
-
-    return {
-      saveMenu,
-      aa,
-      listTabsChange,
-      saveArr,
-    }
-  },
-})
-</script>
-
-<style  lang="scss">
-</style>

+ 0 - 129
src/views/tenantManage/rolePermission1/roleInfoCom/index-old2.vue

@@ -1,129 +0,0 @@
-<template>
-  <div class="siteManage-main roleInfoPage">
-    <div style="text-align: right; margin-bottom: 20px">
-      <!-- <el-button type="success" >新增</el-button> -->
-      <el-button
-        type="primary"
-        @click="saveMenu()"
-        :disabled="radio1 == 1 ? true : false"
-      >
-        保存
-      </el-button>
-    </div>
-
-  
-
-    <!-- 带复选框的树结构 start -->
-
-    <el-tree
-      ref="box"
-      :data="menuData"
-      show-checkbox
-      node-key="id"
-      :default-checked-keys="checkedKeys"
-      :props="defaultProps"
-      check-strictly="false"
-      @check="currentChecked"
-    />
-
-    <!-- 带复选框的树结构 end -->
-  </div>
-</template>
-
-<script>
-import { defineComponent, ref, onMounted, watch } from 'vue'
-import * as api from '@/api/systemManage/rolePermission.js'
-import { ElMessage } from 'element-plus'
-
-export default defineComponent({
-  name: 'RoleInfoCom',
-  props: ['menuData', 'objItem', 'radio1', 'checkedKeys'],
-
-  setup(props) {
-    let box = ref(null)
-    const aa = ref([])
-    const saveArr = ref([])
-    function currentChecked(nodeObj, SelectedObj) {
-      saveArr.value = SelectedObj.checkedKeys
-      console.log('saveArr.value')
-      console.log(saveArr.value)
-      // console.log(SelectedObj.checkedNodes)  // 这是选中的节点数组
-    }
-
-    function saveMenu() {
-      api
-        .saveMenu({
-          menuIds: saveArr.value,
-          roleId: props.radio1,
-          roleKey: props.objItem.roleKey,
-          roleName: props.objItem.roleName,
-          roleSort: props.objItem.roleSort,
-        })
-        .then((requset) => {
-          if (requset.status === 'SUCCESS') {
-            ElMessage.success({
-              message: '权限修改成功',
-              type: 'success',
-            })
-          } else {
-            ElMessage.error(requset.msg)
-          }
-        })
-    }
-
-  
-
-    // start
-
-    function getTreeData(data) {
-      // 第二种 修改涉及级联选择器 最后一个空白的情况
-      // 循环遍历json数据
-      for (var i = 0; i < data.length; i++) {
-        data[i]['disabled'] = true
-        if (!data[i].children) {
-          // children若为空数组,则不作操作
-        } else {
-          // children若不为空数组,则继续 递归调用 本方法
-          getTreeData(data[i].children)
-        }
-      }
-      return data
-    }
-
- 
-
-    // end
-
-    onMounted(() => {
-      saveArr.value = props.checkedKeys
-      if (props.radio1 == 1) {
-        getTreeData(props.menuData)
-        console.log('box.value', box.value)
-        // box.value.setCheckedNodes(props.menuData)   //全选
-      }
-    })
-    //监听变化
-    watch(
-      () => props.radio1,
-      (newVal) => {
-        newVal
-
-        
-      }
-    )
-
-    return {
-      saveMenu,
-      aa,
-      saveArr,
-
-      currentChecked,
-      getTreeData,
-      box,
-    }
-  },
-})
-</script>
-
-<style  lang="scss">
-</style>

+ 0 - 177
src/views/tenantManage/rolePermission1/roleInfoCom/index.vue

@@ -1,177 +0,0 @@
-<template>
-  <div class="siteManage-main roleInfoPage">
-    <el-table
-      :data="menuData2"
-      border
-      stripe
-      :cell-style="cellStyle"
-      row-key="id"
-      default-expand-all
-    >
-      <el-table-column prop="menu" label="菜单" width="180"></el-table-column>
-      <el-table-column
-        prop="authority"
-        label="权限  (不勾选查询按钮,此菜单无法查看)"
-        align="left"
-        class="roleLeft"
-      >
-        <template #default="scope">
-          <el-checkbox
-            v-for="item in scope.row.authority"
-            :label="item.name"
-            :key="item.actionid"
-            v-model="item.checked"
-            :disabled="
-              radio1 == 1 || scope.row.menu == '权限管理' ? true : false
-            "
-            @change="handleCheckedChange"
-          ></el-checkbox>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <div style="text-align: right; margin-top: 20px">
-      <el-button
-        type="primary"
-        @click="saveMenu()"
-        :disabled="radio1 == 1 ? true : false"
-      >
-        保存
-      </el-button>
-    </div>
-  </div>
-</template>
-
-
-<script>
-import { defineComponent, ref, onMounted, watch } from 'vue'
-import * as api from '@/api/systemManage/rolePermission.js'
-import { ElMessage } from 'element-plus'
-export default defineComponent({
-  name: 'RoleInfoCom',
-  props: ['menuData', 'menuData2', 'objItem', 'radio1', 'checkedKeys'],
-
-  setup(props) {
-    const saveArr = ref([])
-    const checkedArr = ref([])
-
-    function cellStyle({ row, column, rowIndex, columnIndex }) {
-      row, column, rowIndex
-      if (columnIndex) {
-        return `text-align:left!important;cursor:pointer;`
-      }
-    }
-
-    function saveMenu() {
-      console.log('checkedArr')
-      console.log(checkedArr.value)
-
-      if (checkedArr.value.length == 0) {
-        ElMessage.warning('菜单权限不能为空! 请至少选择一个菜单查询权限')
-        return
-      }
-      api
-        .saveMenu({
-          menuIds: checkedArr.value,
-          roleId: props.radio1,
-          roleKey: props.objItem.roleKey,
-          roleName: props.objItem.roleName,
-          roleSort: props.objItem.roleSort,
-        })
-        .then((requset) => {
-          if (requset.status === 'SUCCESS') {
-            ElMessage.success({
-              message: '权限修改成功',
-              type: 'success',
-            })
-          } else {
-            ElMessage.error(requset.msg)
-          }
-        })
-    }
-
-    function getTreeData(data) {
-      // 循环遍历json数据
-      for (var i = 0; i < data.length; i++) {
-        data[i]['disabled'] = true
-        if (!data[i].children) {
-          // children若为空数组,则不作操作
-        } else {
-          // children若不为空数组,则继续 递归调用 本方法
-          getTreeData(data[i].children)
-        }
-      }
-      return data
-    }
-    function handleCheckedChange() {
-      checkedArr.value = []
-      getCheckedArr()
-    }
-
-    // 复选框选中的数组集合start
-    function getCheckedArr() {
-      props.menuData2.forEach(function (item) {
-        if (item.children) {
-          item.children.forEach(function (a) {
-            if (a.authority[0].checked) {
-              a.authority.forEach(function (i) {
-                 if (i.checked) {
-                  checkedArr.value.push(i.id)
-                }
-              })
-            }
-          })
-        } else {
-          // 如果查询的id被选中,那么塞入数组
-          if (item.authority[0].checked) {
-            item.authority.forEach(function (i) {
-              if (i.checked) {
-                checkedArr.value.push(i.id)
-              }
-            })
-          }
-        }
-      })
-      console.log('checkedArr.value')
-      console.log(checkedArr.value)
-    }
-
-    onMounted(() => {
-      getCheckedArr()
-    })
-
-    //监听变化
-    watch(
-      () => props.radio1,
-      (newVal) => {
-        newVal
-        // checkedArr.value=[]
-      }
-    )
-
-    return {
-      cellStyle,
-      saveMenu,
-      saveArr,
-      getCheckedArr,
-      getTreeData,
-      checkedArr,
-      handleCheckedChange,
-    }
-  },
-})
-</script>
-
-
-<style  lang="scss" >
-.roleInfoPage .el-table .cell {
-  text-align: left !important;
-}
-
-.el-table [class*='el-table__row--level'] .el-table__expand-icon {
-  display: none !important;
-}
-.el-table__indent {
-  padding-left: 10px !important;
-}
-</style>

+ 331 - 0
src/views/tenantManage/systemConfig/dialogComponent.vue

@@ -0,0 +1,331 @@
+<template>
+  <el-dialog
+    :title="dialogTitle"
+    v-model="dialogVisible"
+    width="640px"
+    @close="closeDialog()"
+    @open="open"
+  >
+    <el-form
+      ref="formInfo"
+      :model="form"
+      class="demo-form-inline userManageDialog"
+      label-width="100px"
+      :rules="rules"
+    >
+      <el-form-item label="用户名:" prop="nickName">
+        <el-input
+          v-model="form.nickName"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="账号:" prop="userName">
+        <el-input
+          v-model="form.userName"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="性别:" prop="sex">
+        <el-radio-group v-model="form.sex" :disabled="dialogTitle === '查看'">
+          <el-radio label="1" value="1">男</el-radio>
+          <el-radio label="2" value="2">女</el-radio>
+        </el-radio-group>
+      </el-form-item>
+
+      <el-form-item label="手机号码:" prop="phonenumber">
+        <el-input
+          v-model="form.phonenumber"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="密码" prop="password" v-if="dialogTitle == '新增'">
+        <el-input
+          v-model="form.password"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+
+      <!-- <el-form-item
+        label="创建时间:"
+        prop="createTime"
+        style="margin-top: 0px"
+      >
+        <el-date-picker
+          v-model="form.createTime"
+          width="100%"
+          type="datetime"
+          placeholder="选择日期时间"
+          :disabled="dialogTitle === '查看'"
+        ></el-date-picker>
+      </el-form-item> -->
+
+      <el-form-item label="角色名称:" prop="roleId">
+        <!-- <el-input v-model="form.roleName"></el-input> -->
+        <el-select
+          v-model="form.roleId"
+          placeholder="请选择"
+          clearable
+          :disabled="dialogTitle === '查看'"
+        >
+          <el-option
+            v-for="(item, index) in roleSelectData"
+            :key="index"
+            :label="item.roleName"
+            :value="item.roleId"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="所属站点:" prop="siteId">
+         <el-select
+              v-model="form.siteId"
+              placeholder="请选择"
+              clearable
+               multiple
+              filterable
+              collapse-tags
+               @change="linkChange()"
+              
+            >
+              <el-option
+                v-for="site in store.state.siteList"
+                :key="site"
+                :label="site.siteName"
+                :value="site.id"
+                
+              ></el-option>
+            </el-select>
+      </el-form-item>
+
+
+      <br />
+      <br />
+      <br />
+      <div style="text-align: right">
+        <el-button @click="closeDialog(0)">取消</el-button>
+        <el-button
+          type="primary"
+          @click="submitForm('formInfo')"
+          :disabled="isDisable"
+          v-if="dialogTitle !== '查看'"
+        >
+          确定
+        </el-button>
+      </div>
+    </el-form>
+  </el-dialog>
+</template>
+
+<script>
+import { defineComponent, ref, onMounted, watchEffect,watch } from 'vue'
+import * as api from '@/api/systemManage/userManage.js'
+import { ElMessage } from 'element-plus'
+import { parseTime, validatorPhone } from '@/utils'
+import { useStore } from 'vuex'
+
+export default defineComponent({
+  name: 'DialogComponent',
+  emits: ['closeDialog'],
+  props: {
+    flag: Boolean,
+    dialogTitle: String,
+    itemInfo: Object,
+  },
+  setup(props, context) {
+    context
+    const store = useStore()
+    const dialogVisible = ref(false)
+    const formInfo = ref(null)
+    const isDisable = ref(false)
+
+    const form = ref([])
+    const roleSelectData = ref([])
+
+    // open(): Dialog弹窗打开之前做的事
+    const open = () => {
+    
+      form.value = props.itemInfo.value
+       console.log('form.value')
+       console.log(form.value)
+      console.log(form.value.siteId)
+    }
+
+  
+
+    // 关闭弹框
+    const closeDialog = () => {
+      resetForm()
+      context.emit('closeDialog', false)
+      dialogVisible.value = false
+    }
+
+    watchEffect((fn, options) => {
+      fn, options
+      dialogVisible.value = props.flag
+    })
+
+    const roleValid = (rule, value, callback) => {
+      rule
+      if (value.length === 0) {
+        callback(new Error('角色不能为空'))
+      } else {
+        callback()
+      }
+    }
+
+    // 保存-修改操作
+    const submitForm = () => {
+      form.value.createTime = parseTime(new Date())
+
+      formInfo.value.validate((valid) => {
+        if (valid) {
+          isDisable.value = true
+           setTimeout(() => {
+                  isDisable.value = false //点击一次时隔两秒后才能再次点击
+                }, 2000)
+          form.value.roleIds = [form.value.roleId] //roleIds 传给后台
+          if (props.dialogTitle === '新增') {
+            api.userAdd(form.value).then((requset) => {
+              if (requset.status === 'SUCCESS') {
+                ElMessage.success({
+                  message: '新增成功',
+                  type: 'success',
+                })
+                setTimeout(() => {
+                  isDisable.value = false //点击一次时隔两秒后才能再次点击
+                }, 2000)
+
+                closeDialog()
+              } else {
+                alert(requset.msg)
+                // ElMessage.error(requset.msg)
+              }
+            })
+          } else {
+            api.userUpdate(form.value).then((requset) => {
+              if (requset.status === 'SUCCESS') {
+                ElMessage.success({
+                  message: '修改成功',
+                  type: 'success',
+                })
+                closeDialog()
+              } else {
+                ElMessage.error(requset.msg)
+              }
+            })
+          }
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    }
+
+    //角色下拉请求
+    function optionselect() {
+      api.optionselect().then((requset) => {
+        if (requset.status === 'SUCCESS') {
+     
+          roleSelectData.value = requset.data
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+    }
+
+    function resetForm() {
+      formInfo.value.resetFields()
+      
+      
+     
+    }
+    function linkChange(){
+
+
+    }
+
+     //监听变化
+    watch(
+      () => props.siteIdArr,
+      (newVal) => {
+        alert(1)
+        newVal
+       
+      }
+    )
+
+    onMounted(() => {
+      optionselect()
+    })
+
+    return {
+      store,
+      linkChange,
+      closeDialog,
+      dialogVisible,
+      roleValid,
+      formInfo,
+      form,
+      roleSelectData,
+      open,
+      submitForm,
+      resetForm,
+      isDisable,
+      rules: {
+       
+        nickName: [
+          { required: true, message: '请输入用户名', trigger: 'blur' },
+          {
+            min: 2,
+
+            message: '用户名长度至少2个字符',
+            trigger: 'blur',
+          },
+        ],
+        userName: [
+          { required: true, message: '请输入账号', trigger: 'blur' },
+          {
+            max: 10,
+            message: '账号最多输入 10 个字符',
+            trigger: 'blur',
+          },
+        ],
+        sex: [{ required: true, message: '请选择性别', trigger: 'change' }],
+        phonenumber: [
+          { required: true, message: '请输入手机号码', trigger: 'blur' },
+          {
+            validator: validatorPhone,
+            message: '输入的电话号码不正确',
+            trigger: 'blur',
+          },
+        ],
+        createTime: [
+          { required: true, message: '请输入创建时间', trigger: 'blur' },
+        ],
+        roleId: [
+          { required: true, message: '请选择角色名称', trigger: 'blur' },
+        ],
+         siteId:  [{ required: true, message: '请选择站点', trigger: 'blur' }],
+        password: [
+          { required: true, message: '请输入密码', trigger: 'blur' },
+          {
+            min: 3,
+            max: 6,
+            message: '长度在 3 到 6 个字符',
+            trigger: 'blur',
+          },
+        ],
+      },
+    }
+  },
+})
+</script>
+ 
+<style scoped lang="scss">
+.el-input,
+.el-select {
+  width: 240px;
+}
+</style>
+<style lang="scss">
+</style>

+ 320 - 0
src/views/tenantManage/systemConfig/index.vue

@@ -0,0 +1,320 @@
+<template>
+  <div class="app-container">
+    <!-- 筛选start -->
+    <div class="filter-container mb-10">
+      <div class="left">
+        <div>
+          <span class="" style="margin-right: 30px">系统配置待排版333</span>
+          <el-button :disabled="store.state.authorities.indexOf('新增')==-1" icon="el-icon-plus" type="success" @click="addItem()">
+            新增
+          </el-button>
+        </div>
+        <div style="margin-top: 20px">
+          <div class="filter-item">
+            账号:
+            <el-input
+              v-model="userName"
+              placeholder="请输入内容"
+              style="width: 180px"
+               :disabled="store.state.authorities.indexOf('查询')==-1"
+            ></el-input>
+          </div>
+
+          <div class="filter-item">
+            账号状态:
+            <el-select
+              v-model="status"
+              placeholder="请选择"
+              style="width: 150px"
+              clearable
+               :disabled="store.state.authorities.indexOf('查询')==-1"
+            >
+              <el-option label="正常" value="0"></el-option>
+              <el-option label="停用" value="1"></el-option>
+            </el-select>
+          </div>
+
+          <div class="filter-item planOutage">
+            选择时间范围:
+            <el-date-picker
+              v-model="dateTime"
+              type="datetimerange"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              style="width: auto"
+               :disabled="store.state.authorities.indexOf('查询')==-1"
+            ></el-date-picker>
+          </div>
+          <el-button
+          :disabled="store.state.authorities.indexOf('查询')==-1"
+            type="primary"
+            icon="el-icon-search"
+            class="search-button"
+            @click="list()"
+          >
+            查询
+          </el-button>
+        </div>
+      </div>
+
+      <!-- <div class="right">
+        <el-button type="primary">导出</el-button>
+      </div> -->
+    </div>
+    <!-- 筛选end -->
+
+    <!-- 表格start -->
+    <el-table :data="tableData" border stripe :header-cell-style="headClass">
+      <!-- <el-table-column prop="xh" label="序号" width="70">
+      </el-table-column> -->
+      <el-table-column prop="nickName" label="用户名"></el-table-column>
+      <el-table-column prop="userName" label="账号"></el-table-column>
+      <el-table-column prop="sex" label="性别" width="100">
+        <template #default="scope">
+          <span>{{ scope.row.sex == 1 ? '男' : '女' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="phonenumber" label="手机号码" min-width="120"></el-table-column>
+      <el-table-column prop="createTime" label="创建时间" min-width="160"></el-table-column>
+      <!-- <el-table-column
+        prop="roles.roleName"
+        label="角色名称"
+       
+      ></el-table-column> -->
+      <el-table-column fixed="right" label="操作" width="180">
+        <template #default="scope">
+          <el-button
+            @click="checkItem(scope.row)"
+            type="text"
+            size="small"
+            class="delete-text"
+          >
+            查看
+          </el-button>
+          <el-button
+          :disabled="store.state.authorities.indexOf('修改')==-1"
+            type="text"
+            size="small"
+            @click.prevent="editRow(scope.row)"
+          >
+            编辑
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 表格end -->
+
+    <!-- 分页start -->
+    <div class="paginationBlock">
+      <el-pagination
+        v-model:currentPage="currentPage"
+        :page-sizes="[15, 20, 25, 30]"
+        :page-size="pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="total"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        background
+      ></el-pagination>
+    </div>
+
+    <!-- 分页end -->
+
+    <!--弹框组件开始-----------------------start-->
+    <dialog-component
+      :dialogTitle="dialogTitle"
+      :itemInfo="tableItem"
+      @closeDialog="closeDialog"
+      :flag="showDialog"
+      v-if="tableItem"
+    ></dialog-component>
+    <!--弹框组件开始-----------------------end-->
+  </div>
+</template>
+
+<script>
+import { useStore } from 'vuex'
+import { defineComponent, ref, reactive, onMounted } from 'vue'
+import * as api from '@/api/systemManage/userManage.js'
+import { ElMessage } from 'element-plus'
+
+import DialogComponent from './dialogComponent'
+
+export default defineComponent({
+  components: { DialogComponent },
+  setup() {
+    const store = useStore()
+    const total = ref(0)
+    const pageSize = ref(10)
+    const currentPage = ref(1)
+
+    const dateTime = ref('')
+
+    const userName = ref('')
+    const phone = ref('')
+    const status = ref('')
+    const role = ref('')
+    const currentPage4 = ref(4)
+    const dialogTitle = ref('')
+    const showDialog = ref(false)
+    const tableData = ref([])
+    const siteIdArr=ref([])
+
+    // // 表头样式设置
+    const headClass = () => {
+      return 'background:#FAFAFA;'
+    }
+
+    const handleSizeChange = (val) => {
+      pageSize.value = val
+      list()
+    }
+    const handleCurrentChange = (val) => {
+      currentPage.value = val
+      list()
+    }
+
+    //用户列表
+    function list() {
+      store.commit('TimeAll_function', dateTime.value)
+      const time = store.state.Time_Data
+      api
+        .list({
+          pageSize: pageSize.value,
+          pageNum: currentPage.value,
+          status: status.value,
+          userName: userName.value,
+          beginTime: time[0],
+          endTime: time[1],
+          // platformAreaName: platformAreaName.value,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            tableData.value = requset.data.rows
+            total.value = requset.data.total
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+
+    const tableItem = reactive([])
+    // 添加操作
+    const addItem = () => {
+      tableItem.value = {
+        nickName: '',
+        userName: '',
+        sex: '1',
+        phonenumber: '',
+        createTime: '',
+        roleName: '',
+        password: '',
+      }
+      dialogTitle.value = '新增'
+      showDialog.value = true
+    }
+
+    // 查看
+    const checkItem = (row) => {
+      siteIdArr.value=[]
+      console.log(row)
+      api.authRole({}, row.userId).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          tableItem.value.roleId= requset.data.user.roles[0].roleId
+          var newArray= requset.data.userSite
+           newArray.forEach(function(item){
+             siteIdArr.value.push(item.siteId)
+
+           })
+           tableItem.value.siteId= siteIdArr.value
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+      tableItem.value = row
+      dialogTitle.value = '查看'
+      showDialog.value = true
+    }
+
+    // 编辑操作
+    const editRow = (row) => {
+      siteIdArr.value=[]
+      console.log(row)
+      api.authRole({}, row.userId).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          tableItem.value.roleId= requset.data.user.roles[0].roleId
+
+           var newArray= requset.data.userSite
+           newArray.forEach(function(item){
+             siteIdArr.value.push(item.siteId)
+
+           })
+           tableItem.value.siteId= siteIdArr.value
+            
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+
+
+      // tableItem.value = row
+      tableItem.value={
+        nickName:row.nickName,
+        userName:row.userName,
+        sex:row.sex,
+        phonenumber:row.phonenumber,
+        password:row.password,
+        createTime:row.createTime,
+        roleId:row.roleId,
+        userId:row.userId
+      }
+
+      dialogTitle.value = '编辑'
+      showDialog.value = true
+    }
+
+    // 关闭操作
+    const closeDialog = () => {
+      showDialog.value = false
+      
+      list()
+    }
+
+    onMounted(() => {
+      list()
+    })
+
+    return {
+      userName,
+      phone,
+      status,
+      role,
+      tableItem,
+      currentPage4,
+      dialogTitle,
+      showDialog,
+      tableData,
+      total,
+      pageSize,
+      currentPage,
+
+      dateTime,
+      store,
+      siteIdArr,
+      list,
+      handleSizeChange,
+      handleCurrentChange,
+      headClass,
+      checkItem,
+      addItem,
+      editRow,
+      closeDialog,
+    }
+  },
+})
+</script>
+
+
+<style lang="scss" scoped>
+</style>

+ 331 - 0
src/views/tenantManage/tenantUnit/dialogComponent.vue

@@ -0,0 +1,331 @@
+<template>
+  <el-dialog
+    :title="dialogTitle"
+    v-model="dialogVisible"
+    width="640px"
+    @close="closeDialog()"
+    @open="open"
+  >
+    <el-form
+      ref="formInfo"
+      :model="form"
+      class="demo-form-inline userManageDialog"
+      label-width="100px"
+      :rules="rules"
+    >
+      <el-form-item label="用户名:" prop="nickName">
+        <el-input
+          v-model="form.nickName"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="账号:" prop="userName">
+        <el-input
+          v-model="form.userName"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="性别:" prop="sex">
+        <el-radio-group v-model="form.sex" :disabled="dialogTitle === '查看'">
+          <el-radio label="1" value="1">男</el-radio>
+          <el-radio label="2" value="2">女</el-radio>
+        </el-radio-group>
+      </el-form-item>
+
+      <el-form-item label="手机号码:" prop="phonenumber">
+        <el-input
+          v-model="form.phonenumber"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="密码" prop="password" v-if="dialogTitle == '新增'">
+        <el-input
+          v-model="form.password"
+          :disabled="dialogTitle === '查看'"
+        ></el-input>
+      </el-form-item>
+
+      <!-- <el-form-item
+        label="创建时间:"
+        prop="createTime"
+        style="margin-top: 0px"
+      >
+        <el-date-picker
+          v-model="form.createTime"
+          width="100%"
+          type="datetime"
+          placeholder="选择日期时间"
+          :disabled="dialogTitle === '查看'"
+        ></el-date-picker>
+      </el-form-item> -->
+
+      <el-form-item label="角色名称:" prop="roleId">
+        <!-- <el-input v-model="form.roleName"></el-input> -->
+        <el-select
+          v-model="form.roleId"
+          placeholder="请选择"
+          clearable
+          :disabled="dialogTitle === '查看'"
+        >
+          <el-option
+            v-for="(item, index) in roleSelectData"
+            :key="index"
+            :label="item.roleName"
+            :value="item.roleId"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="所属站点:" prop="siteId">
+         <el-select
+              v-model="form.siteId"
+              placeholder="请选择"
+              clearable
+               multiple
+              filterable
+              collapse-tags
+               @change="linkChange()"
+              
+            >
+              <el-option
+                v-for="site in store.state.siteList"
+                :key="site"
+                :label="site.siteName"
+                :value="site.id"
+                
+              ></el-option>
+            </el-select>
+      </el-form-item>
+
+
+      <br />
+      <br />
+      <br />
+      <div style="text-align: right">
+        <el-button @click="closeDialog(0)">取消</el-button>
+        <el-button
+          type="primary"
+          @click="submitForm('formInfo')"
+          :disabled="isDisable"
+          v-if="dialogTitle !== '查看'"
+        >
+          确定
+        </el-button>
+      </div>
+    </el-form>
+  </el-dialog>
+</template>
+
+<script>
+import { defineComponent, ref, onMounted, watchEffect,watch } from 'vue'
+import * as api from '@/api/systemManage/userManage.js'
+import { ElMessage } from 'element-plus'
+import { parseTime, validatorPhone } from '@/utils'
+import { useStore } from 'vuex'
+
+export default defineComponent({
+  name: 'DialogComponent',
+  emits: ['closeDialog'],
+  props: {
+    flag: Boolean,
+    dialogTitle: String,
+    itemInfo: Object,
+  },
+  setup(props, context) {
+    context
+    const store = useStore()
+    const dialogVisible = ref(false)
+    const formInfo = ref(null)
+    const isDisable = ref(false)
+
+    const form = ref([])
+    const roleSelectData = ref([])
+
+    // open(): Dialog弹窗打开之前做的事
+    const open = () => {
+    
+      form.value = props.itemInfo.value
+       console.log('form.value')
+       console.log(form.value)
+      console.log(form.value.siteId)
+    }
+
+  
+
+    // 关闭弹框
+    const closeDialog = () => {
+      resetForm()
+      context.emit('closeDialog', false)
+      dialogVisible.value = false
+    }
+
+    watchEffect((fn, options) => {
+      fn, options
+      dialogVisible.value = props.flag
+    })
+
+    const roleValid = (rule, value, callback) => {
+      rule
+      if (value.length === 0) {
+        callback(new Error('角色不能为空'))
+      } else {
+        callback()
+      }
+    }
+
+    // 保存-修改操作
+    const submitForm = () => {
+      form.value.createTime = parseTime(new Date())
+
+      formInfo.value.validate((valid) => {
+        if (valid) {
+          isDisable.value = true
+           setTimeout(() => {
+                  isDisable.value = false //点击一次时隔两秒后才能再次点击
+                }, 2000)
+          form.value.roleIds = [form.value.roleId] //roleIds 传给后台
+          if (props.dialogTitle === '新增') {
+            api.userAdd(form.value).then((requset) => {
+              if (requset.status === 'SUCCESS') {
+                ElMessage.success({
+                  message: '新增成功',
+                  type: 'success',
+                })
+                setTimeout(() => {
+                  isDisable.value = false //点击一次时隔两秒后才能再次点击
+                }, 2000)
+
+                closeDialog()
+              } else {
+                alert(requset.msg)
+                // ElMessage.error(requset.msg)
+              }
+            })
+          } else {
+            api.userUpdate(form.value).then((requset) => {
+              if (requset.status === 'SUCCESS') {
+                ElMessage.success({
+                  message: '修改成功',
+                  type: 'success',
+                })
+                closeDialog()
+              } else {
+                ElMessage.error(requset.msg)
+              }
+            })
+          }
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    }
+
+    //角色下拉请求
+    function optionselect() {
+      api.optionselect().then((requset) => {
+        if (requset.status === 'SUCCESS') {
+     
+          roleSelectData.value = requset.data
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+    }
+
+    function resetForm() {
+      formInfo.value.resetFields()
+      
+      
+     
+    }
+    function linkChange(){
+
+
+    }
+
+     //监听变化
+    watch(
+      () => props.siteIdArr,
+      (newVal) => {
+        alert(1)
+        newVal
+       
+      }
+    )
+
+    onMounted(() => {
+      optionselect()
+    })
+
+    return {
+      store,
+      linkChange,
+      closeDialog,
+      dialogVisible,
+      roleValid,
+      formInfo,
+      form,
+      roleSelectData,
+      open,
+      submitForm,
+      resetForm,
+      isDisable,
+      rules: {
+       
+        nickName: [
+          { required: true, message: '请输入用户名', trigger: 'blur' },
+          {
+            min: 2,
+
+            message: '用户名长度至少2个字符',
+            trigger: 'blur',
+          },
+        ],
+        userName: [
+          { required: true, message: '请输入账号', trigger: 'blur' },
+          {
+            max: 10,
+            message: '账号最多输入 10 个字符',
+            trigger: 'blur',
+          },
+        ],
+        sex: [{ required: true, message: '请选择性别', trigger: 'change' }],
+        phonenumber: [
+          { required: true, message: '请输入手机号码', trigger: 'blur' },
+          {
+            validator: validatorPhone,
+            message: '输入的电话号码不正确',
+            trigger: 'blur',
+          },
+        ],
+        createTime: [
+          { required: true, message: '请输入创建时间', trigger: 'blur' },
+        ],
+        roleId: [
+          { required: true, message: '请选择角色名称', trigger: 'blur' },
+        ],
+         siteId:  [{ required: true, message: '请选择站点', trigger: 'blur' }],
+        password: [
+          { required: true, message: '请输入密码', trigger: 'blur' },
+          {
+            min: 3,
+            max: 6,
+            message: '长度在 3 到 6 个字符',
+            trigger: 'blur',
+          },
+        ],
+      },
+    }
+  },
+})
+</script>
+ 
+<style scoped lang="scss">
+.el-input,
+.el-select {
+  width: 240px;
+}
+</style>
+<style lang="scss">
+</style>

+ 320 - 0
src/views/tenantManage/tenantUnit/index.vue

@@ -0,0 +1,320 @@
+<template>
+  <div class="app-container">
+    <!-- 筛选start -->
+    <div class="filter-container mb-10">
+      <div class="left">
+        <div>
+          <span class="" style="margin-right: 30px">租户单位配置待排版111</span>
+          <el-button :disabled="store.state.authorities.indexOf('新增')==-1" icon="el-icon-plus" type="success" @click="addItem()">
+            新增
+          </el-button>
+        </div>
+        <div style="margin-top: 20px">
+          <div class="filter-item">
+            账号:
+            <el-input
+              v-model="userName"
+              placeholder="请输入内容"
+              style="width: 180px"
+               :disabled="store.state.authorities.indexOf('查询')==-1"
+            ></el-input>
+          </div>
+
+          <div class="filter-item">
+            账号状态:
+            <el-select
+              v-model="status"
+              placeholder="请选择"
+              style="width: 150px"
+              clearable
+               :disabled="store.state.authorities.indexOf('查询')==-1"
+            >
+              <el-option label="正常" value="0"></el-option>
+              <el-option label="停用" value="1"></el-option>
+            </el-select>
+          </div>
+
+          <div class="filter-item planOutage">
+            选择时间范围:
+            <el-date-picker
+              v-model="dateTime"
+              type="datetimerange"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              style="width: auto"
+               :disabled="store.state.authorities.indexOf('查询')==-1"
+            ></el-date-picker>
+          </div>
+          <el-button
+          :disabled="store.state.authorities.indexOf('查询')==-1"
+            type="primary"
+            icon="el-icon-search"
+            class="search-button"
+            @click="list()"
+          >
+            查询
+          </el-button>
+        </div>
+      </div>
+
+      <!-- <div class="right">
+        <el-button type="primary">导出</el-button>
+      </div> -->
+    </div>
+    <!-- 筛选end -->
+
+    <!-- 表格start -->
+    <el-table :data="tableData" border stripe :header-cell-style="headClass">
+      <!-- <el-table-column prop="xh" label="序号" width="70">
+      </el-table-column> -->
+      <el-table-column prop="nickName" label="用户名"></el-table-column>
+      <el-table-column prop="userName" label="账号"></el-table-column>
+      <el-table-column prop="sex" label="性别" width="100">
+        <template #default="scope">
+          <span>{{ scope.row.sex == 1 ? '男' : '女' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="phonenumber" label="手机号码" min-width="120"></el-table-column>
+      <el-table-column prop="createTime" label="创建时间" min-width="160"></el-table-column>
+      <!-- <el-table-column
+        prop="roles.roleName"
+        label="角色名称"
+       
+      ></el-table-column> -->
+      <el-table-column fixed="right" label="操作" width="180">
+        <template #default="scope">
+          <el-button
+            @click="checkItem(scope.row)"
+            type="text"
+            size="small"
+            class="delete-text"
+          >
+            查看
+          </el-button>
+          <el-button
+          :disabled="store.state.authorities.indexOf('修改')==-1"
+            type="text"
+            size="small"
+            @click.prevent="editRow(scope.row)"
+          >
+            编辑
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 表格end -->
+
+    <!-- 分页start -->
+    <div class="paginationBlock">
+      <el-pagination
+        v-model:currentPage="currentPage"
+        :page-sizes="[15, 20, 25, 30]"
+        :page-size="pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="total"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        background
+      ></el-pagination>
+    </div>
+
+    <!-- 分页end -->
+
+    <!--弹框组件开始-----------------------start-->
+    <dialog-component
+      :dialogTitle="dialogTitle"
+      :itemInfo="tableItem"
+      @closeDialog="closeDialog"
+      :flag="showDialog"
+      v-if="tableItem"
+    ></dialog-component>
+    <!--弹框组件开始-----------------------end-->
+  </div>
+</template>
+
+<script>
+import { useStore } from 'vuex'
+import { defineComponent, ref, reactive, onMounted } from 'vue'
+import * as api from '@/api/systemManage/userManage.js'
+import { ElMessage } from 'element-plus'
+
+import DialogComponent from './dialogComponent'
+
+export default defineComponent({
+  components: { DialogComponent },
+  setup() {
+    const store = useStore()
+    const total = ref(0)
+    const pageSize = ref(10)
+    const currentPage = ref(1)
+
+    const dateTime = ref('')
+
+    const userName = ref('')
+    const phone = ref('')
+    const status = ref('')
+    const role = ref('')
+    const currentPage4 = ref(4)
+    const dialogTitle = ref('')
+    const showDialog = ref(false)
+    const tableData = ref([])
+    const siteIdArr=ref([])
+
+    // // 表头样式设置
+    const headClass = () => {
+      return 'background:#FAFAFA;'
+    }
+
+    const handleSizeChange = (val) => {
+      pageSize.value = val
+      list()
+    }
+    const handleCurrentChange = (val) => {
+      currentPage.value = val
+      list()
+    }
+
+    //用户列表
+    function list() {
+      store.commit('TimeAll_function', dateTime.value)
+      const time = store.state.Time_Data
+      api
+        .list({
+          pageSize: pageSize.value,
+          pageNum: currentPage.value,
+          status: status.value,
+          userName: userName.value,
+          beginTime: time[0],
+          endTime: time[1],
+          // platformAreaName: platformAreaName.value,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            tableData.value = requset.data.rows
+            total.value = requset.data.total
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+
+    const tableItem = reactive([])
+    // 添加操作
+    const addItem = () => {
+      tableItem.value = {
+        nickName: '',
+        userName: '',
+        sex: '1',
+        phonenumber: '',
+        createTime: '',
+        roleName: '',
+        password: '',
+      }
+      dialogTitle.value = '新增'
+      showDialog.value = true
+    }
+
+    // 查看
+    const checkItem = (row) => {
+      siteIdArr.value=[]
+      console.log(row)
+      api.authRole({}, row.userId).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          tableItem.value.roleId= requset.data.user.roles[0].roleId
+          var newArray= requset.data.userSite
+           newArray.forEach(function(item){
+             siteIdArr.value.push(item.siteId)
+
+           })
+           tableItem.value.siteId= siteIdArr.value
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+      tableItem.value = row
+      dialogTitle.value = '查看'
+      showDialog.value = true
+    }
+
+    // 编辑操作
+    const editRow = (row) => {
+      siteIdArr.value=[]
+      console.log(row)
+      api.authRole({}, row.userId).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          tableItem.value.roleId= requset.data.user.roles[0].roleId
+
+           var newArray= requset.data.userSite
+           newArray.forEach(function(item){
+             siteIdArr.value.push(item.siteId)
+
+           })
+           tableItem.value.siteId= siteIdArr.value
+            
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+
+
+      // tableItem.value = row
+      tableItem.value={
+        nickName:row.nickName,
+        userName:row.userName,
+        sex:row.sex,
+        phonenumber:row.phonenumber,
+        password:row.password,
+        createTime:row.createTime,
+        roleId:row.roleId,
+        userId:row.userId
+      }
+
+      dialogTitle.value = '编辑'
+      showDialog.value = true
+    }
+
+    // 关闭操作
+    const closeDialog = () => {
+      showDialog.value = false
+      
+      list()
+    }
+
+    onMounted(() => {
+      list()
+    })
+
+    return {
+      userName,
+      phone,
+      status,
+      role,
+      tableItem,
+      currentPage4,
+      dialogTitle,
+      showDialog,
+      tableData,
+      total,
+      pageSize,
+      currentPage,
+
+      dateTime,
+      store,
+      siteIdArr,
+      list,
+      handleSizeChange,
+      handleCurrentChange,
+      headClass,
+      checkItem,
+      addItem,
+      editRow,
+      closeDialog,
+    }
+  },
+})
+</script>
+
+
+<style lang="scss" scoped>
+</style>