瀏覽代碼

fix: 增加事件查看

liuc 3 月之前
父節點
當前提交
ec04e24475

+ 24 - 1
src/api/flow/settingApi.js

@@ -64,8 +64,18 @@ const settingApi = {
     getPrint: '/setting/engine/getPrint',
     updatePrint: '/setting/engine/updatePrint',
     getQueryServiceRelated: '/setting/engine/getQueryServiceRelated',
+    getScriptByFlowCode: '/setting/engine/getScriptByFlowCode'
 
 }
+
+export function getScriptByFlowCode(searchInfo) {
+    return request({
+        url: settingApi.getScriptByFlowCode,
+        method: 'get',
+        params: searchInfo,
+    });
+}
+
 export function getQueryServiceRelated(searchInfo) {
     return request({
         url: settingApi.getQueryServiceRelated,
@@ -73,6 +83,7 @@ export function getQueryServiceRelated(searchInfo) {
         params: searchInfo,
     });
 }
+
 export function getPrint(searchInfo) {
     return request({
         url: settingApi.getPrint,
@@ -80,6 +91,7 @@ export function getPrint(searchInfo) {
         params: searchInfo,
     });
 }
+
 export function updatePrint(data) {
     return request({
         url: settingApi.updatePrint,
@@ -87,6 +99,7 @@ export function updatePrint(data) {
         data
     })
 }
+
 export function getTaskCategory(searchInfo) {
     return request({
         url: settingApi.getTaskCategory,
@@ -94,6 +107,7 @@ export function getTaskCategory(searchInfo) {
         params: searchInfo,
     });
 }
+
 export function flowUpgradeVersion(searchInfo) {
     return request({
         url: settingApi.flowUpgradeVersion,
@@ -101,6 +115,7 @@ export function flowUpgradeVersion(searchInfo) {
         params: searchInfo,
     });
 }
+
 // 按部门分组人员树
 export function userSelectTree(deptId, expandLevel, dicStoredFlag) {
     if (deptId == null || deptId === '') {
@@ -133,6 +148,7 @@ export function searchDeptUserList(searchInfo) {
         params: searchInfo,
     });
 }
+
 export function deleteCommonComment(data) {
     return request({
         url: settingApi.deleteCommonComment,
@@ -140,6 +156,7 @@ export function deleteCommonComment(data) {
         data
     })
 }
+
 export function insertCommonComment(data) {
     return request({
         url: settingApi.insertCommonComment,
@@ -147,6 +164,7 @@ export function insertCommonComment(data) {
         data
     })
 }
+
 export function getCommonComment() {
     return request({
         url: settingApi.getCommonComment,
@@ -155,7 +173,6 @@ export function getCommonComment() {
 }
 
 
-
 export function retrieveFlow(parameter) {
     return request({
         url: settingApi.retrieveFlow,
@@ -163,6 +180,7 @@ export function retrieveFlow(parameter) {
         params: parameter
     })
 }
+
 export function getTaskAgent(parameter) {
     return request({
         url: settingApi.getTaskAgent,
@@ -178,6 +196,7 @@ export function insertTaskAgent(data) {
         data
     })
 }
+
 export function delTaskAgent(data) {
     return request({
         url: settingApi.delTaskAgent,
@@ -185,6 +204,7 @@ export function delTaskAgent(data) {
         data
     })
 }
+
 export function getFlowException(parameter) {
     return request({
         url: settingApi.getFlowException,
@@ -346,6 +366,7 @@ export function getQueryData(parameter) {
         params: parameter
     })
 }
+
 export function getQueryMainSingleForMapping(parameter) {
     return request({
         url: settingApi.getQueryMainSingleForMapping,
@@ -353,6 +374,7 @@ export function getQueryMainSingleForMapping(parameter) {
         params: parameter
     })
 }
+
 export function getQueryPopupData(parameter) {
     return request({
         url: settingApi.getQueryPopupData,
@@ -376,6 +398,7 @@ export function getQueryMainList(parameter) {
         params: parameter
     })
 }
+
 export function getQueryMainListForMapping(parameter) {
     return request({
         url: settingApi.getQueryMainListForMapping,

+ 2 - 1
src/views/flow/stFormDesign/packages/PopUpQuery/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <a-form-item :class="{ 'red-label': record?.options?.requiredFirst ||record?.rules?.find(f=>f.required)}"
+    <a-form-item  :class="{ 'red-label': record?.options?.requiredFirst ||record?.rules?.find(f=>f.required)}"
                  :label-col="
         formConfig.layout === 'horizontal'
           ? formConfig.labelLayout === 'flex'
@@ -31,6 +31,7 @@
         </a-tooltip>
       </template>
       <a-input-search
+          v-show="!record.options||!record.options.hidden||record.options.hidden == false"
           enter-button="选择"
           @search="onSearch"
           :options="options"

+ 6 - 1
src/views/flow/stFormDesign/packages/StFormDesign/module/formComponentPanel.vue

@@ -80,7 +80,9 @@ import layoutItem from './layoutItem.vue';
 import _ from 'lodash';
 import {v1 as uuidv1} from 'uuid';
 import {basicsList} from '../config/formItemsConfig';
-// import 'codemirror/mode/javascript/javascript';
+import {getScriptByFlowCode} from '/@/api/flow/settingApi.js'
+import {useFlowStore} from '/@/store/modules/flow';
+
 export default defineComponent({
   name: 'KCenter',
   data() {
@@ -535,6 +537,9 @@ export default defineComponent({
     // 添加监听取消右键菜单
     document.addEventListener('click', this.handleRemoveRightMenu, true);
     document.addEventListener('contextmenu', this.handleRemoveRightMenu, true);
+    getScriptByFlowCode({flowCode: useFlowStore()['StFlowModal'].flowCode}).then((res) => {
+      sessionStorage.setItem('_scriptKeys_', JSON.stringify(res.data))
+    })
   },
   destroyed() {
     // 移除监听

+ 41 - 33
src/views/flow/stFormDesign/packages/StFormDesign/module/formItemProperties.vue

@@ -80,9 +80,9 @@
               placeholder='最大高度'
           />
         </a-form-item>
-<!--        <a-form-item v-if="typeof options.width !== 'undefined'&&!isInBatchTable" label='宽度'>-->
-<!--          <a-input placeholder='请输入' v-model:value='options.width'/>-->
-<!--        </a-form-item>-->
+        <!--        <a-form-item v-if="typeof options.width !== 'undefined'&&!isInBatchTable" label='宽度'>-->
+        <!--          <a-input placeholder='请输入' v-model:value='options.width'/>-->
+        <!--        </a-form-item>-->
         <a-form-item v-if="isInBatchTable&&selectItem.type != 'text'">
           <template #label>
             <span style="display: inline-flex; align-items: center;">
@@ -357,8 +357,8 @@
               <a-tooltip placement="topLeft">
                 <template #title>
                   <div>自定义组件示例:</div>
-                  <div >&lt;div id=&quot;custom_0&quot;&gt;&lt;/div&gt;</div>
-                  <div >共有:custom_0到custom_9</div>
+                  <div>&lt;div id=&quot;custom_0&quot;&gt;&lt;/div&gt;</div>
+                  <div>共有:custom_0到custom_9</div>
                 </template>
                 <QuestionCircleOutlined style="margin-right: 4px;"/>
               </a-tooltip>
@@ -511,32 +511,32 @@
               placeholder='严格JSON格式'
           ></a-textarea>
         </a-form-item>
-<!--        &lt;!&ndash; 文字对齐方式 &ndash;&gt;-->
-<!--        <a-form-item v-if="selectItem.type === 'text'" label='文字对齐方式'>-->
-<!--          <a-radio-group buttonStyle='solid' v-model:value='options.textAlign'>-->
-<!--            <a-radio-button value='left'>左</a-radio-button>-->
-<!--            <a-radio-button value='center'>居中</a-radio-button>-->
-<!--            <a-radio-button value='right'>右</a-radio-button>-->
-<!--          </a-radio-group>-->
-<!--        </a-form-item>-->
-<!--        &lt;!&ndash; 文字字体 &ndash;&gt;-->
-<!--        <a-form-item v-if="selectItem.type === 'text'" label='字体属性设置'>-->
-<!--          &lt;!&ndash; <colorPicker v-model:value='options.color' /> &ndash;&gt;-->
-<!--          <a-select-->
-<!--              :options='familyOptions'-->
-<!--              v-model:value='options.fontFamily'-->
-<!--              style='width:36%;margin-left:2%;vertical-align:bottom;'-->
-<!--          />-->
-<!--          <a-select-->
-<!--              :options='sizeOptions'-->
-<!--              v-model:value='options.fontSize'-->
-<!--              style='width:35%;margin-left:2%;vertical-align:bottom;'-->
-<!--          />-->
-<!--          <a-checkbox v-model:checked="options.fontBold">加粗</a-checkbox>-->
-<!--        </a-form-item>-->
-<!--        <a-form-item v-if="selectItem.type === 'text'" label='操作属性'>-->
-<!--          <stCheckbox v-model:value='options.showRequiredMark' label='显示必选标记'/>-->
-<!--        </a-form-item>-->
+        <!--        &lt;!&ndash; 文字对齐方式 &ndash;&gt;-->
+        <!--        <a-form-item v-if="selectItem.type === 'text'" label='文字对齐方式'>-->
+        <!--          <a-radio-group buttonStyle='solid' v-model:value='options.textAlign'>-->
+        <!--            <a-radio-button value='left'>左</a-radio-button>-->
+        <!--            <a-radio-button value='center'>居中</a-radio-button>-->
+        <!--            <a-radio-button value='right'>右</a-radio-button>-->
+        <!--          </a-radio-group>-->
+        <!--        </a-form-item>-->
+        <!--        &lt;!&ndash; 文字字体 &ndash;&gt;-->
+        <!--        <a-form-item v-if="selectItem.type === 'text'" label='字体属性设置'>-->
+        <!--          &lt;!&ndash; <colorPicker v-model:value='options.color' /> &ndash;&gt;-->
+        <!--          <a-select-->
+        <!--              :options='familyOptions'-->
+        <!--              v-model:value='options.fontFamily'-->
+        <!--              style='width:36%;margin-left:2%;vertical-align:bottom;'-->
+        <!--          />-->
+        <!--          <a-select-->
+        <!--              :options='sizeOptions'-->
+        <!--              v-model:value='options.fontSize'-->
+        <!--              style='width:35%;margin-left:2%;vertical-align:bottom;'-->
+        <!--          />-->
+        <!--          <a-checkbox v-model:checked="options.fontBold">加粗</a-checkbox>-->
+        <!--        </a-form-item>-->
+        <!--        <a-form-item v-if="selectItem.type === 'text'" label='操作属性'>-->
+        <!--          <stCheckbox v-model:value='options.showRequiredMark' label='显示必选标记'/>-->
+        <!--        </a-form-item>-->
 
         <a-form-item
             v-if="  selectItem.type!='text'&&
@@ -586,6 +586,7 @@
           <stCheckbox
               v-if="typeof options.showTime !== 'undefined'"
               v-model:value='options.showTime'
+              @change="timeTypeChange"
               label='时间选择器'
           />
           <stCheckbox
@@ -599,7 +600,7 @@
               label='显示输入框'
           />
           <stCheckbox
-              v-if="typeof options.showLabel !== 'undefined'"
+              v-if="selectItem.type=='batch'&&typeof options.showLabel !== 'undefined'"
               v-model:value='options.showLabel'
               label='显示Label'
           />
@@ -713,7 +714,7 @@ import JsModal from './jsModal.vue'
 import cloneDeep from 'lodash.clonedeep';
 
 function hasBatchParent(code, jsonData) {
-  if (code&&code.indexOf('html_')>=0){
+  if (code && code.indexOf('html_') >= 0) {
     return false
   }
   // 遍历jsonData中的每个元素
@@ -843,6 +844,13 @@ export default {
     }
   },
   methods: {
+    timeTypeChange(value) {
+      if (this.selectItem.options && value.target.checked == true) {
+        this.selectItem.options.format = 'YYYY-MM-DD HH:mm:ss'
+      } else {
+        this.selectItem.options.format = 'YYYY-MM-DD'
+      }
+    },
     customRuleHandle(obj) {
       this.$refs.jsModal.title = `【${this.selectItem.label}】自定义校验代码`
       this.$refs.jsModal.show(obj.eventKey, obj, '2')

+ 43 - 5
src/views/flow/stFormDesign/packages/StFormDesign/module/formNode.vue

@@ -7,9 +7,26 @@
       @click.stop="$emit('handleSelectItem', record)"
       :class="{ active: record.key === selectItem.key }"
   >
-    <div class="form-item-box">
+    <div class="form-item-box"
+    >
       <StFormItem :formConfig="config" :formData='{}' :record="record" :childTableFieldRecord='childTableFieldRecord'
                   :isDesign="true"/>
+      <div class="cover"
+           v-show="!( !record.options||!record.options.hidden||record.options.hidden == false )">
+        <StFormItem :formConfig="config" :formData='{}' :record="record" :childTableFieldRecord='childTableFieldRecord'
+                    :isDesign="true"/>
+      </div>
+    </div>
+
+    <div
+        v-show="getEvent()"
+        class="show-key-event"
+    >
+      <a-tooltip>
+        <template #title>存在Change事件</template>
+        <CopyrightCircleOutlined/>
+
+      </a-tooltip>
     </div>
     <div
         v-if="!hideModel"
@@ -92,18 +109,16 @@ export default {
     hideModel: {
       type: Boolean,
       default: false
-    }
+    },
   },
   components: {
     StFormItem,
     DeleteOutlined,
     CopyOutlined
-  },
-  mounted() {
-
   },
   data() {
     return {
+      scriptKeys: [],
       selectItemValue: '',
       formNodeSelectItems: [],
       validType: [
@@ -130,6 +145,9 @@ export default {
     }
   },
   methods: {
+    getEvent() {
+      return JSON.parse(sessionStorage.getItem('_scriptKeys_')).includes(this.record.key)
+    },
     handleChange(value) {
       sessionStorage.setItem('formNodeSelectType', value)
     },
@@ -224,3 +242,23 @@ export default {
   }
 };
 </script>
+<style lang="less" scoped>
+.show-key-event {
+  position: absolute;
+  bottom: -1px;
+  left: 15px;
+  font-size: 14px;
+  z-index: 999;
+  color: #2f54eb;
+}
+
+.cover {
+  position: absolute;
+  z-index: 3;
+  height: 100%;
+  width: 100%;
+  left: 0;
+  top: 0;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAJ0lEQVQoU2P8////JgYkcPPmTWQuAyMdFNy4cQPFDerq6qhuoL0CAIqmJ62d695IAAAAAElFTkSuQmCC);
+}
+</style>

+ 68 - 35
src/views/flow/stFormDesign/packages/StFormDesign/module/formProperties.vue

@@ -16,43 +16,43 @@
           </a-radio-group>
         </a-form-item>
         <a-form-item
-          v-show="config.labelLayout === 'flex'"
-          label="标签宽度(px)"
+            v-show="config.labelLayout === 'flex'"
+            label="标签宽度(px)"
         >
-          <a-input-number v-model:value="config.labelWidth" />
+          <a-input-number v-model:value="config.labelWidth"/>
         </a-form-item>
         <a-form-item label="labelCol" v-show="config.labelLayout !== 'flex'">
           <div class="change-col-box">
             <a-slider
-              id="test"
-              :max="24"
-              :min="0"
-              v-model:value="config.labelCol.xs"
-              @change="handleChangeCol"
+                id="test"
+                :max="24"
+                :min="0"
+                v-model:value="config.labelCol.xs"
+                @change="handleChangeCol"
             />
             <div>
               <label>xs:</label>
-              <a-input-number v-model:value="config.labelCol.xs" />
+              <a-input-number v-model:value="config.labelCol.xs"/>
             </div>
             <div>
               <label>sm:</label>
-              <a-input-number v-model:value="config.labelCol.sm" />
+              <a-input-number v-model:value="config.labelCol.sm"/>
             </div>
             <div>
               <label>md:</label>
-              <a-input-number v-model:value="config.labelCol.md" />
+              <a-input-number v-model:value="config.labelCol.md"/>
             </div>
             <div>
               <label>lg:</label>
-              <a-input-number v-model:value="config.labelCol.lg" />
+              <a-input-number v-model:value="config.labelCol.lg"/>
             </div>
             <div>
               <label>xl:</label>
-              <a-input-number v-model:value="config.labelCol.xl" />
+              <a-input-number v-model:value="config.labelCol.xl"/>
             </div>
             <div>
               <label>xxl:</label>
-              <a-input-number v-model:value="config.labelCol.xxl" />
+              <a-input-number v-model:value="config.labelCol.xxl"/>
             </div>
           </div>
         </a-form-item>
@@ -60,47 +60,60 @@
           <div class="change-col-box">
             <div>
               <label>xs:</label>
-              <a-input-number v-model:value="config.wrapperCol.xs" />
+              <a-input-number v-model:value="config.wrapperCol.xs"/>
             </div>
             <div>
               <label>sm:</label>
-              <a-input-number v-model:value="config.wrapperCol.sm" />
+              <a-input-number v-model:value="config.wrapperCol.sm"/>
             </div>
             <div>
               <label>md:</label>
-              <a-input-number v-model:value="config.wrapperCol.md" />
+              <a-input-number v-model:value="config.wrapperCol.md"/>
             </div>
             <div>
               <label>lg:</label>
-              <a-input-number v-model:value="config.wrapperCol.lg" />
+              <a-input-number v-model:value="config.wrapperCol.lg"/>
             </div>
             <div>
               <label>xl:</label>
-              <a-input-number v-model:value="config.wrapperCol.xl" />
+              <a-input-number v-model:value="config.wrapperCol.xl"/>
             </div>
             <div>
               <label>xxl:</label>
-              <a-input-number v-model:value="config.wrapperCol.xxl" />
+              <a-input-number v-model:value="config.wrapperCol.xxl"/>
             </div>
           </div>
         </a-form-item>
-<!--        <a-form-item label="预览模态框宽度">-->
-<!--          <a-input-number style="width:100%;" v-model:value="previewOptions.width" />-->
-<!--        </a-form-item>-->
+        <!--        <a-form-item label="预览模态框宽度">-->
+        <!--          <a-input-number style="width:100%;" v-model:value="previewOptions.width" />-->
+        <!--        </a-form-item>-->
         <a-form-item label="表单CSS">
-          <a-textarea v-model:value="config.customStyle" />
+          <a-textarea v-model:value="config.customStyle"/>
         </a-form-item>
         <a-form-item label="表单属性">
-          <stCheckbox v-model:value="config.hideRequiredMark" label="隐藏必选标记" />
+          <stCheckbox v-model:value="config.hideRequiredMark" label="隐藏必选标记"/>
         </a-form-item>
-<!--        <a-form-item label="自定义表单组件路径">-->
-<!--          <a-input v-model:value="config.componentPath" />-->
-<!--        </a-form-item>-->
+        <!--        <a-form-item label="自定义表单组件路径">-->
+        <!--          <a-input v-model:value="config.componentPath" />-->
+        <!--        </a-form-item>-->
 
         <a-form-item label="事件">
           <a-row :gutter="20">
-            <a-col :span="24"><a-button style="width: 100%" type="primary" @click="preViewCodeHandler">设置代码块</a-button></a-col>
+            <a-col :span="24">
+              <a-button style="width: 100%" type="primary" @click="preViewCodeHandler">设置代码块</a-button>
+            </a-col>
           </a-row>
+          <a-row :gutter="20">
+            <a-col :span="24">
+              <template v-for="(n,i) in customEvents">
+                <a-tag
+                    v-show="n.color&&scriptKeys.includes(n.key)"
+                    :color="n.color">{{ n.name }}
+                </a-tag>
+              </template>
+            </a-col>
+          </a-row>
+
         </a-form-item>
       </a-form>
 
@@ -137,52 +150,71 @@ export default {
         key: "initVar",
         name: "初始化变量",
         isShow: true,
-      },{
+        color: 'processing'
+      }, {
         key: "customFunc",
         name: "自定义函数",
         isShow: false,
-      },{
+      }, {
         key: "loadBefore",
         name: "表单加载前",
         isShow: true,
+        color: 'success'
+
       }, {
         key: "loadAfter",
         name: "表单加载后",
         isShow: true,
+        color: 'pink'
       }, {
         key: "submitBefore",
         name: "表单提交前",
         isShow: true,
+        color: 'red'
       }, {
         key: "submitAfter",
         name: "表单提交后",
         isShow: true,
+        color: 'orange'
       }, {
         key: "rejectBefore",
         name: "表单驳回前",
         isShow: true,
+        color: 'green'
       }, {
         key: "rejectAfter",
         name: "表单驳回后",
         isShow: true,
+        color: 'cyan'
       }, {
         key: "saveBefore",
         name: "表单保存前",
         isShow: true,
+        color: 'blue'
       }, {
         key: "saveAfter",
         name: "表单保存后",
         isShow: true,
+        color: 'purple'
       }],
-      objectId: undefined
+      objectId: undefined,
+      scriptKeys: [],
+      intervalId: null,
     }
   },
-  created() {
+
+  mounted() {
+    this.intervalId = setInterval(() => {
+      this.scriptKeys = JSON.parse(sessionStorage.getItem('_scriptKeys_'))
+    }, 1000)
+  },
+  beforeUnmount() {
+    clearInterval(this.intervalId);
   },
   methods: {
     eventClk(item, uuid) {
       this.$refs.jsModal.title = item.name;
-      this.$refs.jsModal.show(uuid,item);
+      this.$refs.jsModal.show(uuid, item);
     },
 
     preViewCodeHandler() {
@@ -196,7 +228,7 @@ export default {
       this.config.labelCol.xs = this.config.labelCol.sm = this.config.labelCol.md = this.config.labelCol.lg = this.config.labelCol.xl = this.config.labelCol.xxl = e;
 
       this.config.wrapperCol.xs = this.config.wrapperCol.sm = this.config.wrapperCol.md = this.config.wrapperCol.lg = this.config.wrapperCol.xl = this.config.wrapperCol.xxl =
-        24 - e;
+          24 - e;
     }
   }
 };
@@ -206,6 +238,7 @@ export default {
   > div {
     padding: 5px;
     display: flex;
+
     > label {
       text-align: right;
       padding-right: 8px;

+ 0 - 1
src/views/flow/stFormDesign/packages/StFormDesign/module/jsModal.vue

@@ -222,7 +222,6 @@ export default {
     },
 
     onFSelect(value) {
-      console.log(this.treeClickCount, ' this.treeClickCount');
       //记录点击次数
       this.treeClickCount++;
       //单次点击次数超过2次不作处理,直接返回,也可以拓展成多击事件

+ 2 - 3
src/views/flow/stFormDesign/packages/StFormDesign/module/layoutItem.vue

@@ -149,7 +149,7 @@
 
         <div class="delete" :class="record.key === selectItem.key ? 'active' : 'unactivated'"
              @click.stop="$emit('handleDelete')">
-         删除
+          删除
         </div>
       </div>
     </template>
@@ -463,9 +463,8 @@ export default {
     isDraggable: {
       type: Boolean,
       default: true,
-    }
+    },
   },
-
   computed: {
     insertAllowed() {
       return this.insertAllowedType.includes(this.startType);

+ 1 - 0
src/views/flow/stFormDesign/packages/StFormItem/customComponent.vue

@@ -45,6 +45,7 @@ export default {
     customComponent() {
       // 计算需要显示的组件
       const customComponentList = {};
+
       if (window.$customComponentList) {
         // 将数组映射成json
         window.$customComponentList.forEach(item => {

+ 11 - 4
src/views/flow/stFormDesign/packages/StFormItem/index.vue

@@ -56,7 +56,9 @@
       <a-textarea :style="`width:${record.options.width}`" v-if="record.type === 'textarea'" :autoSize="{
         minRows: record.options.minRows,
         maxRows: record.options.maxRows,
-      }" :disabled="disabled || record.options.disabled"
+      }"
+                  v-show="!record.options||!record.options.hidden||record.options.hidden == false"
+                  :disabled="disabled || record.options.disabled"
                   :placeholder="(disabled || record.options.disabled) ? '' : record.options.placeholder"
                   :allowClear="record.options.clearable" :maxLength="record.options.maxLength" :rows="4"
                   @change="handleChange($event.target.value, record.model, record)"
@@ -64,18 +66,22 @@
 
       <!-- 单选框 -->
       <a-radio-group v-else-if="record.type === 'radio'" :options="computedOptions"
+                     v-show="!record.options||!record.options.hidden||record.options.hidden == false"
                      :disabled="disabled || record.options.disabled"
                      :placeholder="(disabled || record.options.disabled) ? '' : record.options.placeholder"
                      @change="handleChange($event.target.value, record.model, record)"
                      v-model:value="formData[record.model]"/>
       <!-- 多选框 -->
       <a-checkbox-group v-else-if="record.type === 'checkbox'" :options="computedOptions"
+                        v-show="!record.options||!record.options.hidden||record.options.hidden == false"
                         :disabled="disabled || record.options.disabled"
                         :placeholder="(disabled || record.options.disabled) ? '' : record.options.placeholder"
                         @change="handleChange($event, record.model, record)" v-model:value="formData[record.model]"/>
 
       <!-- 滑块 -->
-      <div v-else-if="record.type === 'slider'" :style="`width:${record.options.width}`" class="slider-box">
+      <div v-else-if="record.type === 'slider'"
+           v-show="!record.options||!record.options.hidden||record.options.hidden == false"
+           :style="`width:${record.options.width}`" class="slider-box">
         <div class="slider">
           <a-slider v-model:value="formData[record.model]" :disabled="disabled || record.options.disabled"
                     :min="record.options.min" :max="record.options.max" :step="record.options.step"
@@ -137,7 +143,8 @@
     </a-form-item>
     <!-- button按钮 -->
     <a-form-item v-else-if="record.type === 'button'">
-      <a-button :disabled="disabled || record.options.disabled" @click="buttonClick(record)" :type="record.options.type"
+      <a-button :disabled="disabled || record.options.disabled"
+                @click="buttonClick(record)" :type="record.options.type"
                 html-type="button" v-text="record.label"></a-button>
     </a-form-item>
     <!-- alert提示 -->
@@ -248,7 +255,7 @@ export default {
   },
   mounted() {
     this.handlerRules();
-    if (this.record.options != undefined && this.record.options.hidden != undefined) {
+    if (this.isDesign == false && this.record.options != undefined && this.record.options.hidden != undefined) {
       this.labelVisible = !this.record.options.hidden;
     } else {
       this.labelVisible = true;

+ 5 - 3
src/views/flow/stFormDesign/packages/UploadFile/uploadFile.vue

@@ -44,13 +44,14 @@
         :w="width"
         :h="height"
         class="popup-resize"
-        :resizable="true"
+        :resizable="resizable"
         :draggable="draggableResize"
         @resizing="handleResizing"
         @dragging="onDragging"
         :active="previewActive"
         :min-width="300"
         :min-height="100"
+
     >
       <div class="draggable-title">
         <span class="preview-left">附件预览</span>
@@ -136,6 +137,7 @@ export default {
       previewActive: false,
       fileName: '',
       draggableResize: true,
+      resizable:true,
     };
   },
   mounted() {
@@ -325,7 +327,7 @@ export default {
 }
 
 .control-buttons {
-  background-color: #ffffff;
+  background-color: #f8f8f8;
   display: flex;
   align-items: center;
   justify-content: flex-end;
@@ -349,7 +351,7 @@ export default {
   align-items: center; /* 垂直居中 */
   padding: 8px;
   cursor: move;
-  background-color: #ffffff;
+  background-color: #f8f8f8;
   position: absolute;
   top: 0;
   left: 0;

+ 78 - 70
src/views/flow/stFormSetting/index.vue

@@ -1,61 +1,64 @@
 <template>
   <div class="wrap">
-    <st-form-design title="PC表单设计器" ref="formDesign" :dict-data="dictData" :field-data="fieldData" @save="save" @saveJsCode="saveJsCode"></st-form-design>
+    <st-form-design title="PC表单设计器" ref="formDesign" :dict-data="dictData" :field-data="fieldData" @save="save"
+                    @saveJsCode="saveJsCode"></st-form-design>
   </div>
 </template>
 <script>
-  import { getFormTemplate, istFormTemplate, getAllDict, updateJsStr } from '/@/api/flow/formApi';
-  import { getDataTemplate, istDataTemplate } from '/@/api/flow/dataApi';
-  import { initJsonContent } from './initContent';
-  import { v1 as uuidv1 } from 'uuid';
-  import { useFlowStore } from '/@/store/modules/flow';
-  import { message } from 'ant-design-vue';
+import {getFormTemplate, istFormTemplate, getAllDict, updateJsStr} from '/@/api/flow/formApi';
+import {getDataTemplate, istDataTemplate} from '/@/api/flow/dataApi';
+import {initJsonContent} from './initContent';
+import {v1 as uuidv1} from 'uuid';
+import {useFlowStore} from '/@/store/modules/flow';
+import {message} from 'ant-design-vue';
 
-  export default {
-    name: 'Index',
-    data() {
-      return {
-        fieldData: [],
-        dictData: [],
-        visible: false,
-        data: [],
-        loading: false,
-      };
+export default {
+  name: 'Index',
+  data() {
+    return {
+      fieldData: [],
+      dictData: [],
+      visible: false,
+      data: [],
+      loading: false,
+    };
+  },
+  computed: {
+    currentFlowModal() {
+      return useFlowStore().StFlowModal;
     },
-    computed: {
-      currentFlowModal() {
-        return useFlowStore().StFlowModal;
-      },
-    },
-    mounted() {
-      this.initForm();
-    },
-    methods: {
-      initForm() {
-        const self = this;
-        getAllDict().then(
+  },
+  mounted() {
+    this.initForm();
+  },
+  methods: {
+    initForm() {
+      const self = this;
+      getAllDict().then(
           (res) => {
             if (res.data !== null) {
               self.dictData = res.data;
             }
           },
-          (err) => {}
-        );
-        getDataTemplate({ flowCode: this.currentFlowModal.flowCode }).then(
+          (err) => {
+          }
+      );
+      getDataTemplate({flowCode: this.currentFlowModal.flowCode}).then(
           (res) => {
             if (res.data !== null) {
               self.fieldData = JSON.parse(res.data.content, 'self.fieldData');
             }
           },
-          (err) => {}
-        );
-        getFormTemplate({ flowCode: this.currentFlowModal.flowCode }).then(
+          (err) => {
+          }
+      );
+      getFormTemplate({flowCode: this.currentFlowModal.flowCode}).then(
           (res) => {
             if (res.data !== null) {
               //如果有数据则直接加载
               self.$refs.formDesign.data = JSON.parse(res.data.content);
             } else {
-              let initJsonContentClone=JSON.parse(JSON.stringify(initJsonContent))
+              let initJsonContentClone = JSON.parse(JSON.stringify(initJsonContent))
               //如果无数据则初始化
               // 每次新建表单时,都会生成一个唯一标识
               for (let key in initJsonContentClone.config.event) {
@@ -69,24 +72,24 @@
           (err) => {
             console.log(err);
           }
-        );
-      },
-      showDrawer() {
-        this.visible = true;
-        this.initForm();
-      },
-      onClose() {
-        this.visible = false;
-      },
-      save(formData) {
-        const self = this;
-        const data = {};
-        data.content = formData;
-        data.flowCode = this.currentFlowModal.flowCode;
+      );
+    },
+    showDrawer() {
+      this.visible = true;
+      this.initForm();
+    },
+    onClose() {
+      this.visible = false;
+    },
+    save(formData) {
+      const self = this;
+      const data = {};
+      data.content = formData;
+      data.flowCode = this.currentFlowModal.flowCode;
 
-        istFormTemplate({
-          ...data,
-        }).then(
+      istFormTemplate({
+        ...data,
+      }).then(
           (res) => {
             if (res.success) {
               message.success('保存成功');
@@ -94,25 +97,30 @@
               message.error(res.message);
             }
           }
-        );
-      },
-      // 保存JS代码
-      async saveJsCode({ key, objectid, scriptValue, vm }) {
-        vm.submitLoading = true;
-        const flowCode = this.currentFlowModal.flowCode;
+      );
+    },
+    // 保存JS代码
+    async saveJsCode({key, objectid, scriptValue, vm}) {
+      vm.submitLoading = true;
+      const flowCode = this.currentFlowModal.flowCode;
 
-        await updateJsStr({
-          objectid,
-          scriptValue,
-          key,
-          flowCode,
-        });
-        vm.$message.success('保存成功');
-        vm.submitLoading = false;
-        return false;
-      },
+      await updateJsStr({
+        objectid,
+        scriptValue,
+        key,
+        flowCode,
+      });
+      const curScriptKeys = JSON.parse(sessionStorage.getItem('_scriptKeys_'))
+      if (Array.isArray(curScriptKeys)) {
+        curScriptKeys.push(key)
+        sessionStorage.setItem("_scriptKeys_", JSON.stringify(curScriptKeys))
+      }
+      vm.$message.success('保存成功');
+      vm.submitLoading = false;
+      return false;
     },
-  };
+  },
+};
 </script>
 
 <style scoped lang="less"></style>