规范文档


自定义表单配置规范

<p>[TOC]</p> <h3>按钮摆放置</h3> <hr /> <h4>一.创建工具栏</h4> <p>首先,我们建议将按钮组单独放置在页面的工具栏(<code>toolbar</code>)中。</p> <h4>二.插入样式容器</h4> <p>接下来,在工具栏中插入布局容器,如 <code>flex</code> 容器或其他次级容器,并配置其样式。根据需求调整按钮组的布局位置。以下示例将展示如何将按钮组放置在页面右上角。</p> <h4>三.插入 <code>service</code></h4> <p>在容器中插入可以存储变量的容器组件 <code>service</code>,并配置 URL,例如 <code>${apiUrl}hr/actExtend/findFormDataBut</code>。这个接口用于判断驳回按钮是否应显示,并存储变量 <code>rejectShow</code>。</p> <h4>四.在 <code>service</code> 中加入按钮组</h4> <p>在 <code>service</code> 中加入以下按钮组:[返回, 驳回, 同意, 提交]。每个按钮的可见性规则如下:</p> <ul> <li>&quot;提交&quot;按钮:当表单处于添加或编辑模式时显示,即 <code>visibleOn</code> 规则为表达式 <code>&amp;quot;${pageMode == \&amp;quot;add\&amp;quot; || pageMode == \&amp;quot;edit\&amp;quot;}&amp;quot;</code>。</li> <li>&quot;同意&quot;按钮:当表单处于审核模式时显示,即 <code>visibleOn</code> 规则为表达式 <code>&amp;quot;${pageMode == \&amp;quot;examine\&amp;quot;}&amp;quot;</code>。</li> <li>&quot;驳回&quot;按钮:当表单处于审核模式且变量 <code>rejectShow</code> 等于 1 时显示,即 <code>visibleOn</code> 规则为表达式 <code>&amp;quot;${rejectShow == \&amp;quot;1\&amp;quot; &amp;amp;&amp;amp; pageMode == \&amp;quot;examine\&amp;quot;}&amp;quot;</code>。</li> <li>&quot;返回&quot;按钮:始终可见。</li> </ul> <p>每个按钮的点击事件配置如下:</p> <ul> <li>&quot;提交&quot;按钮:</li> </ul> <pre><code class="language-JSON"> &amp;quot;onEvent&amp;quot;: { &amp;quot;click&amp;quot;: { &amp;quot;actions&amp;quot;: [ { &amp;quot;actionType&amp;quot;: &amp;quot;submit&amp;quot;, // 动作类型:提交表单 &amp;quot;componentId&amp;quot;: &amp;quot;form&amp;quot;, // 表单 ID &amp;quot;outputVar&amp;quot;: &amp;quot;submitResult&amp;quot;, // 提交结果 &amp;quot;ignoreError&amp;quot;: false, &amp;quot;args&amp;quot;: {} } ] } },</code></pre> <ul> <li>&quot;同意&quot;按钮:</li> </ul> <pre><code class="language-JSON"> &amp;quot;onEvent&amp;quot;: {     &amp;quot;click&amp;quot;: {       &amp;quot;actions&amp;quot;: [         {           &amp;quot;actionType&amp;quot;: &amp;quot;validateFormItem&amp;quot;, // 动作类型:校验表单项           &amp;quot;ignoreError&amp;quot;: false,           &amp;quot;componentId&amp;quot;: &amp;quot;comments&amp;quot;, // 表单 ID           &amp;quot;outputVar&amp;quot;: &amp;quot;validateFormItemResult&amp;quot; // 校验结果         },         {           &amp;quot;ignoreError&amp;quot;: false,           &amp;quot;actionType&amp;quot;: &amp;quot;toast&amp;quot;, // 动作类型:吐司提示           &amp;quot;expression&amp;quot;: &amp;quot;${comments == \&amp;quot;\&amp;quot; || comments == null || comments == \&amp;quot;undefined\&amp;quot;}&amp;quot;, // 执行条件           &amp;quot;args&amp;quot;: { // 吐司内容             &amp;quot;msgType&amp;quot;: &amp;quot;error&amp;quot;,             &amp;quot;position&amp;quot;: &amp;quot;top-center&amp;quot;,             &amp;quot;closeButton&amp;quot;: true,             &amp;quot;showIcon&amp;quot;: true,             &amp;quot;msg&amp;quot;: &amp;quot;必须填写审核意见&amp;quot;,             &amp;quot;title&amp;quot;: &amp;quot;提示&amp;quot;,             &amp;quot;className&amp;quot;: &amp;quot;theme-toast-action-scope&amp;quot;           }         },         {           &amp;quot;actionType&amp;quot;: &amp;quot;ajax&amp;quot;, // 动作类型:调接口           &amp;quot;ignoreError&amp;quot;: false,           &amp;quot;outputVar&amp;quot;: &amp;quot;responseResult&amp;quot;, // 请求结果           &amp;quot;expression&amp;quot;: &amp;quot;${comments !== \&amp;quot;\&amp;quot; &amp;amp;&amp;amp; comments !== null &amp;amp;&amp;amp; comments !== \&amp;quot;undefined\&amp;quot;}&amp;quot;, // 执行条件           &amp;quot;api&amp;quot;: { // 请求内容             &amp;quot;url&amp;quot;: &amp;quot;${apiUrl}workflow/flownew/claimAndCompleteTaskByTaskId&amp;quot;,             &amp;quot;method&amp;quot;: &amp;quot;post&amp;quot;,             &amp;quot;requestAdaptor&amp;quot;: &amp;quot;// 定义一个函数来获取查询参数\r\nfunction getQueryParam(params, key, defaultValue = \&amp;quot;\&amp;quot;, isBoolean = false) {\r\n  let value = params.get(key);\r\n  if (value === null) {\r\n    return defaultValue;\r\n  }\r\n  if (isBoolean) {\r\n    value = value == \&amp;quot;0\&amp;quot; ? true : false;\r\n  }\r\n  return value;\r\n}\r\n\r\nconst hash = window.location.hash;\r\nconst params = new URLSearchParams(hash.slice(hash.indexOf('?')));\r\nlet data = {\r\n    taskId: getQueryParam(params, \&amp;quot;taskId\&amp;quot;),\r\n    userId: JSON.parse(localStorage.getItem(\&amp;quot;USER\&amp;quot;)).id.toString(),\r\n    isAgree: \&amp;quot;1\&amp;quot;,\r\n    remarke: \&amp;quot;同意\&amp;quot;,\r\n    comments: api.body.comments\r\n}\r\n\r\nreturn {\r\n    ...api,\r\n    data\r\n};&amp;quot;,             &amp;quot;dataType&amp;quot;: &amp;quot;json&amp;quot;,             &amp;quot;headers&amp;quot;: {               &amp;quot;Authentication&amp;quot;: &amp;quot;${token}&amp;quot;             },             &amp;quot;data&amp;quot;: {               &amp;quot;comments&amp;quot;: &amp;quot;${comments}&amp;quot;             }           }         },         {           &amp;quot;ignoreError&amp;quot;: false,           &amp;quot;script&amp;quot;: &amp;quot;\nconsole.log(`Before setTimeout: `, event.data);\nif (event.data.responseResult.responseData.code == \&amp;quot;200\&amp;quot;) {\n  setTimeout(() =&amp;gt; {\n    window.$customFormEvent.$emit('form:search');\n    doAction({\n      \&amp;quot;actionType\&amp;quot;: \&amp;quot;goBack\&amp;quot;\n    });\n  }, 1500);\n}\n&amp;quot;, // 自定义 JS,判断请求结果后,执行 goBack 动作并调用 VUE 项目中定义的 window.$customFormEvent 跳转回到请假列表页面           &amp;quot;actionType&amp;quot;: &amp;quot;custom&amp;quot; // 动作类型:自定义 JS         }       ]     }   }</code></pre> <ul> <li>&quot;驳回&quot;按钮除接口部分与同意按钮不同以外基本一致,故除ajax部分以外部分不做累述:</li> </ul> <pre><code class="language-JSON"> ... {           &amp;quot;actionType&amp;quot;: &amp;quot;ajax&amp;quot;,           &amp;quot;outputVar&amp;quot;: &amp;quot;responseResult&amp;quot;,           &amp;quot;ignoreError&amp;quot;: false,           &amp;quot;api&amp;quot;: {             &amp;quot;url&amp;quot;: &amp;quot;${apiUrl}workflow/flownew/claimAndCompleteTaskByTaskId&amp;quot;,             &amp;quot;method&amp;quot;: &amp;quot;post&amp;quot;,             &amp;quot;requestAdaptor&amp;quot;: &amp;quot;\r\n// 定义一个函数来获取查询参数\r\nfunction getQueryParam(params, key, defaultValue = \&amp;quot;\&amp;quot;, isBoolean = false) {\r\n  let value = params.get(key);\r\n  if (value === null) {\r\n    return defaultValue;\r\n  }\r\n  if (isBoolean) {\r\n    value = value == \&amp;quot;0\&amp;quot; ? true : false;\r\n  }\r\n  return value;\r\n}\r\n\r\nconst hash = window.location.hash;\r\nconst params = new URLSearchParams(hash.slice(hash.indexOf('?')));\r\nlet data = {\r\n    taskId: getQueryParam(params, \&amp;quot;taskId\&amp;quot;),\r\n    userId: JSON.parse(localStorage.getItem(\&amp;quot;USER\&amp;quot;)).id.toString(),\r\n    isAgree: \&amp;quot;0\&amp;quot;,\r\n    remarke: \&amp;quot;驳回\&amp;quot;,\r\n    comments: api.body.comments\r\n}\r\n\r\nreturn {\r\n    ...api,\r\n    data\r\n};&amp;quot;,             &amp;quot;dataType&amp;quot;: &amp;quot;json&amp;quot;,             &amp;quot;headers&amp;quot;: {               &amp;quot;Authentication&amp;quot;: &amp;quot;${token}&amp;quot;             },             &amp;quot;data&amp;quot;: {               &amp;quot;comments&amp;quot;: &amp;quot;${comments}&amp;quot;             }           },           &amp;quot;expression&amp;quot;: &amp;quot;${comments !== \&amp;quot;\&amp;quot; &amp;amp;&amp;amp; comments !== null &amp;amp;&amp;amp; comments !== \&amp;quot;undefined\&amp;quot;}&amp;quot;         } ...</code></pre> <h4>五.注意事项</h4> <ol> <li>由于表单提交按钮单独放置在工具栏(<code>toolbar</code>)中,因此需要将内容区表单自带的操作区中的提交按钮进行隐藏。</li> <li>按钮中用到的个别变量是在页面定义并赋值的 <code>data</code> 变量,详见文档-表单配置规范-页面初始化配置。</li> </ol> <h2>页面初始化配置</h2> <h3>页面 <code>page</code> 基本参数</h3> <p>…</p>

页面列表

ITEM_HTML