tianheng-ui 0.1.63 → 0.1.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/theme-chalk/index.scss +1 -1
- package/lib/theme-chalk/styles/feature.scss +1 -0
- package/lib/tianheng-ui.js +13 -13
- package/package.json +1 -1
- package/packages/CodeEditor/index.vue +41 -19
- package/packages/FormMaking/GenerateForm.vue +67 -71
- package/packages/FormMaking/WidgetConfig.vue +1 -1
- package/packages/FormMaking/WidgetForm.vue +11 -5
- package/packages/FormMaking/WidgetFormItem.vue +11 -4
- package/packages/FormMaking/WidgetGuide.vue +0 -0
- package/packages/FormMaking/WidgetTools.vue +2 -2
- package/packages/FormMaking/custom/config.js +320 -76
- package/packages/FormMaking/custom/configs/blank.vue +1 -1
- package/packages/FormMaking/custom/configs/button.vue +2 -2
- package/packages/FormMaking/custom/configs/cascader.vue +71 -34
- package/packages/FormMaking/custom/configs/cell.vue +1 -1
- package/packages/FormMaking/custom/configs/checkbox.vue +95 -64
- package/packages/FormMaking/custom/configs/color.vue +1 -1
- package/packages/FormMaking/custom/configs/date.vue +1 -1
- package/packages/FormMaking/custom/configs/descriptions.vue +314 -0
- package/packages/FormMaking/custom/configs/divider.vue +1 -1
- package/packages/FormMaking/custom/configs/editor.vue +1 -1
- package/packages/FormMaking/custom/configs/filler.vue +1 -1
- package/packages/FormMaking/custom/configs/grid.vue +33 -22
- package/packages/FormMaking/custom/configs/image.vue +1 -1
- package/packages/FormMaking/custom/configs/input.vue +1 -1
- package/packages/FormMaking/custom/configs/number.vue +1 -1
- package/packages/FormMaking/custom/configs/radio.vue +84 -53
- package/packages/FormMaking/custom/configs/rate.vue +1 -1
- package/packages/FormMaking/custom/configs/select.vue +157 -158
- package/packages/FormMaking/custom/configs/slider.vue +1 -1
- package/packages/FormMaking/custom/configs/switch.vue +1 -1
- package/packages/FormMaking/custom/configs/table.vue +1 -1
- package/packages/FormMaking/custom/configs/tableH5.vue +1 -1
- package/packages/FormMaking/custom/configs/tabs.vue +1 -1
- package/packages/FormMaking/custom/configs/text.vue +1 -1
- package/packages/FormMaking/custom/configs/textarea.vue +1 -1
- package/packages/FormMaking/custom/configs/time.vue +1 -1
- package/packages/FormMaking/custom/configs/upload.vue +1 -1
- package/packages/FormMaking/custom/configs/workflow.vue +494 -0
- package/packages/FormMaking/custom/index.js +4 -2
- package/packages/FormMaking/custom/items/cascader.vue +2 -2
- package/packages/FormMaking/custom/items/checkbox.vue +6 -10
- package/packages/FormMaking/custom/items/descriptions.vue +75 -0
- package/packages/FormMaking/custom/items/grid_dev.vue +2 -2
- package/packages/FormMaking/custom/items/list_dev.vue +10 -22
- package/packages/FormMaking/custom/items/radio.vue +5 -9
- package/packages/FormMaking/custom/items/select.vue +2 -4
- package/packages/FormMaking/custom/items/tableH5_dev.vue +9 -18
- package/packages/FormMaking/custom/items/table_dev.vue +13 -3
- package/packages/FormMaking/custom/items/tabs_dev.vue +3 -2
- package/packages/FormMaking/custom/items/workflow.vue +131 -0
- package/packages/FormMaking/custom/register.js +15 -1
- package/packages/FormMaking/index.vue +61 -27
- package/packages/FormMaking/styles/index.scss +156 -478
- package/packages/TableMaking/index.vue +4 -1
- package/packages/TableMaking/widgetGuide.vue +96 -0
- package/packages/TableMaking/widgetTable.vue +0 -7
- package/packages/Workflow/index.vue +0 -31
- package/packages/FormMaking/GenerateFormItemH5.vue +0 -825
    
        package/package.json
    CHANGED
    
    
| @@ -46,7 +46,7 @@ export default { | |
| 46 46 | 
             
              },
         | 
| 47 47 | 
             
              props: {
         | 
| 48 48 | 
             
                // 编辑器内容
         | 
| 49 | 
            -
                value: String,
         | 
| 49 | 
            +
                value: [String, Object, Array],
         | 
| 50 50 | 
             
                // 默认语言
         | 
| 51 51 | 
             
                language: {
         | 
| 52 52 | 
             
                  type: String,
         | 
| @@ -76,17 +76,32 @@ export default { | |
| 76 76 | 
             
              data() {
         | 
| 77 77 | 
             
                return {
         | 
| 78 78 | 
             
                  editor: null,
         | 
| 79 | 
            -
                   | 
| 80 | 
            -
             | 
| 81 | 
            -
                     | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 79 | 
            +
                  editorValue: this.value,
         | 
| 80 | 
            +
                  generateId: `id_${Math.random()
         | 
| 81 | 
            +
                    .toString(36)
         | 
| 82 | 
            +
                    .substr(2, 4)}`,
         | 
| 83 | 
            +
                  dataType: ""
         | 
| 84 84 | 
             
                };
         | 
| 85 85 | 
             
              },
         | 
| 86 | 
            -
               | 
| 87 | 
            -
                 | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 86 | 
            +
              watch: {
         | 
| 87 | 
            +
                value(val) {
         | 
| 88 | 
            +
                  this.dataType = val.constructor;
         | 
| 89 | 
            +
                  if (this.dataType === Object || this.dataType === Array)
         | 
| 90 | 
            +
                    this.editorValue = JSON.stringify(val, null, 2);
         | 
| 91 | 
            +
                  else this.editorValue = val;
         | 
| 92 | 
            +
                },
         | 
| 93 | 
            +
                editorValue(val) {
         | 
| 94 | 
            +
                  if (this.dataType === Object || this.dataType === Array)
         | 
| 95 | 
            +
                    try {
         | 
| 96 | 
            +
                      this.$emit("change", JSON.parse(val));
         | 
| 97 | 
            +
                    } catch (error) {}
         | 
| 98 | 
            +
                  else this.$emit("change", val);
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                  if (this.editor.getValue() !== val) {
         | 
| 101 | 
            +
                    this.editor.setValue(val);
         | 
| 102 | 
            +
                    this.editor.clearSelection();
         | 
| 103 | 
            +
                  }
         | 
| 104 | 
            +
                }
         | 
| 90 105 | 
             
              },
         | 
| 91 106 | 
             
              computed: {
         | 
| 92 107 | 
             
                selfStyle() {
         | 
| @@ -102,24 +117,25 @@ export default { | |
| 102 117 | 
             
                  return style;
         | 
| 103 118 | 
             
                }
         | 
| 104 119 | 
             
              },
         | 
| 105 | 
            -
               | 
| 106 | 
            -
                 | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
                    this.editor.clearSelection();
         | 
| 110 | 
            -
                  }
         | 
| 111 | 
            -
                }
         | 
| 120 | 
            +
              mounted() {
         | 
| 121 | 
            +
                // 初始化
         | 
| 122 | 
            +
                this.initEditor();
         | 
| 123 | 
            +
                this.setCompleteData();
         | 
| 112 124 | 
             
              },
         | 
| 113 125 | 
             
              methods: {
         | 
| 114 126 | 
             
                // 初始化
         | 
| 115 127 | 
             
                initEditor() {
         | 
| 128 | 
            +
                  this.dataType = this.editorValue.constructor;
         | 
| 116 129 | 
             
                  // 创建实例
         | 
| 117 130 | 
             
                  this.editor = ace.edit(this.$refs[this.generateId], {
         | 
| 118 131 | 
             
                    mode: `ace/mode/${this.language}`,
         | 
| 119 132 | 
             
                    theme: `ace/theme/${this.theme}`,
         | 
| 120 133 | 
             
                    fontSize: 14,
         | 
| 121 134 | 
             
                    tabSize: 2,
         | 
| 122 | 
            -
                    value: | 
| 135 | 
            +
                    value:
         | 
| 136 | 
            +
                      this.dataType === Object || this.dataType === Array
         | 
| 137 | 
            +
                        ? JSON.stringify(this.editorValue, null, 2)
         | 
| 138 | 
            +
                        : this.editorValue,
         | 
| 123 139 | 
             
                    selectionStyle: "text",
         | 
| 124 140 | 
             
                    maxLines: this.maxLines,
         | 
| 125 141 | 
             
                    readOnly: this.readonly,
         | 
| @@ -138,7 +154,7 @@ export default { | |
| 138 154 | 
             
                  });
         | 
| 139 155 | 
             
                  // 设置值改变监听
         | 
| 140 156 | 
             
                  this.editor.on("change", () => {
         | 
| 141 | 
            -
                    this | 
| 157 | 
            +
                    this.editorValue = this.editor.getValue();
         | 
| 142 158 | 
             
                  });
         | 
| 143 159 | 
             
                },
         | 
| 144 160 | 
             
                setCompleteData() {
         | 
| @@ -169,6 +185,12 @@ export default { | |
| 169 185 | 
             
                    this.editor.destroy();
         | 
| 170 186 | 
             
                    this.editor = null;
         | 
| 171 187 | 
             
                  }
         | 
| 188 | 
            +
                },
         | 
| 189 | 
            +
                setValue(val) {
         | 
| 190 | 
            +
                  if (this.editor) {
         | 
| 191 | 
            +
                    this.editor.setValue(val);
         | 
| 192 | 
            +
                    this.editor.clearSelection();
         | 
| 193 | 
            +
                  }
         | 
| 172 194 | 
             
                }
         | 
| 173 195 | 
             
              },
         | 
| 174 196 | 
             
              beforeDestroy() {
         | 
| @@ -24,7 +24,7 @@ | |
| 24 24 | 
             
                    :slotKeys="slotKeys"
         | 
| 25 25 | 
             
                    :config="formConfig.config"
         | 
| 26 26 | 
             
                    :componentsData="componentsData"
         | 
| 27 | 
            -
                    @input-change=" | 
| 27 | 
            +
                    @input-change="handleInputChange"
         | 
| 28 28 | 
             
                    @button-submit="handleButtonSubmit"
         | 
| 29 29 | 
             
                  >
         | 
| 30 30 | 
             
                    <template v-for="name in slotKeys" :slot="name">
         | 
| @@ -32,32 +32,6 @@ | |
| 32 32 | 
             
                    </template>
         | 
| 33 33 | 
             
                  </genetate-form-item>
         | 
| 34 34 | 
             
                </el-form>
         | 
| 35 | 
            -
                <!-- <van-form
         | 
| 36 | 
            -
                  v-else
         | 
| 37 | 
            -
                  class="generateForm"
         | 
| 38 | 
            -
                  :class="{ 'form-hideLabel': formConfig.config.hideLabel }"
         | 
| 39 | 
            -
                  :style="{ width: formWidth }"
         | 
| 40 | 
            -
                  style="margin: 0 auto;"
         | 
| 41 | 
            -
                  :label-align="formConfig.config.labelPosition"
         | 
| 42 | 
            -
                  :label-width="formConfig.config.labelWidth + 'px'"
         | 
| 43 | 
            -
                  ref="generateForm"
         | 
| 44 | 
            -
                >
         | 
| 45 | 
            -
                  <genetate-form-item-h5
         | 
| 46 | 
            -
                    v-for="item in formConfig.list"
         | 
| 47 | 
            -
                    :key="item.key"
         | 
| 48 | 
            -
                    :models.sync="models"
         | 
| 49 | 
            -
                    :widget="item"
         | 
| 50 | 
            -
                    :slotKeys="slotKeys"
         | 
| 51 | 
            -
                    :config="formConfig.config"
         | 
| 52 | 
            -
                    :prop="item.type === 'grid' ? '' : item.model"
         | 
| 53 | 
            -
                    :componentsData="componentsData"
         | 
| 54 | 
            -
                    @input-change="onInputChange"
         | 
| 55 | 
            -
                  >
         | 
| 56 | 
            -
                    <template v-for="name in slotKeys" :slot="name">
         | 
| 57 | 
            -
                      <slot :name="name" />
         | 
| 58 | 
            -
                    </template>
         | 
| 59 | 
            -
                  </genetate-form-item-h5>
         | 
| 60 | 
            -
                </van-form> -->
         | 
| 61 35 | 
             
              </div>
         | 
| 62 36 | 
             
            </template>
         | 
| 63 37 |  | 
| @@ -70,6 +44,8 @@ export default { | |
| 70 44 | 
             
              name: "thFormGenerate",
         | 
| 71 45 | 
             
              components: { GenetateFormItem },
         | 
| 72 46 | 
             
              props: {
         | 
| 47 | 
            +
                formId: String,
         | 
| 48 | 
            +
                query: Object,
         | 
| 73 49 | 
             
                oauthConfig: {
         | 
| 74 50 | 
             
                  type: Object,
         | 
| 75 51 | 
             
                  default: () => {
         | 
| @@ -99,7 +75,6 @@ export default { | |
| 99 75 | 
             
                return {
         | 
| 100 76 | 
             
                  formConfig: this.config,
         | 
| 101 77 | 
             
                  models: this.value,
         | 
| 102 | 
            -
                  query: {},
         | 
| 103 78 | 
             
                  componentsData: [],
         | 
| 104 79 | 
             
                  axios: null,
         | 
| 105 80 | 
             
                  showForm: false
         | 
| @@ -117,15 +92,16 @@ export default { | |
| 117 92 | 
             
                },
         | 
| 118 93 | 
             
                value(val) {
         | 
| 119 94 | 
             
                  if (val) this.models = val;
         | 
| 95 | 
            +
                  console.log("watch models =>", this.models);
         | 
| 120 96 | 
             
                }
         | 
| 121 97 | 
             
              },
         | 
| 122 98 | 
             
              created() {
         | 
| 123 | 
            -
                this.query = this.$route.query || {};
         | 
| 124 99 | 
             
                localStorage.setItem("_TH_OauthConfig", JSON.stringify(this.oauthConfig));
         | 
| 125 100 | 
             
                this.axios = Axios.init(this.oauthConfig);
         | 
| 126 101 | 
             
              },
         | 
| 127 102 | 
             
              mounted() {
         | 
| 128 103 | 
             
                this.generateModle(this.formConfig.list, this.models);
         | 
| 104 | 
            +
                console.log("mounted models =>", this.models);
         | 
| 129 105 | 
             
                this.handleMountedRemotData();
         | 
| 130 106 | 
             
                this.showForm = true;
         | 
| 131 107 | 
             
              },
         | 
| @@ -203,9 +179,15 @@ export default { | |
| 203 179 | 
             
                },
         | 
| 204 180 | 
             
                // 获取组件的远端数据
         | 
| 205 181 | 
             
                hendleElementRemoteData(item) {
         | 
| 206 | 
            -
                  if (!item.options.remote) return;
         | 
| 182 | 
            +
                  if (!item.options.remote || !item.options.remote.open) return;
         | 
| 207 183 | 
             
                  if (item.type === "upload" || item.type === "button") return;
         | 
| 208 | 
            -
                   | 
| 184 | 
            +
                  
         | 
| 185 | 
            +
                  let api = "";
         | 
| 186 | 
            +
                  if (item.options.remote.api.constructor === String) {
         | 
| 187 | 
            +
                    api = this.formConfig.config.network[item.options.remote.api];
         | 
| 188 | 
            +
                  } else {
         | 
| 189 | 
            +
                    api = deepClone(item.options.remote.api);
         | 
| 190 | 
            +
                  }
         | 
| 209 191 | 
             
                  if (!api) return this.$message.warning("未知的接口,请检查配置信息");
         | 
| 210 192 |  | 
| 211 193 | 
             
                  const requestConfig = {
         | 
| @@ -218,8 +200,8 @@ export default { | |
| 218 200 | 
             
                  const params = {};
         | 
| 219 201 | 
             
                  for (let e of api.inParams) {
         | 
| 220 202 | 
             
                    const value =
         | 
| 221 | 
            -
                      e.defaultValue || getProperty(this.query, e. | 
| 222 | 
            -
                    setProperty(params, e. | 
| 203 | 
            +
                      e.defaultValue || getProperty(this.query, e.pAlias) || null;
         | 
| 204 | 
            +
                    setProperty(params, e.pAlias, value);
         | 
| 223 205 | 
             
                  }
         | 
| 224 206 | 
             
                  if (api.needPage) {
         | 
| 225 207 | 
             
                    params.pageNum = params.pageNum || 1;
         | 
| @@ -230,33 +212,43 @@ export default { | |
| 230 212 | 
             
                  else requestConfig.data = params;
         | 
| 231 213 |  | 
| 232 214 | 
             
                  this.axios(requestConfig).then(res => {
         | 
| 233 | 
            -
                    const props = {
         | 
| 234 | 
            -
                      value: item.options.props.value || "value",
         | 
| 235 | 
            -
                      label: item.options.props.label || "label",
         | 
| 236 | 
            -
                      children: item.options.props.children || "children"
         | 
| 237 | 
            -
                    };
         | 
| 238 | 
            -
                    const initOptions = list => {
         | 
| 239 | 
            -
                      return list.map(element => {
         | 
| 240 | 
            -
                        const dic = {
         | 
| 241 | 
            -
                          value: element[props.value],
         | 
| 242 | 
            -
                          label: element[props.label]
         | 
| 243 | 
            -
                        };
         | 
| 244 | 
            -
                        if (element[props.children] && element[props.children].length) {
         | 
| 245 | 
            -
                          dic.children = initOptions(element[props.children]);
         | 
| 246 | 
            -
                        }
         | 
| 247 | 
            -
                        return dic;
         | 
| 248 | 
            -
                      });
         | 
| 249 | 
            -
                    };
         | 
| 250 215 | 
             
                    const resultData = res.data.records ? res.data.records : res.data;
         | 
| 251 | 
            -
                    item. | 
| 216 | 
            +
                    if (item.type === "descriptions" || item.type === "workflow") {
         | 
| 217 | 
            +
                      item.options.defaultValue = resultData;
         | 
| 218 | 
            +
                    } else {
         | 
| 219 | 
            +
                      const props = {
         | 
| 220 | 
            +
                        value: item.options.remote.props.value || "value",
         | 
| 221 | 
            +
                        label: item.options.remote.props.label || "label",
         | 
| 222 | 
            +
                        children: item.options.remote.props.children || "children"
         | 
| 223 | 
            +
                      };
         | 
| 224 | 
            +
                      const initOptions = list => {
         | 
| 225 | 
            +
                        return list.map(element => {
         | 
| 226 | 
            +
                          const dic = {
         | 
| 227 | 
            +
                            value: element[props.value],
         | 
| 228 | 
            +
                            label: element[props.label]
         | 
| 229 | 
            +
                          };
         | 
| 230 | 
            +
                          if (element[props.children] && element[props.children].length) {
         | 
| 231 | 
            +
                            dic.children = initOptions(element[props.children]);
         | 
| 232 | 
            +
                          }
         | 
| 233 | 
            +
                          return dic;
         | 
| 234 | 
            +
                        });
         | 
| 235 | 
            +
                      };
         | 
| 236 | 
            +
                      item.options.options = initOptions(resultData);
         | 
| 237 | 
            +
                    }
         | 
| 252 238 | 
             
                  });
         | 
| 253 239 | 
             
                },
         | 
| 254 240 | 
             
                handleMountedRemotData() {
         | 
| 255 241 | 
             
                  if (!this.formConfig.config.mounted.api) return;
         | 
| 256 242 |  | 
| 257 | 
            -
                   | 
| 258 | 
            -
             | 
| 259 | 
            -
             | 
| 243 | 
            +
                  let api = "";
         | 
| 244 | 
            +
                  if (this.formConfig.config.mounted.api.constructor === String) {
         | 
| 245 | 
            +
                    api = this.formConfig.config.network[
         | 
| 246 | 
            +
                      this.formConfig.config.mounted.api
         | 
| 247 | 
            +
                    ];
         | 
| 248 | 
            +
                  } else {
         | 
| 249 | 
            +
                    api = deepClone(this.formConfig.config.mounted.api);
         | 
| 250 | 
            +
                  }
         | 
| 251 | 
            +
             | 
| 260 252 | 
             
                  if (!api) return this.$message.warning("未知的接口,请检查配置信息");
         | 
| 261 253 |  | 
| 262 254 | 
             
                  const requestConfig = {
         | 
| @@ -286,12 +278,20 @@ export default { | |
| 286 278 | 
             
                  });
         | 
| 287 279 | 
             
                },
         | 
| 288 280 | 
             
                handleButtonSubmit(element) {
         | 
| 289 | 
            -
                   | 
| 290 | 
            -
             | 
| 281 | 
            +
                  if (!element.options.remote.api)
         | 
| 282 | 
            +
                    return this.$emit("button-submit", element);
         | 
| 283 | 
            +
             | 
| 284 | 
            +
                  let api = "";
         | 
| 285 | 
            +
                  if (element.options.remote.api.constructor === String) {
         | 
| 286 | 
            +
                    api = this.formConfig.config.network[element.options.remote.api];
         | 
| 287 | 
            +
                  } else {
         | 
| 288 | 
            +
                    api = deepClone(element.options.remote.api);
         | 
| 289 | 
            +
                  }
         | 
| 290 | 
            +
             | 
| 291 291 | 
             
                  if (!api) return this.$message.warning("未知的接口,请检查配置信息");
         | 
| 292 292 |  | 
| 293 293 | 
             
                  let params = {};
         | 
| 294 | 
            -
                  const inParams = api.inParams;
         | 
| 294 | 
            +
                  const inParams = api.inParams || [];
         | 
| 295 295 | 
             
                  const initParams = list => {
         | 
| 296 296 | 
             
                    list.map(item => {
         | 
| 297 297 | 
             
                      if (item.children) {
         | 
| @@ -311,7 +311,10 @@ export default { | |
| 311 311 | 
             
                  const requestConfig = {
         | 
| 312 312 | 
             
                    url: api.url,
         | 
| 313 313 | 
             
                    method: api.method,
         | 
| 314 | 
            -
                    headers:  | 
| 314 | 
            +
                    headers: {
         | 
| 315 | 
            +
                      ...api.headers,
         | 
| 316 | 
            +
                      formId: this.formId
         | 
| 317 | 
            +
                    }
         | 
| 315 318 | 
             
                  };
         | 
| 316 319 | 
             
                  if (["get", "delete"].includes(api.method.toLowerCase()))
         | 
| 317 320 | 
             
                    requestConfig.params = params;
         | 
| @@ -330,6 +333,12 @@ export default { | |
| 330 333 | 
             
                      });
         | 
| 331 334 | 
             
                  });
         | 
| 332 335 | 
             
                },
         | 
| 336 | 
            +
                handleInputChange(value, field) {
         | 
| 337 | 
            +
                  this.$emit("change", field, value, this.models);
         | 
| 338 | 
            +
                },
         | 
| 339 | 
            +
                reset() {
         | 
| 340 | 
            +
                  this.$refs.generateForm.resetFields();
         | 
| 341 | 
            +
                },
         | 
| 333 342 | 
             
                getData() {
         | 
| 334 343 | 
             
                  return new Promise((resolve, reject) => {
         | 
| 335 344 | 
             
                    this.$refs.generateForm.validate(valid => {
         | 
| @@ -341,12 +350,6 @@ export default { | |
| 341 350 | 
             
                    });
         | 
| 342 351 | 
             
                  });
         | 
| 343 352 | 
             
                },
         | 
| 344 | 
            -
                reset() {
         | 
| 345 | 
            -
                  this.$refs.generateForm.resetFields();
         | 
| 346 | 
            -
                },
         | 
| 347 | 
            -
                onInputChange(value, field) {
         | 
| 348 | 
            -
                  this.$emit("change", field, value, this.models);
         | 
| 349 | 
            -
                },
         | 
| 350 353 | 
             
                setConfig(json) {
         | 
| 351 354 | 
             
                  this.formConfig = json;
         | 
| 352 355 | 
             
                  this.generateModle(this.formConfig.list, this.models);
         | 
| @@ -377,13 +380,6 @@ export default { | |
| 377 380 | 
             
                }
         | 
| 378 381 | 
             
              }
         | 
| 379 382 |  | 
| 380 | 
            -
              .widget-form-list-filler {
         | 
| 381 | 
            -
                margin-bottom: 0 !important;
         | 
| 382 | 
            -
              }
         | 
| 383 | 
            -
              .widget-form-list-image {
         | 
| 384 | 
            -
                margin-bottom: 0 !important;
         | 
| 385 | 
            -
              }
         | 
| 386 | 
            -
             | 
| 387 383 | 
             
              .tableH5 {
         | 
| 388 384 | 
             
                // 操作按钮布局
         | 
| 389 385 | 
             
                .tableH5-item > div {
         | 
| @@ -338,7 +338,7 @@ | |
| 338 338 | 
             
                        <div class="list-item-title">Function</div>
         | 
| 339 339 | 
             
                        <div class="list-item-value">{{ item.label }}</div>
         | 
| 340 340 | 
             
                        <el-popconfirm
         | 
| 341 | 
            -
                          :title=" | 
| 341 | 
            +
                          :title="`是否确定删除 ${item.label}`"
         | 
| 342 342 | 
             
                          confirm-button-text="删除"
         | 
| 343 343 | 
             
                          confirm-button-type="danger"
         | 
| 344 344 | 
             
                          @confirm="handleEventDialogDelete(item, index)"
         | 
| @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            <template>
         | 
| 2 | 
            -
              <div class=" | 
| 2 | 
            +
              <div class="widgetForm" ref="formContainer">
         | 
| 3 3 | 
             
                <th-empty
         | 
| 4 4 | 
             
                  v-if="data.list.length == 0"
         | 
| 5 5 | 
             
                  class="form-empty"
         | 
| @@ -21,9 +21,9 @@ | |
| 21 21 | 
             
                    v-model="data.list"
         | 
| 22 22 | 
             
                    v-bind="{
         | 
| 23 23 | 
             
                      group: 'people',
         | 
| 24 | 
            -
                      ghostClass: 'ghost',
         | 
| 25 24 | 
             
                      animation: 200,
         | 
| 26 | 
            -
                      handle: '.drag-widget'
         | 
| 25 | 
            +
                      handle: '.drag-widget',
         | 
| 26 | 
            +
                      ghostClass: 'draggable-ghost'
         | 
| 27 27 | 
             
                    }"
         | 
| 28 28 | 
             
                    @add="handleWidgetAdd"
         | 
| 29 29 | 
             
                  >
         | 
| @@ -117,11 +117,11 @@ export default { | |
| 117 117 | 
             
            </script>
         | 
| 118 118 |  | 
| 119 119 | 
             
            <style lang="scss" scoped>
         | 
| 120 | 
            -
            . | 
| 120 | 
            +
            .widgetForm {
         | 
| 121 121 | 
             
              position: relative;
         | 
| 122 122 | 
             
              width: 100%;
         | 
| 123 123 | 
             
              height: calc(100% - 45px);
         | 
| 124 | 
            -
              overflow-y:  | 
| 124 | 
            +
              overflow-y: overlay;
         | 
| 125 125 |  | 
| 126 126 | 
             
              .form-empty {
         | 
| 127 127 | 
             
                position: absolute;
         | 
| @@ -136,5 +136,11 @@ export default { | |
| 136 136 | 
             
                  font-size: 20px;
         | 
| 137 137 | 
             
                }
         | 
| 138 138 | 
             
              }
         | 
| 139 | 
            +
              .draggable {
         | 
| 140 | 
            +
                height: 100%;
         | 
| 141 | 
            +
                .draggable-list {
         | 
| 142 | 
            +
                  min-height: 100%;
         | 
| 143 | 
            +
                }
         | 
| 144 | 
            +
              }
         | 
| 139 145 | 
             
            }
         | 
| 140 146 | 
             
            </style>
         | 
| @@ -2,14 +2,14 @@ | |
| 2 2 | 
             
              <el-form-item
         | 
| 3 3 | 
             
                class="widgetFormItem"
         | 
| 4 4 | 
             
                :class="{
         | 
| 5 | 
            -
                   | 
| 6 | 
            -
                  isRequired: widget.options.required,
         | 
| 5 | 
            +
                  isActive: selectWidget.model == widget.model,
         | 
| 7 6 | 
             
                  isLayout: layoutElements.includes(widget.type),
         | 
| 8 7 | 
             
                  [`widget-form-list-${widget.type}`]: true,
         | 
| 9 8 | 
             
                  [widget.model]: true
         | 
| 10 9 | 
             
                }"
         | 
| 11 10 | 
             
                :label="widget.options.hideLabel ? '' : widget.name"
         | 
| 12 11 | 
             
                :label-width="labelWidth"
         | 
| 12 | 
            +
                :required="widget.options.required"
         | 
| 13 13 | 
             
                :ref="widget.model"
         | 
| 14 14 | 
             
                @click.native.stop="selectWidget = widget"
         | 
| 15 15 | 
             
              >
         | 
| @@ -30,8 +30,15 @@ | |
| 30 30 | 
             
                  }"
         | 
| 31 31 | 
             
                >
         | 
| 32 32 | 
             
                  <div class="actions">
         | 
| 33 | 
            -
                    < | 
| 34 | 
            -
             | 
| 33 | 
            +
                    <div class="clone">
         | 
| 34 | 
            +
                      <i
         | 
| 35 | 
            +
                        class="iconfont icon-icon_clone"
         | 
| 36 | 
            +
                        @click.stop="handleWidgetClone"
         | 
| 37 | 
            +
                      ></i>
         | 
| 38 | 
            +
                    </div>
         | 
| 39 | 
            +
                    <div class="trash">
         | 
| 40 | 
            +
                      <i class="iconfont icon-trash" @click.stop="handleWidgetDelete"></i>
         | 
| 41 | 
            +
                    </div>
         | 
| 35 42 | 
             
                  </div>
         | 
| 36 43 |  | 
| 37 44 | 
             
                  <div class="drag">
         | 
| 
            File without changes
         | 
| @@ -480,8 +480,8 @@ export default { | |
| 480 480 | 
             
                        });
         | 
| 481 481 | 
             
                      } else if (item.type === "table" || item.type === "tableH5") {
         | 
| 482 482 | 
             
                        initList(item.options.columns);
         | 
| 483 | 
            -
                      } else if (item.options.remote || item.options. | 
| 484 | 
            -
                        fieldsApi[item.model] = item.options. | 
| 483 | 
            +
                      } else if (item.options.remote?.open || item.options.remote?.api) {
         | 
| 484 | 
            +
                        fieldsApi[item.model] = item.options.remote.api;
         | 
| 485 485 | 
             
                      }
         | 
| 486 486 | 
             
                    }
         | 
| 487 487 | 
             
                  };
         |