소스 검색

行内系统按钮添加展示条件判断

threethousanddream 3 달 전
부모
커밋
beb1ee803a
4개의 변경된 파일1965개의 추가작업 그리고 1766개의 파일을 삭제
  1. 71 67
      src/main.js
  2. 2 2
      src/utils/request.js
  3. 1662 1542
      src/views/basic/dynamicModel/list/index.vue
  4. 230 155
      src/views/form/webDesign/CustomButton.vue

+ 71 - 67
src/main.js

@@ -1,106 +1,110 @@
-import Vue from 'vue'
-import 'xe-utils'
-import VXETable from 'vxe-table'
+import Vue from "vue";
+import "xe-utils";
+import VXETable from "vxe-table";
 VXETable.config({
-  'column-config': {
+  "column-config": {
     resizable: true
   }
-})
-import 'vxe-table/lib/style.css'
-Vue.use(VXETable)
-import VXETablePluginElement from 'vxe-table-plugin-element'
-import 'vxe-table-plugin-element/dist/style.css'
-VXETable.use(VXETablePluginElement)
-const jnpf = require('./utils/jnpf').default
+});
+import "vxe-table/lib/style.css";
+Vue.use(VXETable);
+import VXETablePluginElement from "vxe-table-plugin-element";
+import "vxe-table-plugin-element/dist/style.css";
+VXETable.use(VXETablePluginElement);
+const jnpf = require("./utils/jnpf").default;
 
-import 'normalize.css/normalize.css' // a modern alternative to CSS resets
+import "normalize.css/normalize.css"; // a modern alternative to CSS resets
 
-import Element from 'element-ui'
-import 'element-ui/lib/theme-chalk/index.css'
-import './styles/element-variables.scss'
-import './assets/scss/common.scss'
+import Element from "element-ui";
+import "element-ui/lib/theme-chalk/index.css";
+import "./styles/element-variables.scss";
+import "./assets/scss/common.scss";
 
-import '@/styles/index.scss' // global css
-import './assets/scss/theme.scss' // 主题
+import "@/styles/index.scss"; // global css
+import "./assets/scss/theme.scss"; // 主题
 
-import VueAwesomeSwiper from 'vue-awesome-swiper'
-import 'swiper/css/swiper.css'
-Vue.use(VueAwesomeSwiper)
+import VueAwesomeSwiper from "vue-awesome-swiper";
+import "swiper/css/swiper.css";
+Vue.use(VueAwesomeSwiper);
 
-import App from './App'
-import store from './store'
-import router from './router'
+import App from "./App";
+import store from "./store";
+import router from "./router";
 
-import i18n from './lang' // internationalization
-import './permission' // permission control
+import i18n from "./lang"; // internationalization
+import "./permission"; // permission control
 // import './utils/error-log' // error log
-import { message } from './utils/message'
+import { message } from "./utils/message";
 
-import * as filters from './filters' // global filters
+import * as filters from "./filters"; // global filters
 
 // 自定义按钮权限指令
-import permission from '@/directive/permission'
-Vue.use(permission)
+import permission from "@/directive/permission";
+Vue.use(permission);
 
 Vue.use(Element, {
-  size: jnpf.storageGet('size') || 'small', // set element-ui default size
+  size: jnpf.storageGet("size") || "small", // set element-ui default size
   i18n: (key, value) => i18n.t(key, value)
-})
+});
 // 批量引入组件
-import components from './components'
-Vue.use(components)
+import components from "./components";
+Vue.use(components);
 
 // 添加实例属性
 Object.assign(Vue.prototype, {
-  define: require('./utils/define'), // 常量
+  define: require("./utils/define"), // 常量
   jnpf, // 公共方法
-  formValidate: require('./utils/formValidate').default, // 表单验证
+  formValidate: require("./utils/formValidate").default, // 表单验证
   $message: message
-})
+});
 
 // 全局注册过滤器
 Object.keys(filters).forEach((key) => {
-  Vue.filter(key, filters[key])
-})
+  Vue.filter(key, filters[key]);
+});
 
-Vue.config.productionTip = false
+Vue.config.productionTip = false;
 
 // 按需引入需要的语言包皮肤等资源
-require('brace/ext/emmet') // 如果是lang=html时需引入
-require('brace/ext/language_tools') // language extension
+require("brace/ext/emmet"); // 如果是lang=html时需引入
+require("brace/ext/language_tools"); // language extension
 
-require('brace/mode/sql')
-require('brace/snippets/sql')
-require('brace/mode/java')
-require('brace/snippets/java')
-require('brace/mode/javascript')
-require('brace/snippets/javascript')
-require('brace/theme/monokai')
-require('brace/theme/solarized_dark')
-require('brace/theme/chrome')
+require("brace/mode/sql");
+require("brace/snippets/sql");
+require("brace/mode/java");
+require("brace/snippets/java");
+require("brace/mode/javascript");
+require("brace/snippets/javascript");
+require("brace/theme/monokai");
+require("brace/theme/solarized_dark");
+require("brace/theme/chrome");
 // 注册组件后即可使用
-import Editor from 'bin-ace-editor'
-Vue.component(Editor.name, Editor)
-import { throttle } from 'lodash';
+import Editor from "bin-ace-editor";
+Vue.component(Editor.name, Editor);
+import { throttle } from "lodash";
 // 避免高频率调用 使用节流throttle
-Vue.prototype.apiVariableSetItem = throttle(function (key, value) {
-  if (key === 'API_VARIABLE_CHANGE') {
-    let newStorageEvent = document.createEvent('StorageEvent')
+Vue.prototype.apiVariableSetItem = throttle(function(key, value) {
+  if (key === "API_VARIABLE_CHANGE") {
+    let newStorageEvent = document.createEvent("StorageEvent");
     const storage = {
-      setItem: function (k, val) {
-        sessionStorage.setItem(k, val)
-        newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null)
-        window.dispatchEvent(newStorageEvent)
+      setItem: function(k, val) {
+        sessionStorage.setItem(k, val);
+        newStorageEvent.initStorageEvent("setItem", false, false, k, null, val, null, null);
+        window.dispatchEvent(newStorageEvent);
       }
-    }
-    return storage.setItem(key, value)
+    };
+    return storage.setItem(key, value);
   }
-},340)
+}, 340);
+window.logjson = function(val) {
+  if (typeof val === "object") console.log(JSON.parse(JSON.stringify(val)));
+  else console.log(val);
+};
 const vm = new Vue({
-  el: '#app',
+  el: "#app",
   router,
   store,
   i18n,
   render: (h) => h(App)
-})
-export default vm
+});
+export default vm;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2 - 2
src/utils/request.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1662 - 1542
src/views/basic/dynamicModel/list/index.vue


+ 230 - 155
src/views/form/webDesign/CustomButton.vue

@@ -12,23 +12,28 @@
           <vxe-column field="label" title="按钮名称"></vxe-column>
           <vxe-column field="type" title="按钮类型"></vxe-column>
           <vxe-column field="buttonStatus" title="按钮状态">
-            <template #default> 启用 </template>
+            <template #default> 启用</template>
           </vxe-column>
           <vxe-column title="操作" align="left" width="250">
             <template #default="{ row }">
-              <el-button size="small" type="success" plain @click="selectEvent(row)"> {{ row.eventNum > 0 ? `(${row.eventNum})` : '' }}设置事件 </el-button>
+              <el-button size="small" type="success" plain @click="selectEvent(row)">
+                {{ row.eventNum > 0 ? `(${row.eventNum})` : "" }}设置事件
+              </el-button>
             </template>
           </vxe-column>
         </vxe-table>
-        <vxe-table align="center" border :show-header="false" :data="customTableData.filter((o) => o.buttonLocation === 1)" empty-text="请点击新增自定义按钮">
+        <vxe-table align="center" border :show-header="false"
+                   :data="customTableData.filter((o) => o.buttonLocation === 1)" empty-text="请点击新增自定义按钮">
           <vxe-column field="label" title="按钮名称"></vxe-column>
           <vxe-column field="type" title="按钮类型"></vxe-column>
           <vxe-column field="buttonStatus" title="按钮状态">
-            <template #default> 启用 </template>
+            <template #default> 启用</template>
           </vxe-column>
           <vxe-column title="操作" align="left" width="250">
             <template #default="{ row }">
-              <el-button size="mini" type="success" plain @click="selectEvent(row)">{{ row.eventNum > 0 ? `(${row.eventNum})` : '' }}设置事件</el-button>
+              <el-button size="mini" type="success" plain @click="selectEvent(row)">
+                {{ row.eventNum > 0 ? `(${row.eventNum})` : "" }}设置事件
+              </el-button>
               <el-button size="mini" type="primary" plain @click="editEvent(row)">编辑</el-button>
               <el-button size="mini" type="danger" plain @click="removeEvent(row)">删除</el-button>
             </template>
@@ -41,15 +46,19 @@
           <vxe-column field="label" title="按钮名称"></vxe-column>
           <vxe-column field="type" title="按钮类型"></vxe-column>
           <vxe-column field="buttonStatus" title="按钮状态">
-            <template #default> 启用 </template>
+            <template #default> 启用</template>
           </vxe-column>
           <vxe-column title="操作" align="left" width="250">
             <template #default="{ row }">
-              <el-button size="small" type="success" plain @click="selectEvent(row)"> {{ row.eventNum > 0 ? `(${row.eventNum})` : '' }}设置事件 </el-button>
+              <el-button size="small" type="success" plain @click="selectEvent(row)">
+                {{ row.eventNum > 0 ? `(${row.eventNum})` : "" }}设置事件
+              </el-button>
+              <el-button size="mini" type="primary" plain @click="onSystemEdit(row)">设置条件</el-button>
             </template>
           </vxe-column>
         </vxe-table>
-        <vxe-table align="center" border :show-header="false" :data="customTableData.filter((o) => o.buttonLocation === 2)" empty-text="请点击新增自定义按钮">
+        <vxe-table align="center" border :show-header="false"
+                   :data="customTableData.filter((o) => o.buttonLocation === 2)" empty-text="请点击新增自定义按钮">
           <vxe-column field="label" title="按钮名称"></vxe-column>
           <vxe-column field="type" title="按钮类型"></vxe-column>
           <vxe-column field="buttonStatus" title="按钮状态">
@@ -68,7 +77,9 @@
           </vxe-column>
           <vxe-column title="操作" align="left" width="250">
             <template #default="{ row }">
-              <el-button size="mini" type="success" v-if="row.execType === 2" plain @click="selectEvent(row)">{{ row.eventNum > 0 ? `(${row.eventNum})` : '' }}设置事件</el-button>
+              <el-button size="mini" type="success" v-if="row.execType === 2" plain @click="selectEvent(row)">
+                {{ row.eventNum > 0 ? `(${row.eventNum})` : "" }}设置事件
+              </el-button>
               <el-button size="mini" type="primary" plain @click="editEvent(row)">编辑</el-button>
               <el-button size="mini" type="danger" plain @click="removeEvent(row)">删除</el-button>
             </template>
@@ -94,7 +105,10 @@
           例句:SELECT id from {表名} where {约束条件} and id IN([ids])
         </el-form-item>
         <el-form-item label="按钮样式">
-          <div class="flex gap-10">颜色{{ showFrom.color }}<el-color-picker v-model="showFrom.buttonInfo.color" show-alpha :predefine="predefineColors"></el-color-picker></div>
+          <div class="flex gap-10">颜色{{ showFrom.color }}
+            <el-color-picker v-model="showFrom.buttonInfo.color" show-alpha
+                             :predefine="predefineColors"></el-color-picker>
+          </div>
         </el-form-item>
         <el-form-item label="触发事件">
           <el-radio-group v-model="showFrom.execType">
@@ -107,7 +121,8 @@
             <el-radio-group v-model="showFrom.isWindow">
               <el-radio :label="0" :value="0">
                 弹窗提示
-                <el-tooltip style="cursor: pointer" effect="dark" :content="'选择弹窗提示时,如未填写弹窗提示语则无法触发弹窗'" placement="top">
+                <el-tooltip style="cursor: pointer" effect="dark"
+                            :content="'选择弹窗提示时,如未填写弹窗提示语则无法触发弹窗'" placement="top">
                   <i class="el-icon-question" />
                 </el-tooltip>
               </el-radio>
@@ -119,22 +134,22 @@
           </el-form-item>
           <el-form-item label="弹窗字段" v-if="showFrom.isWindow === 1">
             <el-table :data="windowViewColumns.value" height="250">
-              <el-table-column label="字段" >
+              <el-table-column label="字段">
                 <template slot-scope="scope">
-                  <span>{{scope.row.label}}</span>
+                  <span>{{ scope.row.label }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="可见" >
+              <el-table-column label="可见">
                 <template slot-scope="scope">
                   <el-checkbox v-model="scope.row.isShow"></el-checkbox>
                 </template>
               </el-table-column>
-              <el-table-column label="读写" >
+              <el-table-column label="读写">
                 <template slot-scope="scope">
                   <el-checkbox v-model="scope.row.isChange"></el-checkbox>
                 </template>
               </el-table-column>
-              <el-table-column label="必填" >
+              <el-table-column label="必填">
                 <template slot-scope="scope">
                   <el-checkbox v-model="scope.row.isRequired"></el-checkbox>
                 </template>
@@ -144,12 +159,17 @@
         </template>
 
         <el-form-item label="选择事件" v-if="showFrom.execType === 2">
-          <custom-event ref="customevent" :is-compont="true" :dbSourceId="dataForm.dbSourceId" :model-id="columnData.modelId" :cube-id="dataForm.dbLinkId" :allTabelData="allTabelData" @select="selectEventList" />
+          <custom-event ref="customevent" :is-compont="true" :dbSourceId="dataForm.dbSourceId"
+                        :model-id="columnData.modelId" :cube-id="dataForm.dbLinkId" :allTabelData="allTabelData"
+                        @select="selectEventList" />
         </el-form-item>
         <el-form-item label="链接地址" v-if="showFrom.execType === 1">
           <el-input v-model="showFrom.redirectUrl" placeholder="请输入链接地址"></el-input>
-          可用变量<template v-for="item in cubeList">
-            {{ item.label }}:<el-button type="text">{{ item.value }} </el-button></template
+          可用变量
+          <template v-for="item in cubeList">
+            {{ item.label }}:
+            <el-button type="text">{{ item.value }}</el-button>
+          </template
           >
         </el-form-item>
       </el-form>
@@ -158,8 +178,34 @@
         <el-button type="primary" @click="saveEvent">保存</el-button>
       </template>
     </vxe-modal>
+    <vxe-modal v-model="showSystemEdit" title="编辑系统按钮" width="60%" height="500px" :position="{ top: 60 }"
+               show-footer>
+      <el-form label-width="120px" size="small">
+        <el-form-item label="按钮名称">
+          <el-input disabled v-model="showFrom.buttonName" placeholder="请输入按钮名称"></el-input>
+        </el-form-item>
+        <el-form-item label="展示位置">
+          <el-radio-group disabled v-model="showFrom.buttonLocation">
+            <el-radio :label="1" :value="1">表头位置</el-radio>
+            <el-radio :label="2" :value="2">行数据操作位置</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="展示条件">
+          <amis-sdk :amis-json="amisJson" v-model="showFrom.buttonCondition" />
+          <!--          <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="showFrom.buttonCondition"> </el-input>-->
+          注:条件sql返回列必须存在主键列,并且where条件必须有主键列约束<br />
+          例句:SELECT id from {表名} where {约束条件} and id IN([ids])
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <el-button @click="showSystemEdit = false">取消</el-button>
+        <el-button type="primary" @click="onSystemEditConfirm">保存</el-button>
+      </template>
+    </vxe-modal>
     <vxe-modal v-model="isEvent" title="选择事件" width="60%" :position="{ top: 60 }" show-footer>
-      <custom-event ref="customevent" :is-compont="true" :dbSourceId="dataForm.dbSourceId" :model-id="columnData.modelId" :cube-id="dataForm.dbLinkId" :allTabelData="allTabelData" @select="selectEventList" />
+      <custom-event ref="customevent" :is-compont="true" :dbSourceId="dataForm.dbSourceId"
+                    :model-id="columnData.modelId" :cube-id="dataForm.dbLinkId" :allTabelData="allTabelData"
+                    @select="selectEventList" />
       <template #footer>
         <el-button type="primary" @click="saveEvent">保存</el-button>
       </template>
@@ -167,14 +213,14 @@
   </div>
 </template>
 <script setup>
-import { onMounted, ref, watch, computed } from 'vue'
-import { addCustomButton, deleteCustomButton, getCustomButton } from '@/api/onlineDev/visualDev'
-import { Loading, Message } from 'element-ui'
-import { predefineColors } from '@/utils/useUtil'
-import CustomEvent from '@/views/form/webDesign/CustomEvent.vue'
-import AmisSdk from '@/components/AmisSdk.vue'
-import {getDrawingList} from "@/components/Generator/utils/db";
-import {loopRelationList} from "@/utils";
+import { computed, ref } from "vue";
+import { addCustomButton, deleteCustomButton, getCustomButton } from "@/api/onlineDev/visualDev";
+import { Loading, Message } from "element-ui";
+import { predefineColors } from "@/utils/useUtil";
+import CustomEvent from "@/views/form/webDesign/CustomEvent.vue";
+import AmisSdk from "@/components/AmisSdk.vue";
+import { getDrawingList } from "@/components/Generator/utils/db";
+import { loopRelationList } from "@/utils";
 
 const props = defineProps({
   columnData: Object,
@@ -183,17 +229,25 @@ const props = defineProps({
   actionBtn: [],
   allTabelData: [],
   activeName: String
-})
-const modelId = props?.columnData?.modelId || 0
+});
+const modelId = props?.columnData?.modelId || 0;
 
 const amisJson = ref({
-  type: 'editor',
-  language: 'sql'
-})
+  type: "editor",
+  language: "sql"
+});
 
-const customTableData = ref([])
+const customTableData = ref([]);
 
-const drawList = loopRelationList(getDrawingList()).map(i =>{ return {label:i.__config__.label,id:i.__vModel__,isShow:false,isChange:false,isRequired:i.__config__.required}})
+const drawList = loopRelationList(getDrawingList()).map(i => {
+  return {
+    label: i.__config__.label,
+    id: i.__vModel__,
+    isShow: false,
+    isChange: false,
+    isRequired: i.__config__.required
+  };
+});
 // watch([() => props.activeName], () => {
 //   init()
 // })
@@ -202,196 +256,217 @@ const cubeList = computed(() => {
   return props.columnData.cubeList.map((item) => {
     return {
       label: item.columnTitle,
-      value: '{{ ' + item.columnName + ' }}'
-    }
-  })
-})
+      value: "{{ " + item.columnName + " }}"
+    };
+  });
+});
 
-const systemBtn = ref([])
-const actionBtn = ref([])
+const systemBtn = ref([]);
+const actionBtn = ref([]);
 const init = async () => {
-  const loading = Loading.service({ text: '加载中' })
-  const { data } = await getCustomButton(modelId)
-  loading.close()
-  const { records } = data.data
+  const loading = Loading.service({ text: "加载中" });
+  const { data } = await getCustomButton(modelId);
+  loading.close();
+  const { records } = data.data;
   customTableData.value = records
     .filter((v) => v.buttonType === 1)
     .map((item) => {
-      item.buttonInfo = item.buttonInfo ? JSON.parse(item.buttonInfo || {}) : {}
-      item.label = item.buttonName
-      item.type = item.buttonType === 1 ? '自定义按钮' : '系统按钮'
-      return item
-    })
+      item.buttonInfo = item.buttonInfo ? JSON.parse(item.buttonInfo || {}) : {};
+      item.label = item.buttonName;
+      item.type = item.buttonType === 1 ? "自定义按钮" : "系统按钮";
+      return item;
+    });
 
-  const systemBtns = records.filter((v) => v.buttonType === 2)
+  const systemBtns = records.filter((v) => v.buttonType === 2);
   systemBtn.value = props.systemBtn.map((item) => {
-    const find = systemBtns.find((v) => v.buttonName === item.label)
-    item.buttonName = item.label
+    const find = systemBtns.find((v) => v.buttonName === item.label);
+    item.buttonName = item.label;
     item.buttonInfo = {
-      color: '#409EFF'
-    }
-    item.buttonLocation = 1
-    item.buttonType = 2
-    item.buttonStatus = 0
-    item.type = '系统按钮'
-    item.formId = modelId
-    item.eventList = find?.eventList || []
-    item.id = find ? find.id : 0
-    item.execType = 2
-    item.eventNum = find?.eventNum || 0
-    return item
-  })
+      color: "#409EFF"
+    };
+    item.buttonLocation = 1;
+    item.buttonType = 2;
+    item.buttonStatus = 0;
+    item.type = "系统按钮";
+    item.formId = modelId;
+    item.eventList = find?.eventList || [];
+    item.id = find ? find.id : 0;
+    item.execType = 2;
+    item.eventNum = find?.eventNum || 0;
+    return item;
+  });
   actionBtn.value = props.actionBtn.map((item) => {
-    const find = systemBtns.find((v) => v.buttonName === item.label)
-    item.buttonName = item.label
+    const find = systemBtns.find((v) => v.buttonName === item.label);
+    item.buttonName = item.label;
     item.buttonInfo = {
-      color: '#409EFF'
-    }
-    item.buttonLocation = 2
-    item.buttonType = 2
-    item.buttonStatus = 0
-    item.type = '系统按钮'
-    item.formId = modelId
-    item.eventList = find?.eventList || []
-    item.eventNum = find?.eventNum || 0
-    item.id = find ? find.id : 0
-    item.execType = 2
-    return item
-  })
-}
-init()
-const customevent = ref()
-const isShow = ref(false)
+      color: "#409EFF"
+    };
+    item.buttonLocation = 2;
+    item.buttonType = 2;
+    item.buttonStatus = 0;
+    item.type = "系统按钮";
+    item.formId = modelId;
+    item.eventList = find?.eventList || [];
+    item.eventNum = find?.eventNum || 0;
+    item.id = find ? find.id : 0;
+    item.execType = 2;
+    item.buttonCondition = find?.buttonCondition || null;
+    return item;
+  });
+};
+init();
+const customevent = ref();
+const isShow = ref(false);
 
 const defaultForm = {
-  buttonCondition: '',
+  buttonCondition: "",
   buttonLocation: 2,
   buttonInfo: {
     // 事件类型 1-按钮 2-链接
     buttonType: 1,
     // 颜色
-    color: '#409EFF'
+    color: "#409EFF"
   },
-  buttonName: '',
+  buttonName: "",
   execType: 2,
   isWindow: 0,
-  windowTips: '',
+  windowTips: "",
   buttonStatus: 0,
   buttonType: 1,
   eventList: [],
   formId: modelId,
   id: 0,
-  redirectUrl: 'http://'
-}
-const windowViewColumns = drawList || []
-const showFrom = ref({ ...defaultForm })
+  redirectUrl: "http://"
+};
+const windowViewColumns = drawList || [];
+const showFrom = ref({ ...defaultForm });
 
 // 新增按钮
 const addEvent = () => {
-  showFrom.value = { ...defaultForm }
-  isShow.value = true
-  windowViewColumns.value = drawList || []
-}
+  showFrom.value = { ...defaultForm };
+  isShow.value = true;
+  windowViewColumns.value = drawList || [];
+};
 
 const editEvent = (row) => {
-  showFrom.value = row
-  isShow.value = true
-  windowViewColumns.value = row.windowViewColumns
+  showFrom.value = row;
+  isShow.value = true;
+  windowViewColumns.value = row.windowViewColumns;
   const list = row.eventList.map((item) => {
-    const data = {
+    return {
       id: item.eventId
-    }
-    return data
-  })
+    };
+  });
   setTimeout(() => {
-    customevent.value.multipass(list)
-  }, 100)
+    customevent.value.multipass(list);
+  }, 100);
   if (showFrom.value.isWindow === 1 && !windowViewColumns.value) {
-    windowViewColumns.value = drawList || []
-  }else {
-   if (row.windowViewColumns){
-     try {
-       windowViewColumns.value = JSON.parse(row.windowViewColumns)
-     }catch (e) {
-       windowViewColumns.value = row.windowViewColumns
-     }
-   }
+    windowViewColumns.value = drawList || [];
+  } else {
+    if (row.windowViewColumns) {
+      try {
+        windowViewColumns.value = JSON.parse(row.windowViewColumns);
+      } catch (e) {
+        windowViewColumns.value = row.windowViewColumns;
+      }
+    }
   }
-}
+};
 
 // 保存按钮
 const saveEvent = () => {
   if (!showFrom.value.buttonName) {
-    Message.error('请输入按钮名称')
-    return
+    Message.error("请输入按钮名称");
+    return;
   }
   if (showFrom.value.execType === 2 && showFrom.value.buttonType === 1 && !showFrom.value.eventList.length) {
-    Message.error('请选择事件')
-    return
+    Message.error("请选择事件");
+    return;
   }
-  if (showFrom.value.execType === 1 && showFrom.value.redirectUrl === 'http://') {
-    Message.error('请输入链接地址')
-    return
+  if (showFrom.value.execType === 1 && showFrom.value.redirectUrl === "http://") {
+    Message.error("请输入链接地址");
+    return;
   }
-  showFrom.value.buttonInfo = JSON.stringify(showFrom.value.buttonInfo)
+  showFrom.value.buttonInfo = JSON.stringify(showFrom.value.buttonInfo);
   try {
-    showFrom.value.windowViewColumns = JSON.stringify(windowViewColumns.value)
-  }catch (e) {}
+    showFrom.value.windowViewColumns = JSON.stringify(windowViewColumns.value);
+  } catch (e) {
+  }
   addCustomButton(modelId, showFrom.value).then((res) => {
     if (res.data.code === 200) {
-      Message.success('操作成功')
-      isShow.value = false
-      isEvent.value = false
-      init()
+      Message.success("操作成功");
+      isShow.value = false;
+      isEvent.value = false;
+      init();
     } else {
-      Message.error('新增失败' + res.data.msg)
+      Message.error("新增失败" + res.data.msg);
     }
-  })
-}
+  });
+};
 
 const removeEvent = (row) => {
-  customTableData.value = customTableData.value.filter((item) => item !== row)
+  customTableData.value = customTableData.value.filter((item) => item !== row);
   deleteCustomButton(modelId, row.id).then((res) => {
     if (res.data.code === 200) {
-      Message.success('删除成功')
+      Message.success("删除成功");
     }
-  })
-}
+  });
+};
 
 // 禁用按钮
 const disableEvent = (row) => {
-  row.buttonInfo = JSON.stringify(row.buttonInfo)
+  row.buttonInfo = JSON.stringify(row.buttonInfo);
   addCustomButton(modelId, row).then((res) => {
     if (res.data.code === 200) {
-      Message.success('操作成功')
+      Message.success("操作成功");
     }
-  })
-}
+  });
+};
 
-const isEvent = ref(false)
+const isEvent = ref(false);
 const selectEvent = (row) => {
-  showFrom.value = row
-  isEvent.value = true
+  showFrom.value = row;
+  isEvent.value = true;
   const list = row.eventList.map((item) => {
-    const data = {
+    return {
       id: item.eventId
-    }
-    return data
-  })
+    };
+  });
   setTimeout(() => {
-    customevent.value.multipass(list)
-  }, 100)
-}
+    customevent.value.multipass(list);
+  }, 100);
+};
 const selectEventModel = (row) => {
-  isEvent.value = true
-}
+  isEvent.value = true;
+};
 const selectEventList = (row) => {
   showFrom.value.eventList = row.map((item, index) => {
     return {
       eventId: item.id,
       eventSort: index
+    };
+  });
+};
+
+// 系统按钮添加显示条件
+const showSystemEdit = ref(false);
+const onSystemEdit = (row) => {
+  logjson(row);
+  showFrom.value = row;
+  showSystemEdit.value = true;
+};
+const onSystemEditConfirm = () => {
+  showFrom.value.buttonInfo = JSON.stringify(showFrom.value.buttonInfo);
+  addCustomButton(modelId, showFrom.value).then((res) => {
+    if (res.data.code === 200) {
+      Message.success("操作成功");
+      showSystemEdit.value = false;
+      init();
+    } else {
+      Message.error("新增失败" + res.data.msg);
     }
-  })
-}
+  });
+};
+
 </script>
 <style scoped lang="scss"></style>