소스 검색

前端提交

yrik 4 년 전
부모
커밋
204d88784b

+ 1 - 0
ruoyi-ui/package.json

@@ -58,6 +58,7 @@
     "vue": "2.6.12",
     "vue-count-to": "1.0.13",
     "vue-cropper": "0.5.5",
+    "vue-pdf": "^4.3.0",
     "vue-router": "3.4.9",
     "vuedraggable": "2.24.3",
     "vuex": "3.6.0"

BIN
ruoyi-ui/public/ceshi.pdf


+ 91 - 0
ruoyi-ui/src/api/system/election.js

@@ -0,0 +1,91 @@
+import request from '@/utils/request'
+
+// 查询角色列表
+export function group(query) {
+  return request({
+    url: '/system/group/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询部门详细
+export function getRole(id) {
+  return request({
+    url: '/system/dept/user/' + id,
+    method: 'get'
+  })
+}
+
+// 查询组详细
+export function getMembers(id) {
+  return request({
+    url: '/system/group/user/' + id,
+    method: 'get'
+  })
+}
+
+// 查询角色详细
+export function getPersonnel(id) {
+  return request({
+    url: '/system/role/user/' + id,
+    method: 'get'
+  })
+}
+
+// 保存
+export function setMenu(data) {
+  return request({
+    url: '/boman-system/role/menu',
+    method: 'post',
+    data: data
+  })
+}
+
+// 新增角色
+export function addRole(data) {
+  return request({
+    url: '/system/role',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改角色
+export function updateRole(data) {
+  return request({
+    url: '/system/role',
+    method: 'put',
+    data: data
+  })
+}
+
+// 角色数据权限
+export function dataScope(data) {
+  return request({
+    url: '/system/role/dataScope',
+    method: 'put',
+    data: data
+  })
+}
+
+// 角色状态修改
+export function changeRoleStatus(id, status) {
+  const data = {
+    id,
+    status
+  }
+  return request({
+    url: '/system/role/changeStatus',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除角色
+export function delRoleses(id,ids) {
+  return request({
+    url: '/system/group/addGroupUser/' + id + '/' + ids,
+    method: 'get'
+  })
+}

+ 68 - 0
ruoyi-ui/src/api/system/group.js

@@ -0,0 +1,68 @@
+import request from '@/utils/request'
+
+// 查询部门列表
+export function listDept(query) {
+  return request({
+    url: '/system/group/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询部门列表(排除节点)
+export function listDeptExcludeChild(id) {
+  return request({
+    url: '/system/dept/list/exclude/' + id,
+    method: 'get'
+  })
+}
+
+// 查询部门详细
+export function getDept(id) {
+  return request({
+    url: '/system/group/' + id,
+    method: 'get'
+  })
+}
+
+// 查询部门下拉树结构
+export function treeselect() {
+  return request({
+    url: '/system/dept/treeselect',
+    method: 'get'
+  })
+}
+
+// 根据角色ID查询部门树结构
+export function roleDeptTreeselect(roleId) {
+  return request({
+    url: '/system/dept/roleDeptTreeselect/' + roleId,
+    method: 'get'
+  })
+}
+
+// 新增用户组
+export function addDept(data) {
+  return request({
+    url: '/system/group',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改部门
+export function updateDept(data) {
+  return request({
+    url: '/system/group/edit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除部门
+export function delDept(id) {
+  return request({
+    url: '/system/group/delete/' + id,
+    method: 'get'
+  })
+}

+ 136 - 0
ruoyi-ui/src/api/system/isses.js

@@ -0,0 +1,136 @@
+import request from '@/utils/request'
+
+// 查询角色列表
+export function listRoles(data) {
+  return request({
+    url: '/boman-web-core/p/cs/one/map',
+    method: 'POST',
+    data
+  })
+}
+// 历史字号
+export function listIndex(data) {
+   return request({
+     url: '/boman-web-core/p/cs/queryList',
+     method: 'post',
+     data: data
+   })
+ }
+ // 根据人员查询角色,部门
+ export function buent(data) {
+    return request({
+      url: '/system/user/getDeptNameAndRoleName',
+      method: 'post',
+      data: data
+    })
+  }
+
+ // 保存
+ export function addbjectSave(data) {
+   return request({
+     url: '/boman-web-core/p/cs/complex/save ',
+     method: 'POST',
+     data
+   })
+ }
+
+ // 保存
+ export function addbjectSavety(data) {
+   return request({
+     url: '/boman-web-core/p/cs/objectSave',
+     method: 'POST',
+     data
+   })
+ }
+
+
+
+
+// 查询分发单位  名称
+export function issdanelist(id) {
+  return request({
+    url: '/boman-web-core/messageReceive/' + id,
+    method: 'get'
+  })
+}
+
+// 查询表单id
+export function issdaneid(id) {
+  return request({
+    url: '/boman-web-core/p/cs/table/getByTableName/' + id,
+    method: 'get'
+  })
+}
+
+// 查询角色详细
+export function getRole(id) {
+  return request({
+    url: '/system/role/' + id,
+    method: 'get'
+  })
+}
+
+// 保存
+export function setMenu(data) {
+  return request({
+    url: '/boman-system/role/menu',
+    method: 'post',
+    data: data
+  })
+}
+
+// 新增角色
+export function addRole(data) {
+  return request({
+    url: '/system/role',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改角色
+export function updateRole(data) {
+  return request({
+    url: '/system/role',
+    method: 'put',
+    data: data
+  })
+}
+
+// 角色数据权限
+export function dataScope(data) {
+  return request({
+    url: '/system/role/dataScope',
+    method: 'put',
+    data: data
+  })
+}
+
+// 角色状态修改
+export function changeRoleStatus(id, status) {
+  const data = {
+    id,
+    status
+  }
+  return request({
+    url: '/system/role/changeStatus',
+    method: 'put',
+    data: data
+  })
+}
+
+// 查询部门下拉树结构
+export function treeselectid() {
+  return request({
+    url: '/boman-system/user/listUserTree',
+    method: 'get'
+  })
+}
+
+// 删除角色
+export function delRole(id) {
+  return request({
+    url: '/system/role/' + id,
+    method: 'delete'
+  })
+}

BIN
ruoyi-ui/src/assets/images/dele.png


+ 60 - 2
ruoyi-ui/src/components/DynamicFormsteo/index.vue

@@ -60,7 +60,35 @@
     <!-- 富文本 -->
     <editor :disabled="formConfig.disabshow" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'editor'"
       :min-height="192" />
+      <!-- 树形 -->
+      <el-upload :disabled="true" class="upload-demo" :headers="{Authorization: 'Bearer ' + getToken()}"
+        v-if="formConfig.htmlType == 'imageUpload'" :action="process + '/boman-file/upload'" :on-change="handleChange"
+        :on-success="upImageFn" :on-error="err" :on-remove="reseImage" >
+        <el-button size="small" type="primary" @click="tree">点击选择人员</el-button>
+        <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
+      </el-upload>
+      <div v-if="formConfig.htmlType == 'imageUpload'">
+        <!-- 输入框 -->
+        <el-input v-if="formConfig.htmlType == 'imageUpload'" @change="iChange" v-model="config[formConfig.columnName]" :placeholder="'请输入'+formConfig.columnComment"
+          clearable @keyup.enter.native="handleQuery"  >
+          <el-button slot="append" @click="changekan">查看</el-button>
+          </el-input>
+       <!-- <el-button size="small" type="primary" @click="tree">查看历史</el-button> -->
+      </div>
   </el-form-item>
+  <el-dialog   :close-on-click-modal="false" title="选择人员" :visible.sync="shouew" width="980px" append-to-body>
+    <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
+      <el-table-column label="日志编号" align="center" prop="id" />
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParamsde.pageNum"
+      :limit.sync="queryParamsde.pageSize"
+      @pagination="getList"
+    />
+    </el-dialog>
   </el-col>
   <!-- </el-row> -->
 </template>
@@ -85,6 +113,7 @@
         disabled: false,
         loading: false,
         filterList: [],
+        total:1,
         config: {},
         aliemg: {
           table: '',
@@ -94,8 +123,15 @@
           fixedData: {
             condition: {}
           },
-          ieug:8
+          ieug:8,
+
         },
+        shouew:false,
+        list:[],
+        queryParamsde:{
+          pageNum:1,
+          pageSize:10
+        }
       }
     },
     components: {
@@ -114,13 +150,17 @@
         type: Object,
         required: true,
         'default': {
-          sysDictData: []
+        sysDictData: [],
         }
       },
       type: {
         type: Number,
         default: 1
       },
+      modalShow:{
+        type:Boolean,
+        default: false
+      }
     },
     created() {
       this.config = {}
@@ -191,6 +231,7 @@
    },
     mounted() {
       console.log(this.formConfig)
+      // console.log(this.modalShow)
     },
     methods: {
       iChange(val){
@@ -250,6 +291,7 @@
         }
       },
       handleChange(file, fileList) {
+        console.log(fileList.slice(-3))
         this.fileList = fileList.slice(-3);
       },
       getToken() {
@@ -294,6 +336,22 @@
       },
       handleCheckedCitiesChange(value) {
         console.log(this.config)
+      },
+      tree(){
+        // this.modalShow = true
+        // this.shouew = true
+        this.$emit('closepop')
+        console.log(this.modalShow)
+      },
+      changekan(){
+        console.log(1234)
+         this.shouew = true
+      },
+      handleSelectionChange(){
+
+      },
+      getList(){
+
       }
     }
   }

+ 4 - 4
ruoyi-ui/src/router/index.js

@@ -74,15 +74,15 @@ export const constantRoutes = [
         path: 'index/approval',
         hidden: false,
         component: approval,
-        name: '待我审批',
-        meta: { title: '待我审批', icon: 'dashboard', noCache: false},
+        name: '待审核',
+        meta: { title: '待审核', icon: 'dashboard', noCache: false},
       },
       {
         path: 'index/handled',
         hidden: false,
         component: handled,
-        name: '已办理',
-        meta: { title: '已办理', icon: 'dashboard', noCache: false},
+        name: '经我审核',
+        meta: { title: '经我审核', icon: 'dashboard', noCache: false},
       },
       // {
       //   path: 'index/process',

+ 2 - 4
ruoyi-ui/src/views/index.vue

@@ -193,13 +193,12 @@
            </div>
          </el-col >
          <!-- 通讯录 -->
-         <el-col :sm="24" :lg="24">
+         <!-- <el-col :sm="24" :lg="24">
            <div class="index_nav index_memoranduMail">
                        <div class="index_navTime ">
                          <p class="index_navTimep">
                            <span>通讯录</span>
                            <img src="../assets/images/icon_more.png" alt="" class="index_navTimeimgtwo">
-                           <!-- <span><i class="el-icon-date"></i>创建日程</span> -->
                          </p>
                         <div class="index_memoranduMailnav">
                            <div class="tab_tol">
@@ -216,7 +215,6 @@
                              </el-table>
                            </div>
                           <div class="index_haderPagin index_haderPaginfoiu">
-                            <!-- getLisail -->
                             <el-pagination
                                  @size-change="handleSizeChangeali"
                                  @current-change="handleCurrentChangeali"
@@ -231,7 +229,7 @@
                       <img src="../assets/images/pic_kpbg.png" alt="" class="index_navTimeimg">
                        </div>
             </div>
-         </el-col>
+         </el-col> -->
 
 
       </el-col>

+ 1017 - 0
ruoyi-ui/src/views/system/collection/index.vue

@@ -0,0 +1,1017 @@
+<template>
+  <div class="app-container">
+    <div class="jeuhg">
+      <h3 style="text-align: center; font-size: 30px; color: red; margin-bottom: 20px;">{{user.userName}}发文收文办理签</h3>
+      <el-form :model="colleobje" ref="colleobje" v-show="showSearch" :inline="true">
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="6" class="eigj" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;" >
+        <el-form-item label="收文编号" prop="id">
+          <el-input
+            autosize
+
+            v-model="colleobje.id">
+          </el-input>
+        </el-form-item>
+        </el-col>
+        <el-col :span="6" class="eigj" style="border: 1px solid red; border-bottom: 0; border-left: 0; padding: 15px 0 15px 10px;">
+        <el-form-item label="来文机关" prop="message_from">
+          <el-input
+            autosize
+            placeholder=""
+            v-model="colleobje.message_from">
+          </el-input>
+        </el-form-item>
+        </el-col>
+        <el-col :span="6" class="eigj" style="border: 1px solid red; border-bottom: 0; border-left: 0; padding: 15px 0 15px 10px;">
+        <el-form-item label="文件字号" prop="message_code">
+          <el-input
+            autosize
+            placeholder=""
+            v-model="colleobje.message_code">
+          </el-input>
+        </el-form-item>
+        </el-col>
+        <el-col :span="6" class="eigj" style="border: 1px solid red; border-bottom: 0; border-left: 0; padding: 15px 0 15px 10px;">
+        <el-form-item label="收到日期" prop="roleName">
+          <el-date-picker :disabled="false" @change="iChange" v-model="queryParams.roleName"   style="width: 100%"        type="date" :placeholder="'请输入'">
+          </el-date-picker>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="文件标题" prop="message_title">
+          <el-input
+            type="textarea"
+            autosize
+            placeholder=""
+            v-model="colleobje.message_title">
+          </el-input>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="正文上传:" prop="roleName">
+          <el-upload :disabled="false" class="upload-demo" :headers="{Authorization: 'Bearer ' + getToken()}"
+             :action="process + '/boman-file/upload'" :on-change="handleChangert"
+            :on-success="upImageFn" :on-error="err" :on-remove="reseImage" :file-list="config">
+            <el-button size="small" type="primary">点击上传</el-button>
+          </el-upload>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" style="width: 100%;" label="审核人" prop="roleName">
+          <el-input :disabled="true" v-model="colleobje.check_user_name">
+              <el-button slot="prepend" @click="changeren">选择人员</el-button>
+            </el-input>
+            <!-- <p style="display: flex; justify-content: space-between;">
+              <span style="width: 80%;">23</span>
+              <el-button size="small" type="primary">点击上传</el-button>
+            </p> -->
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="部门拟办意见" prop="dept_suggest">
+          <el-input
+            type="textarea"
+            autosize
+            :disabled="true"
+            v-model="colleobje.dept_suggest">
+          </el-input>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="办公室协办意见" prop="office_suggest">
+          <el-input
+            type="textarea"
+            autosize
+            :disabled="true"
+            v-model="colleobje.office_suggest">
+          </el-input>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="领导批示" prop="leader_suggest">
+          <el-input
+            type="textarea"
+            autosize
+            :disabled="true"
+            v-model="colleobje.leader_suggest">
+          </el-input>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red;  padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="承办结果" prop="result">
+          <el-input
+            type="textarea"
+            autosize
+            :disabled="true"
+            v-model="colleobje.result">
+          </el-input>
+        </el-form-item>
+        </el-col>
+
+        <!-- <el-col :span="24" style="border: 1px solid red;  padding: 20px 0 20px 10px;">
+        <el-form-item class="renhdy" label="备注:" prop="roleName">
+          <el-input
+            type="textarea"
+            autosize
+            placeholder="请输入内容"
+            v-model="textarea1">
+          </el-input>
+        </el-form-item>
+        </el-col> -->
+        <el-col :span="24" style="text-align: right; padding-top: 20px;">
+          <el-button type="danger" @click="submitForm" >点击保存</el-button>
+        </el-col>
+        </el-row>
+      </el-form>
+    </div>
+
+    <!-- 添加或修改角色配置对话框 -->
+   <el-dialog   :close-on-click-modal="false" title="选择人员" :visible.sync="shouew" width="980px" append-to-body>
+     <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
+       <el-table-column label="日志编号" align="center" prop="id" />
+     </el-table>
+
+     <pagination
+       v-show="total>0"
+       :total="total"
+       :page.sync="queryParams.pageNum"
+       :limit.sync="queryParams.pageSize"
+       @pagination="getList"
+     />
+     </el-dialog>
+    <!-- 分配角色数据权限对话框 -->
+    <el-dialog   :close-on-click-modal="false" title="选择人员" :visible.sync="modalShow" width="980px" append-to-body>
+      <!-- <Flowshoe  :instanceId="instanceId"></Flowshoe> -->
+      <div class="tab_bott">
+        <div style="display: flex; flex-direction: column;">
+          <div class="head-container">
+            <el-input
+              v-model="deptName"
+              placeholder="请输入人员名称"
+              clearable
+              size="small"
+              prefix-icon="el-icon-search"
+              style="margin-bottom: 20px"
+            />
+          </div>
+          <div class="head-container">
+            <el-tree
+              :data="deptOptions"
+              :props="defaultProps"
+              :expand-on-click-node="false"
+              :filter-node-method="filterNode"
+              ref="tree"
+              @node-click="handleNodeClick"
+            />
+          </div>
+        </div>
+        <!-- <div class="tabBot_oje">
+          <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
+            <el-tab-pane label="按部门" name="first">
+              <el-tree :data="data" :props="defaultProps" show-checkbox   default-expand-all node-key="id" :setCheckedKeys='setCheckedKeys'  @check = "check"   ref="tree"  highlight-current @node-click="handleNodeClick" ></el-tree>
+            </el-tab-pane>
+            <el-tab-pane label="按角色" name="second">配置管理</el-tab-pane>
+            <el-tab-pane label="按组" name="third">角色管理</el-tab-pane>
+          </el-tabs>
+        </div>
+        <div class="tabBot_two">
+          <el-card class="box-card" shadow="always">
+            <div slot="header" class="clearfix">
+              <span>人员对应的单位</span>
+              <el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
+            </div>
+            <ul class="infinite-list infinite-listty" v-infinite-scroll="load" style="overflow:auto">
+              <li v-for="i in count" class="infinite-list-item">{{ i }}</li>
+            </ul>
+          </el-card>
+          <el-card class="box-card box-cardtt" shadow="always">
+              <div slot="header" class="clearfix">
+                <span>已选择</span>
+               <el-button style="float: right; padding: 3px 0" type="text">确定</el-button>
+               <el-button style="float: right; padding: 3px 0" type="text">取消</el-button>
+              </div>
+              <ul class="infinite-list infinite-listty" v-infinite-scroll="load" style="overflow:auto">
+                <li v-for="item in liseh" class="infinite-list-item"> <el-checkbox
+            style="margin-left: 30px"
+            :indeterminate="item.isIndeterminate"
+            v-model="item.isCheck"
+            @change="checkTitle(item.isCheck, index)"
+            >全选</el-checkbox
+          >
+
+          <el-checkbox-group
+            v-model="item.checkedData"
+            @change="checkItem(item.checkedData, index)"
+          >
+            <el-checkbox
+              v-for="(a, index) in item.children"
+              :label="a.value"
+              :key="index"
+              >{{ a.label }}</el-checkbox
+            >
+          </el-checkbox-group></li>
+              </ul>
+            </el-card>
+        </div> -->
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listRoles,listIndex,   delRole, addRole,addbjectSave,addbjectSavety, updateRole, exportRole, dataScope, changeRoleStatus, buent,treeselectid } from "@/api/system/isses";
+import {
+    getToken
+  } from "@/utils/auth";
+  import {getUserProfile} from "@/api/system/config";
+  import { group , getRole, getPersonnel, getMembers,delRoleses } from '@/api/system/election';
+  import { listDept } from "@/api/system/dept";
+  import { listRole } from "@/api/system/role";
+  import { treeselect } from "@/api/system/dept";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+export default {
+  name: "Role",
+   components: {  Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 无限滚动
+      count: 0,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 部门名称
+      deptName: undefined,
+      // 角色表格数据
+      roleList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 是否显示弹出层(数据权限)
+      openDataScope: false,
+      menuExpand: false,
+      menuNodeAll: false,
+      deptExpand: true,
+      deptNodeAll: false,
+      // 日期范围
+      dateRange: [],
+      // 状态数据字典
+      statusOptions: [],
+      // 数据范围选项
+      dataScopeOptions: [
+        {
+          value: "1",
+          label: "全部数据权限"
+        },
+        {
+          value: "2",
+          label: "自定数据权限"
+        },
+        {
+          value: "3",
+          label: "本部门数据权限"
+        },
+        {
+          value: "4",
+          label: "本部门及以下数据权限"
+        },
+        {
+          value: "5",
+          label: "仅本人数据权限"
+        }
+      ],
+      // 菜单列表
+      menuOptions: [],
+      // 部门列表
+      deptOptions: [],
+      // 角色
+      deptOptionstwo:[],
+      deptOptionsthre:[],
+      // 查询参数
+      queryParams: {
+      },
+      // 表单参数
+      form: {},
+      // 单位  名称
+      mpany:{
+        ompany:[],
+        name:[]
+        },
+      defaultProps: {
+        children: "users",
+        label: "deptName",
+        value:"id"
+      },
+      //
+      // 表单校验
+      rules: {
+        roleName: [
+          { required: true, message: "角色名称不能为空", trigger: "blur" }
+        ],
+        roleKey: [
+          { required: true, message: "权限字符不能为空", trigger: "blur" }
+        ],
+        roleSort: [
+          { required: true, message: "角色顺序不能为空", trigger: "blur" }
+        ]
+      },
+      dialogImageUrl: '',
+      process: process.env.VUE_APP_BASE_API,
+      dialogVisible: false,
+      disabled: false,
+      filterList: [],
+      config: [],
+      configtwo: [],
+      shouew:false,
+      modalShow:false,
+      forew:{
+       table:'',
+       fixedData:{
+         id:-1
+       }
+      },
+      list:[],
+      activeName:'first',
+      querjtgoe:{
+        message_code:'',
+        message_title:'',
+        message_remark:'',
+        send_time:''
+      },
+      liseh: [
+            ],
+      queryParamsser:{
+       table:'',
+       orderBy:'create_time desc',
+       pageSize:10,
+       pageNo:1,
+       showData:['message_code']
+      },
+      tabData:[],
+      postList:[],
+      faerform:{
+        table: '',
+        objId: -1,
+        fixedData: {}
+      },
+      lisehtwo:[
+      ],
+      data: [],
+      deptList: [],
+      rtuer: false,
+      showtabc: 0,
+      showche: false,
+      idneese: {},
+      quandet:false,
+      dhiuw:[],
+      // 组id
+      elezu:0,
+      fileList: [],
+      titlet:'',
+      user:{},
+      colleobje:{}
+
+    };
+  },
+  created() {
+    this.forew.table = this.$route.query.tables;
+    this.queryParamsser.table = this.$route.query.tables;
+    this.forew.fixedData.id = this.$route.query.id;
+    this.faerform.objId = this.$route.query.id;
+    this.faerform.table = this.$route.query.tables;
+    if(this.$route.query.tabname == 'shouwen'){
+      this.titlet = '收文'
+    }else if(this.$route.query.tabname == 'fawen'){
+      this.titlet = '待归档'
+    }
+    this.getList();
+    this.getTreeselect()
+    this.getUser()
+    this.getDicts("sys_normal_disable").then(response => {
+      this.statusOptions = response.data;
+    });
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  methods: {
+    /** 查询角色列表 */
+    getList() {
+      this.loading = true;
+      console.log(this.forew)
+      listRoles(this.forew).then(
+        res => {
+          console.log(res)
+          if(res.data !== undefined){
+            this.querjtgoe = res.data
+            if(res.data.message_upload !== undefined){
+              this.config = res.data.message_upload
+            }
+          }
+        }
+      );
+    },
+    // 历史字号数据查询
+    lishiList(){
+      console.log(346)
+      listIndex(this.queryParamsser).then(response => {
+        this.total = response.data.total;
+        this.tabData = response.data.tableHeadList;
+        this.postList = response.data.rows;
+        for(var i = 0 ; i < this.postList.length; i++){
+          console.log(this.postList[i].leavefrom_photo == '[]')
+        }
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 取消按钮(数据权限)
+    cancelDataScope() {
+      this.openDataScope = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      if (this.$refs.menu != undefined) {
+        this.$refs.menu.setCheckedKeys([]);
+      }
+      this.menuExpand = false,
+      this.menuNodeAll = false,
+      this.deptExpand = true,
+      this.deptNodeAll = false,
+      this.form = {
+        roleId: undefined,
+        roleName: undefined,
+        roleKey: undefined,
+        roleSort: 0,
+        status: "0",
+        menuIds: [],
+        deptIds: [],
+        menuCheckStrictly: true,
+        deptCheckStrictly: true,
+        remark: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    // 树权限(展开/折叠)
+    handleCheckedTreeExpand(value, type) {
+      // if (type == 'menu') {
+      //   let treeList = this.menuOptions;
+      //   for (let i = 0; i < treeList.length; i++) {
+      //     this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value;
+      //   }
+      // } else if (type == 'dept') {
+        let treeList = this.deptOptions;
+        for (let i = 0; i < treeList.length; i++) {
+          this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value;
+        }
+      // }
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+
+      this.colleobje.message_upload = JSON.stringify(this.querjtgoe.message_upload)
+      // this.colleobje.message_enclosure = JSON.stringify(this.querjtgoe.message_enclosure)
+      this.faerform.fixedData = this.colleobje
+      console.log(this.faerform)
+      // this.$refs["form"].validate(valid => {
+      //   if (valid) {
+      //     if (this.form.roleId != undefined) {
+      //       this.form.menuIds = this.getMenuAllCheckedKeys();
+      //       updateRole(this.form).then(response => {
+      //         this.msgSuccess("修改成功");
+      //         this.open = false;
+      //         this.getList();
+      //       });
+      //     } else {
+      //       this.form.menuIds = this.getMenuAllCheckedKeys();
+            addbjectSavety(this.faerform).then(response => {
+              this.msgSuccess("操作成功");
+              // this.open = false;
+              // this.getList();
+            });
+      //     }
+      //   }
+      // });
+    },
+    /** 提交按钮(数据权限) */
+    submitDataScope: function() {
+      if (this.form.roleId != undefined) {
+        this.form.deptIds = this.getDeptAllCheckedKeys();
+        dataScope(this.form).then(response => {
+          this.msgSuccess("修改成功");
+          this.openDataScope = false;
+          this.getList();
+        });
+      }
+    },
+    handleClick(index){
+    if(index.index == 0){
+      this.getTreeselect()
+    }else if(index.index == 1){
+      this.getTreeselectjue()
+    }else if(index.index == 2){
+      this.getTreeselecu()
+    }
+    },
+    ziao(){
+      console.log(23)
+      this.shouew = true
+      this.lishiList()
+    },
+    // 人员选择
+    changeren(){
+    this.modalShow = true
+
+    },
+    // 上传文件
+    handleChangert(file, fileList) {
+      this.fileList = fileList.slice(-3);
+    },
+    getToken() {
+      return getToken()
+    },
+    reseImage(file, fileList) {
+      let urls = ""
+      if (file.response) {
+        urls = file.response.url
+      } else {
+        urls = file.url
+      }
+      for (let i = this.config.length - 1; i >= 0; i--) {
+        if (this.config[i].url == urls) {
+          this.config.splice(i, 1);
+        }
+      }
+      this.querjtgoe.message_upload = this.config
+    },
+    reseImagetwo(file, fileList) {
+      let urls = ""
+      if (file.response) {
+        urls = file.response.url
+      } else {
+        urls = file.url
+      }
+      for (let i = this.configtwo.length - 1; i >= 0; i--) {
+        if (this.configtwo[i].url == urls) {
+          this.configtwo.splice(i, 1);
+        }
+      }
+     console.log(this.configtwo)
+     this.querjtgoe.message_enclosure = this.configtwo
+    },
+    handlePictureCardPreview(file) {
+      console.log(file)
+      this.dialogImageUrl = file.url;
+      this.dialogVisible = true;
+    },
+    upImageFn(res, file) {
+      this.config.push(res.data);
+      this.querjtgoe.message_upload = this.config
+      console.log(this.config)
+    },
+    upImageFntwo(res, file) {
+      this.configtwo.push(res.data);
+      this.querjtgoe.message_enclosure  = this.configtwo
+      console.log(this.configtwo)
+    },
+    // 时间控件
+    iChange(){
+
+    },
+    err(){
+      this.msgSuccess("上传失败");
+     console.log(35)
+    },
+    load(){
+
+    },
+    // 点击单元格
+    cellClick(row){
+      console.log(row)
+      this.shouew =  false
+      this.querjtgoe.message_code = row.message_code
+
+    },
+    // 树形结构
+    // 节点单击事件
+   handleNodeClick(data) {
+     console.log(data);
+     this.colleobje.check_user_id = data.id
+     this.colleobje.check_user_name = data.userName
+     // this.queryParams.deptId = data.id;
+     // this.staff(data.id);
+     this.modalShow = false
+     // this.getList();
+   },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselectid().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    // 查询角色
+    getTreeselectjue() {
+      this.loading = true;
+      listRole(this.queryParams).then(response => {
+        this.deptOptionstwo = this.handleTree(response.rows, "id");
+        this.loading = false;
+      });
+    },
+    // 查询组
+    getTreeselecu() {
+      this.loading = true;
+      group(this.queryParams).then(response => {
+        this.deptOptionsthre = this.handleTree(response.data, "id");
+        this.loading = false;
+      });
+    },
+    /** 转换角色数据结构 */
+    normalizer(node) {
+      // if (node.children && !node.children.length) {
+      //   delete node.children;
+      // }
+      return {
+        id: node.id,
+        label: node.roleName,
+      };
+    },
+    /** 转换组数据结构 */
+    normalizerty(node) {
+      return {
+        id: node.id,
+        label: node.groupName,
+      };
+    },
+   // 点击组/角色
+     djieskle(node, instanceId) {
+       this.personnel(node.id);
+       console.log(node, instanceId);
+     },
+     djieskletwo(node, instanceId) {
+       this.members(node.id);
+       this.elezu = node.id
+       console.log(node, instanceId);
+     },
+     check(data, value) {
+       console.log(this.$refs.tree.getCheckedKeys());
+       // 获取选中的子节点
+       // let checkedKeys = this.$refs.tree.getCheckedKeys();
+       // 获取选中的父节点
+       let hafCheckedKeys = this.$refs.tree.getHalfCheckedKeys();
+       console.log(this.$refs.tree.getHalfCheckedKeys());
+
+       console.log(data, value);
+     },
+     // 点击全选
+     quande(){
+       var dueg = []
+       dueg = (this.dhiuw)
+      this.quandet = true
+      var that =  this
+      // dueg.push(index)
+      // this.lisehtwo = dueg
+      // this.lisehtwo.push(index);
+      // this.lisehtwo = [...new Set(this.lisehtwo)];
+      // that.positions.map(train => {
+      //   that.new_Positions.push(train.trainId);
+      // });
+      // that.resultArr = []; //去重后的数组
+      var flag;
+      for (var i in dueg) {
+        flag = true;
+        for (var j in that.lisehtwo) {
+          if (that.lisehtwo[j].id == dueg[i].id) {
+            flag = false;
+            break;
+          }
+        }
+        if (flag) {
+          that.lisehtwo.push(dueg[i]);
+        }
+      }
+     },
+     // 点击全部删除
+     eledelte(){
+      this.lisehtwo = []
+     },
+     // 点击删除
+     lidele(index) {
+       for (let i = this.lisehtwo.length - 1; i >= 0; i--) {
+         if (this.lisehtwo[i].id == index.id) {
+           this.lisehtwo.splice(i, 1)
+         }
+       }
+     },
+     // 点击添加
+     reyantt(index) {
+       var dueg = [];
+       this.idneese = index;
+       var that =  this
+       dueg.push(index)
+       // this.lisehtwo = dueg
+       // this.lisehtwo.push(index);
+       // this.lisehtwo = [...new Set(this.lisehtwo)];
+       // that.positions.map(train => {
+       //   that.new_Positions.push(train.trainId);
+       // });
+       // that.resultArr = []; //去重后的数组
+       var flag;
+       for (var i in dueg) {
+         flag = true;
+         for (var j in that.lisehtwo) {
+           if (that.lisehtwo[j].id == dueg[i].id) {
+             flag = false;
+             break;
+           }
+         }
+         if (flag) {
+           that.lisehtwo.push(dueg[i]);
+         }
+       }
+
+       // for(var i = 0 ; i <this.lisehtwo.length; i++ ){
+       //   if(this.lisehtwo[i].id == index.id){
+       //     this.lisehtwo.splice(i,1)
+       //   }
+       // }
+       // })
+     },
+     // 点击确定
+     determine(){
+       var eledete = []
+      this.lisehtwo.filter(route=>{
+        eledete.push(route.id)
+      })
+      eledete  = eledete.join(',')
+      console.log(eledete)
+      // this.elezu
+      this.loading = true;
+      buent(this.lisehtwo).then(response => {
+        // this.lisehtwo = response.data;
+        // this.dhiuw = response.data
+        this.mpany.ompany = response.deptNameList
+        this.mpany.name = response.roleNameList
+        console.log( this.mpany.ompany)
+        if(response.code == 200){
+          this.msgSuccess('操作成功');
+          this.modalShow = false
+        }
+        this.loading = false;
+      });
+     },
+     checkItem(val, index) {
+       console.log(val);
+       this.showche = !this.showche;
+       console.log(this.showche);
+       var that = this;
+       let jueg = [];
+       let checkedCount = val.length;
+       this.liseh[index].isCheck = checkedCount === this.liseh[index].children.length;
+
+       this.liseh[index].isIndeterminate = checkedCount > 0 && checkedCount < this.liseh[index].children.length;
+       this.liseh[index].children.filter(router => {
+         // console.log(123)
+         for (var i = 0; i < val.length; i++) {
+           if (this.showche == true) {
+             //选中
+             console.log('选中');
+             if (router.id == val[i]) {
+               jueg.push(router);
+               this.lisehtwo.push(router);
+               // console.log(router)
+               console.log(this.lisehtwo);
+               for (var j = 0; j < that.lisehtwo.length; j++) {
+                 if (that.lisehtwo[i].id !== val[i]) {
+                   this.lisehtwo.push(router);
+                 }
+               }
+               // that.lisehtwo.filter(routers=>{
+               //   console.log(this.lisehtwo)
+               //   console.log(routers,val[i])
+               //   if(routers.id !== val[i]){
+               //      this.lisehtwo.push(router)
+               //   }
+               // })
+             }
+           } else {
+             // 取消选中
+           }
+         }
+       });
+       // this.lisehtwo.push(jueg)
+       console.log(this.lisehtwo);
+       // console.log(this.liseh[index].isIndeterminate)
+     },
+     checkTitle(val, index) {
+       console.log(val, index);
+       let arr = [];
+       let jueg = [];
+       const re = this.liseh[index].children;
+       //全选
+       if (val) {
+         for (let i = 0; i < re.length; i++) {
+           arr[i] = re[i]['id'];
+           jueg[i] = re[i];
+           this.lisehtwo.push(re[i]);
+         }
+         // this.lisehtwo.push(jueg)
+       } else {
+         this.lisehtwo = [];
+       }
+       console.log(this.lisehtwo);
+       this.liseh[index].checkedData = arr;
+       this.liseh[index].isIndeterminate = false;
+     },
+     // 筛选节点
+     filterNode(value, data) {
+       // return console.log(value)
+       if (!value) return true;
+       return data.deptName.indexOf(value) !== -1;
+     },
+     // 按照部门查询人员
+     staff(index) {
+       this.loading = true;
+       var that = this;
+       getRole(index).then(response => {
+         // this.deptOptionsthre = this.handleTree(response.data, "id");
+         // this.rtuer = true
+         this.liseh = []
+         this.liseh = response.data;
+         this.dhiuw = response.data
+         this.loading = false;
+       });
+     },
+     // 按照角色查询人员
+     personnel(index) {
+       this.loading = true;
+       getPersonnel(index).then(response => {
+         // this.deptOptionsthre = this.handleTree(response.data, "id");        this.liseh = response.data;
+         this.liseh = []
+         this.liseh = response.data;
+         this.dhiuw = response.data
+         this.loading = false;
+       });
+     },
+     // 按照组查询人员
+     members(index) {
+       this.loading = true;
+       getMembers(index).then(response => {
+         // this.deptOptionsthre = this.handleTree(response.data, "id");
+         // this.liseh = response.data;
+         // response.data
+         // this.lisehtwo.push(response.data)
+         this.dhiuw = response.data
+         this.dhiuw.filter(route=>{
+           this.lisehtwo.push(route)
+         })
+         this.loading = false;
+       });
+     },
+     // 用户信息
+           getUser() {
+             getUserProfile().then(response => {
+               this.user = response.data;
+               // this.getLisalendar()
+               // this.getLismemorandum()
+             });
+           },
+   }
+  // }
+  // }
+};
+</script>
+
+
+<style lang="scss">
+  .jeuhg{
+   .el-form-item{
+     margin-bottom: 0;
+     width: 100%;
+   }
+   .el-form-item__content{
+      width: 100%;
+   }
+   .el-form-item__label{
+     color: red;
+    width: 12%;
+    text-align: center;
+   }
+   .eigj{
+     .el-form-item__label{
+       width: 100%;
+       text-align: center;
+     }
+   }
+   input{
+     background: none;
+     	  outline: none;
+     	  border: none;
+   }
+  .el-input-group__prepend{
+    background-color: #1890ff !important;
+    color: #fff !important;
+  }
+  .el-input-group__append{
+    background-color: #1890ff !important;
+    color: #fff !important;
+  }
+  .renhdy{
+    .el-form-item__content{
+      width: 85%;
+    }
+
+  }
+  .upload-demo{
+     text-align: right;
+     display: flex;
+     // ul{
+     //   display: flex;
+     // }
+  }
+  .el-textarea__inner{
+    background-color: #fff !important;
+    border: 0 !important;
+  }
+  .el-input__inner{
+    background-color: #fff !important;
+    border: 0 !important;
+  }
+  .el-input.is-disabled .el-input__inner{
+    color: #333;
+  }
+  }
+</style>
+<style scoped  lang="scss">
+  .app-container{
+    padding: 0 80px !important;
+    padding-top: 20px !important;
+  }
+  .infinite-list {
+    height: 150px;
+    margin-bottom: 20px;
+  }
+  .infinite-listty{
+    display: flex;
+    flex-wrap: wrap;
+    li{
+      // width: 25%;
+      flex: 1;
+      display: flex;
+      height: 40px;
+      line-height: 40px;
+      text-align: center;
+      list-style: none;
+      // border-radius: 40px;
+      // border: 1px solid #eee;
+      // border-bottom: 1px solid #eee;
+    }
+  }
+  .tab_bott {
+    display: flex;
+  }
+  .tabBot_oje {
+    width: 40%;
+  }
+  .tabBot_two {
+    width: 50%;
+    margin-left: 30px;
+  }
+  .box-cardtt{
+    margin-top: 30px;
+  }
+</style>

+ 547 - 0
ruoyi-ui/src/views/system/election/index.vue

@@ -0,0 +1,547 @@
+<template>
+  <div class="iegeu">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="岗位编码" prop="postCode">
+        <el-input v-model="queryParams.postCode" placeholder="请输入岗位编码" clearable size="small" @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="岗位名称" prop="postName">
+        <el-input v-model="queryParams.postName" placeholder="请输入岗位名称" clearable size="small" @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <!-- <el-select v-model="queryParams.status" placeholder="岗位状态" clearable size="small">
+          <el-option
+            v-for="dict in statusOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select> -->
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+    <div class="tab_bott">
+      <div class="tabBot_oje">
+        <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
+          <!-- :setCheckedKeys='setCheckedKeys' :getCheckedKeys = "getCheckedKeys" -->
+          <el-tab-pane label="按部门" name="first">
+            <div class="head-container">
+              <el-input v-model="deptName" placeholder="请输入部门名称" clearable size="small" prefix-icon="el-icon-search" style="margin-bottom: 20px" />
+            </div>
+            <div class="head-container">
+              <el-tree
+                :data="deptOptions"
+                :props="defaultProps"
+                :expand-on-click-node="false"
+                :filter-node-method="filterNode"
+                ref="tree"
+                default-expand-all
+                @node-click="handleNodeClick"
+              />
+            </div>
+          </el-tab-pane>
+          <el-tab-pane label="按角色" name="second" style="height: 400px;">
+            <treeselect v-model="form.parentId" :options="deptOptionstwo" :normalizer="normalizer" :flat="true" :maxHeight="150" @select="djieskle" placeholder="点击选择角色" />
+          </el-tab-pane>
+          <el-tab-pane label="按组" name="third" style="height: 400px;">
+            <treeselect
+              v-model="form.parentIdty"
+              :options="deptOptionsthre"
+              :normalizer="normalizerty"
+              :flat="true"
+              @select="djieskletwo"
+              :maxHeight="350"
+              placeholder="点击选择组"
+            />
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+      <div class="tabBot_two">
+        <el-card class="box-card box-cardtt" shadow="always">
+          <div slot="header" class="clearfix" >
+            <span>人员</span>
+            <!-- <div> -->
+              <el-button style=" float: right;  padding: 3px 10px;" type="danger" plain @click="eledelte">删除</el-button>
+              <el-button style=" float: right; padding: 3px 10px;margin-right: 20px;" type="primary" plain @click="quande">全选</el-button>
+            <!-- </div> -->
+
+          </div>
+          <ul class="infinite-list infinite-listty" v-infinite-scroll="load" style="overflow:auto">
+            <li
+              v-for="(item, index) in liseh"
+              :class="[ quandet==true? 'infinite-list-itemty infinite-list-itemss' : item.id == idneese.id ? 'infinite-list-itemty infinite-list-itemss' : 'infinite-list-itemty']"
+              :key="index"
+              @click="reyantt(item)"
+            >
+              {{ item.userName }}
+              <!-- <el-checkbox
+          style="margin-right: 30px"
+          :indeterminate="item.isIndeterminate"
+          v-model="item.isCheck"
+          @change="checkTitle(item.isCheck, index)"
+          >全选</el-checkbox
+        >
+
+        <el-checkbox-group
+          v-model="item.checkedData"
+          @change="checkItem(item.checkedData, index)"
+        >
+          <el-checkbox
+            v-for="(items, index) in item.children"
+            :label="items.id"
+            :key="items.id"
+            >{{ items.userName }}</el-checkbox
+          >
+        </el-checkbox-group> -->
+            </li>
+          </ul>
+        </el-card>
+        <el-card class="box-card box-cardtt" shadow="always">
+          <div slot="header" class="clearfix">
+            <span>已选择</span>
+            <el-button style="float: right; padding: 3px 0" type="text" @click = 'determine'>确定</el-button>
+          </div>
+          <ul class="infinite-list infinite-listty" v-infinite-scroll="load" style="overflow:auto">
+            <li v-for="item in lisehtwo" @click="lidele(item)" :key="item.id" class="infinite-list-item">
+              {{ item.userName }}
+              <img src="../../../assets/images/dele.png" alt="" class="index_navTimeimg" />
+            </li>
+          </ul>
+        </el-card>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import Flowshoe from '@/components/flowshoe';
+import { getTableQuery, getQueryList, tableSubimt, tableSubimtanit, addbjectSave, delMenutab, tabsubm, getUserProfiletab, bohuie } from '@/api/system/table.js';
+
+import { group, getRole, getPersonnel, getMembers,delRoleses } from '@/api/system/election';
+import { listDept } from '@/api/system/dept';
+import { listRole } from '@/api/system/role';
+import { treeselect } from '@/api/system/dept';
+import Treeselect from '@riophae/vue-treeselect';
+import '@riophae/vue-treeselect/dist/vue-treeselect.css';
+
+export default {
+  name: 'table',
+  inject: ['reload'],
+  components: { Flowshoe, Treeselect },
+  data() {
+    return {
+      instanceId: 0,
+      modalShow: false,
+      // 部门树选项
+      deptOptions: undefined,
+      // 角色
+      deptOptionstwo: [],
+      deptOptionsthre: [],
+      // 部门名称
+      deptName: undefined,
+      // 无限滚动
+      count: 0,
+      activeName: 'first',
+      liseh: [
+        // {
+        //   isCheck: false,
+        //   isIndeterminate: true,
+        //   checkedData: [],
+        //   children: [
+        //   ],
+        // }
+      ],
+      lisehtwo: [],
+      queryParams: {},
+      showSearch: true,
+      data: [],
+      defaultProps: {
+        children: 'children',
+        label: 'label'
+      },
+      // 表单参数
+      form: {},
+      deptList: [],
+      rtuer: false,
+      showtabc: 0,
+      showche: false,
+      idneese: {},
+      quandet:false,
+      dhiuw:[],
+      // 组id
+      elezu:0
+    };
+  },
+  mounted() {
+    this.getTreeselect();
+    // this.staff(100)
+    // this.getUser();
+    // this.tablsie()
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  methods: {
+    getList() {},
+    load() {
+      this.count += 2;
+    },
+    // 树形结构
+    // 节点单击事件
+    handleNodeClick(data) {
+      console.log(data);
+      this.queryParams.deptId = data.id;
+      this.staff(data.id);
+      this.quandet = false
+      // this.getList();
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    // 查询角色
+    getTreeselectjue() {
+      this.loading = true;
+      listRole(this.queryParams).then(response => {
+        this.deptOptionstwo = this.handleTree(response.rows, 'id');
+        this.loading = false;
+      });
+    },
+    // 查询组
+    getTreeselecu() {
+      this.loading = true;
+      group(this.queryParams).then(response => {
+        this.deptOptionsthre = this.handleTree(response.data, 'id');
+        this.loading = false;
+      });
+    },
+    /** 转换角色数据结构 */
+    normalizer(node) {
+      // if (node.children && !node.children.length) {
+      //   delete node.children;
+      // }
+      return {
+        id: node.id,
+        label: node.roleName
+      };
+    },
+    /** 转换组数据结构 */
+    normalizerty(node) {
+      return {
+        id: node.id,
+        label: node.groupName
+      };
+    },
+
+    // getCheckedKeys(leafOnly) {
+    //   console.log(leafOnly)
+    //   console.log(this.$refs.tree.getCheckedKeys());
+    // },
+    setCheckedKeys(keys, leafOnly) {
+      console.log(keys, leafOnly);
+      this.$refs.tree.setCheckedKeys([3]);
+    },
+    resetChecked() {
+      this.$refs.tree.setCheckedKeys([]);
+    },
+    handleClick(index) {
+      console.log(index.index);
+      this.showtabc = index.index;
+      this.showche = false;
+      if (index.index == 0) {
+        this.getTreeselect();
+      } else if (index.index == 1) {
+        this.getTreeselectjue();
+      } else if (index.index == 2) {
+        this.getTreeselecu();
+      }
+    },
+    // 搜索
+    handleQuery() {},
+    // 重置
+    resetQuery() {},
+    // 点击组/角色
+    djieskle(node, instanceId) {
+      this.personnel(node.id);
+      console.log(node, instanceId);
+    },
+    djieskletwo(node, instanceId) {
+      this.members(node.id);
+      this.elezu = node.id
+      console.log(node, instanceId);
+    },
+    check(data, value) {
+      console.log(this.$refs.tree.getCheckedKeys());
+      // 获取选中的子节点
+      // let checkedKeys = this.$refs.tree.getCheckedKeys();
+      // 获取选中的父节点
+      let hafCheckedKeys = this.$refs.tree.getHalfCheckedKeys();
+      console.log(this.$refs.tree.getHalfCheckedKeys());
+
+      console.log(data, value);
+    },
+    // 点击全选
+    quande(){
+      var dueg = []
+      dueg = (this.dhiuw)
+     this.quandet = true
+     var that =  this
+     // dueg.push(index)
+     // this.lisehtwo = dueg
+     // this.lisehtwo.push(index);
+     // this.lisehtwo = [...new Set(this.lisehtwo)];
+     // that.positions.map(train => {
+     //   that.new_Positions.push(train.trainId);
+     // });
+     // that.resultArr = []; //去重后的数组
+     var flag;
+     for (var i in dueg) {
+       flag = true;
+       for (var j in that.lisehtwo) {
+         if (that.lisehtwo[j].id == dueg[i].id) {
+           flag = false;
+           break;
+         }
+       }
+       if (flag) {
+         that.lisehtwo.push(dueg[i]);
+       }
+     }
+    },
+    // 点击全部删除
+    eledelte(){
+     this.lisehtwo = []
+    },
+    // 点击删除
+    lidele(index) {
+      for (let i = this.lisehtwo.length - 1; i >= 0; i--) {
+        if (this.lisehtwo[i].id == index.id) {
+          this.lisehtwo.splice(i, 1)
+        }
+      }
+    },
+    // 点击添加
+    reyantt(index) {
+      var dueg = [];
+      this.idneese = index;
+      var that =  this
+      dueg.push(index)
+      // this.lisehtwo = dueg
+      // this.lisehtwo.push(index);
+      // this.lisehtwo = [...new Set(this.lisehtwo)];
+      // that.positions.map(train => {
+      //   that.new_Positions.push(train.trainId);
+      // });
+      // that.resultArr = []; //去重后的数组
+      var flag;
+      for (var i in dueg) {
+        flag = true;
+        for (var j in that.lisehtwo) {
+          if (that.lisehtwo[j].id == dueg[i].id) {
+            flag = false;
+            break;
+          }
+        }
+        if (flag) {
+          that.lisehtwo.push(dueg[i]);
+        }
+      }
+
+      // for(var i = 0 ; i <this.lisehtwo.length; i++ ){
+      //   if(this.lisehtwo[i].id == index.id){
+      //     this.lisehtwo.splice(i,1)
+      //   }
+      // }
+      // })
+    },
+    // 点击确定
+    determine(){
+      var eledete = []
+     this.lisehtwo.filter(route=>{
+       eledete.push(route.id)
+     })
+     eledete  = eledete.join(',')
+     console.log(eledete)
+     // this.elezu
+     this.loading = true;
+     delRoleses(this.elezu,eledete).then(response => {
+       // this.lisehtwo = response.data;
+       // this.dhiuw = response.data
+       if(response.data == 200){
+         this.msgSuccess('操作成功');
+       }
+       this.loading = false;
+     });
+    },
+    checkItem(val, index) {
+      console.log(val);
+      this.showche = !this.showche;
+      console.log(this.showche);
+      var that = this;
+      let jueg = [];
+      let checkedCount = val.length;
+      this.liseh[index].isCheck = checkedCount === this.liseh[index].children.length;
+
+      this.liseh[index].isIndeterminate = checkedCount > 0 && checkedCount < this.liseh[index].children.length;
+      this.liseh[index].children.filter(router => {
+        // console.log(123)
+        for (var i = 0; i < val.length; i++) {
+          if (this.showche == true) {
+            //选中
+            console.log('选中');
+            if (router.id == val[i]) {
+              jueg.push(router);
+              this.lisehtwo.push(router);
+              // console.log(router)
+              console.log(this.lisehtwo);
+              for (var j = 0; j < that.lisehtwo.length; j++) {
+                if (that.lisehtwo[i].id !== val[i]) {
+                  this.lisehtwo.push(router);
+                }
+              }
+              // that.lisehtwo.filter(routers=>{
+              //   console.log(this.lisehtwo)
+              //   console.log(routers,val[i])
+              //   if(routers.id !== val[i]){
+              //      this.lisehtwo.push(router)
+              //   }
+              // })
+            }
+          } else {
+            // 取消选中
+          }
+        }
+      });
+      // this.lisehtwo.push(jueg)
+      console.log(this.lisehtwo);
+      // console.log(this.liseh[index].isIndeterminate)
+    },
+    checkTitle(val, index) {
+      console.log(val, index);
+      let arr = [];
+      let jueg = [];
+      const re = this.liseh[index].children;
+      //全选
+      if (val) {
+        for (let i = 0; i < re.length; i++) {
+          arr[i] = re[i]['id'];
+          jueg[i] = re[i];
+          this.lisehtwo.push(re[i]);
+        }
+        // this.lisehtwo.push(jueg)
+      } else {
+        this.lisehtwo = [];
+      }
+      console.log(this.lisehtwo);
+      this.liseh[index].checkedData = arr;
+      this.liseh[index].isIndeterminate = false;
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 按照部门查询人员
+    staff(index) {
+      this.loading = true;
+      var that = this;
+      getRole(index).then(response => {
+        // this.deptOptionsthre = this.handleTree(response.data, "id");
+        // this.rtuer = true
+        this.liseh = response.data;
+        this.dhiuw = response.data
+        this.loading = false;
+      });
+    },
+    // 按照角色查询人员
+    personnel(index) {
+      this.loading = true;
+      getPersonnel(index).then(response => {
+        // this.deptOptionsthre = this.handleTree(response.data, "id");        this.liseh = response.data;
+        this.liseh = response.data;
+        this.dhiuw = response.data
+        this.loading = false;
+      });
+    },
+    // 按照组查询人员
+    members(index) {
+      this.loading = true;
+      getMembers(index).then(response => {
+        // this.deptOptionsthre = this.handleTree(response.data, "id");       this.liseh = response.data;
+        // response.data
+        // this.lisehtwo.push(response.data)
+        this.dhiuw = response.data
+        this.dhiuw.filter(route=>{
+          this.lisehtwo.push(route)
+        })
+        this.loading = false;
+      });
+    }
+  }
+};
+</script>
+
+<style scoped lang="scss">
+.iegeu {
+  padding: 30px;
+}
+.infinite-list {
+  height: 150px;
+  margin-bottom: 20px;
+  .infinite-list-item {
+    width: 20% !important;
+    display: flex;
+    // justify-content: space-between;
+    align-items: center;
+    text-align: center;
+    list-style: none;
+    height: 30px;
+    // line-height: 30px;
+  }
+  .infinite-list-itemss {
+    color: #1890ff;
+  }
+}
+.infinite-listty {
+  display: flex;
+  flex-wrap: wrap;
+  .infinite-list-itemty {
+    width: 20%;
+    display: flex;
+    // justify-content: space-between;
+    height: 40px;
+    line-height: 40px;
+    // text-align: center;
+    list-style: none;
+    // border-radius: 40px;
+    // border: 1px solid #eee;
+    // border-bottom: 1px solid #eee;
+  }
+}
+
+.tab_bott {
+  display: flex;
+}
+.tabBot_oje {
+  width: 40%;
+}
+.tabBot_two {
+  width: 50%;
+  margin-left: 30px;
+}
+.box-cardtt {
+  margin-top: 30px;
+}
+.index_navTimeimg {
+  width: 10px;
+  height: 10px;
+  margin-left: 5px;
+}
+</style>

+ 359 - 0
ruoyi-ui/src/views/system/group/index.vue

@@ -0,0 +1,359 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch">
+      <el-form-item label="名称" prop="deptName">
+        <el-input
+          v-model="queryParams.deptName"
+          placeholder="请输入名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="状态" clearable size="small">
+          <el-option
+            v-for="dict in statusOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:dept:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:notice:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="etup"
+          v-hasPermi="['system:notice:edit']"
+        >设置用户</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:notice:remove']"
+        >删除</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="deptList"
+      row-key="id"
+      default-expand-all
+       @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column prop="groupName" label="名称" width="260"></el-table-column>
+      <el-table-column prop="number" label="排序" width="200"></el-table-column>
+      <el-table-column prop="status" label="状态" :formatter="statusFormat" width="100"></el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createTime" width="200"/>
+        <!-- <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+          <span>{{ scope.row.createTime }}</span>
+        </template>
+      </el-table-column> -->
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:dept:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-plus"
+            @click="handleAdd(scope.row)"
+            v-hasPermi="['system:dept:add']"
+          >新增</el-button>
+          <el-button
+            v-if="scope.row.parentId != 0"
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:dept:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 添加或修改部门对话框 -->
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row>
+          <!-- <el-col :span="24" v-if="form.parentId !== 0">
+            <el-form-item label="上级名称" prop="parentId">
+              <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="选择上级名称" />
+            </el-form-item>
+          </el-col> -->
+          <el-col :span="12">
+            <el-form-item label="名称" prop="groupName">
+              <el-input v-model="form.groupName" placeholder="请输入名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="显示排序" prop="number">
+              <el-input-number v-model="form.number" controls-position="right" :min="0" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="状态">
+              <el-radio-group v-model="form.status">
+                <el-radio
+                  v-for="dict in statusOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictValue"
+                >{{dict.dictLabel}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from "@/api/system/group";
+
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Dept",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 表格树数据
+      deptList: [],
+      // 部门树选项
+      deptOptions: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 状态数据字典
+      statusOptions: [],
+      // 查询参数
+      queryParams: {
+        deptName: undefined,
+        status: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        groupName: [
+          { required: true, message: "部门名称不能为空", trigger: "blur" }
+        ],
+        number: [
+          { required: true, message: "菜单顺序不能为空", trigger: "blur" }
+        ],
+        email: [
+          {
+            type: "email",
+            message: "'请输入正确的邮箱地址",
+            trigger: ["blur", "change"]
+          }
+        ],
+        phone: [
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getDicts("sys_normal_disable").then(response => {
+      this.statusOptions = response.data;
+    });
+  },
+  methods: {
+    /** 查询部门列表 */
+    getList() {
+      this.loading = true;
+      listDept(this.queryParams).then(response => {
+        this.deptList = this.handleTree(response.data, "id");
+        this.loading = false;
+      });
+    },
+    /** 转换部门数据结构 */
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.id,
+        label: node.deptName,
+        children: node.children
+      };
+    },
+    // 字典状态字典翻译
+    statusFormat(row, column) {
+      return this.selectDictLabel(this.statusOptions, row.status);
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        parentId: undefined,
+        deptName: undefined,
+        orderNum: undefined,
+        leader: undefined,
+        phone: undefined,
+        email: undefined,
+        status: "0"
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd(row) {
+      this.reset();
+      if (row != undefined) {
+        this.form.parentId = row.id;
+      }
+      this.open = true;
+      this.title = "添加";
+      listDept().then(response => {
+	        this.deptOptions = this.handleTree(response.data, "id");
+      });
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      console.log(selection)
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      console.log(this.ids[0])
+      const id = row.id || this.ids[0]
+      getDept(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改";
+      });
+      // listDeptExcludeChild(row.id).then(response => {
+	     //    this.deptOptions = this.handleTree(response.data, "id");
+      // });
+    },
+    // 设置用户组
+    etup(){
+     const id =  this.ids
+     this.$router.push({
+       path: '/system/election',
+       query: {
+         id
+       },
+     })
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateDept(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addDept(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids
+      this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delDept(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    }
+  }
+};
+</script>

+ 1175 - 0
ruoyi-ui/src/views/system/issue/index.vue

@@ -0,0 +1,1175 @@
+<template>
+  <div class="app-container">
+    <div class="jeuhg">
+      <h3 style="text-align: center; font-size: 30px; color: red; margin-bottom: 20px;">潜山市教育局{{titlet}}稿纸</h3>
+      <el-form :model="querjtgoe" ref="querjtgoe" :rules="rules" v-show="showSearch" :inline="true">
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="12" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;" >
+        <el-form-item :label="titlet + '字号:'" prop="message_code">
+          <el-input placeholder="请输入内容" v-model="querjtgoe.message_code">
+              <el-button slot="append" @click="ziao">历史字号</el-button>
+            </el-input>
+        </el-form-item>
+        </el-col>
+        <el-col :span="12" style="border: 1px solid red; border-bottom: 0; border-left: 0; padding: 15px 0 15px 10px;">
+        <el-form-item :label="titlet + '日期:'" prop="message_time">
+          <el-date-picker :disabled="false" @change="iChange" v-model="querjtgoe.message_time" value-format="yyyy-MM-dd"   style="width: 100%"    type="date" :placeholder="'请输入'">
+          </el-date-picker>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="正文上传:" prop="roleName">
+          <el-upload :disabled="false" class="upload-demo" :headers="{Authorization: 'Bearer ' + getToken()}"
+             :action="process + '/boman-file/upload'" :on-change="handleChangert"
+            :on-success="upImageFn" :on-error="err" :on-remove="reseImage" :file-list="config">
+            <el-button size="small" type="primary">点击上传</el-button>
+          </el-upload>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="附件上传:" prop="roleName">
+          <el-upload :disabled="false" class="upload-demo" :headers="{Authorization: 'Bearer ' + getToken()}"
+             :action="process + '/boman-file/upload'" :on-change="handleChangert"
+          :on-preview="handlePictureCardPreview"  :on-success="upImageFntwo" :on-error="err" :on-remove="reseImagetwo" :file-list="configtwo">
+            <el-button size="small" type="primary">点击上传</el-button>
+          </el-upload>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" style="width: 100%;" label="分发人员:" prop="roleName">
+          <el-input v-model="messageReun"  :disabled="true"  >
+              <el-button slot="prepend" @click="changeren">选择人员</el-button>
+            </el-input>
+            <!-- <p style="display: flex; justify-content: space-between;">
+              <span style="width: 80%;">23</span>
+              <el-button size="small" type="primary">点击上传</el-button>
+            </p> -->
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="分发单位:" prop="ompany">
+          <!-- <el-input
+            type="textarea"
+            autosize
+            :disabled="true"
+            placeholder="请输入内容"
+            v-model="mpany.ompany">
+          </el-input> infinite-list infinite-listty-->
+          <ul class="infinite-listopma " v-infinite-scroll="load" style="overflow:auto">
+              <li v-for="item in mpany.ompany" :key = 'item'>{{item}}</li>
+            </ul>
+          <!-- <p><span>34</span></p> -->
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item class="renhdy" label="角色名称:" prop="name">
+          <ul class="infinite-listopma " v-infinite-scroll="load" style="overflow:auto">
+              <li v-for="item in mpany.name" :key = 'item'>{{item}}</li>
+            </ul>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red; border-bottom: 0; padding: 15px 0 15px 10px;">
+        <el-form-item label="文件标题:" prop="message_title">
+          <el-input
+            v-model="querjtgoe.message_title"
+            placeholder="请输入文件标题"
+            clearable
+            size="small"
+            style="width: 100%"
+            @keyup.enter.native="handleQuery"
+          />
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="border: 1px solid red;  padding: 20px 0 20px 10px;">
+        <el-form-item class="renhdy" label="备注:" prop="message_remark">
+          <el-input
+            type="textarea"
+            autosize
+            placeholder="请输入内容"
+            v-model="querjtgoe.message_remark">
+          </el-input>
+        </el-form-item>
+        </el-col>
+        <el-col :span="24" style="text-align: right; padding-top: 20px;">
+          <el-button type="danger" :disabled="taegshouw" @click="submitForm">提交</el-button>
+        </el-col>
+        </el-row>
+      </el-form>
+    </div>
+
+    <!-- 添加或修改角色配置对话框 -->
+   <el-dialog   :close-on-click-modal="false" title="选择字号" :visible.sync="shouew" width="980px" append-to-body>
+     <el-table @cell-click= 'cellClick' v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
+       <el-table-column label="日志编号" align="center" prop="message_code" />
+     </el-table>
+
+     <pagination
+       v-show="total>0"
+       :total="total"
+       :page.sync="queryParams.pageNum"
+       :limit.sync="queryParams.pageSize"
+       @pagination="getList"
+     />
+     </el-dialog>
+    <!-- 分配角色数据权限对话框 -->
+    <el-dialog   :close-on-click-modal="false" title="选择人员" :visible.sync="modalShow" width="980px" append-to-body>
+      <!-- <Flowshoe  :instanceId="instanceId"></Flowshoe> -->
+      <div class="tab_bott">
+        <div class="tabBot_oje">
+          <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
+            <!-- :setCheckedKeys='setCheckedKeys' :getCheckedKeys = "getCheckedKeys" -->
+            <el-tab-pane label="按部门" name="first">
+              <div class="head-container">
+                <el-input
+                  v-model="deptName"
+                  placeholder="请输入部门名称"
+                  clearable
+                  size="small"
+                  prefix-icon="el-icon-search"
+                  style="margin-bottom: 20px"
+                />
+              </div>
+              <div class="head-container">
+                <el-tree
+                  :data="deptOptions"
+                  :props="defaultProps"
+                  :expand-on-click-node="false"
+                  :filter-node-method="filterNode"
+                  ref="tree"
+                  default-expand-all
+                  @node-click="handleNodeClick"
+                />
+              </div>
+            </el-tab-pane>
+            <el-tab-pane label="按角色" name="second" style="height: 400px;">
+               <treeselect v-model="form.parentId" :options="deptOptionstwo" :normalizer="normalizer" :flat="true" :maxHeight="150" @select="djieskle" placeholder="点击选择角色" />
+            </el-tab-pane>
+            <el-tab-pane label="按组" name="third" style="height: 400px;">
+             <treeselect  v-model="form.parentIdty" :options="deptOptionsthre" :normalizer="normalizerty" :flat="true" @select="djieskletwo" :maxHeight="350" placeholder="点击选择组" />
+            </el-tab-pane>
+          </el-tabs>
+        </div>
+        <div class="tabBot_two">
+          <el-card class="box-card box-cardtt" shadow="always">
+              <div slot="header" class="clearfix">
+                <span>人员</span>
+               <el-button style=" float: right;  padding: 3px 10px;" type="danger" plain @click="eledelte">删除</el-button>
+               <el-button style=" float: right; padding: 3px 10px;margin-right: 20px;" type="primary" plain @click="quande">全选</el-button>
+              </div>
+              <ul class="infinite-list infinite-listty" v-infinite-scroll="load" style="overflow:auto">
+                  <li
+                    v-for="(item, index) in liseh"
+                    :class="[ quandet==true? 'infinite-list-itemty infinite-list-itemss' : item.id == idneese.id ? 'infinite-list-itemty infinite-list-itemss' : 'infinite-list-itemty']"
+                    :key="index"
+                    @click="reyantt(item)"
+                  >
+                    {{ item.userName }}
+                  </li>
+                </ul>
+              </el-card>
+              <el-card class="box-card box-cardtt" shadow="always">
+                <div slot="header" class="clearfix">
+                  <span>已选择</span>
+                  <el-button style="float: right; padding: 3px 0" type="text" @click = 'determine'>确定</el-button>
+                </div>
+                <ul class="infinite-list infinite-listty" v-infinite-scroll="load" style="overflow:auto">
+                  <li v-for="item in lisehtwo" @click="lidele(item)" :key="item.id" class="infinite-list-item">
+                    {{ item.userName }}
+                    <img src="../../../assets/images/dele.png" alt="" class="index_navTimeimg" />
+                  </li>
+                </ul>
+              </el-card>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listRoles,listIndex,   delRole, addRole,addbjectSave, updateRole, exportRole, dataScope, changeRoleStatus, buent,issdanelist,issdaneid } from "@/api/system/isses";
+import {
+    getToken
+  } from "@/utils/auth";
+   import {getUserProfile} from "@/api/system/config";
+   import {tabsubm} from "@/api/system/table";
+  import { group , getRole, getPersonnel, getMembers,delRoleses } from '@/api/system/election';
+  import { listDept } from "@/api/system/dept";
+  import { listRole } from "@/api/system/role";
+  import { treeselect } from "@/api/system/dept";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+export default {
+  name: "Role",
+   components: {  Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 无限滚动
+      count: 0,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 部门名称
+      deptName: undefined,
+      // 角色表格数据
+      roleList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 是否显示弹出层(数据权限)
+      openDataScope: false,
+      menuExpand: false,
+      menuNodeAll: false,
+      deptExpand: true,
+      deptNodeAll: false,
+      // 日期范围
+      dateRange: [],
+      // 状态数据字典
+      statusOptions: [],
+      // 数据范围选项
+      dataScopeOptions: [
+        {
+          value: "1",
+          label: "全部数据权限"
+        },
+        {
+          value: "2",
+          label: "自定数据权限"
+        },
+        {
+          value: "3",
+          label: "本部门数据权限"
+        },
+        {
+          value: "4",
+          label: "本部门及以下数据权限"
+        },
+        {
+          value: "5",
+          label: "仅本人数据权限"
+        }
+      ],
+      // 菜单列表
+      menuOptions: [],
+      // 部门列表
+      deptOptions: [],
+      // 角色
+      deptOptionstwo:[],
+      deptOptionsthre:[],
+      // 查询参数
+      queryParams: {
+      },
+      // 表单参数
+      form: {},
+      // 单位  名称
+      mpany:{
+        ompany:[],
+        name:[]
+        },
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
+      // 表单校验
+      rules: {
+        message_code: [
+          { required: true, message: "发文字号不能为空", trigger: "blur" }
+        ],
+        message_time: [
+          { required: true, message: "发文日期不能为空", trigger: "blur" }
+        ],
+        message_title: [
+          { required: true, message: "文件标题不能为空", trigger: "blur" }
+        ]
+      },
+      dialogImageUrl: '',
+      process: process.env.VUE_APP_BASE_API,
+      dialogVisible: false,
+      disabled: false,
+      filterList: [],
+      config: [],
+      configtwo: [],
+      shouew:false,
+      modalShow:false,
+      forew:{
+       table:'',
+       fixedData:{
+         id:-1
+       }
+      },
+      list:[],
+      activeName:'first',
+      querjtgoe:{
+        message_code:'',
+        message_title:'',
+        message_remark:'',
+        send_time:''
+      },
+      liseh: [
+            ],
+      queryParamsser:{
+       table:'',
+       orderBy:'create_time desc',
+       pageSize:10,
+       pageNo:1,
+       showData:['message_code']
+      },
+      tabData:[],
+      postList:[],
+      faerform:{
+        table: '',
+        objId: -1,
+        fixedData: {},
+        children:[{
+        table: '',
+        objId: -1,
+        fixedData:{}
+        }]
+      },
+      lisehtwo:[
+      ],
+      data: [],
+      deptList: [],
+      rtuer: false,
+      showtabc: 0,
+      showche: false,
+      idneese: {},
+      quandet:false,
+      dhiuw:[],
+      // 组id
+      elezu:0,
+      fileList: [],
+      titlet:'',
+      tabled:'',
+      objeuisd:-1,
+      messageReun:'',
+      frowtse:{
+
+      },
+      taegshouw:false,
+
+
+    };
+  },
+  created() {
+    this.forew.table = this.$route.query.tables;
+    this.queryParamsser.table = this.$route.query.tables;
+    this.tabled =  this.$route.query.tables;
+    this.objeuisd = this.$route.query.id - 0;
+    this.forew.fixedData.id = this.$route.query.id - 0;
+    this.faerform.objId = this.$route.query.id - 0;
+    this.faerform.table = this.$route.query.tables;
+
+    this.frowtse.businessTypeName = this.$route.query.tables;
+    this.frowtse.dbname = this.$route.query.tables;
+
+    this.querjtgoe.message_situation = this.$route.query.tabname - 0;
+    if(this.$route.query.tabname == 'shouwen'){
+      this.titlet = '收文'
+    }else if(this.$route.query.tabname == 1){
+      this.titlet = '发文'
+    }
+    if(this.objeuisd !== -1){
+      this.frowtse.businessType = this.$route.query.id - 0;
+      this.issdane()
+    }
+    this.getUser()
+    this.gerdw()
+    this.getList();
+    this.getTreeselect()
+    this.getDicts("sys_normal_disable").then(response => {
+      this.statusOptions = response.data;
+    });
+  },
+  methods: {
+    /** 查询角色列表 */
+    getList() {
+      this.loading = true;
+      console.log(this.forew)
+      listRoles(this.forew).then(
+        res => {
+          console.log(res)
+          if(res.data !== undefined){
+            this.querjtgoe = res.data
+            if(res.data.message_upload !== undefined && res.data.message_upload !== null ){
+              this.config = JSON.parse(res.data.message_upload)
+              // this.configtwo = res.data.message_enclosure
+            }
+            if(res.data.message_enclosure !== undefined && res.data.message_enclosure !== null ){
+              // this.config = res.data.message_upload
+              this.configtwo = JSON.parse(res.data.message_enclosure)
+            }
+
+            if(res.data.status == '未提交'){
+              this.taegshouw = false
+            }else{
+              this.taegshouw = true
+            }
+          }
+        }
+      );
+    },
+    // 分发单位  人员名称查询
+    issdane(){
+      console.log(346)
+      this.loading = false;
+      let jueg = []
+      let nese = []
+      issdanelist(this.objeuisd).then(response => {
+        if(response.code == 200){
+          this.lisehtwo = response.data
+          this.messageReun = '已选择' + response.data.length +'人'
+          this.lisehtwo.filter(route=>{
+            jueg.push(route.receive_dept_name)
+            nese.push(route.receive_user_name)
+          })
+          this.mpany.ompany = jueg
+          this.mpany.name = nese
+        }
+
+        // this.total = response.data.total;
+        // this.tabData = response.data.tableHeadList;
+        // this.postList = response.data.rows;
+        // for(var i = 0 ; i < this.postList.length; i++){
+        //   console.log(this.postList[i].leavefrom_photo == '[]')
+        // }
+        this.loading = false;
+      });
+    },
+    // 历史字号数据查询
+    lishiList(){
+      console.log(346)
+      this.loading = false;
+      listIndex(this.queryParamsser).then(response => {
+        this.total = response.data.total;
+        this.tabData = response.data.tableHeadList;
+        this.postList = response.data.rows;
+        for(var i = 0 ; i < this.postList.length; i++){
+          console.log(this.postList[i].leavefrom_photo == '[]')
+        }
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 取消按钮(数据权限)
+    cancelDataScope() {
+      this.openDataScope = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      if (this.$refs.menu != undefined) {
+        this.$refs.menu.setCheckedKeys([]);
+      }
+      this.menuExpand = false,
+      this.menuNodeAll = false,
+      this.deptExpand = true,
+      this.deptNodeAll = false,
+      this.form = {
+        roleId: undefined,
+        roleName: undefined,
+        roleKey: undefined,
+        roleSort: 0,
+        status: "0",
+        menuIds: [],
+        deptIds: [],
+        menuCheckStrictly: true,
+        deptCheckStrictly: true,
+        remark: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    // 树权限(展开/折叠)
+    handleCheckedTreeExpand(value, type) {
+      if (type == 'menu') {
+        let treeList = this.menuOptions;
+        for (let i = 0; i < treeList.length; i++) {
+          this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value;
+        }
+      } else if (type == 'dept') {
+        let treeList = this.deptOptions;
+        for (let i = 0; i < treeList.length; i++) {
+          this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value;
+        }
+      }
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      // 获取当前时间戳
+      var  date1 =new Date();
+      // let tmie = Date.parse(date1) / 1000
+      let tmie = this.dateFormat()
+      console.log(tmie)
+      if(this.lisehtwo.length == 0){
+         this.msgSuccess("请选择分发人员");
+         return false
+      }
+      for(var i = 0 ; i < this.lisehtwo.length; i++){
+        this.faerform.children[i] = {table:'',objId:'',fixedData:{}}
+        this.faerform.children[i].table = 'boman_message_receive'
+        if(this.objeuisd == -1){
+          this.faerform.children[i].objId = this.objeuisd
+        }else{
+          this.faerform.children[i].objId = this.lisehtwo[i].id
+        }
+
+        // this.faerform.children[i].fixedData.receive_user_id = this.lisehtwo[i]
+        this.faerform.children[i].fixedData.message_id = 'fk.boman_message'
+        this.faerform.children[i].fixedData.send_message_time = tmie
+        if(this.objeuisd == -1){
+          this.faerform.children[i].fixedData.receive_user_id = this.lisehtwo[i].id
+        }else{
+          this.faerform.children[i].fixedData.receive_user_id = this.lisehtwo[i].receive_user_id
+        }
+
+        this.faerform.children[i].fixedData.receive_user_name = this.lisehtwo[i].userName
+        if(this.lisehtwo[i].dept !== undefined && this.lisehtwo[i].dept !==null){
+          this.faerform.children[i].fixedData.receive_dept_name = this.lisehtwo[i].dept.deptName
+        }else{
+          this.faerform.children[i].fixedData.receive_dept_name = this.lisehtwo[i].deptName
+        }
+
+      }
+      console.log(this.faerform.children[i])
+      // this.faerform.children
+      // this.querjtgoe.message_upload = JSON.stringify(this.querjtgoe.message_upload)
+      // this.querjtgoe.message_enclosure = JSON.stringify(this.querjtgoe.message_enclosure)
+      this.querjtgoe.message_id = 'fk.boman_message'
+      this.querjtgoe.send_time = tmie
+      this.faerform.fixedData = this.querjtgoe
+      console.log(this.faerform)
+      this.$refs["querjtgoe"].validate(valid => {
+      //   if (valid) {
+      //     if (this.form.roleId != undefined) {
+      //       this.form.menuIds = this.getMenuAllCheckedKeys();
+      //       updateRole(this.form).then(response => {
+      //         this.msgSuccess("修改成功");
+      //         this.open = false;
+      //         this.getList();
+      //       });
+      //     } else {
+      //       this.form.menuIds = this.getMenuAllCheckedKeys();
+            addbjectSave(this.faerform).then(response => {
+              // this.msgSuccess("操作成功");
+              this.frowtse.businessCodes = response.data[0].data
+              
+              this.sbreulw()
+              // this.$router.go(-1);
+              // this.open = false;
+              // this.getList();
+            });
+      //     }
+      //   }
+      });
+    },
+    /** 提交按钮(数据权限) */
+    submitDataScope: function() {
+      if (this.form.roleId != undefined) {
+        this.form.deptIds = this.getDeptAllCheckedKeys();
+        dataScope(this.form).then(response => {
+          this.msgSuccess("修改成功");
+          this.openDataScope = false;
+          this.getList();
+        });
+      }
+    },
+    handleClick(index){
+    if(index.index == 0){
+      this.getTreeselect()
+    }else if(index.index == 1){
+      this.getTreeselectjue()
+    }else if(index.index == 2){
+      this.getTreeselecu()
+    }
+    },
+    ziao(){
+      console.log(23)
+      this.shouew = true
+      this.lishiList()
+    },
+    // 人员选择
+    changeren(){
+    this.modalShow = true
+
+    },
+    // 上传文件
+    handleChangert(file, fileList) {
+      this.fileList = fileList.slice(-3);
+    },
+    getToken() {
+      return getToken()
+    },
+    reseImage(file, fileList) {
+      let urls = ""
+      if (file.response) {
+        urls = file.response.url
+      } else {
+        urls = file.url
+      }
+      for (let i = this.config.length - 1; i >= 0; i--) {
+        if (this.config[i].url == urls) {
+          this.config.splice(i, 1);
+        }
+      }
+      this.querjtgoe.message_upload = this.config
+    },
+    reseImagetwo(file, fileList) {
+      let urls = ""
+      if (file.response) {
+        urls = file.response.url
+      } else {
+        urls = file.url
+      }
+      for (let i = this.configtwo.length - 1; i >= 0; i--) {
+        if (this.configtwo[i].url == urls) {
+          this.configtwo.splice(i, 1);
+        }
+      }
+     console.log(this.configtwo)
+     this.querjtgoe.message_enclosure = this.configtwo
+    },
+    handlePictureCardPreview(file) {
+      console.log(file)
+      this.dialogImageUrl = file.url;
+      this.dialogVisible = true;
+    },
+    upImageFn(res, file) {
+      if(res.code !== 200){
+        this.msgSuccess('上传失败');
+        return false
+      }else{
+        this.msgSuccess('上传成功');
+        this.config.push(res.data);
+        this.querjtgoe.message_upload = this.config
+        this.querjtgoe.message_upload = JSON.stringify(this.querjtgoe.message_upload)
+      }
+
+      console.log(res)
+    },
+    upImageFntwo(res, file) {
+      if(res.code == 200){
+        this.msgSuccess('上传成功');
+        this.configtwo.push(res.data);
+        this.querjtgoe.message_enclosure  = this.configtwo
+        this.querjtgoe.message_enclosure  = JSON.stringify(this.querjtgoe.message_enclosure)
+      }else{
+        this.msgSuccess('上传失败');
+        return false
+      }
+
+      console.log(this.configtwo)
+    },
+    // 时间控件
+    iChange(){
+
+    },
+    err(){
+      this.msgSuccess("上传失败");
+     console.log(35)
+    },
+    load(){
+
+    },
+    // 点击单元格
+    cellClick(row){
+      console.log(row)
+      this.shouew =  false
+      this.querjtgoe.message_code = row.message_code
+
+    },
+    // 树形结构
+    // 节点单击事件
+   handleNodeClick(data) {
+     console.log(data);
+     // this.queryParams.deptId = data.id;
+     this.staff(data.id);
+     this.quandet = false
+     // this.getList();
+   },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    // 查询角色
+    getTreeselectjue() {
+      this.loading = true;
+      listRole(this.queryParams).then(response => {
+        this.deptOptionstwo = this.handleTree(response.rows, "id");
+        this.loading = false;
+      });
+    },
+    // 查询组
+    getTreeselecu() {
+      this.loading = true;
+      group(this.queryParams).then(response => {
+        this.deptOptionsthre = this.handleTree(response.data, "id");
+        this.loading = false;
+      });
+    },
+    /** 转换角色数据结构 */
+    normalizer(node) {
+      // if (node.children && !node.children.length) {
+      //   delete node.children;
+      // }
+      return {
+        id: node.id,
+        label: node.roleName,
+      };
+    },
+    /** 转换组数据结构 */
+    normalizerty(node) {
+      return {
+        id: node.id,
+        label: node.groupName,
+      };
+    },
+   // 点击组/角色
+     djieskle(node, instanceId) {
+       this.personnel(node.id);
+       console.log(node, instanceId);
+     },
+     djieskletwo(node, instanceId) {
+       this.members(node.id);
+       this.elezu = node.id
+       console.log(node, instanceId);
+     },
+     check(data, value) {
+       console.log(this.$refs.tree.getCheckedKeys());
+       // 获取选中的子节点
+       // let checkedKeys = this.$refs.tree.getCheckedKeys();
+       // 获取选中的父节点
+       let hafCheckedKeys = this.$refs.tree.getHalfCheckedKeys();
+       console.log(this.$refs.tree.getHalfCheckedKeys());
+
+       console.log(data, value);
+     },
+     // 点击全选
+     quande(){
+       var dueg = []
+       dueg = (this.dhiuw)
+      this.quandet = true
+      var that =  this
+      // dueg.push(index)
+      // this.lisehtwo = dueg
+      // this.lisehtwo.push(index);
+      // this.lisehtwo = [...new Set(this.lisehtwo)];
+      // that.positions.map(train => {
+      //   that.new_Positions.push(train.trainId);
+      // });
+      // that.resultArr = []; //去重后的数组
+      var flag;
+      for (var i in dueg) {
+        flag = true;
+        for (var j in that.lisehtwo) {
+          if (that.lisehtwo[j].id == dueg[i].id) {
+            flag = false;
+            break;
+          }
+        }
+        if (flag) {
+          that.lisehtwo.push(dueg[i]);
+        }
+      }
+     },
+     // 点击全部删除
+     eledelte(){
+      this.lisehtwo = []
+     },
+     // 点击删除
+     lidele(index) {
+       for (let i = this.lisehtwo.length - 1; i >= 0; i--) {
+         if (this.lisehtwo[i].id == index.id) {
+           this.lisehtwo.splice(i, 1)
+         }
+       }
+     },
+     // 点击添加
+     reyantt(index) {
+       var dueg = [];
+       this.idneese = index;
+       var that =  this
+       dueg.push(index)
+       // this.lisehtwo = dueg
+       // this.lisehtwo.push(index);
+       // this.lisehtwo = [...new Set(this.lisehtwo)];
+       // that.positions.map(train => {
+       //   that.new_Positions.push(train.trainId);
+       // });
+       // that.resultArr = []; //去重后的数组
+       var flag;
+       for (var i in dueg) {
+         flag = true;
+         for (var j in that.lisehtwo) {
+           if (that.lisehtwo[j].id == dueg[i].id) {
+             flag = false;
+             break;
+           }
+         }
+         if (flag) {
+           that.lisehtwo.push(dueg[i]);
+         }
+       }
+
+       // for(var i = 0 ; i <this.lisehtwo.length; i++ ){
+       //   if(this.lisehtwo[i].id == index.id){
+       //     this.lisehtwo.splice(i,1)
+       //   }
+       // }
+       // })
+     },
+     // 点击确定
+     determine(){
+       var eledete = []
+      this.lisehtwo.filter(route=>{
+        eledete.push(route.id)
+      })
+      eledete  = eledete.join(',')
+      console.log(this.lisehtwo)
+      this.messageReun = '已选择' + this.lisehtwo.length +'人'
+      // this.elezu
+      this.loading = true;
+      buent(this.lisehtwo).then(response => {
+        // this.lisehtwo = response.data;
+        // this.dhiuw = response.data
+        this.mpany.ompany = response.deptNameList
+        this.mpany.name = response.roleNameList
+        console.log( this.mpany.ompany)
+        if(response.code == 200){
+          this.msgSuccess('操作成功');
+          this.modalShow = false
+        }
+        this.loading = false;
+      });
+     },
+     checkItem(val, index) {
+       console.log(val);
+       this.showche = !this.showche;
+       console.log(this.showche);
+       var that = this;
+       let jueg = [];
+       let checkedCount = val.length;
+       this.liseh[index].isCheck = checkedCount === this.liseh[index].children.length;
+
+       this.liseh[index].isIndeterminate = checkedCount > 0 && checkedCount < this.liseh[index].children.length;
+       this.liseh[index].children.filter(router => {
+         // console.log(123)
+         for (var i = 0; i < val.length; i++) {
+           if (this.showche == true) {
+             //选中
+             console.log('选中');
+             if (router.id == val[i]) {
+               jueg.push(router);
+               this.lisehtwo.push(router);
+               // console.log(router)
+               console.log(this.lisehtwo);
+               for (var j = 0; j < that.lisehtwo.length; j++) {
+                 if (that.lisehtwo[i].id !== val[i]) {
+                   this.lisehtwo.push(router);
+                 }
+               }
+               // that.lisehtwo.filter(routers=>{
+               //   console.log(this.lisehtwo)
+               //   console.log(routers,val[i])
+               //   if(routers.id !== val[i]){
+               //      this.lisehtwo.push(router)
+               //   }
+               // })
+             }
+           } else {
+             // 取消选中
+           }
+         }
+       });
+       // this.lisehtwo.push(jueg)
+       console.log(this.lisehtwo);
+       // console.log(this.liseh[index].isIndeterminate)
+     },
+     checkTitle(val, index) {
+       console.log(val, index);
+       let arr = [];
+       let jueg = [];
+       const re = this.liseh[index].children;
+       //全选
+       if (val) {
+         for (let i = 0; i < re.length; i++) {
+           arr[i] = re[i]['id'];
+           jueg[i] = re[i];
+           this.lisehtwo.push(re[i]);
+         }
+         // this.lisehtwo.push(jueg)
+       } else {
+         this.lisehtwo = [];
+       }
+       console.log(this.lisehtwo);
+       this.liseh[index].checkedData = arr;
+       this.liseh[index].isIndeterminate = false;
+     },
+     // 筛选节点
+     filterNode(value, data) {
+       if (!value) return true;
+       return data.label.indexOf(value) !== -1;
+     },
+     // 按照部门查询人员
+     staff(index) {
+       this.loading = true;
+       var that = this;
+       getRole(index).then(response => {
+         // this.deptOptionsthre = this.handleTree(response.data, "id");
+         // this.rtuer = true
+         this.liseh = []
+         this.liseh = response.data;
+         this.dhiuw = response.data
+         this.loading = false;
+       });
+     },
+     // 按照角色查询人员
+     personnel(index) {
+       this.loading = true;
+       getPersonnel(index).then(response => {
+         // this.deptOptionsthre = this.handleTree(response.data, "id");        this.liseh = response.data;
+         this.liseh = []
+         this.liseh = response.data;
+         this.dhiuw = response.data
+         this.loading = false;
+       });
+     },
+     // 按照组查询人员
+     members(index) {
+       this.loading = true;
+       getMembers(index).then(response => {
+         // this.deptOptionsthre = this.handleTree(response.data, "id");
+         // this.liseh = response.data;
+         // response.data
+         // this.lisehtwo.push(response.data)
+         this.liseh = []
+         this.liseh = response.data;
+         // this.dhiuw = response.data
+         // this.dhiuw.filter(route=>{
+         //   this.lisehtwo.push(route)
+         // })
+         this.loading = false;
+       });
+     },
+     // 提交
+     sbreulw(){
+        tabsubm(this.frowtse).then(response => {
+          if (response.resultCode == 0) {
+            this.msgSuccess('提交成功');
+          }
+          this.$store.dispatch('tagsView/delView', this.$route);
+          // this.reload();
+          this.$router.go(-1)
+          // this.formeanti.commitData = []
+          // this.formy.status = 1
+          // this.formeanti.commitData.push(this.formy)
+          // this.antiSubmission();
+        });
+     },
+     // 获取表单id
+     gerdw(){
+      issdaneid(this.faerform.table).then(res=>{
+        console.log(res)
+        this.frowtse.businessType = res.data.id
+      })
+     },
+     // 用户信息
+           getUser() {
+             getUserProfile().then(response => {
+               this.querjtgoe.send_user_id = response.data.id
+               this.querjtgoe.send_user_name = response.data.userName
+               this.querjtgoe.create_dept_nam = response.data.dept.deptName
+               this.faerform.fixedData.send_user_id = response.data.id
+               this.frowtse.initiator = response.data.id
+               this.frowtse.userName = response.data.userName
+               // this.user = response.data;
+               // this.getLisalendar()
+               // this.getLismemorandum()
+               this.init();
+               this.getList();
+             });
+           },
+           // 时间转换
+     dateFormat() {
+           var date = new Date();
+               var month = date.getMonth() + 1;
+               var strDate = date.getDate();
+               var hours = date.getHours()
+               var minus = date.getMinutes()
+               var secong = date.getSeconds()
+               if (month >= 1 && month <= 9) {
+                   month = "0" + month;
+               }
+               if (strDate >= 0 && strDate <= 9) {
+                   strDate = "0" + strDate;
+               }
+               if (hours >= 0 && hours <= 9) {
+                   hours = "0" + hours;
+               }
+               if (minus >= 0 && minus <= 9) {
+                   minus = "0" + minus;
+               }
+               if (secong >= 0 && secong <= 9) {
+                   secong = "0" + secong;
+               }
+               var currentDate = date.getFullYear() + "-" + month + "-" + strDate
+                       + " " + hours + ":" + minus + ":" + secong;
+               return currentDate;
+         },
+   }
+  // }
+  // }
+};
+</script>
+
+
+<style lang="scss">
+  .jeuhg{
+   .el-form-item{
+     margin-bottom: 0;
+     width: 100%;
+   }
+   .el-form-item__content{
+      width: 80%;
+   }
+   .el-form-item__label{
+     color: red;
+   }
+   input{
+     background: none;
+     	  outline: none;
+     	  border: none;
+   }
+  .el-input-group__prepend{
+    background-color: #1890ff !important;
+    color: #fff !important;
+  }
+  .el-input-group__append{
+    background-color: #1890ff !important;
+    color: #fff !important;
+  }
+  .renhdy{
+    .el-form-item__content{
+      width: 85%;
+    }
+
+  }
+  .upload-demo{
+     text-align: right;
+     display: flex;
+     // ul{
+     //   display: flex;
+     // }
+  }
+  .el-textarea__inner{
+    background-color: #fff !important;
+    border: 0 !important;
+  }
+  .el-input__inner{
+    background-color: #fff !important;
+    border: 0 !important;
+  }
+  .el-input.is-disabled .el-input__inner{
+    color: #333;
+  }
+  }
+</style>
+<style scoped  lang="scss">
+  .app-container{
+    padding: 0 80px !important;
+    padding-top: 20px !important;
+  }
+  .infinite-list {
+    height: 150px;
+    margin-bottom: 20px;
+    .infinite-list-item {
+      width: 20% !important;
+      display: flex;
+      // justify-content: space-between;
+      align-items: center;
+      text-align: center;
+      list-style: none;
+      height: 30px;
+      // line-height: 30px;
+    }
+    .infinite-list-itemss {
+      color: #1890ff;
+    }
+  }
+  .infinite-listty {
+    display: flex;
+    flex-wrap: wrap;
+    .infinite-list-itemty {
+      width: 20%;
+      display: flex;
+      // justify-content: space-between;
+      height: 40px;
+      line-height: 40px;
+      // text-align: center;
+      list-style: none;
+      // border-radius: 40px;
+      // border: 1px solid #eee;
+      // border-bottom: 1px solid #eee;
+    }
+  }
+  // 分发人员
+  .infinite-listopma{
+   width: 100%;
+   display: flex;
+   flex-wrap: wrap;
+   justify-content: flex-start;
+   li{
+     list-style: none;
+     width: 20%;
+   }
+  }
+  .tab_bott {
+    display: flex;
+  }
+  .tabBot_oje {
+    width: 40%;
+  }
+  .tabBot_two {
+    width: 50%;
+    margin-left: 30px;
+  }
+  .box-cardtt{
+    margin-top: 30px;
+  }
+  .index_navTimeimg {
+    width: 10px;
+    height: 10px;
+    margin-left: 5px;
+  }
+</style>

+ 41 - 0
ruoyi-ui/src/views/system/pdf/index.vue

@@ -0,0 +1,41 @@
+<template>
+  <div class="pdf" v-show="fileType === 'pdf'">
+    <p class="arrow">
+    <!-- // 上一页 -->
+    <span @click="changePdfPage(0)" class="turn" :class="{grey: currentPage==1}">Preview</span>
+    {{currentPage}} / {{pageCount}}
+    <!-- // 下一页 -->
+    <span @click="changePdfPage(1)" class="turn" :class="{grey: currentPage==pageCount}">Next</span>
+    </p>
+    <div>
+      <p style="font-size: 28px; font-weight: 700;">正文:</p>
+        <a :href="src" download="测试">下载</a>
+    </div>
+    <p style="font-size: 28px; font-weight: 700;">附件:</p>
+    <iframe :src="src" frameborder="0" style="width: 100%; height: 100vh;"></iframe>
+  </div>
+</template>
+<script>
+import Pdf from 'vue-pdf'
+export default {
+  components: {
+    Pdf
+  },
+  data() {
+    return {
+      dialogVisible: true,
+      src: `${window.location.origin}/ceshi.pdf`,
+      fileType:'pdf'
+    }
+  },
+  created() {
+
+  },
+  methods: {
+
+  }
+}
+</script>
+
+<style>
+</style>

+ 82 - 10
ruoyi-ui/src/views/system/surface/index.vue

@@ -28,6 +28,9 @@
                 :src="scope.row[scope.column.property] == '[]' ? '' : JSON.parse(scope.row[scope.column.property])[0].url  " alt="">
              <span :style="scope.row.list_class" v-else-if="item.htmlType=='imageUpload' && scope.row[scope.column.property] && scope.row[scope.column.property] == '[]'">暂无图片</span>
               <span :style="scope.row.list_class" v-else-if="item.columnName == 'status' ">{{ scope.row[scope.column.property] }}</span>
+              <div v-else-if="item.columnName == 'message_title' && tabnaem == 'yidu' || tabnaem == 'weidu' " @click="titey">
+                 {{scope.row[scope.column.property]}}
+              </div>
               <div v-else>
                 <span v-if="item.fkInfo">{{scope.row[scope.column.property].value}}</span>
                 <span v-else>{{scope.row[scope.column.property]}}</span>
@@ -52,6 +55,7 @@
     delMenu,
     getObject
   } from '@/api/system/table.js'
+  import {getUserProfile} from "@/api/system/config";
   import {
     mapGetters,
     mapState
@@ -98,7 +102,8 @@
 
             }
           }
-        }
+        },
+        tabnaem:''
       };
     },
     filters: {
@@ -127,6 +132,7 @@
       ...mapGetters(["sidebarRouters", "sidebar", "tabIndex"]),
     },
     mounted() {
+      this.getUser()
       const route = this.$route;
       const {
         meta,
@@ -137,11 +143,32 @@
       })[0].children.filter(res => {
         return res.path == path.split('/')[2]
       })[0]
+      let naem = route.name.split('/')
+      let nmaelist = naem[naem.length - 1]
+      this.tabnaem = nmaelist
+      console.log(nmaelist)
       this.tabName = items.sysTableName
       this.queryParams.table = items.sysTableName
+      if(nmaelist == 1){
+        this.queryParams.fixedData.condition.message_situation = nmaelist
+      }else if(nmaelist == 'shouwen'){
+        this.queryParams.fixedData.condition.message_situation = 2
+      }else if(nmaelist == 'shenqingzhong'){
+        this.queryParams.fixedData.condition.status = 4
+      }else if(nmaelist == 2){
+        this.queryParams.fixedData.condition.message_situation = 3
+      }
+      else if(nmaelist == 3){
+        this.queryParams.fixedData.condition.message_situation = 4
+      }
+      else{
+        this.queryParams.fixedData.condition.message_situation = undefined
+      }
+
+      // this.queryParams.fixedData.condition.message_situation
       this.form.table = items.sysTableName
-      this.init();
-      this.getList();
+
+
     },
     methods: {
       zjFn(str) {
@@ -165,25 +192,30 @@
         this.$refs.BigPicture.hidden.status = true
       },
       routerFn(id, tables) {
-        if (this.queryData.viewType == 'crud') {
+
+        console.log(this.tabnaem)
+        if (this.tabnaem == 'shouwen' || this.tabnaem == 'yidu' || this.tabnaem == 'weidu' ) {
+          console.log(34)
           this.$router.push({
-            path: '/business/table',
+            path: '/business/collection',
             query: {
               id,
               tables,
+              tabname:'shouwen'
             },
           })
-        } else if (this.queryData.viewType == 'headTab') {
+        } else if (this.tabnaem == 1) {
           this.$router.push({
-            path: '/business/editing',
+            path: '/business/issue',
             query: {
               id,
               tables,
+              tabname:this.tabnaem
             },
           })
-        } else if (this.queryData.viewType == 'itemTab') {
+        } else {
           this.$router.push({
-            path: '/business/form',
+            path: '/business/issue',
             query: {
               id,
               tables,
@@ -327,7 +359,47 @@
           this.queryData = data
         })
       },
-      handleChange(val) {}
+      handleChange(val) {},
+      // 点击标题
+      titey(){
+        // query: {
+        //   id,
+        //   tables,
+        //   tabname:this.tabnaem
+        // },
+        console.log(2354)
+        this.$router.push({
+          path: '/system/pdf'
+
+        })
+      },
+// 用户信息
+      getUser() {
+        getUserProfile().then(response => {
+          if(this.tabnaem == 'yidu'){
+             this.queryParams.fixedData.condition.visible =  'Y'
+             this.queryParams.fixedData.condition.status = 'Y'
+             this.queryParams.fixedData.condition.receive_user_id = response.data.id
+             this.queryParams.fixedData.condition.send_user_id = undefined
+             console.log(this.queryParams.fixedData.condition.send_user_id)
+          }else if(this.tabnaem == 'weidu'){
+            this.queryParams.fixedData.condition.visible =  'Y'
+            this.queryParams.fixedData.condition.status = 'N'
+            this.queryParams.fixedData.condition.receive_user_id = response.data.id
+            this.queryParams.fixedData.condition.send_user_id = undefined
+          }else{
+            this.queryParams.fixedData.condition.send_user_id = response.data.id
+
+          }
+
+          // this.queryParams.fixedData.condition.receive_user_id = response.data.id
+          // this.user = response.data;
+          // this.getLisalendar()
+          // this.getLismemorandum()
+          this.init();
+          this.getList();
+        });
+      },
     },
   };
 </script>

+ 624 - 553
ruoyi-ui/src/views/system/table/index.vue

@@ -4,52 +4,62 @@
       <!-- <p>单表</p>
       <el-divider></el-divider> -->
       <div class="imge_tab">
-        <img src="../../../assets/images/pic_sy_ytj.png" alt="" v-if="imgShoew == 2">
-        <img src="../../../assets/images/pic_sy_shz.png" alt="" v-if="imgShoew == 4">
-        <img src="../../../assets/images/pic_sy_ybh.png" alt="" v-if="imgShoew == 3">
+        <img src="../../../assets/images/pic_sy_ytj.png" alt="" v-if="imgShoew == 2" />
+        <img src="../../../assets/images/pic_sy_shz.png" alt="" v-if="imgShoew == 4" />
+        <img src="../../../assets/images/pic_sy_ybh.png" alt="" v-if="imgShoew == 3" />
       </div>
-      <div class="table_headerBtun table_headerBtuntwo" >
-        <el-button type="primary" size="mini" plain v-for="(item,index) in jeigneutwo" :key="index"
-                   @click="handleQuery(item)">{{item}}
-        </el-button>
+      <div class="table_headerBtun table_headerBtuntwo">
+        <el-button type="primary" size="mini" plain v-for="(item, index) in jeigneutwo" :key="index" @click="handleQuery(item)">{{ item }}</el-button>
       </div>
     </div>
     <!-- 内容 -->
     <div class="table_nav headertable_nav table_forem">
       <el-collapse v-model="activeNames" @change="handleChange">
-        <el-form :model="queryParams" :rules="queryData.rules" ref="queryForm" :inline="true"
-                 :label-width="this.queryData.table_column == 6 ? '70px' :'110px'">
-          <el-collapse-item :title="item.columnComment" :name="index" v-for="(item,index) in queryData.showData"
-                            :key="index">
-            <dynamic-formsteo @iChange="iChange" :queryData="queryData" @modelFn="modelFn" :ref="items.columnName"
-                              :config="queryParams" @inputs="changeFn" :formConfig="items"
-                              v-for="(items,indexs) in item.hrChildren"
-                              :key='indexs'/>
+        <el-form :model="queryParams" :rules="queryData.rules" ref="queryForm" :inline="true" :label-width="this.queryData.table_column == 6 ? '70px' : '110px'">
+          <el-collapse-item :title="item.columnComment" :name="index" v-for="(item, index) in queryData.showData" :key="index">
+            <dynamic-formsteo
+              @iChange="iChange"
+              :queryData="queryData"
+              @modelFn="modelFn"
+              :ref="items.columnName"
+              :config="queryParams"
+              @inputs="changeFn"
+              :formConfig="items"
+              v-for="(items, indexs) in item.hrChildren"
+              :key="indexs"
+              :modalShow.sync="modalShow"
+               @closepop="closepop"
+            />
           </el-collapse-item>
+
         </el-form>
         <div>
-          <el-dialog :close-on-click-modal="false" title="选择人员" :visible.sync="modalShow" width="980px" append-to-body>
-           <!-- <Flowshoe  :instanceId="instanceId"></Flowshoe> -->
-          <div class="tab_bott">
-            <div class="tabBot_oje">
-              <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
-                  <el-tab-pane label="按部门" name="first">用户管理</el-tab-pane>
+          <!-- :showde.sync="modalShow" -->
+          <el-dialog   :close-on-click-modal="false" title="选择人员" :visible.sync="modalShow" width="980px" append-to-body>
+            <!-- <Flowshoe  :instanceId="instanceId"></Flowshoe> -->
+            <div class="tab_bott">
+              <div class="tabBot_oje">
+                <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
+                  <!-- :setCheckedKeys='setCheckedKeys' :getCheckedKeys = "getCheckedKeys" -->
+                  <el-tab-pane label="按部门" name="first">
+                    <el-tree :data="data" :props="defaultProps" show-checkbox   default-expand-all node-key="id" :setCheckedKeys='setCheckedKeys'  @check = "check"   ref="tree"  highlight-current @node-click="handleNodeClick" ></el-tree>
+                  </el-tab-pane>
                   <el-tab-pane label="按角色" name="second">配置管理</el-tab-pane>
                   <el-tab-pane label="按组" name="third">角色管理</el-tab-pane>
                 </el-tabs>
+              </div>
+              <div class="tabBot_two">
+                <el-card class="box-card" shadow="always">
+                  <div slot="header" class="clearfix">
+                    <span>人员对应的单位</span>
+                    <el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
+                  </div>
+                  <ul class="infinite-list infinite-listty" v-infinite-scroll="load" style="overflow:auto">
+                    <li v-for="i in count" class="infinite-list-item">{{ i }}</li>
+                  </ul>
+                </el-card>
+              </div>
             </div>
-            <div class="tabBot_two">
-              <el-card class="box-card" shadow="always">
-                <div slot="header" class="clearfix">
-                  <span>人员对应的单位</span>
-                  <el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
-                </div>
-                <ul class="infinite-list infinite-listty" v-infinite-scroll="load" style="overflow:auto">
-                 <li v-for="i in count" class="infinite-list-item">{{ i }}</li>
-                </ul>
-              </el-card>
-            </div>
-          </div>
           </el-dialog>
         </div>
       </el-collapse>
@@ -57,578 +67,639 @@
   </div>
 </template>
 <script>
-  import Flowshoe from '@/components/flowshoe'
-  import {
-    getTableQuery,
-    getQueryList,
-    tableSubimt,
-    tableSubimtanit,
-    addbjectSave,
-    delMenutab,
-    tabsubm,
-    getUserProfiletab,
-    bohuie
-  } from '@/api/system/table.js'
-
-  export default {
-    name: "table",
-    inject: ['reload'],
-    components:{Flowshoe},
-    data() {
-      return {
-        // 显示搜索条件
-        showSearch: true,
-        activeNames: [0],
-        title: '单表1',
-        tabledeLise: {
-          table: '',
-          isUi: true
-        },
-        queryData: {},
-        // 查询参数
-        queryParams: {},
-        labletit: '查询参数1233',
-        tableZbie: {
-          table: '',
-          isUi: true,
-          fixedData: {
-            id: -1
-          }
-
-        },
-        taleLisst: [],
-        forme: {
-          table: '',
-          objId: -1,
-          fixedData: {}
-        },
-        formeanti: {
-          table: '',
-          commitData: [],
-        },
-        formy: {
-          id: 0,
-          status: 1
-        },
-        // 删除参数
-        deledlid: {
-          table: '',
-          idList: []
-        },
-        jeigneu: [],
-        jeigneutwo: [],
-        xidugje: 0,
-        tijeq: 0,
-        imgShoew: 0,
-        tablees: -1,
-        juegkae: '',
-        tabdiese: '',
-        cielsshow: false,
-        oieufr: 0,
-        ojeuduj: 0,
-        juegh:{
-
+import Flowshoe from '@/components/flowshoe';
+import { getTableQuery, getQueryList, tableSubimt, tableSubimtanit, addbjectSave, delMenutab, tabsubm, getUserProfiletab, bohuie } from '@/api/system/table.js';
+
+export default {
+  name: 'table',
+  inject: ['reload'],
+  components: { Flowshoe },
+  data() {
+    return {
+      // 显示搜索条件
+      showSearch: true,
+      activeNames: [0],
+      title: '单表1',
+      tabledeLise: {
+        table: '',
+        isUi: true
+      },
+      queryData: {},
+      // 查询参数
+      queryParams: {},
+      labletit: '查询参数1233',
+      tableZbie: {
+        table: '',
+        isUi: true,
+        fixedData: {
+          id: -1
+        }
+      },
+      taleLisst: [],
+      forme: {
+        table: '',
+        objId: -1,
+        fixedData: {}
+      },
+      formeanti: {
+        table: '',
+        commitData: []
+      },
+      formy: {
+        id: 0,
+        status: 1
+      },
+      // 删除参数
+      deledlid: {
+        table: '',
+        idList: []
+      },
+      jeigneu: [],
+      jeigneutwo: [],
+      xidugje: 0,
+      tijeq: 0,
+      imgShoew: 0,
+      tablees: -1,
+      juegkae: '',
+      tabdiese: '',
+      cielsshow: false,
+      oieufr: 0,
+      ojeuduj: 0,
+      juegh: {},
+      oejgtueo: {
+        businessCode: 0
+      },
+      instanceId: 0,
+      modalShow: false,
+      // 无限滚动
+      count: 0,
+      data: [
+        {
+          id: 1,
+          label: '一级 1',
+          children: [
+            {
+              id: 4,
+              label: '二级 1-1',
+              children: [
+                {
+                  id: 9,
+                  label: '三级 1-1-1'
+                },
+                {
+                  id: 10,
+                  label: '三级 1-1-2'
+                }
+              ]
+            }
+          ]
         },
-        oejgtueo:{
-          businessCode:0
+        {
+          id: 2,
+          label: '一级 2',
+          children: [
+            {
+              id: 5,
+              label: '二级 2-1'
+            },
+            {
+              id: 6,
+              label: '二级 2-2'
+            }
+          ]
         },
-        instanceId: 0,
-        modalShow:false,
-        // 无限滚动
-        count: 0
-      };
-    },
-    mounted() {
-      this.deledlid.idList = []
-      this.formeanti.table = this.$route.query.tables
-      this.instanceId = this.$route.query.id- 0
-      this.forme.table = this.$route.query.tables
-      this.forme.objId = this.$route.query.id
-      this.oejgtueo.businessCode = this.$route.query.id
-      this.tableZbie.table = this.$route.query.tables
-      this.tableZbie.fixedData.id = this.$route.query.id
-      this.juegh.businessCodes = this.$route.query.id - 0
-      this.juegh.businessTypeName = this.$route.query.tables
-      this.juegh.dbname = this.$route.query.tables
-      this.formy.id = this.$route.query.id
-      this.deledlid.table = this.$route.query.tables
-      this.ojeuduj = this.$route.query.id
-      this.deledlid.idList.push(this.$route.query.id)
-      if (this.$route.query.tabfe) {
-        this.tablees = this.$route.query.tabfe
-        this.juegkae = this.$route.query.tabik + '_id'
-        this.tabdiese = this.$route.query.tabik
-        console.log(this.juegkae)
-      } else {
-        this.tablees = undefined
-        this.juegkae = undefined
-        this.tabdiese = this.$route.query.tabik
-      }
-      this.init()
-      this.getUser()
-      // this.tablsie()
-    },
-    methods: {
-      iChange(name, val) {
-        for (let item of this.queryData.showData) {
-          for (let itemChild of item.hrChildren) {
-            if (itemChild.columnName == name) {
-              itemChild.columnValue = (val ? val : null)
+        {
+          id: 3,
+          label: '一级 3',
+          children: [
+            {
+              id: 7,
+              label: '二级 3-1'
+            },
+            {
+              id: 8,
+              label: '二级 3-2'
             }
-          }
+          ]
         }
+      ],
+      defaultProps: {
+        children: 'children',
+        label: 'label'
       },
-      modelFn(obj, cont) {
-        this.$set(this.queryParams, obj, cont)
-      },
-      changeFn(obj) {
-        for (let key in obj) {
-          this.queryParams[key] = obj[key]
+      activeName:''
+    };
+  },
+  mounted() {
+    this.deledlid.idList = [];
+    this.formeanti.table = this.$route.query.tables;
+    this.instanceId = this.$route.query.id - 0;
+    this.forme.table = this.$route.query.tables;
+    this.forme.objId = this.$route.query.id;
+    this.oejgtueo.businessCode = this.$route.query.id;
+    this.tableZbie.table = this.$route.query.tables;
+    this.tableZbie.fixedData.id = this.$route.query.id;
+    this.juegh.businessCodes = this.$route.query.id - 0;
+    this.juegh.businessTypeName = this.$route.query.tables;
+    this.juegh.dbname = this.$route.query.tables;
+    this.formy.id = this.$route.query.id;
+    this.deledlid.table = this.$route.query.tables;
+    this.ojeuduj = this.$route.query.id;
+    this.deledlid.idList.push(this.$route.query.id);
+    if (this.$route.query.tabfe) {
+      this.tablees = this.$route.query.tabfe;
+      this.juegkae = this.$route.query.tabik + '_id';
+      this.tabdiese = this.$route.query.tabik;
+      console.log(this.juegkae);
+    } else {
+      this.tablees = undefined;
+      this.juegkae = undefined;
+      this.tabdiese = this.$route.query.tabik;
+    }
+    this.init();
+    this.getUser();
+    // this.tablsie()
+  },
+  methods: {
+    iChange(name, val) {
+      for (let item of this.queryData.showData) {
+        for (let itemChild of item.hrChildren) {
+          if (itemChild.columnName == name) {
+            itemChild.columnValue = val ? val : null;
+          }
         }
-      },
-      resetQuery() {
-
-      },
-      /** 搜索按钮操作 */
-      handleQuery(index) {
-        console.log(index)
-        for (let item of this.queryData.showData) {
-          for (var i = 0; i < item.hrChildren.length; i++) {
-            if (item.hrChildren[i].htmlType == 'checkbox') {
-              this.queryParams[item.hrChildren[i].columnName] = this.$refs[item.hrChildren[i].columnName][0].config
-            } else if (item.hrChildren[i].htmlType == 'imageUpload' || item.hrChildren[i].htmlType == 'fileUpload') {
-              if (this.$refs[item.hrChildren[i].columnName][0].config.length) {
-                this.queryParams[item.hrChildren[i].columnName] = JSON.stringify(this.$refs[item.hrChildren[i].columnName][0].config)
-              }
-            } else if (item.hrChildren[i].htmlType == 'datetime') {
-              if (this.$refs[item.hrChildren[i].columnName][0].config[item.hrChildren[i].columnName]) {
-                this.queryParams[item.hrChildren[i].columnName] = this.$refs[item.hrChildren[i].columnName][0].config[item.hrChildren[i].columnName]
-              } else {
-                this.queryParams[item.hrChildren[i].columnName] = null
-              }
+      }
+    },
+    modelFn(obj, cont) {
+      this.$set(this.queryParams, obj, cont);
+    },
+    closepop(obj){
+      this.modalShow = true
+     console.log(obj)
+    },
+    changeFn(obj) {
+      for (let key in obj) {
+        this.queryParams[key] = obj[key];
+      }
+    },
+    resetQuery() {},
+    /** 搜索按钮操作 */
+    handleQuery(index) {
+      console.log(index);
+      // this.modalShow = true;
+      for (let item of this.queryData.showData) {
+        for (var i = 0; i < item.hrChildren.length; i++) {
+          if (item.hrChildren[i].htmlType == 'checkbox') {
+            this.queryParams[item.hrChildren[i].columnName] = this.$refs[item.hrChildren[i].columnName][0].config;
+          } else if (item.hrChildren[i].htmlType == 'imageUpload' || item.hrChildren[i].htmlType == 'fileUpload') {
+            if (this.$refs[item.hrChildren[i].columnName][0].config.length) {
+              this.queryParams[item.hrChildren[i].columnName] = JSON.stringify(this.$refs[item.hrChildren[i].columnName][0].config);
+            }
+          } else if (item.hrChildren[i].htmlType == 'datetime') {
+            if (this.$refs[item.hrChildren[i].columnName][0].config[item.hrChildren[i].columnName]) {
+              this.queryParams[item.hrChildren[i].columnName] = this.$refs[item.hrChildren[i].columnName][0].config[item.hrChildren[i].columnName];
             } else {
-              this.queryParams[item.hrChildren[i].columnName] = this.$refs[item.hrChildren[i].columnName][0].config[
-                item.hrChildren[i].columnName]
+              this.queryParams[item.hrChildren[i].columnName] = null;
             }
+          } else {
+            this.queryParams[item.hrChildren[i].columnName] = this.$refs[item.hrChildren[i].columnName][0].config[item.hrChildren[i].columnName];
           }
         }
-        if (this.queryParams.pageNum !== undefined) {
-          this.queryParams.pageNum = undefined
-        }
-        if (this.queryParams.pageSize !== undefined) {
-          this.queryParams.pageSize = undefined
-        }
-
-        if (index == '删除') {
-          //删除
-          this.handleDelete(this.deledlid)
-        } else if (index == '提交') {
-          //提交  保存
-          this.formeanti.commitData = []
-          this.formy.status = 4
-          this.formeanti.commitData.push(this.formy)
-          this.antiSubmission()
-        } else if (index == '反提交') {
-          //反提交  保存
-          this.formeanti.commitData = []
-          this.formy.status = 2
-          this.formeanti.commitData.push(this.formy)
-          this.antiSubmission()
-        } else if (index == '保存') {
-          // 修改
-          this.forme.fixedData = this.queryParams
-          this.forme.fixedData[this.juegkae] = this.tablees
-          this.submitForm()
-        } else if (index == '新增') {
-          //新增
-          this.xidugje = 0
-          this.reload()
-        } else if (index == '返回') {
-          this.$store.dispatch("tagsView/delView", this.$route);
-          this.$router.go(-1)
-        } else if (index == '刷新') {
-          this.xidugje = 1
-          this.reload()
-        }else if(index == '流程详情'){
-          console.log(23)
-         this.modalShow = true
-        }
-        // this.getList();
-      },
-      getList() {
+      }
+      if (this.queryParams.pageNum !== undefined) {
+        this.queryParams.pageNum = undefined;
+      }
+      if (this.queryParams.pageSize !== undefined) {
+        this.queryParams.pageSize = undefined;
+      }
 
-      },
-      init() {
-        getTableQuery(
-          this.tableZbie
-        ).then(res => {
-          let data = res.data
-          this.juegh.businessType = res.data.showData[0].tableId
-          console.log(res.data.showData[0].tableId)
-          this.queryData = {}
-          this.queryData = data
-          // imgShoew
-          this.jeigneutwo = []
+      if (index == '删除') {
+        //删除
+        this.handleDelete(this.deledlid);
+      } else if (index == '提交') {
+        //提交  保存
+        this.formeanti.commitData = [];
+        this.formy.status = 4;
+        this.formeanti.commitData.push(this.formy);
+        this.antiSubmission();
+      } else if (index == '反提交') {
+        //反提交  保存
+        this.formeanti.commitData = [];
+        this.formy.status = 2;
+        this.formeanti.commitData.push(this.formy);
+        this.antiSubmission();
+      } else if (index == '保存') {
+        // 修改
+        this.forme.fixedData = this.queryParams;
+        this.forme.fixedData[this.juegkae] = this.tablees;
+        this.submitForm();
+      } else if (index == '新增') {
+        //新增
+        this.xidugje = 0;
+        this.reload();
+      } else if (index == '返回') {
+        this.$store.dispatch('tagsView/delView', this.$route);
+        this.$router.go(-1);
+      } else if (index == '刷新') {
+        this.xidugje = 1;
+        this.reload();
+      } else if (index == '流程详情') {
+        console.log(23);
+        // this.modalShow = true;
+      }
 
-          this.jeigneu = []
-          if(data.buttonList !== ''){
-            this.jeigneu = data.buttonList.split('')
-          }else{
-            this.jeigneu = []
-            this.jeigneutwo.push('流程详情')
+      // this.getList();
+    },
+    getList() {},
+    init() {
+      this.jeigneutwo.push('流程详情');
+      getTableQuery(this.tableZbie).then(res => {
+        let data = res.data;
+        this.juegh.businessType = res.data.showData[0].tableId;
+        console.log(res.data.showData[0].tableId);
+        this.queryData = {};
+        this.queryData = data;
+        // imgShoew
+        this.jeigneutwo = [];
+
+        this.jeigneu = [];
+        if (data.buttonList !== '') {
+          this.jeigneu = data.buttonList.split('');
+        } else {
+          this.jeigneu = [];
+          this.jeigneutwo.push('流程详情');
+        }
+        // console.log(data.buttonList)
 
+        this.jeigneu.filter(route => {
+          if (route == 'A') {
+            if (this.formy.id == -1) {
+              route = '保存';
+              this.jeigneutwo.push(route);
+            } else {
+              route = '新增';
+            }
+          } else if (route == 'M') {
+            route = '保存';
+            // if (this.formy.id != -1) {
+            this.jeigneutwo.push(route);
+            // }
+          } else if (route == 'D') {
+            route = '删除';
+            // if (this.formy.id != -1) {
+            this.jeigneutwo.push(route);
+            // }
+          } else if (route == 'Q') {
+            route = '查询';
+            this.jeigneutwo.push(route);
+          } else if (route == 'S') {
+            route = '提交';
+            // if (this.formy.id != -1) {
+            this.jeigneutwo.push(route);
+            // }
+          } else if (route == 'U') {
+            route = '反提交';
+            // if (this.formy.id != -1) {
+            this.jeigneutwo.push(route);
+            // }
+          } else if (route == 'I') {
+            route = '导入';
+            this.jeigneutwo.push(route);
+          } else if (route == 'E') {
+            route = '导出';
+            this.jeigneutwo.push(route);
+          }
+        });
+        this.jeigneutwo.push('刷新');
+        this.jeigneutwo.push('返回');
+        if (this.xidugje == '刷新') {
+          if (res.code == 200) {
+            this.msgSuccess('操作成功');
           }
-          // console.log(data.buttonList)
+        }
+        // 图片的显示隐藏
+        if (this.queryData.showData.length !== 0) {
+          this.queryData.showData.filter(route => {
+            route.hrChildren.filter(routerst => {
+              if (this.queryData.table_column == undefined) {
+                this.queryData.table_column = null;
+              }
+              routerst.tableColumnuy = this.queryData.table_column;
+              routerst.tableid = this.ojeuduj;
+            });
+            if (route.cssClass !== null) {
+              this.imgShoew = route.cssClass;
 
-          this.jeigneu.filter(route => {
-            if (route == 'A') {
-              if (this.formy.id == -1) {
-                route = '保存'
-                this.jeigneutwo.push(route)
+              if (route.cssClass == 2 || route.cssClass == 4) {
+                route.hrChildren.filter(routers => {
+                  routers.isonliy = true;
+                });
               } else {
-                route = '新增'
+                route.hrChildren.filter(routers => {
+                  routers.isonliy = false;
+                });
+              }
+              if (this.imgShoew == 3) {
               }
-
-            } else if (route == 'M') {
-              route = '保存'
-              // if (this.formy.id != -1) {
-                this.jeigneutwo.push(route)
-              // }
-            } else if (route == 'D') {
-              route = '删除'
-              // if (this.formy.id != -1) {
-                this.jeigneutwo.push(route)
-              // }
-            } else if (route == 'Q') {
-              route = '查询'
-              this.jeigneutwo.push(route)
-            } else if (route == 'S') {
-              route = '提交'
-              // if (this.formy.id != -1) {
-                this.jeigneutwo.push(route)
-              // }
-            } else if (route == 'U') {
-              route = '反提交'
-              // if (this.formy.id != -1) {
-                this.jeigneutwo.push(route)
-              // }
-            } else if (route == 'I') {
-              route = '导入'
-              this.jeigneutwo.push(route)
-            } else if (route == 'E') {
-              route = '导出'
-              this.jeigneutwo.push(route)
             }
-
-          })
-           this.jeigneutwo.push('刷新')
-           this.jeigneutwo.push('返回')
-          if (this.xidugje == '刷新') {
-            if (res.code == 200) {
-              this.msgSuccess("操作成功");
+          });
+        }
+      });
+    },
+    tablsie() {
+      getQueryList(this.tabledeLise).then(res => {
+        let data = res.data;
+        this.taleLisst = data;
+      });
+    },
+    handleChange(val) {},
+    // 按钮点击
+    delet(index) {
+      if (index == 'D') {
+        this.handleDelete(this.formy.id);
+      }
+    },
+    /** 新增 修改提交按钮 */
+    submitForm: function() {
+      this.$refs['queryForm'].validate(valid => {
+        if (valid) {
+          addbjectSave(this.forme).then(response => {
+            this.msgSuccess('保存成功');
+            if (response.code == 200) {
+              this.cielsshow = true;
+            } else {
+              this.cielsshow = false;
             }
-          }
-          // 图片的显示隐藏
-          if (this.queryData.showData.length !== 0) {
-            this.queryData.showData.filter(route => {
-              route.hrChildren.filter(routerst => {
-                if (this.queryData.table_column == undefined) {
-                  this.queryData.table_column = null
-                }
-                routerst.tableColumnuy = this.queryData.table_column
-                routerst.tableid = this.ojeuduj
-              })
-              if (route.cssClass !== null) {
-                this.imgShoew = route.cssClass
-
-                if (route.cssClass == 2 || route.cssClass == 4) {
-                  route.hrChildren.filter(routers => {
-                    routers.isonliy = true
-                  })
-                } else {
-                  route.hrChildren.filter(routers => {
-                    routers.isonliy = false
-                  })
-                }
-                if(this.imgShoew == 3){
-                }
-              }
-            })
-          }
-        })
-      },
-      tablsie() {
-        getQueryList(
-          this.tabledeLise
-        ).then(res => {
-          let data = res.data
-          this.taleLisst = data
-        })
-      },
-      handleChange(val) {
-      },
-      // 按钮点击
-      delet(index) {
-        if (index == 'D') {
-          this.handleDelete(this.formy.id)
+            let query = Object.assign({ id: response.data, tables: this.forme.table }, {});
+            this.oieufr = response.data;
+            // this.mounted()
+            this.$store.dispatch('tagsView/delView', this.$route);
+            this.$router.go(-1);
+          });
         }
-      },
-      /** 新增 修改提交按钮 */
-      submitForm: function () {
-        this.$refs["queryForm"].validate(valid => {
-          if (valid) {
-            addbjectSave(this.forme).then(response => {
-              this.msgSuccess("保存成功");
-              if (response.code == 200) {
-                this.cielsshow = true;
-              } else {
-                this.cielsshow = false;
-              }
-              let query = Object.assign({'id': response.data, 'tables': this.forme.table}, {})
-              this.oieufr = response.data
-              // this.mounted()
-              this.$store.dispatch("tagsView/delView", this.$route);
-              this.$router.go(-1)
+      });
+    },
+    // 提交反提交
+    antiSubmission() {
+      this.$refs['queryForm'].validate(valid => {
+        if (valid) {
+          if (this.formy.status == 4) {
+            // 提交
+            tableSubimt(this.formeanti).then(response => {
+              // this.msgSuccess("提交成功");
+              this.$store.dispatch('tagsView/delView', this.$route);
+              this.submoii();
+              // this.$router.go(-1)
+              // this.getList();
+            });
+          } else if (this.formy.status == 2) {
+            // 反提交
+            tableSubimtanit(this.formeanti).then(response => {
+              this.msgSuccess('反提交成功');
+              this.$store.dispatch('tagsView/delView', this.$route);
+              this.$router.go(-1);
+              // this.getList();
             });
           }
-        });
-      },
-      // 提交反提交
-      antiSubmission() {
-        this.$refs["queryForm"].validate(valid => {
-          if (valid) {
-            if (this.formy.status == 4) {
-              // 提交
-              tableSubimt(this.formeanti).then(response => {
-                // this.msgSuccess("提交成功");
-                this.$store.dispatch("tagsView/delView", this.$route);
-                this.submoii()
-                // this.$router.go(-1)
-                // this.getList();
-              });
-            } else if (this.formy.status == 2) {
-              // 反提交
-              tableSubimtanit(this.formeanti).then(response => {
-                this.msgSuccess("反提交成功");
-                this.$store.dispatch("tagsView/delView", this.$route);
-                this.$router.go(-1)
-                // this.getList();
-              });
-            }
-          }
-        });
-      },
-      // 提交2.0
-      submoii(){
-       tabsubm(this.juegh).then(response => {
-         if(response.resultCode == 0){
-           this.msgSuccess("提交成功");
-         }
-         this.$store.dispatch("tagsView/delView", this.$route);
-         this.reload()
-         // this.$router.go(-1)
-         // this.formeanti.commitData = []
-         // this.formy.status = 1
-         // this.formeanti.commitData.push(this.formy)
-         // this.antiSubmission();
-       });
-      },
-      getUser() {
-        getUserProfiletab().then(response => {
-          this.juegh.initiator = response.data.id
-          this.juegh.userName = response.data.userName
-          console.log(response.data,877)
-        });
-      },
-      //删除
-      handleDelete(index) {
-        this.$confirm('是否确认删除', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function () {
+        }
+      });
+    },
+    // 提交2.0
+    submoii() {
+      tabsubm(this.juegh).then(response => {
+        if (response.resultCode == 0) {
+          this.msgSuccess('提交成功');
+        }
+        this.$store.dispatch('tagsView/delView', this.$route);
+        this.reload();
+        // this.$router.go(-1)
+        // this.formeanti.commitData = []
+        // this.formy.status = 1
+        // this.formeanti.commitData.push(this.formy)
+        // this.antiSubmission();
+      });
+    },
+    getUser() {
+      getUserProfiletab().then(response => {
+        this.juegh.initiator = response.data.id;
+        this.juegh.userName = response.data.userName;
+        console.log(response.data, 877);
+      });
+    },
+    //删除
+    handleDelete(index) {
+      this.$confirm('是否确认删除', '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(function() {
           return delMenutab(index);
-        }).then(() => {
-          // this.getList();
-          this.msgSuccess("删除成功");
-          this.$store.dispatch("tagsView/delView", this.$route);
-          this.$router.go(-1)
         })
-      },
-      load(){
-        this.count += 2
-      }
+        .then(() => {
+          // this.getList();
+          this.msgSuccess('删除成功');
+          this.$store.dispatch('tagsView/delView', this.$route);
+          this.$router.go(-1);
+        });
+    },
+    load() {
+      this.count += 2;
+    },
+    // 树形结构
+    handleNodeClick(data) {
+      console.log(data);
     },
-  };
+    // getCheckedKeys(leafOnly) {
+    //   console.log(leafOnly)
+    //   console.log(this.$refs.tree.getCheckedKeys());
+    // },
+    setCheckedKeys(keys, leafOnly) {
+      console.log(keys, leafOnly)
+      this.$refs.tree.setCheckedKeys([3]);
+    },
+    resetChecked() {
+      this.$refs.tree.setCheckedKeys([]);
+    },
+    handleClick(){
+
+    },
+    check(data,value){
+      console.log(this.$refs.tree.getCheckedKeys());
+       // 获取选中的子节点
+      // let checkedKeys = this.$refs.tree.getCheckedKeys();
+      // 获取选中的父节点
+      let hafCheckedKeys = this.$refs.tree.getHalfCheckedKeys();
+      console.log(this.$refs.tree.getHalfCheckedKeys())
+
+      console.log(data,value)
+
+    }
+  }
+};
 </script>
 
 <style lang="scss">
-  .table_header {
-    position: relative;
-    .el-divider--horizontal {
-      margin-top: 16px;
-    }
+.table_header {
+  position: relative;
+  .el-divider--horizontal {
+    margin-top: 16px;
   }
+}
 
-  .table_forem {
-    .el-form--inline .el-form-item {
-      width: 100% !important;
-    }
-    .el-select {
-      width: 100%;
-    }
-    .el-date-editor.el-input {
-      width: 100% !important;
-    }
-    .el-form-item--medium .el-form-item__content {
-      width: 70%;
-    }
+.table_forem {
+  .el-form--inline .el-form-item {
+    width: 100% !important;
+  }
+  .el-select {
+    width: 100%;
   }
+  .el-date-editor.el-input {
+    width: 100% !important;
+  }
+  .el-form-item--medium .el-form-item__content {
+    width: 70%;
+  }
+}
 
-  .headertable_nav {
-    .el-collapse-item__wrap {
-      border-bottom: 0;
-    }
-    .el-collapse-item__header {
-      border-bottom: 0;
-      font-size: 15px;
-      font-family: PingFang SC;
-      font-weight: bold;
-      color: #3C8DBC;
-      line-height: 36px;
-    }
-    // .el-form-item__content{
-    //   width: 55%;
-    // }
-    .el-collapse {
-      border-top: 0;
-    }
+.headertable_nav {
+  .el-collapse-item__wrap {
+    border-bottom: 0;
   }
-   .infinite-list{
-     height: 200px;
-   }
-   .tab_bott{
-     display: flex;
-   }
-  .tabBot_oje{
-    width: 40%;
+  .el-collapse-item__header {
+    border-bottom: 0;
+    font-size: 15px;
+    font-family: PingFang SC;
+    font-weight: bold;
+    color: #3c8dbc;
+    line-height: 36px;
   }
-  .tabBot_two{
-    width: 50%;
-    margin-left: 30px;
+  // .el-form-item__content{
+  //   width: 55%;
+  // }
+  .el-collapse {
+    border-top: 0;
   }
+}
+.infinite-list {
+  height: 200px;
+}
+.tab_bott {
+  display: flex;
+}
+.tabBot_oje {
+  width: 40%;
+}
+.tabBot_two {
+  width: 50%;
+  margin-left: 30px;
+}
 </style>
 
-
 <style scoped lang="scss">
-  .app-main {
-    // background-color: #eef0ff !important;
-  }
-
-  .table_total {
-    background-color: #eef0ff;
-    height: 100%;
-    padding: 20px;
-    // 头部
-    .table_header {
-      background-color: #fff;
-      border-radius: 6px;
-      padding: 13px;
-      margin-bottom: 10px;
-      p {
-        font-size: 15px;
-        font-weight: bold;
-        color: #3C8DBC;
-        line-height: 36px;
-      }
-      p::before {
-        content: "";
-        display: block;
-        width: 18px;
-        height: 8px;
-        background: #3C8DBC;
-        border-radius: 3px;
-
-      }
-      .table_headerBtuntwo {
-        margin-bottom: 0 !important;
-      }
+.app-main {
+  // background-color: #eef0ff !important;
+}
+
+.table_total {
+  background-color: #eef0ff;
+  height: 100%;
+  padding: 20px;
+  // 头部
+  .table_header {
+    background-color: #fff;
+    border-radius: 6px;
+    padding: 13px;
+    margin-bottom: 10px;
+    p {
+      font-size: 15px;
+      font-weight: bold;
+      color: #3c8dbc;
+      line-height: 36px;
     }
-    // 内容
-    .headertable_nav {
-      background-color: #fff;
-      border-radius: 6px;
-      padding: 23px;
+    p::before {
+      content: '';
+      display: block;
+      width: 18px;
+      height: 8px;
+      background: #3c8dbc;
+      border-radius: 3px;
+    }
+    .table_headerBtuntwo {
+      margin-bottom: 0 !important;
     }
   }
-
-  p {
-    margin: 0;
-
-  }
-
-  .imge_tab {
-    position: absolute;
-    right: 0;
-    top: 5px;
-  }
-  .infinite-list{
-    // border: 1px solid #eee;
-    padding: 30px;
-  }
-  .infinite-listty{
-    margin-top: 20px;
-    // border: 1px solid #eee;
+  // 内容
+  .headertable_nav {
+    background-color: #fff;
+    border-radius: 6px;
+    padding: 23px;
   }
+}
+
+p {
+  margin: 0;
+}
+
+.imge_tab {
+  position: absolute;
+  right: 0;
+  top: 5px;
+}
+.infinite-list {
+  // border: 1px solid #eee;
+  padding: 30px;
+}
+.infinite-listty {
+  margin-top: 20px;
+  // border: 1px solid #eee;
+}
 </style>
 
-
 <style scoped lang="scss">
-  .app-main {
-    // background-color: #eef0ff !important;
-  }
-
-  .table_total {
-    background-color: #eef0ff;
-    height: 100%;
-    padding: 20px;
+.app-main {
+  // background-color: #eef0ff !important;
+}
 
-    // 头部
-    .table_header {
-      background-color: #fff;
-      border-radius: 6px;
-      padding: 13px;
-      margin-bottom: 10px;
+.table_total {
+  background-color: #eef0ff;
+  height: 100%;
+  padding: 20px;
 
-      p {
-        font-size: 15px;
-        font-weight: bold;
-        color: #3C8DBC;
-        line-height: 36px;
-      }
-
-      p::before {
-        content: "";
-        display: block;
-        width: 18px;
-        height: 8px;
-        background: #3C8DBC;
-        border-radius: 3px;
+  // 头部
+  .table_header {
+    background-color: #fff;
+    border-radius: 6px;
+    padding: 13px;
+    margin-bottom: 10px;
 
-      }
+    p {
+      font-size: 15px;
+      font-weight: bold;
+      color: #3c8dbc;
+      line-height: 36px;
     }
 
-    // 内容
-    .headertable_nav {
-      background-color: #fff;
-      border-radius: 6px;
-      padding: 23px;
-      padding-top: 0;
+    p::before {
+      content: '';
+      display: block;
+      width: 18px;
+      height: 8px;
+      background: #3c8dbc;
+      border-radius: 3px;
     }
   }
 
-  p {
-    margin: 0;
-
+  // 内容
+  .headertable_nav {
+    background-color: #fff;
+    border-radius: 6px;
+    padding: 23px;
+    padding-top: 0;
   }
+}
+
+p {
+  margin: 0;
+}
 </style>