# 1、表单布局规范基本原则

  • 表单采用垂直布局;
  • 表单项分组展示,组标题设置为加粗、上下间距(margin)8px;若组内仅有一项内容时,不单独添加子标题,只需加粗组标题并设置上间距为8px;
组内有多项内容 组内仅一项
addon affix
  • 输入框前缀(可选)统一用图标、后缀(可选)统一用单位(单位不需要用括号包裹);

# 2、整体布局

# 1、设置表单布局为垂直布局

  • 推荐使用基本form组件(如<mapgis-ui-form><mapgis-ui-form-model>)或<mapgis-ui-setting-form>组件:布局均统一设为vertical
<mapgis-ui-form
  :layout="layout"
><mapgis-ui-form-model
  :layout="layout"
><mapgis-ui-setting-form
  // :label-width="50" // 删掉
  // :wrapper-width="224" // 删掉
  :layout="layout"
  size="default"
>

props: {
  /**
   * @type String
   * @default "vertical"
   * @description 表单布局
   */
  layout: {
    type: String,
    default: "vertical" // 'horizontal' 'vertical' 'inline'
  },
}

# 2、组件中form-itemmargin-bottom 设为0px(若使用 <mapgis-ui-setting-form> 则忽略该项)

<style scoped>
  .mapgis-ui-form-item {
    margin-bottom: 0px;
  }
</style>

# 3、组内只有一项内容的情况

<mapgis-ui-group-tab>hasBottomMargin设置为false;且form-item 部分不需要设置 label

TIP

示例:

<mapgis-ui-group-tab
  title="输出结果"
  :hasBottomMargin="false" // 设置hasBottomMargin
/>
<mapgis-ui-form-model-item
  // label="输出结果" // 不需要设置label
>
...
</mapgis-ui-form-model-item>

组内只有一项

# 4、checkbox自成一行的情况(见上图)

line-height设置为32px:

<mapgis-ui-checkbox
  style="line-height:32px;" // 增加该行
  :default-checked="bufferAdd"
  @change="sendBufferAdd"
>
  将结果图层添加到视图中
</mapgis-ui-checkbox>

# 3、细节优化

# 1、tooltip

  • <mapgis-ui-tooltip>placement统一设为top

# 2、同一行并列显示两项

同一类数据,且数据长度较短时,为节省高度,可并列显示(如数值类、颜色类,可选择此种布局)

一行显示两项

  • 为确保间距等符合规范,建议统一使用栅格布局(<mapgis-ui-row><mapgis-ui-col>
  • 请严格按照示例中gutter、span的值设置;若出现横向滚动条,可将其隐藏
<mapgis-ui-row :gutter="8">
  <mapgis-ui-col :span="12">	
    <mapgis-ui-form-item label="x方向采样点数">
      <mapgis-ui-input-number-addon/>
    </mapgis-ui-form-item>
  </mapgis-ui-col>
  <mapgis-ui-col :span="12">
    <mapgis-ui-form-item label="y方向采样点数">
      <mapgis-ui-input-number-addon/>
    </mapgis-ui-form-item>
  </mapgis-ui-col>
</mapgis-ui-row>

<style scoped>
.mapgis-widget-cut-fill-analysis {
  max-height: calc(50vh);
  overflow-y: auto;
  overflow-x: hidden; // 隐藏横向滚动条
}
</style>

# 3、标签有多个附加项的情况

释义图标放在表单字段旁;操作按钮放在字段右侧,右对齐

多个附加项

  • 推荐使用<mapgis-ui-group-tab>tiphandle两个插槽实现
  • 需要将标题的isTitleBoldhasTopMarginhasBottomMargin全部设为false
<mapgis-ui-group-tab title="位置" :isTitleBold="false" :hasTopMargin="false" :hasBottomMargin="false">
  <mapgis-ui-tooltip slot="tip" placement="top" title="这是提示">
    <mapgis-ui-iconfont type="mapgis-info" />
  </mapgis-ui-tooltip>
  <mapgis-ui-tooltip slot="handle" title="定位">
    <mapgis-ui-iconfont
      type="mapgis-target-lock"
      @click="_getCameraPosition"
    />
  </mapgis-ui-tooltip>
</mapgis-ui-group-tab>

# 4、底部按钮

  • 底部按钮统一使用<mapgis-ui-setting-footer>组件,且表单过长时按钮要固定在弹框底部,不能随滚动条移动

# 5、数字输入框

<mapgis-ui-input-number-addon>支持前后置和前后缀(即addonAfteraddonBeforeprefixsuffix),用法同<mapgis-ui-input>

  • 统一将<mapgs-ui-input type="number">的写法改为使用<mapgis-ui-input-number-addon>
  • 推荐将度(°)、百分号(%)等特殊单位紧贴在数字之后显示(通过设置formatterparser): 数字+百分号
<mapgis-ui-input-number
  :default-value="100"
  :min="0"
  :max="100"
  :formatter="value => `${value}%`"
  :parser="value => value.replace('%', '')"
  @change="onChange"
/>

TIP

<mapgis-ui-input-number-addon>使用示例(根据规范,输入框若有前缀则统一使用图标)

修改前:

<mapgis-ui-input
  type="number"
  addon-before="方位角"
  :min="0"
  :max="360"
  :step="0.1"
  v-model.number="params.orientation.heading"
  @change="val => onChangeSetting(val.target.value, 'heading')"
/>

修改前

修改后:

<mapgis-ui-input-number-addon
  :min="0"
  :max="360"
  :step="0.1"
  v-model.number="params.orientation.heading"
  @change="val => onChangeSetting(val, 'heading')" // 注意函数参数
>
  <mapgis-ui-tooltip slot="addonBefore" title="方位角">
    <mapgis-ui-iconfont type="mapgis-fangwei"/>
  </mapgis-ui-tooltip>
</mapgis-ui-input-number-addon>

修改后

WARNING

注意事项:需要注意<mapgis-ui-input><mapgis-ui-input-number>两者的@change回调函数的参数不同。

前者为event(使用event.target.value得到输入值),后者为value(输入值)。

# 6、数字输入框+滑动条

  • 支持以下两种展示方式

① 独立一行展示时,使用<mapgis-ui-input-number-panel>(将size设为large

<mapgis-ui-input-number-panel
  tooltip="这是提示"
  size="large"
  label="最大分段数"
  :range="[1, 800]"
  v-model="maxSegmentedValueCopy"
/>

滑动输入框1

② 同一行有两个输入框并列展示时,直接将输入框和滑动条上下布局展示

<mapgis-ui-col :span="12">
  <mapgis-ui-input-number-addon v-model.number="angleSet.pitch" >
    <mapgis-ui-tooltip slot="addonBefore" title="俯仰">
      <mapgis-ui-iconfont type="mapgis-fushi"/>
    </mapgis-ui-tooltip>
  </mapgis-ui-input-number-addon>
  <mapgis-ui-slider v-model="angleSet.pitch" />
</mapgis-ui-col>

滑动输入框2

# 7、颜色条

  • 根据实际情况决定是否显示颜色值文本(通过设置 showColorTexttrue/false
  • <mapgis-ui-color-pick-panel>labelColwrapperCol均设为24
<mapgis-ui-color-pick-panel
  label="轮廓颜色"
  :labelCol="24" // 修改该行
  :wrapperCol="24" // 修改该行
  :disableAlpha="false"
  @input="val =>
    (colorCopyLine = `rgba(${val.rgba.r}, ${val.rgba.g}, ${val.rgba.b}, ${val.rgba.a})`)"
>
</mapgis-ui-color-pick-panel>

# 4、其他

# 1、关于弹框的高度、宽度

  • 弹框宽度固定为320px
  • 弹框高度自适应,不可超过屏幕底部(表单过长时设为距底部5%)