Bladeren bron

优化子表显隐

yangfan 5 maanden geleden
bovenliggende
commit
ac9ec8208f

+ 14 - 0
public/icon/all-category.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20" viewBox="0 0 20 20" fill="none">
+<rect  x="0" y="0" width="20" height="20"    fill="#FFFFFF" fill-opacity="0">
+</rect>
+<rect  x="4" y="11" width="12" height="5" rx="2"    fill="#000000" fill-opacity="0">
+</rect>
+<path   fill="rgba(235, 90, 16, 1)"  d="M6 10.5L14 10.5C15.3807 10.5 16.5 11.6193 16.5 13L16.5 14C16.5 15.3807 15.3807 16.5 14 16.5L6 16.5C4.61929 16.5 3.5 15.3807 3.5 14L3.5 13C3.5 11.6193 4.61929 10.5 6 10.5ZM6 11.5C5.17157 11.5 4.5 12.1716 4.5 13L4.5 14C4.5 14.8284 5.17157 15.5 6 15.5L14 15.5C14.8284 15.5 15.5 14.8284 15.5 14L15.5 13C15.5 12.1716 14.8284 11.5 14 11.5L6 11.5Z">
+</path>
+<path     fill="#000000" fill-opacity="0" d="M8.79775 4.8877L5.59121 4.8877C4.88284 4.8877 4.30859 5.42622 4.30859 6.09052L4.30859 7.89475C4.30859 8.55902 4.88284 9.09756 5.59121 9.09756L8.79775 9.09756">
+</path>
+<path    stroke="rgba(235, 90, 16, 1)" stroke-width="1"  stroke-linecap="round"  d="M8.79775 4.8877L5.59121 4.8877C4.88284 4.8877 4.30859 5.42622 4.30859 6.09052L4.30859 7.89475C4.30859 8.55902 4.88284 9.09756 5.59121 9.09756L8.79775 9.09756">
+</path>
+<circle cx="13" cy="7" r="2" stroke="rgba(235, 90, 16, 1)" stroke-width="1"   >
+</circle>
+</svg>

BIN
public/logo.png


+ 1 - 0
src/App.vue

@@ -14,6 +14,7 @@ export default {
   --color-primary: rgb(235, 90, 16);
   --color-primary-light: rgba(235, 90, 16, 0.6);
   --color-primary-bg: rgba(253, 237, 231, 1);
+  --color-primary-hover: rgba(235, 90, 16, 0.06);
 }
 </style>
 <style lang="scss">

+ 8 - 0
src/api/system/iam.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+
+export const iamDeptTree = (params) => request.get('/api/yx/iam/orgTree', { params })
+export const userListByDept = (id) => request.get('/api/yx/iam/getUserByDept/' + id)
+export const userListByKey = (params) => request.get('/api/yx/iam/userPage', { params })
+export const iamRoleList = (params) => request.get('/api/yx/iam/getRoleList', { params })
+export const userSearchByKey = (params) => request.get('/api/yx/iam/getUserByUsernameOrPhone', { params })
+export const userSearchSingleByKey = (params) => request.get('/api/yx/iam/exactUserCommon', { params })

+ 42 - 31
src/components/Dataset-filter/auth-group-panel.vue

@@ -2,12 +2,12 @@
   <div class="system-auth-group">
     <div class="category-list">
       <div class="btns" style="display: flex; justify-content: space-between; margin-bottom: 20px">
-        <el-button size="mini" type="primary" icon="el-icon-edit" plain @click="showType = true"> 编辑分类 </el-button>
+        <el-button size="mini" icon="el-icon-edit" plain @click="showType = true"> 编辑分类 </el-button>
         <el-button size="mini" type="primary" icon="el-icon-plus" @click="onEditType(null)"> 添加分类 </el-button>
       </div>
       <el-menu :default-active="nowTypeId.toString()" @select="onSelectType">
         <el-menu-item :index="'0'">
-          <div class="name" style="flex: 1">全部分类</div>
+          <div class="name" style="flex: 1"><img src="icon/all-category.svg" alt="" />全部分类</div>
         </el-menu-item>
         <template v-for="type in typeList">
           <el-menu-item :key="type.id" :index="type.id.toString()">
@@ -19,51 +19,55 @@
     <div class="right-wrapper">
       <el-form inline class="my-menu">
         <div>
-          <el-form-item title="权限组名称" style="margin-bottom: 0">
+          <el-form-item label="权限组名称" style="margin-bottom: 0">
             <el-input v-model="searchName" size="mini" placeholder="输入名称查询" style="width: 200px" clearable></el-input>
           </el-form-item>
           <el-form-item style="margin-bottom: 0">
             <el-button size="mini" @click="getData"> 查询 </el-button>
           </el-form-item>
         </div>
-        <el-form-item style="margin-bottom: 0">
-          <el-button size="mini" type="primary" icon="el-icon-plus" @click="onEdit(null)">添加权限组</el-button>
-        </el-form-item>
+        <!--        <el-form-item style="margin-bottom: 0">-->
+        <!--          <el-button size="mini" type="primary" icon="el-icon-plus" @click="onEdit(null)">添加权限组</el-button>-->
+        <!--        </el-form-item>-->
       </el-form>
       <div class="item" v-for="group of groupList" :key="group.id" @click="onSelect(group)" :class="{ selected: selected == group.id }">
         <div class="name">
           <div>{{ group.permName }}</div>
           <div style="flex: 1"></div>
           <el-button size="mini" type="primary" plain icon="el-icon-setting" v-show="!isSelect" @click="goSetting(group)"> 权限设置 </el-button>
-          <el-button size="mini" type="primary" plain icon="el-icon-edit" @click="onEdit(group)"></el-button>
-          <el-button size="mini" type="danger" plain icon="el-icon-delete" @click="onDel(group)"></el-button>
+          <!--          <el-button size="mini" type="text" @click="onEdit(group)">编辑</el-button>-->
+          <!--          <el-divider direction="vertical"></el-divider>-->
+          <!--          <el-button size="mini" type="text" @click="onDel(group)">删除</el-button>-->
         </div>
         <div class="selected">
-          <div class="tag" v-for="item of group.dpList" :key="item.id"><i class="el-icon-s-flag" style="color: #67c23a; margin-right: 5px"></i>{{ item.name }}</div>
-          <div class="tag" v-for="item of group.roleList" :key="item.id"><i class="el-icon-user-solid" style="color: #e6a23c; margin-right: 5px"></i>{{ item.name }}</div>
+          <div class="tag" v-for="item of group.dpList" :key="item.id"><i class="el-icon-user" style="color: #67c23a; margin-right: 5px"></i>{{ item.name }}</div>
+          <div class="tag" v-for="item of group.roleList" :key="item.id"><i class="el-icon-user" style="color: #e6a23c; margin-right: 5px"></i>{{ item.name }}</div>
           <div class="tag" v-for="item of group.userList" :key="item.id"><i class="el-icon-user" style="color: #909399; margin-right: 5px"></i>{{ item.name }}</div>
         </div>
       </div>
-      <el-pagination
-        class="my-paging"
-        @size-change="sizeChange"
-        @current-change="getData"
-        :current-page.sync="page.current"
-        :page-sizes="[10, 20, 50, 100]"
-        :page-size="page.size"
-        background
-        :total="page.total"
-        layout="total, sizes, prev, pager, next, jumper"
-      ></el-pagination>
+      <div style="text-align: right">
+        <el-pagination
+          class="my-paging"
+          @size-change="sizeChange"
+          @current-change="getData"
+          :current-page.sync="page.current"
+          :page-sizes="[10, 20, 50, 100]"
+          :page-size="page.size"
+          background
+          :total="page.total"
+          layout="total, sizes, prev, pager, next, jumper"
+        ></el-pagination>
+      </div>
     </div>
     <el-dialog title="分类管理" :visible.sync="showType" append-to-body width="600px">
-      <el-table :data="typeList" border size="mini">
+      <el-table :data="typeList" size="mini">
         <el-table-column label="分类名" prop="typeName"></el-table-column>
         <el-table-column label="排序号" prop="sortNum"></el-table-column>
         <el-table-column label="操作" width="180px" align="center">
           <template v-slot="{ row }">
-            <el-button size="mini" type="primary" plain @click="onEditType(row)">编辑</el-button>
-            <el-button size="mini" type="danger" plain @click="onDelType(row)">删除</el-button>
+            <el-button size="mini" type="text" plain @click="onEditType(row)">编辑</el-button>
+            <el-divider direction="vertical"></el-divider>
+            <el-button size="mini" type="text" plain @click="onDelType(row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -351,13 +355,13 @@ export default {
   }
 }
 </script>
-<style lang="scss">
+<style lang="scss" scoped>
 .system-auth-group {
   height: 100%;
   overflow: hidden;
   display: flex;
   .category-list {
-    flex: 0 0 260px;
+    flex: 0 0 220px;
     padding-top: 10px;
     padding-right: 10px;
     border-right: 1px solid #ccc;
@@ -386,16 +390,17 @@ export default {
     flex: 1;
     overflow-y: auto;
     .item {
-      margin: 10px;
+      margin-bottom: 10px;
       border: 1px solid #dcdfe6;
       transition: all 0.2s;
       &:hover {
-        border: 1px solid #409eff;
+        background: var(--color-primary-hover);
       }
       &.selected {
-        border: 1px solid #409eff;
+        border: 1px solid var(--color-primary);
         .name {
-          color: #409eff;
+          color: var(--color-primary);
+          background: var(--color-primary-hover);
         }
       }
       .name {
@@ -413,9 +418,12 @@ export default {
         padding: 5px;
         .tag {
           display: inline-block;
-          margin: 5px;
           font-size: 14px;
           line-height: 16px;
+          margin: 5px;
+          background: rgb(245, 245, 245);
+          border-radius: 5px;
+          padding: 7px 10px;
         }
       }
     }
@@ -432,6 +440,9 @@ export default {
       margin: 5px;
       font-size: 14px;
       line-height: 16px;
+      background: rgb(245, 245, 245);
+      border-radius: 5px;
+      padding: 7px 10px;
     }
   }
   .btns {

+ 138 - 0
src/components/Dataset-filter/authCate.vue

@@ -0,0 +1,138 @@
+<template>
+  <div class="category-wrapper">
+    <div class="btns">
+      <el-button icon="el-icon-edit" size="mini" class="button-ghost" style="width: 60%" type="text" @click="showCategory = true" v-auth="'1822981361485656119'"> 编辑分类 </el-button>
+      <el-button icon="el-icon-plus" size="mini" type="primary" @click="onEditCategory(null)" v-auth="'1822981382918549593'"> 添加分类 </el-button>
+    </div>
+    <el-input v-model="categoryKey" placeholder="搜索分类" size="mini" style="margin-bottom: 10px" clearable>
+      <i slot="append" class="el-icon-search"></i>
+    </el-input>
+    <el-tree
+      :data="authCateTreeSearched"
+      :props="{ label: 'typeName', children: 'children' }"
+      :expand-on-click-node="false"
+      @node-click="onSelectCategory"
+      node-key="id"
+      highlight-current
+      default-expand-all
+      ref="tree"
+      :current-node-key="nowCategoryId"
+    >
+      <div class="flex-center gap-7" slot-scope="{ node, data }">
+        <img v-if="data.id < 1" src="icon/all-category.svg" alt="" />
+        {{ node.label }}
+      </div>
+    </el-tree>
+    <el-dialog :visible.sync="showEdit" center lock-scroll append-to-body :title="`${editType === 'add' ? '添加' : '编辑'}分类`" width="400px">
+      <el-form label-width="80px" size="mini" ref="form" :rules="rules" :model="categoryForm">
+        <el-form-item label="分类名" prop="typeName">
+          <el-input v-model="categoryForm.typeName"></el-input>
+        </el-form-item>
+        <el-form-item label="父级分类">
+          <el-cascader v-model="categoryForm.parentId" :options="authCateParents" :props="{ emitPath: false, value: 'id', label: 'typeName', checkStrictly: true }" style="width: 100%"></el-cascader>
+        </el-form-item>
+        <el-form-item label="排序值" prop="sortNum">
+          <el-input type="number" v-model="categoryForm.sortNum">
+            <el-tooltip slot="suffix" class="item" effect="dark" content="值越大,排序越靠前" placement="top">
+              <i class="bi bi-question-circle"></i>
+            </el-tooltip>
+          </el-input>
+        </el-form-item>
+      </el-form>
+      <div class="pt-10" style="text-align: right">
+        <el-button size="mini" @click="showEdit = false">取消</el-button>
+        <el-button size="mini" type="primary" @click="onEditCategoryConfirm">确定</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :visible.sync="showCategory" append-to-body title="分类列表" width="500px" center lock-scroll>
+      <el-table :data="authCateTree" default-expand-all row-key="id" max-height="700px" size="default" :header-row-style="{ color: '#161616' }">
+        <el-table-column label="分类名" prop="typeName"></el-table-column>
+        <el-table-column label="排序值" prop="sortNum"></el-table-column>
+        <el-table-column label="操作" width="160px">
+          <template slot-scope="scope">
+            <el-button plain size="mini" type="text" @click="onEditCategory(scope.row)" v-auth="'1822981407010631688'"> 编辑 </el-button>
+            <el-divider direction="vertical"></el-divider>
+            <el-button plain size="mini" type="text" @click="onDelCategory(scope.row)" v-auth="'1822981435129245699'"> 删除 </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import { mapState } from 'vuex'
+import { typeSave, typeDel } from '@/api/system/authGroup'
+import { countCateTreeDisabled } from '@/utils/wey'
+import { categoryRules } from '@/utils/rules'
+
+export default {
+  data() {
+    return {
+      categoryKey: '',
+      showCategory: false,
+      showEdit: false,
+      categoryForm: {},
+      nowCategoryId: 0,
+      editType: 'add',
+      rules: categoryRules('typeName', 'sortNum')
+    }
+  },
+  computed: {
+    ...mapState({
+      authCateTree: (state) => state.cate.authCateTree,
+      authCateParents: (state) => state.cate.authCateParents
+    }),
+    authCateTreeSearched() {
+      return this.$store.getters.authCateTreeSearched(this.categoryKey)
+    }
+  },
+  created() {
+    this.getCategory()
+  },
+  methods: {
+    getCategory() {
+      this.$store.dispatch('getAuthCate')
+    },
+    onEditCategory(category) {
+      if (!category) {
+        this.editType = 'add'
+        this.categoryForm = { typeName: '', sortNum: 0, parentId: 0 }
+      } else {
+        this.editType = 'update'
+        this.categoryForm = { ...category }
+      }
+      countCateTreeDisabled(this.authCateParents, this.categoryForm.id)
+      this.showEdit = true
+    },
+    onDelCategory(category) {
+      this.$confirm('确定删除此分类?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          typeDel({ id: category.id }).then((res) => {
+            this.$message({ type: 'success', message: '删除成功' })
+            this.getCategory()
+          })
+        })
+        .catch(() => {})
+    },
+    onSelectCategory({ id }) {
+      this.nowCategoryId = id
+      this.$emit('change', id)
+    },
+    onEditCategoryConfirm() {
+      this.$refs.form.validate((val) => {
+        if (!val) return
+        typeSave(this.categoryForm).then((res) => {
+          this.$message({ type: 'success', message: '保存成功' })
+          this.showEdit = false
+          this.getCategory()
+        })
+      })
+    }
+  }
+}
+</script>
+<style lang="scss"></style>

+ 97 - 73
src/components/Dataset-filter/dataset-filter.vue

@@ -28,81 +28,103 @@
               </div>
             </div>
             <div class="flex flex-between gap-10" style="height: 90%; overflow: auto">
-              <el-checkbox-group v-if="btns.length" v-model="nowFilter.btnsList" class="btnsList" @change="handleCheckedCitiesChange">
-                <el-tabs>
-                  <el-tab-pane label="系统按钮">
-                    <div v-for="item in customSystemBtns.filter((v) => !v.buttonType || v.buttonType === 2)" class="flex gap-10 flex-center" style="margin-bottom: 10px">
+              <el-checkbox-group v-if="btns.length" v-model="nowFilter.btnsList" class="" @change="handleCheckedCitiesChange">
+                <el-card class="box-card" style="width: 200px" shadow="never">
+                  <div slot="header" class="clearfix">
+                    <span style="font-size: 14px; font-weight: bold">系统按钮</span>
+                  </div>
+                  <div v-for="item in customSystemBtns.filter((v) => !v.buttonType || v.buttonType === 2)" class="flex gap-10 flex-center" style="margin-bottom: 10px">
+                    <el-checkbox :label="item.value" :key="item.value">
+                      <span class="">{{ item.label || btnText(item.value) }}</span>
+                    </el-checkbox>
+                    <!--                      <el-cascader-->
+                    <!--                        :disabled="['journal', 'recycle', 'uploadRevoke', 'comDelete'].includes(item.value)"-->
+                    <!--                        v-model="item.flowId"-->
+                    <!--                        :options="flowSelectList"-->
+                    <!--                        placeholder="请选择需要关联的流程"-->
+                    <!--                        :props="{ value: 'id', label: 'name', children: 'children', emitPath: false }"-->
+                    <!--                        clearable-->
+                    <!--                      ></el-cascader>-->
+                  </div>
+                </el-card>
+                <!--                <el-tabs>-->
+                <!--                  <el-tab-pane label="系统按钮">-->
+                <!--                    <div v-for="item in customSystemBtns.filter((v) => !v.buttonType || v.buttonType === 2)" class="flex gap-10 flex-center" style="margin-bottom: 10px">-->
+                <!--                      <el-checkbox :label="item.value" :key="item.value">-->
+                <!--                        <span class="">{{ item.label || btnText(item.value) }}</span>-->
+                <!--                      </el-checkbox>-->
+                <!--                      &lt;!&ndash;                      <el-cascader&ndash;&gt;-->
+                <!--                      &lt;!&ndash;                        :disabled="['journal', 'recycle', 'uploadRevoke', 'comDelete'].includes(item.value)"&ndash;&gt;-->
+                <!--                      &lt;!&ndash;                        v-model="item.flowId"&ndash;&gt;-->
+                <!--                      &lt;!&ndash;                        :options="flowSelectList"&ndash;&gt;-->
+                <!--                      &lt;!&ndash;                        placeholder="请选择需要关联的流程"&ndash;&gt;-->
+                <!--                      &lt;!&ndash;                        :props="{ value: 'id', label: 'name', children: 'children', emitPath: false }"&ndash;&gt;-->
+                <!--                      &lt;!&ndash;                        clearable&ndash;&gt;-->
+                <!--                      &lt;!&ndash;                      ></el-cascader>&ndash;&gt;-->
+                <!--                    </div>-->
+                <!--                  </el-tab-pane>-->
+                <!--                  <el-tab-pane label="自定义按钮">-->
+                <!--                    <div v-for="item in customSystemBtns.filter((v) => v.buttonType === 1)" class="flex gap-10 flex-center" style="margin-bottom: 10px">-->
+                <!--                      <el-checkbox :label="item.value" :key="item.value">-->
+                <!--                        <span class="">{{ item.label || btnText(item.value) }}</span>-->
+                <!--                      </el-checkbox>-->
+                <!--                      <el-cascader-->
+                <!--                        :disabled="['journal', 'recycle', 'uploadRevoke', 'comDelete'].includes(item.value)"-->
+                <!--                        v-model="item.flowId"-->
+                <!--                        :options="flowSelectList"-->
+                <!--                        placeholder="请选择需要关联的流程"-->
+                <!--                        :props="{ value: 'id', label: 'name', children: 'children', emitPath: false }"-->
+                <!--                        clearable-->
+                <!--                      ></el-cascader>-->
+                <!--                    </div>-->
+                <!--                  </el-tab-pane>-->
+                <!--                </el-tabs>-->
+              </el-checkbox-group>
+              <el-checkbox-group v-if="columnBtns.length" v-model="nowFilter.columnBtnsList" class="btnsList columnBtnList">
+                <el-card class="box-card" style="width: 200px" shadow="never">
+                  <div slot="header" class="clearfix">
+                    <span style="font-size: 14px; font-weight: bold">操作按钮</span>
+                  </div>
+                  <div v-for="item in customTableData.filter((v) => !v.buttonType || v.buttonType === 2)" class="flex gap-10 flex-center" style="margin-bottom: 10px">
+                    <div>
                       <el-checkbox :label="item.value" :key="item.value">
-                        <span class="">{{ item.label || btnText(item.value) }}</span>
+                        <div class="">{{ item.label || btnText(item.value) }}</div>
                       </el-checkbox>
-                      <!--                      <el-cascader-->
-                      <!--                        :disabled="['journal', 'recycle', 'uploadRevoke', 'comDelete'].includes(item.value)"-->
-                      <!--                        v-model="item.flowId"-->
-                      <!--                        :options="flowSelectList"-->
-                      <!--                        placeholder="请选择需要关联的流程"-->
-                      <!--                        :props="{ value: 'id', label: 'name', children: 'children', emitPath: false }"-->
-                      <!--                        clearable-->
-                      <!--                      ></el-cascader>-->
                     </div>
-                  </el-tab-pane>
-                  <!--                  <el-tab-pane label="自定义按钮">-->
-                  <!--                    <div v-for="item in customSystemBtns.filter((v) => v.buttonType === 1)" class="flex gap-10 flex-center" style="margin-bottom: 10px">-->
-                  <!--                      <el-checkbox :label="item.value" :key="item.value">-->
-                  <!--                        <span class="">{{ item.label || btnText(item.value) }}</span>-->
-                  <!--                      </el-checkbox>-->
-                  <!--                      <el-cascader-->
-                  <!--                        :disabled="['journal', 'recycle', 'uploadRevoke', 'comDelete'].includes(item.value)"-->
-                  <!--                        v-model="item.flowId"-->
-                  <!--                        :options="flowSelectList"-->
-                  <!--                        placeholder="请选择需要关联的流程"-->
-                  <!--                        :props="{ value: 'id', label: 'name', children: 'children', emitPath: false }"-->
-                  <!--                        clearable-->
-                  <!--                      ></el-cascader>-->
-                  <!--                    </div>-->
-                  <!--                  </el-tab-pane>-->
-                </el-tabs>
-              </el-checkbox-group>
-              <el-checkbox-group v-if="columnBtns.length" v-model="nowFilter.columnBtnsList" class="btnsList columnBtnList">
-                <el-tabs>
-                  <el-tab-pane label="系统按钮">
-                    <div v-for="item in customTableData.filter((v) => !v.buttonType || v.buttonType === 2)" class="flex gap-10 flex-center" style="margin-bottom: 10px">
-                      <div>
-                        <el-checkbox :label="item.value" :key="item.value">
-                          <div class="">{{ item.label || btnText(item.value) }}</div>
-                        </el-checkbox>
-                      </div>
-                      <div>
-                        <!--                        <el-cascader-->
-                        <!--                          :disabled="['detail', 'rowJournal'].includes(item.value)"-->
-                        <!--                          v-model="item.flowId"-->
-                        <!--                          :options="flowSelectList"-->
-                        <!--                          placeholder="请选择需要关联的流程"-->
-                        <!--                          :props="{ value: 'id', label: 'name', children: 'children', emitPath: false }"-->
-                        <!--                          clearable-->
-                        <!--                        ></el-cascader>-->
-                      </div>
+                    <div>
+                      <!--                        <el-cascader-->
+                      <!--                          :disabled="['detail', 'rowJournal'].includes(item.value)"-->
+                      <!--                          v-model="item.flowId"-->
+                      <!--                          :options="flowSelectList"-->
+                      <!--                          placeholder="请选择需要关联的流程"-->
+                      <!--                          :props="{ value: 'id', label: 'name', children: 'children', emitPath: false }"-->
+                      <!--                          clearable-->
+                      <!--                        ></el-cascader>-->
                     </div>
-                  </el-tab-pane>
-                  <!--                  <el-tab-pane label="自定义按钮">-->
-                  <!--                    <div v-for="item in customTableData.filter((v) => v.buttonType === 1)" class="flex gap-10 flex-center" style="margin-bottom: 10px">-->
-                  <!--                      <div>-->
-                  <!--                        <el-checkbox :label="item.value" :key="item.value">-->
-                  <!--                          <div class="">{{ item.label || btnText(item.value) }}</div>-->
-                  <!--                        </el-checkbox>-->
-                  <!--                      </div>-->
-                  <!--                      <div>-->
-                  <!--                        <el-cascader-->
-                  <!--                          :disabled="['detail', 'rowJournal'].includes(item.value)"-->
-                  <!--                          v-model="item.flowId"-->
-                  <!--                          :options="flowSelectList"-->
-                  <!--                          placeholder="请选择需要关联的流程"-->
-                  <!--                          :props="{ value: 'id', label: 'name', children: 'children', emitPath: false }"-->
-                  <!--                          clearable-->
-                  <!--                        ></el-cascader>-->
-                  <!--                      </div>-->
-                  <!--                    </div>-->
-                  <!--                  </el-tab-pane>-->
-                </el-tabs>
+                  </div>
+                </el-card>
+                <!--                <el-tabs>-->
+                <!--                  <el-tab-pane label="系统按钮"> </el-tab-pane>-->
+                <!--                  <el-tab-pane label="自定义按钮">-->
+                <!--                    <div v-for="item in customTableData.filter((v) => v.buttonType === 1)" class="flex gap-10 flex-center" style="margin-bottom: 10px">-->
+                <!--                      <div>-->
+                <!--                        <el-checkbox :label="item.value" :key="item.value">-->
+                <!--                          <div class="">{{ item.label || btnText(item.value) }}</div>-->
+                <!--                        </el-checkbox>-->
+                <!--                      </div>-->
+                <!--                      <div>-->
+                <!--                        <el-cascader-->
+                <!--                          :disabled="['detail', 'rowJournal'].includes(item.value)"-->
+                <!--                          v-model="item.flowId"-->
+                <!--                          :options="flowSelectList"-->
+                <!--                          placeholder="请选择需要关联的流程"-->
+                <!--                          :props="{ value: 'id', label: 'name', children: 'children', emitPath: false }"-->
+                <!--                          clearable-->
+                <!--                        ></el-cascader>-->
+                <!--                      </div>-->
+                <!--                    </div>-->
+                <!--                  </el-tab-pane>-->
+                <!--                </el-tabs>-->
               </el-checkbox-group>
             </div>
           </template>
@@ -413,9 +435,11 @@ export default {
         item.value = 'custom_button_' + item.id
         return item
       })
-      this.customTableData = [...this.columnBtns, ...this.customButtions.filter((v) => v.buttonType === 1 && v.buttonLocation === 2)]
+      this.customTableData = [...this.columnBtns, ...this.customButtions.filter((v) => v.buttonType === 1 && v.buttonLocation === 2)].filter((v) => {
+        return ['edit', 'remove', 'detail'].includes(v.value)
+      })
       this.customSystemBtns = [...this.btns, ...this.customButtions.filter((v) => v.buttonType === 1 && v.buttonLocation === 1)].filter((v) => {
-        return ['add', 'download', 'recycle'].includes(v.value)
+        return ['add', 'download', 'recycle', 'batchUpload', 'journal'].includes(v.value)
       })
       console.log(this.customSystemBtns)
     },

+ 1 - 1
src/utils/request.js

@@ -33,7 +33,7 @@ let paramsObj = queryURLParams(url)
 if (process.env.NODE_ENV === 'development') {
   baseURL = process.env.VUE_APP_BASE_API
   paramsObj.token =
-    'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJCSTEwMDEiLCJpbnN0SWQiOiIxNzQ3Nzg5ODU1MjgwMTg5NTM5Iiwia2lkIjoibXhrX2F1dGhfandrIiwiaXNzIjoiaHR0cHM6Ly9xZXZvYy5jb20vIiwic3R5bGUiOiJ3ZWIiLCJleHAiOjE3Mjg2OTY1OTAsImlhdCI6MTcyNTA5NjU5MCwidXNlcklkIjoiMTc3MjUzMTcxMDcyNDQ5NzQxMCIsImp0aSI6IjEwMjczMTE0MDMzMDU3OTU1ODQifQ.7lzjMIs4w_9uq_03sL27CLPhbLZZmd3p5e4u2BRxeXUlPRZUVvlBgu5Qpzh9dekBeUFFxp5CZwoc5pvarBy5Nw'
+    'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJza3k5MTEiLCJpbnN0SWQiOiIxNzM5OTMxNjQxMjY4MjYwODY5Iiwia2lkIjoibXhrX2F1dGhfandrIiwiaXNzIjoiaHR0cHM6Ly9xZXZvYy5jb20vIiwic3R5bGUiOiJ3ZWIiLCJleHAiOjE3Mjg4NzQxNjAsImlhdCI6MTcyNTI3NDE2MCwidXNlcklkIjoiMTczOTkyNzcxNDEyMDQ1NDIzNyIsImp0aSI6IjEwMjgwNTYxODI1NDA5OTI1MTIifQ.4Fcj9cCM4sQGVUGQgkwmBrh90PoePvHYyogu6spJgwid_z2vzEbN6WMAOaFOwiznkYUZKqF0ebwoN_oGNsNhjw'
   if (!getToken() || getToken() !== paramsObj.token) {
     setToken(paramsObj.token)
   }

+ 34 - 0
src/utils/rules.js

@@ -0,0 +1,34 @@
+export const nameRules = [
+  { required: true, message: '请输入分类名称', trigger: 'blur' },
+  { min: 2, max: 20, message: '名称长度在 2 到 20 个字符', trigger: 'blur' },
+  {
+    trigger: 'blur',
+    validator(rule, value, callback) {
+      if (/^[a-zA-Z0-9_\u4e00-\u9fa5]+$/.test(value)) {
+        callback()
+      } else {
+        callback(new Error('含有非法字符,请重新输入'))
+      }
+    }
+  }
+]
+const checkNumber = (rule, value, callback) => {
+  console.log(value)
+  setTimeout(() => {
+    // 判断 0 - 100 之间
+    if (value < 0 || value > 100) {
+      callback(new Error('请输入 0 - 100 之间的数字值'))
+    } else {
+      callback()
+    }
+  }, 100)
+}
+export const categoryRules = (categoryRules = 'categoryName', orderRules = 'orderIndex') => {
+  return {
+    [categoryRules]: [...nameRules],
+    [orderRules]: [
+      { required: true, message: '请输入排序值', trigger: 'change' },
+      { validator: checkNumber, trigger: 'change' }
+    ]
+  }
+}

+ 11 - 0
src/utils/wey.js

@@ -376,3 +376,14 @@ export const removeWatermark = (id, ele) => {
     ele.removeChild(hasExist)
   }
 }
+export const countCateTreeDisabled = (tree, id) => {
+  tree.forEach((l1) => {
+    l1.disabled = l1.id === id
+    if (!l1.children || !l1.children.length) return
+    if (l1.disabled) {
+      l1.children.forEach((l2) => (l2.disabled = true))
+    } else {
+      l1.children.forEach((l2) => (l2.disabled = l2.id === id))
+    }
+  })
+}

+ 8 - 8
src/views/basic/dynamicModel/list/UploadBox.vue

@@ -15,7 +15,7 @@
           :before-upload="beforeUploadChange"
           accept=".xlsx,.xls"
           :action="define.comUploadUrl"
-          :headers="{ 'Blade-Auth': Authorization }"
+          :headers="{ Authorization: Authorization }"
         >
           <i class="el-icon-upload"></i>
           <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
@@ -90,9 +90,9 @@
                 </template>
               </el-table-column>
             </el-table-column>
-            <el-table-column v-else :key="index"  align="center" minWidth="120">
+            <el-table-column v-else :key="index" align="center" minWidth="120">
               <template slot="header" slot-scope="scope">
-                {{item.title}}
+                {{ item.title }}
                 <template v-if="getIsRelationAssociation(associationLists[item.index])">
                   <el-checkbox v-model="associationLists[item.index].isDataFrom" :true-label="1" :false-label="0">
                     转化成key
@@ -205,10 +205,10 @@ export default {
       })
       this.columnList = this.flattenData(filteredData)
     },
-    getIsRelationAssociation(row){
-      if (!row && row.fieldId) return;
-      let activeItem = this.columnList.find((o => o.propId === row.fieldId))
-      if (!activeItem) return;
+    getIsRelationAssociation(row) {
+      if (!row && row.fieldId) return
+      let activeItem = this.columnList.find((o) => o.propId === row.fieldId)
+      if (!activeItem) return
       return activeItem.params.compoentConfig.relationData.isText || false
     },
     flattenData(data) {
@@ -484,7 +484,7 @@ export default {
             return {
               fieldId: o.fieldId,
               index: o.fieldKey,
-              isDataFrom:o.isDataFrom
+              isDataFrom: o.isDataFrom
             }
           }
         })

+ 9 - 9
src/views/basic/dynamicModel/list/exportList.vue

@@ -2,7 +2,7 @@
   <div>
     <template>
       <vxe-modal title="批量导出日志" :close-on-click-modal="false" v-model="visible" lock-scroll transfer width="70%" height="70%">
-        <el-table v-loading="listLoading" :data="tableData" border height="calc(100% - 45px)" style="width: 100%">
+        <el-table v-loading="listLoading" :data="tableData" height="calc(100% - 45px)" style="width: 100%">
           <el-table-column label="序号" align="center" width="50">
             <template slot-scope="scope">
               {{ scope.$index + 1 + size * (current - 1) }}
@@ -24,14 +24,14 @@
               {{ scope.row.status === 0 ? '生成中' : scope.row.status === 1 ? '生成成功' : '生成失败' }}
             </template>
           </el-table-column>
-          <el-table-column prop="approveStatus" label="审核状态" align="center" width="150">
-            <template slot-scope="scope">
-              <el-tag type="success" v-if="scope.row.approveStatus === 2">审核通过</el-tag>
-              <el-tag type="danger" v-else-if="scope.row.approveStatus === 3">审核驳回</el-tag>
-              <el-tag type="info" v-else-if="scope.row.approveStatus === 0">无需审批</el-tag>
-              <el-tag type="primary" v-else>等待审核</el-tag>
-            </template>
-          </el-table-column>
+          <!--          <el-table-column prop="approveStatus" label="审核状态" align="center" width="150">-->
+          <!--            <template slot-scope="scope">-->
+          <!--              <el-tag type="success" v-if="scope.row.approveStatus === 2">审核通过</el-tag>-->
+          <!--              <el-tag type="danger" v-else-if="scope.row.approveStatus === 3">审核驳回</el-tag>-->
+          <!--              <el-tag type="info" v-else-if="scope.row.approveStatus === 0">无需审批</el-tag>-->
+          <!--              <el-tag type="primary" v-else>等待审核</el-tag>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
           <el-table-column label="操作" align="center">
             <template slot-scope="scope">
               <el-button :disabled="scope.row.status !== 1 || ![0, 2].includes(scope.row.approveStatus)" type="text" size="small" @click="downloadClick(scope.row)">导出</el-button>

+ 24 - 0
src/views/basic/dynamicModel/list/index.vue

@@ -263,6 +263,23 @@
               >
                 回收站
               </vxe-button>
+              <vxe-button
+                size="mini"
+                style="margin-right: 10px"
+                v-if="columnData.btnsList.map((o) => o.value).includes('batchUpload')"
+                type="text"
+                icon="el-icon-shopping-bag-1"
+                @click="headBtnsHandel('batchUpload')"
+              >
+                批量导入
+              </vxe-button>
+              <el-dropdown v-if="columnData.btnsList.map((o) => o.value).includes('journal')" @command="handleCommand">
+                <vxe-button size="mini" type="text">操作日志<i class="el-icon-arrow-down el-icon--right"></i></vxe-button>
+                <el-dropdown-menu slot="dropdown">
+                  <el-dropdown-item command="uploadList">批量导入日志</el-dropdown-item>
+                  <el-dropdown-item command="exportList">批量导出日志</el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
               <vxe-button title="刷新" type="text" style="margin-right: 12px" circle icon="fa fa-file-text-o" @click="openCustom">字段冻结</vxe-button>
               <el-popover placement="bottom" trigger="hover">
                 <ul class="el-select-dropdown__list">
@@ -297,6 +314,7 @@
             <vxe-pager
               v-if="columnData.hasPage"
               background
+              :page-sizes="[20, 50, 100, 500]"
               border
               :layouts="['Total', 'Sizes', 'PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'FullJump']"
               :current-page.sync="listQuery.currentPage"
@@ -2766,6 +2784,12 @@ export default {
 :deep(.vxe-tools--wrapper) {
   width: 100%;
 }
+:deep(.vxe-input--inner) {
+  border: 1px solid var(--color-primary) !important;
+}
+:deep(.vxe-select-option.is--selected) {
+  color: var(--color-primary) !important;
+}
 :deep(.vxe-table-custom-wrapper) {
   right: 148px;
   top: -19px;

+ 1 - 1
src/views/basic/dynamicModel/mobileList/UploadBox.vue

@@ -15,7 +15,7 @@
           :before-upload="beforeUploadChange"
           accept=".xlsx,.xls"
           :action="define.comUploadUrl"
-          :headers="{ 'Blade-Auth': Authorization }"
+          :headers="{ Authorization: Authorization }"
         >
           <i class="el-icon-upload"></i>
           <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>

+ 1 - 1
src/views/basic/dynamicModel/zeroList/UploadBox.vue

@@ -15,7 +15,7 @@
           :before-upload="beforeUploadChange"
           accept=".xlsx,.xls"
           :action="define.comUploadUrl"
-          :headers="{ 'Blade-Auth': Authorization }"
+          :headers="{ Authorization: Authorization }"
         >
           <i class="el-icon-upload"></i>
           <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>

+ 9 - 4
src/views/dataset/auth-group-panel.vue

@@ -591,16 +591,18 @@ export default {
       overflow-y: auto;
     }
     .item {
-      margin: 10px;
+      //margin: 10px;
       border: 1px solid #dcdfe6;
       transition: all 0.2s;
+      border-radius: 5px;
       &:hover {
-        border: 1px solid #409eff;
+        background: var(--color-primary-hover);
       }
       &.selected {
-        border: 1px solid #409eff;
+        //border: 1px solid var(--color-primary);
+        background: var(--color-primary-hover);
         .name {
-          color: #409eff;
+          color: var(--color-primary);
         }
       }
       .name {
@@ -641,6 +643,9 @@ export default {
       margin: 5px 10px;
       font-size: 14px;
       line-height: 16px;
+      background: rgb(245, 245, 245);
+      border-radius: 5px;
+      padding: 7px 10px;
       .el-icon-close {
         vertical-align: top;
         font-size: 10px;

+ 211 - 181
src/views/form/webDesign/customCodeMode.vue

@@ -1,193 +1,223 @@
 <template>
-<div>
-  <el-dialog
-    :close-on-click-modal="false"
-    :close-on-press-escape="false"
-    :visible.sync="showEditComputedField"
-    append-to-body
-    class="dataset-edit-computed-fields"
-    width="40%">
-    <p slot="title">
-      {{ id ? '编辑自定义事件' : '新增自定义事件' }}
-      <el-popover placement="bottom" title="注意事项" width="400" trigger="hover">
-        <div v-if="addForm.eventType === 1">
-          <p>1、将自动执行类中的第一个静态方法;</p>
-          <p>2、前置事件必须返回一行一列数据,当返回值为0允许继续执行,非0时终止执行;</p>
-          <p>3、自定义参数定在后,需要在‘插入参数’中进行插入到代码中,自定义变量值放在两个&号中间;</p>
-          <p>样例如下:</p>
-          <p>public class lowCodeTest {</p>
-          <p>&nbsp;public static Integer main() {</p>
-          <p>&nbsp;&nbsp;String username = "jakcy";</p>
-          <p>&nbsp;&nbsp;Integer result = 0;</p>
-          <p>&nbsp;&nbsp;if(username.equals("jakcy")){</p>
-          <p>&nbsp;&nbsp;&nbsp;result = 1;</p>
-          <p>&nbsp;&nbsp; }</p>
-          <p>&nbsp;&nbsp;return result;</p>
-          <p>&nbsp; }</p>
-          <p>}</p>
-        </div>
-        <div v-else>
-          <p>1、前置事件必须返回一行一列数据,当返回值为0允许继续执行,非0时终止执行;</p>
-          <p>2、'包路径'表示jar执行类的路径地址,如:com.demo.utils.DcService</p>
-          <p>3、'函数名'表示jar执行类的方法名,方法必须为静态方法,如:main,函数名不需要加括号;</p>
-          <p>4、添加参数key值必须为java.lang.String类型,如需其它类型,在main方法中进行转换;</p>
-        </div>
-        <el-button slot="reference" type="text" >注意事项<i class="el-icon-question" /></el-button>
-      </el-popover>
-    </p>
-    <el-form :model="addForm" label-position="left" label-width="100px" ref="addForm">
-      <el-form-item label="事件名称">
-        <el-input v-model="addForm.eventName" placeholder="请输入事件名称"></el-input>
-      </el-form-item>
-      <el-form-item label="处理时机">
-        <el-radio-group v-model="addForm.executeTiming">
-          <el-radio v-model="addForm.executeTiming" :label="2">后置执行</el-radio>
-          <el-radio v-model="addForm.executeTiming" :label="1">
-            前置执行
-            <el-tooltip style="cursor: pointer" effect="dark" placement="top">
-              <div slot="content">
-                注:前置事件必须返回一行一列数据,当返回值为0允许继续执行,非0时终止执行;
+  <div>
+    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="showEditComputedField" append-to-body class="dataset-edit-computed-fields" width="40%">
+      <p slot="title">
+        {{ id ? '编辑自定义事件' : '新增自定义事件' }}
+        <el-popover placement="bottom" title="注意事项" width="400" trigger="hover">
+          <div v-if="addForm.eventType === 1">
+            <p>1、将自动执行类中的第一个静态方法;</p>
+            <p>2、前置事件必须返回一行一列数据,当返回值为0允许继续执行,非0时终止执行;</p>
+            <p>3、自定义参数定在后,需要在‘插入参数’中进行插入到代码中,自定义变量值放在两个&号中间;</p>
+            <p>样例如下:</p>
+            <p>public class lowCodeTest {</p>
+            <p>&nbsp;public static Integer main() {</p>
+            <p>&nbsp;&nbsp;String username = "jakcy";</p>
+            <p>&nbsp;&nbsp;Integer result = 0;</p>
+            <p>&nbsp;&nbsp;if(username.equals("jakcy")){</p>
+            <p>&nbsp;&nbsp;&nbsp;result = 1;</p>
+            <p>&nbsp;&nbsp; }</p>
+            <p>&nbsp;&nbsp;return result;</p>
+            <p>&nbsp; }</p>
+            <p>}</p>
+          </div>
+          <div v-else>
+            <p>1、前置事件必须返回一行一列数据,当返回值为0允许继续执行,非0时终止执行;</p>
+            <p>2、'包路径'表示jar执行类的路径地址,如:com.demo.utils.DcService</p>
+            <p>3、'函数名'表示jar执行类的方法名,方法必须为静态方法,如:main,函数名不需要加括号;</p>
+            <p>4、添加参数key值必须为java.lang.String类型,如需其它类型,在main方法中进行转换;</p>
+          </div>
+          <el-button slot="reference" type="text">注意事项<i class="el-icon-question" /></el-button>
+        </el-popover>
+      </p>
+      <el-form :model="addForm" label-position="left" label-width="100px" ref="addForm">
+        <el-form-item label="事件名称">
+          <el-input v-model="addForm.eventName" placeholder="请输入事件名称"></el-input>
+        </el-form-item>
+        <el-form-item label="处理时机">
+          <el-radio-group v-model="addForm.executeTiming">
+            <el-radio v-model="addForm.executeTiming" :label="2">后置执行</el-radio>
+            <el-radio v-model="addForm.executeTiming" :label="1">
+              前置执行
+              <el-tooltip style="cursor: pointer" effect="dark" placement="top">
+                <div slot="content">注:前置事件必须返回一行一列数据,当返回值为0允许继续执行,非0时终止执行;</div>
+                <i class="el-icon-question" />
+              </el-tooltip>
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="jar包上传" v-if="addForm.eventType === 2">
+          <el-upload
+            :action="define.comUploadUrl"
+            :headers="uploadHeaders"
+            :file-list="fileList"
+            :on-success="handleSuccess"
+            :show-file-list="false"
+            :before-upload="beforeUpload"
+            :on-exceed="handleExceed"
+            :limit="1"
+          >
+            <el-button size="small" icon="el-icon-upload">点击上传</el-button>
+          </el-upload>
+          <template v-if="fileList.length">
+            <transition-group class="el-upload-list el-upload-list el-upload-list--text" tag="ul" name="el-list">
+              <li class="el-upload-list__item is-success" v-for="(file, index) in fileList" :key="file.fileId">
+                <a class="el-upload-list__item-name"> <i class="el-icon-document"></i>{{ file.name }} </a>
+                <label class="el-upload-list__item-status-label">
+                  <i class="el-icon-upload-success el-icon-circle-check"></i>
+                </label>
+                <i class="el-icon-close" @click="handleRemove(file, index)"></i>
+              </li>
+            </transition-group>
+          </template>
+        </el-form-item>
+        <el-form-item label="包路径" v-if="addForm.eventType === 2">
+          <el-input v-model="addForm.className" placeholder="请输入包路径"></el-input>
+        </el-form-item>
+        <el-form-item label="函数名" v-if="addForm.eventType === 2">
+          <el-input v-model="addForm.methodName" placeholder="请输入函数名"></el-input>
+        </el-form-item>
+        <el-form-item v-if="addForm.eventType === 2">
+          <el-button type="text" size="mini" @click="eventJarValueList.push({ parameterType: 'java.lang.String', value: '自定义的value2' })">+添加参数</el-button>
+          <div v-for="(value, key) in eventJarValueList" style="display: flex; align-content: center; flex-wrap: nowrap; align-items: center; margin-bottom: 10px" :key="key">
+            <el-popover :ref="`jarParamSelector-${key}`" :key="key" placement="bottom-start" trigger="click">
+              <div style="display: flex">
+                <div style="margin-right: 10px; max-height: 300px; overflow-y: auto">
+                  <p>引用字段</p>
+                  <template v-for="field of tobeChooseWeidu">
+                    <div :key="field.columnTitle" :title="field.columnName" class="weidu" @click="setJarValueFun(value, `[${field.columnName}]`)">
+                      {{ field.columnTitle + '【' + field.columnName + '】' }}
+                    </div>
+                  </template>
+                  <template v-for="field of tobeChooseZhibiao">
+                    <div :key="field.columnTitle" :title="field.columnName" class="zhibiao" @click="setJarValueFun(value, `[${field.columnName}]`)">
+                      {{ field.columnTitle + '【' + field.columnName + '】' }}
+                    </div>
+                  </template>
+                </div>
+                <el-cascader-panel
+                  v-model="nowParam"
+                  :options="paramList"
+                  :props="{ expandTrigger: 'click', emitPath: false, value: 'paramKey' }"
+                  @change="setJarValueFun(value, `\${${$event}}`)"
+                ></el-cascader-panel>
               </div>
-              <i class="el-icon-question" />
-            </el-tooltip>
-          </el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="jar包上传" v-if="addForm.eventType === 2">
-        <el-upload
-          :action="define.comUploadUrl"
-          :headers="uploadHeaders"
-          :file-list="fileList"
-          :on-success="handleSuccess"
-          :show-file-list="false"
-          :before-upload="beforeUpload"
-          :on-exceed="handleExceed"
-          :limit="1">
-          <el-button size="small" icon="el-icon-upload" >点击上传</el-button>
-        </el-upload>
-        <template v-if="fileList.length">
-          <transition-group class="el-upload-list el-upload-list el-upload-list--text" tag="ul" name="el-list">
-            <li class="el-upload-list__item is-success" v-for="(file, index) in fileList" :key="file.fileId">
-              <a class="el-upload-list__item-name"> <i class="el-icon-document"></i>{{ file.name }} </a>
-              <label class="el-upload-list__item-status-label">
-                <i class="el-icon-upload-success el-icon-circle-check"></i>
-              </label>
-              <i class="el-icon-close"  @click="handleRemove(file, index)"></i>
-            </li>
-          </transition-group>
-        </template>
-      </el-form-item>
-      <el-form-item label="包路径" v-if="addForm.eventType === 2">
-        <el-input v-model="addForm.className" placeholder="请输入包路径"></el-input>
-      </el-form-item>
-      <el-form-item label="函数名" v-if="addForm.eventType === 2">
-        <el-input v-model="addForm.methodName" placeholder="请输入函数名"></el-input>
-      </el-form-item>
-      <el-form-item v-if="addForm.eventType === 2">
-        <el-button type="text" size="mini" @click="eventJarValueList.push({parameterType:'java.lang.String', value:'自定义的value2'});">+添加参数</el-button>
-        <div v-for="(value,key) in eventJarValueList" style="display: flex;align-content: center;flex-wrap: nowrap;align-items: center;margin-bottom: 10px" :key="key">
-          <el-popover :ref="`jarParamSelector-${key}`" :key="key" placement="bottom-start" trigger="click">
+              <el-button slot="reference" type="text" size="mini">+插入变量</el-button>
+            </el-popover>
+            <div>
+              <el-input v-model="value.parameterType" placeholder="请输入参数" disabled></el-input>
+            </div>
+            <p style="margin: 0 10px">:</p>
+            <div style="position: relative">
+              <el-input v-model="value.value" placeholder="请输入值"></el-input>
+            </div>
+            <i class="el-icon-delete delete-btn" @click="eventJarValueList.splice(key, 1)" style="cursor: pointer; margin-left: 10px"></i>
+          </div>
+        </el-form-item>
+        <el-form-item label="脚本" v-if="addForm.eventType === 1">
+          <el-popover ref="paramSelector" placement="bottom-start" trigger="click">
             <div style="display: flex">
-              <div style="margin-right: 10px;max-height: 300px;overflow-y: auto">
+              <div style="margin-right: 10px">
+                <p>自定义参数</p>
+                <template v-for="(field, k) in eventValueList">
+                  <div
+                    :key="k"
+                    :title="field.key"
+                    class="diyText"
+                    @click="
+                      $refs.editor.editor.insert(`&${field.key}&`)
+                      $refs.paramSelector.doClose()
+                    "
+                  >
+                    {{ field.key + '【' + field.value + '】' }}
+                  </div>
+                </template>
+              </div>
+              <div style="margin-right: 10px; max-height: 300px; overflow-y: auto">
                 <p>引用字段</p>
                 <template v-for="field of tobeChooseWeidu">
-                  <div :key="field.columnTitle" :title="field.columnName" class="weidu" @click="setJarValueFun(value,`[${field.columnName}]`)">
+                  <div
+                    :key="field.columnTitle"
+                    :title="field.columnName"
+                    class="weidu"
+                    @click="
+                      $refs.editor.editor.insert(`[${field.columnName}]`)
+                      $refs.paramSelector.doClose()
+                    "
+                  >
                     {{ field.columnTitle + '【' + field.columnName + '】' }}
                   </div>
                 </template>
                 <template v-for="field of tobeChooseZhibiao">
-                  <div :key="field.columnTitle" :title="field.columnName" class="zhibiao" @click="setJarValueFun(value,`[${field.columnName}]`)">
+                  <div
+                    :key="field.columnTitle"
+                    :title="field.columnName"
+                    class="zhibiao"
+                    @click="
+                      $refs.editor.editor.insert(`[${field.columnName}]`)
+                      $refs.paramSelector.doClose()
+                    "
+                  >
                     {{ field.columnTitle + '【' + field.columnName + '】' }}
                   </div>
                 </template>
               </div>
-              <el-cascader-panel v-model="nowParam" :options="paramList" :props="{ expandTrigger: 'click', emitPath: false, value: 'paramKey' }" @change="setJarValueFun(value,`\${${$event}}`)"></el-cascader-panel>
+              <el-cascader-panel
+                v-model="nowParam"
+                :options="paramList"
+                :props="{ expandTrigger: 'click', emitPath: false, value: 'paramKey' }"
+                @change="
+                  $refs.editor.editor.insert(`\${${$event}}`)
+                  $refs.paramSelector.doClose()
+                "
+              ></el-cascader-panel>
             </div>
-            <el-button slot="reference" type="text" size="mini">+插入变量</el-button>
+            <el-button slot="reference" type="text" size="mini">+插入参数</el-button>
           </el-popover>
-          <div>
-            <el-input v-model="value.parameterType" placeholder="请输入参数" disabled></el-input>
-          </div>
-          <p style="margin: 0 10px">:</p>
-          <div style="position: relative">
-            <el-input v-model="value.value" placeholder="请输入值" ></el-input>
-          </div>
-          <i class="el-icon-delete delete-btn" @click="eventJarValueList.splice(key,1)" style="cursor: pointer;margin-left: 10px"></i>
-        </div>
-      </el-form-item>
-      <el-form-item label="脚本" v-if="addForm.eventType === 1">
-        <el-popover ref="paramSelector" placement="bottom-start" trigger="click">
-          <div style="display: flex">
-            <div style="margin-right: 10px">
-              <p>自定义参数</p>
-              <template v-for="(field,k) in eventValueList">
-                <div :key="k" :title="field.key" class="diyText" @click="$refs.editor.editor.insert(`&${field.key}&`);$refs.paramSelector.doClose()">
-                  {{ field.key + '【' + field.value + '】' }}
-                </div>
-              </template>
+          <aceEditor ref="editor" v-model="nowComputedField.columnFormula" height="200" lang="javascript" snippets wrap />
+          <!--        <el-input type="textarea" :autosize="{ minRows: 8, maxRows: 12}" placeholder="请输入脚本" v-model="addForm.eventSql"></el-input>-->
+        </el-form-item>
+        <el-form-item v-if="addForm.eventType === 1">
+          <el-button type="text" size="mini" @click="eventValueList.push({ key: '自定义的key', value: '自定义的value2' })">+添加参数</el-button>
+          <div v-for="(value, key) in eventValueList" style="display: flex; align-content: center; flex-wrap: nowrap; align-items: center; margin-bottom: 10px" :key="key">
+            <div>
+              <el-input v-model="value.key" placeholder="请输入参数"></el-input>
             </div>
-            <div style="margin-right: 10px;max-height: 300px;overflow-y: auto">
-              <p>引用字段</p>
-              <template v-for="field of tobeChooseWeidu">
-                <div :key="field.columnTitle" :title="field.columnName" class="weidu" @click="$refs.editor.editor.insert(`[${field.columnName}]`);$refs.paramSelector.doClose()">
-                  {{ field.columnTitle + '【' + field.columnName + '】' }}
-                </div>
-              </template>
-              <template v-for="field of tobeChooseZhibiao">
-                <div :key="field.columnTitle" :title="field.columnName" class="zhibiao" @click="$refs.editor.editor.insert( `[${field.columnName}]`);$refs.paramSelector.doClose()">
-                  {{ field.columnTitle + '【' + field.columnName + '】' }}
-                </div>
-              </template>
+            <p style="margin: 0 10px">:</p>
+            <div style="position: relative">
+              <el-input v-model="value.value" placeholder="请输入值"></el-input>
             </div>
-            <el-cascader-panel v-model="nowParam" :options="paramList" :props="{ expandTrigger: 'click', emitPath: false, value: 'paramKey' }" @change="$refs.editor.editor.insert( `\${${$event}}`);$refs.paramSelector.doClose()"></el-cascader-panel>
-          </div>
-          <el-button slot="reference" type="text" size="mini">+插入参数</el-button>
-        </el-popover>
-          <aceEditor ref="editor" v-model="nowComputedField.columnFormula" height="200" lang="javascript" snippets wrap />
-<!--        <el-input type="textarea" :autosize="{ minRows: 8, maxRows: 12}" placeholder="请输入脚本" v-model="addForm.eventSql"></el-input>-->
-      </el-form-item>
-      <el-form-item v-if="addForm.eventType === 1">
-        <el-button type="text" size="mini" @click="eventValueList.push({key:'自定义的key', value:'自定义的value2'})">+添加参数</el-button>
-        <div v-for="(value,key) in eventValueList" style="display: flex;align-content: center;flex-wrap: nowrap;align-items: center;margin-bottom: 10px" :key="key">
-          <div>
-            <el-input v-model="value.key" placeholder="请输入参数" ></el-input>
-          </div>
-          <p style="margin: 0 10px">:</p>
-          <div style="position: relative">
-            <el-input v-model="value.value" placeholder="请输入值" ></el-input>
+            <i class="el-icon-delete delete-btn" @click="eventValueList.splice(key, 1)" style="cursor: pointer; margin-left: 10px"></i>
           </div>
-          <i class="el-icon-delete delete-btn" @click="eventValueList.splice(key,1)" style="cursor: pointer;margin-left: 10px"></i>
-        </div>
-      </el-form-item>
-    </el-form>
-    <span slot="footer" class="dialog-footer">
-          <el-button @click="showEditComputedField = false">取 消</el-button>
-          <el-button type="primary" @click="codeModeSubmit">确 定</el-button>
-    </span>
-  </el-dialog>
-</div>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="showEditComputedField = false">取 消</el-button>
+        <el-button type="primary" @click="codeModeSubmit">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
 </template>
 <script>
-import {getToken} from "@/utils/auth";
+import { getToken } from '@/utils/auth'
 import { categoryList, paramList } from '@/api/newbi/globalParams'
 import { cubeFieldList } from '@/api/workFlow/FlowEngine'
-import aceEditor from "@/components/AceEditor/index.vue";
-import {addCustomEvent} from "@/api/onlineDev/visualDev";
-import alert from "element-ui/packages/alert";
+import aceEditor from '@/components/AceEditor/index.vue'
+import { addCustomEvent } from '@/api/onlineDev/visualDev'
+import alert from 'element-ui/packages/alert'
 export default {
   computed: {
     alert() {
       return alert
     }
   },
-  components: {aceEditor},
-  props: ['dbLinkId', 'modelId', 'dbSourceId','eventTypeRadio'],
+  components: { aceEditor },
+  props: ['dbLinkId', 'modelId', 'dbSourceId', 'eventTypeRadio'],
   data() {
     return {
       showEditComputedField: false,
-      uploadHeaders: { 'Blade-Auth': 'bearer ' + getToken() },
-      fileList:[],
-      id:'',
+      uploadHeaders: { Authorization: 'bearer ' + getToken() },
+      fileList: [],
+      id: '',
       addForm: {
         eventName: '',
         jarFilePath: '',
@@ -195,28 +225,27 @@ export default {
         className: '',
         eventSql: '',
         eventType: 1,
-        executeTiming:2,
-        eventStatus: 0,
+        executeTiming: 2,
+        eventStatus: 0
       },
-      eventValueList: [{key:'自定义的key', value:'自定义的value2'}],
-      eventJarValueList: [{parameterType:'java.lang.String', value:'自定义的value2'}],
+      eventValueList: [{ key: '自定义的key', value: '自定义的value2' }],
+      eventJarValueList: [{ parameterType: 'java.lang.String', value: '自定义的value2' }],
       paramList: [],
       tobeChooseWeidu: [], // 计算字段编辑框里维度字段
       tobeChooseZhibiao: [], // 计算字段编辑框里指标字段
-      nowParam:[],
+      nowParam: [],
       nowComputedField: {
         columnFormula: ''
-      },
+      }
     }
   },
   created() {
     this.getGlobalData()
   },
   methods: {
-    setJarValueFun(value,field){
-      value.value = field;
+    setJarValueFun(value, field) {
+      value.value = field
       document.body.click()
-
     },
     // 获取系统变量
     getGlobalData() {
@@ -257,11 +286,11 @@ export default {
     addFuncClick(row) {
       this.showEditComputedField = true
       this.fileList = []
-      this.eventValueList = [{key:'自定义的key', value:'自定义的value2'}]
-      this.eventJarValueList = [{parameterType:'java.lang.String', value:'自定义的value2'}]
-      if (row && row.id){
+      this.eventValueList = [{ key: '自定义的key', value: '自定义的value2' }]
+      this.eventJarValueList = [{ parameterType: 'java.lang.String', value: '自定义的value2' }]
+      if (row && row.id) {
         this.addForm.eventType = row.eventType
-      }else {
+      } else {
         this.addForm.eventType = this.eventTypeRadio
       }
       this.$nextTick(() => {
@@ -272,14 +301,14 @@ export default {
           this.addForm.eventStatus = row.eventStatus
           this.id = row.id
           let obj = JSON.parse(row.eventValue)
-          this.eventValueList = Object.keys(obj).map(key => ({ key, value: obj[key] }));
+          this.eventValueList = Object.keys(obj).map((key) => ({ key, value: obj[key] }))
           if (this.addForm.eventType === 1) this.$refs.editor.editor.setValue(row.eventSql)
-          if (this.addForm.eventType === 2){
+          if (this.addForm.eventType === 2) {
             let jarEventVal = JSON.parse(row.eventSql)
             this.addForm.className = jarEventVal.className
             this.addForm.methodName = jarEventVal.methodName
             this.addForm.jarFilePath = jarEventVal.jarFilePath
-            this.fileList = [{name: jarEventVal.jarFilePath,fileId: jarEventVal.jarFilePath,url: jarEventVal.jarFilePath}]
+            this.fileList = [{ name: jarEventVal.jarFilePath, fileId: jarEventVal.jarFilePath, url: jarEventVal.jarFilePath }]
             this.eventJarValueList = obj
           }
         } else {
@@ -305,7 +334,7 @@ export default {
     handleSuccess(res, file, fileList) {
       // 如果数组类型
       if (res.code === 200) {
-        this.fileList.push({name: file.name,fileId: res.msg,url: res.msg})
+        this.fileList.push({ name: file.name, fileId: res.msg, url: res.msg })
         this.addForm.jarFilePath = res.msg
       } else {
         fileList.filter((o) => o.uid != file.uid)
@@ -320,14 +349,16 @@ export default {
       this.fileList.splice(index, 1)
       this.$emit('input', this.fileList)
     },
-    codeModeSubmit(){
+    codeModeSubmit() {
       let eventValue = {}
-      this.eventValueList.forEach((i,k)=>{eventValue[i.key] = i.value})
+      this.eventValueList.forEach((i, k) => {
+        eventValue[i.key] = i.value
+      })
       let { columnFormula } = this.nowComputedField
       if (this.addForm.eventType === 1 && !columnFormula) {
         return this.$message({ message: '请补充完整', type: 'warning' })
       }
-      let jarEventSql = {jarFilePath : this.addForm.jarFilePath, className : this.addForm.className, methodName : this.addForm.methodName}
+      let jarEventSql = { jarFilePath: this.addForm.jarFilePath, className: this.addForm.className, methodName: this.addForm.methodName }
       let params = {
         id: this.id,
         eventName: this.addForm.eventName,
@@ -349,9 +380,8 @@ export default {
           }
         })
       })
-    },
+    }
   }
-
 }
 </script>
 <style scoped lang="scss">