4.2.4 框架之网络请求-HttpClient

oinone提供统一的网络请求底座,基于graphql二次封装

一、初始化

import { HttpClient } from '@kunlun/dependencies';
const http = HttpClient.getInstance();
http.setMiddleware() // 必须设置,请求回调。具体查看文章https://shushi.yuque.com/yqitvf/oinone/vwo80g
http.setBaseURL() // 必须设置,后端请求的路径

图4-2-4-1 初始化代码示例

二、HttpClient详细介绍

获取实例

import { HttpClient } from '@kunlun/dependencies';
const http = HttpClient.getInstance();

图4-2-4-2 获取实例

接口地址

import { HttpClient } from '@kunlun/dependencies';
const http = HttpClient.getInstance();
http.setBaseURL('接口地址');
http.getBaseURL(); // 获取接口地址

图4-2-4-3 接口地址

请求头

import { HttpClient } from '@kunlun/dependencies';
const http = HttpClient.getInstance();
http.setHeader({key: value});

图4-2-4-4 请求头

variables

import { HttpClient } from '@kunlun/dependencies';
const http = HttpClient.getInstance();
http.setExtendVariables((moduleName: string) => {
 return customFuntion();

});

图4-2-4-5 variables

回调

import { HttpClient } from '@kunlun/dependencies';
const http = HttpClient.getInstance();
http.setMiddleware([middleware]);

图4-2-4-6 回调

业务使用-query

private http = HttpClient.getInstance();
private getTestQuery = async () => {
 const query = `gql str`;
 const result = await this.http.query('module name', query);
 console.log(result)
 return result.data[`xx`]['xx']; // 返回的接口,打印出result对象层次返回
};

图4-2-4-7 业务使用-query

业务使用-mutate

private http = HttpClient.getInstance();

private getTestMutate = async () => {
  const mutation = `gql str`;

  const result = await this.http.mutate('module name', mutation);
    console.log(result)
  return result.data[`xx`]['xx']; // 返回的接口,打印出result对象层次返回
};

图4-2-4-8 业务使用-mutate

三、如何使用HttpClient

初始化

在项目目录src/main.ts下初始化httpClient

初始化必须要做的事:

  • 设置服务接口链接

  • 设置接口请求回调

业务实战

前文说到自定义新增宠物表单,让我们在这个基础上加入我们的httpClient;

第一步新增service.ts

image.png

图4-2-4-8 新增service.ts

service.ts

import { HttpClient } from '@kunlun/dependencies';

const addPetMutate = async (modelName, data) => {
    const http = HttpClient.getInstance();
    const mutateGql = `mutation{
    petMutation{
      addPet(data:${data})
       {
        id
      }
    }
  }`;

    const result = await http.mutate('pet', mutateGql);
    return (result as any).data['petMutation']['addPet'];
};

export { addPetMutate };

图4-2-4-9 service.ts

第二步业务中使用

import { constructOne, queryOne, SPI, ViewWidget, Widget, IModel, getModelByUrl, getModel, getIdByUrl, FormWidgetV3, CustomWidget, CallChaining } from '@kunlun/dependencies';
import PetFormView from './PetFormView.vue';
// 引入
import { addPetMutate } from './service';

@SPI.ClassFactory(CustomWidget.Token({ widget: 'PetForm' }))
export class PetFormViewWidget extends FormWidgetV3 {
  public initialize(props) {
    super.initialize(props);
    this.setComponent(PetFormView);
    return this;
  }

  /**
   * 数据提交
   * @protected
   */
  @Widget.Reactive()
  @Widget.Inject()
  protected callChaining: CallChaining | undefined;

  private modelInstance!: IModel;

  /**
   * 重要!!!!
   * 当字段改变时修改formData
   * */
  @Widget.Method()
  public onFieldChange(fieldName: string, value) {
    this.setDataByKey(fieldName, value);
  }

  /**
   * 表单编辑时查询数据
   * */
  public async fetchData(content: Record<string, unknown>[] = [], options: Record<string, unknown> = {}, variables: Record<string, unknown> = {}) {
    this.setBusy(true);
    const context: typeof options = { sourceModel: this.modelInstance.model, ...options };
    const fields = this.modelInstance?.modelFields;
    try {
      const id = getIdByUrl();
      const data = (await queryOne(this.modelInstance.model, (content[0] || { id }) as Record<string, string>, fields, variables, context)) as Record<string, unknown>;

      this.loadData(data);
      this.setBusy(false);
      return data;
    } catch (e) {
      console.error(e);
    } finally {
      this.setBusy(false);
    }
  }

  /**
   * 新增数据时获取表单默认值
   * */
  @Widget.Method()
  public async constructData(content: Record<string, unknown>[] = [], options: Record<string, unknown> = {}, variables: Record<string, unknown> = {}) {
    this.setBusy(true);
    const context: typeof options = { sourceModel: this.modelInstance.model, ...options };
    const fields = this.modelInstance.modelFields;
    const reqData = content[0] || {};
    const data = await constructOne(this.modelInstance!.model, reqData, fields, variables, context);
    return data as Record<string, unknown>;
  }

  @Widget.Method()
  private async reloadData() {
    const data = await this.constructData();
    // 覆盖formData
    this.setData(data);
  }

  @Widget.Method()
  public onChange(name, value) {
    this.formData[name] = value;
  }

  protected async mounted() {
    super.mounted();
    const modelModel = getModelByUrl();
    this.modelInstance = await getModel(modelModel);
    this.fetchData();
    // 数据提交钩子函数!!!
    this.callChaining?.callBefore(() => {
      return this.formData;
    });
  }

  @Widget.Method()
  private async addPet() {
    // 调用
    const data = await addPetMutate('petModule', this.getData());
  }
}

图4-2-4-10 业务中使用

Oinone社区 作者:史, 昂原创文章,如若转载,请注明出处:https://doc.oinone.top/oio4/9305.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
史, 昂的头像史, 昂数式管理员
上一篇 2024年5月23日 am8:33
下一篇 2024年5月23日 am8:35

相关推荐

  • 7.3.1 去除资源上传大小限制

    场景说明 全员营销标准软件产品对于视频上传限制为35M,该大小适合管理短视频类的素材。该软件产品的使用方为营销部门,营销部门不仅管理短视频素材,也负责管理电商商品的视频素材、公司团建的素材等,且不少素材的内存都远大于35M。 业务需求:将全员营销中的内容中心扩展成营销部门的内容统一管理中心,管理营销部门工作范围内的所有内容素材,且不受35M的限制。 实战训练 新增一个资源管理页面,替换原来的资源管理,并构建新的上传行为。 Step1 通过界面设计器,设计出必要管理页面 进入界面设计器,应用选择全员营销,模型通过搜索【素材】选择【Gemini素材】,点击添加页面下的直接创建 设置页面标题、模型(自动带上可切换)、业务类型(运营管理后续会扩展其他类型)、视图类型(表格)后点击确认按钮进入【内容中心-新素材管理】设计页面 进入页面设计器,对【内容中心-新素材管理】表格页面进行设计(更多细节介绍,请参考界面设计产品使用手册) a. 左侧为物料区:分为组件、模型。 ⅰ. 【组件】选项卡下为通用物料区,我们可以为页面增加对应布局、字段(如同在模型设计器增加字段)、动作、数据、多媒体等等 ⅱ. 【模型】选项卡下为页面对应模型的自定义字段、系统字段、以及模型已有动作 b. 中间是设计区域 c. 右侧为属性面板,在设计区域选择中组件会显示对应组件的可配置参数 在左侧【模型】选项卡下,分别把系统字段中的【素材名称】、【素材链接】、【素材来源】、【素材类型】、【更新时间】、【创建时间】等字段拖入设计区域的表格区 设置字段在表格中的展示组件,在设计区域切换【素材链接】展示组件为【超链接】 设置字段在表格中的展示组件的属性,在设计区域选中【素材名称】,在右侧属性面板中设置【标题】为【内容名称】 设置字段在表格中的展示组件的属性,在设计区域选中【创建时间】,在右侧属性面板中设置【标题】为【上传时间】 在左侧【模型】选项卡下,把动作分类下的提交类型【下载】和【删除】动作拖入中间设计区的动作区,并选择【删除】按钮,在右侧属性面板中设置【按钮样式】为【次要按钮】 在左侧【组件】选项卡下,把动作分类下的【跳转动作】拖入中间设计区的动作区,并在右侧属性面板中设置动作名称为【上传素材】,数据控制类型为【不进行数据处理】,打开方式为【弹窗打开】,【弹出内容】为【创建新页面】,【弹窗模型】通过搜索【素材】选择【Gemini素材代理-上传】,并点击保存 设计区选中【上传素材】按钮,点击【打开弹窗】设计【素材上传】的操作页面,此时会发现左侧【模型】选项卡下的当前模型切换成了【Gemini素材代理-上传】 a. 分别把系统字段中的【上传素材链接列表】拖入【Gemini素材代理-上传】的弹窗页面设计区。 b. 选中【上传素材链接列表】切换展示组件为【文件上传】 c. 选中【上传素材链接列表】并在右侧属性面板中 ⅰ. 设置【校验】分组下,设置【最大上传文件体积】为空,即不设置 ⅱ. 设置【校验】分组下,设置【限制上传文件类型】为打开,并勾选【图片】和【视频】 ⅲ. 设置【交互】分组下的宽度属性为【1】 在左侧【模型】选项卡下,把动作分类下的提交类型【上传素材】动作拖入中间设计区的动作区 在左侧【组件】选项卡下,把动作分类下的【客户端动作】类型拖入中间设计区的动作区,选中并在右侧属性面板中设置【动作名称】为返回,设置【客户端行为】为【关闭弹窗】,点击【保存】按钮来完成动作的基础设置 选中【返回】按钮、并在右侧属性面板中设置【按钮样式】为【次要按钮】 关闭弹窗返回主模型设计区 点击右上角【显示母版】进入页面最终展示形式,点击添加菜单项,并在输入框中输入【新内容中心】 点击菜单右侧设置图标,选择【绑定已有页面】,进行菜单与页面的绑定操作 在绑定页面中,模型选择【Gemini素材】,视图选择【内容中心-新素材管理】,点击确认按钮提交 最后别忘了点击右上角【发布】按钮对【内容中心-新素材管理】表格页面进行发布,回到界面设计器首页查看刚刚建好的表格页面 Step2 测试完成以后隐藏原【内容中心】菜单 进入【界面设计器】管理页面,通过点击【设计图标】进入任一页面的设计页面 点击右上角【显示母版】进入页面最终展示形式,找菜单【内容中心】点击菜单右侧设置图标,选择【隐藏菜单】,因为【内容中心】菜单是标准产品自带菜单,只能进行隐藏操作,无法进行如绑定页面和调整菜单顺序 Step3 回到全员营销应用,刷新页面体验效果 整个实战训练就到此结束,更多细节请参阅具体的产品使用手册

    2024年5月23日
    1.0K00
  • 5.6 商业支撑之商品域

    一、基础介绍 当业务在线化后,用于内部管理的产品主数据,叠加一堆销售属性变成了商品被推倒了前台,成为导购链路中最最重要的信息载体。看似最基础和最简单的商品模块也有很多门道。主要集中在以下几个方面: 商品的属性如何管理、呈现、参与导购(类目、搜索的过滤条件) 如何解决固定不变的内部管理需求与基于销售特性长期变化的运营需求之间的矛盾 在多渠道情况渠道商品,如何映射到实际sku进行履约 二、模型介绍 图5-6-1 模型介绍 类目属性,解决“商品的属性如何管理、呈现、参与导购(类目、搜索的过滤条件)” 前后台类目设计,解决“如何解决固定不变的内部管理需求与基于销售特性长期变化的运营需求之间的矛盾” 销售Sku和库存Sku设计,解决“在多渠道情况渠道商品,如何映射到实际sku进行履约” 要把这些问题搞清楚,得先把名词统一下: 领域 名称 oinone的定义 说明 举例 平台运营视角 Spu Product –>Spu2.1.9 –> 3.0.0 SPU(Standard Product Unit):标准化产品单元。SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性 iPhone X可以确定一个产品 后台类目 后台类目(Category) 商品分类分级管理,以及规范该类目下公共属性可以分为普通属性、销售属性 比如类目:3c数码/手机销售属性:内存大小、颜色等普通属性:分辨率 前台类目 前台类目(FrontCategory) 平台导购类目 通过前台类目关联后台类目或后台类目属性,用于满足运营需求 大体上SPU处于最上层、Item属于下一级,而SKU属于最低一层。SPU是平台层面,Item是商家层面,SKU是商家的Item确定销售属性SPU非必须,在平台类交易中,平台方为了规范商家发布商品信息,进行统一运营时需要 商家销售视角 Item 渠道商品(Item) 简单来说是:SPU加上归属商家、以及商家自有的价格与描述 商家A的iPhone X Sku 销售Sku(SaleSku) SKU=Stock Keeping Unit(库存保有单位)。是对每一个产品和服务的唯一标示符,该系统的使用SKU的值根于数据管理,使公司能够跟踪系统,如仓库和零售商店或产品的库存情况。 iPhone X 64G 银色 则是一个SKU。 店铺类目 ShopCategory 商家店铺导购类目 在平台类电商,商家都会有自己独立的店铺主页,商家类目跟前台类目作用类似,只是局限影响范围为商家店铺内 销售SKU中会有一个InvSkuCode来关联InventorySku,比如:品牌上在不同渠道(淘宝、京东、自建电商)中会有不同的销售SKU,在从渠道同步销售SKU会根据外部code 商家管理视角 产品或库存Sku InventorySku 跟销售领域的sku的定义类似,但销售领域是为了规范购买行为,这里规范企业内部管理。 iPhone X 64G 银色 组合Sku InventorySkuComposition 空调有内外机组合而成,这就是一个组合sku 产品分类 ProductKind 企业内部管理划分 商品系列 ItemSeries 指互相关联或相似的产品,是按照一定的分类标准对企业生产经营的全部产品进行划分的结果。一个产品系列内往往包括多个产品项目。产品系列的划分标准有产品功能、消费上的连带性、面向的顾客群、分销渠道、价格范围等 存货类别 StorageKind 为了反映存货的组成内容,正确计算产品的生产成本以及销售成本,会计上必须对存货进行科学地分类,按存货的不同类别进行核算 表5-6-1 各领域名称说明

    2024年5月23日
    1.6K00
  • 图表

    1. 业务场景 进入数据可视化后,默认处于图表列表页面,点击报表/数据大屏图标则可切换至对应列表;支持从模型获取数据后,过滤数据后创建可视化图表,维护的图表信息可以被报表、数据大屏、以及业务系统引用。 2. 操作流程 1)进入数据可视化,进入图表tab,维护分组信息; 2)在二级分组名称后点击“+”【添加图表】,对图表进行编辑设计; 3)创建完成后可以【编辑】图表; 4)图表完善后,可以点击【发布】图表,则图表此时可以被引用; 5)如果图表有更新,则可以点击【更新发布】,使业务系统引用对图表变为最新的图表信息; 6)如果图表数据不再可以公开使用,则需要通过【隐藏】功能将图表的引用权限收起,此时报表、数据大屏、前端业务系统均不可再引用该图表,但不影响已被引用的图表; 7)隐藏后可以【取消隐藏】,图表恢复隐藏前的状态和功能,可以被引用。 3. 操作流程图解 3.1 创建分组 1)操作流程:创建分组 2)操作路径:数据可视化-图表-创建分组 3)点击搜索框后的「+」创建一级分组,输入一级分组名称后,点击一级分组后的「+」创建二级分组,输入二级分组名称后,此时分组创建完成,可以在二级分组下创建图表 3.2 编辑分组名称 1)操作流程:选择分组-编辑分组名称 2)操作路径:数据可视化-图表-编辑分组名称 3)鼠标移动至需要修改的分组上,点击出现的「编辑图标」,可以修改分组名称,修改后分组名称实时更新 3.3 删除分组 1)操作流程:选择分组-删除分组 2)操作路径:数据可视化-图表-删除分组 3)鼠标移动至需要删除的分组上,当分组下无图表时出现「删除图标」,可以点击图标后删除分组,删除一级分组时对应所有的二级分组也会被删除,删除后消失,只有分组下没有图表的分组才能直接删除成功 3.4 创建图表 1)操作流程:选择二级分组-创建图表 2)操作路径:数据可视化-图表-二级分组-创建图表 3)鼠标移动至需要创建图表的二级分组上,出现「+」,点击图标后弹出“创建图表”弹窗,需要填写图表标题、模型、方法; a图表标题:最大支持20个字,支持汉字、数字、大小写字母、-;同个一级分组下不允许重复; b模型:需要选择来源数据对应的模型; c方法:选择模型后需要选择方法,方法是用来提取模型数据的逻辑; 4)选择成功后进入图表设计页面 3.5 编辑图表 1)操作流程:选择图表-编辑图表 2)操作路径:数据可视化-图表-二级分组-图表-编辑图表 3)只能编辑未发布或者已发布但没有被隐藏的图表,且存在三种编辑情况 a第一种:点击图表标题后的编辑图标,仅能编辑图表标题; b第二种:点击图表中的图表标题、图表副标题、图表描述后的编辑图标,可以直接编辑图表标题、图表副标题、图表描述; c第三种:点击【编辑】按钮,进入图表设计页面,带出已有的数据字段、样式、图表内容,编辑时的规则与创建时一致,编辑后可以点击保存进行更新,如果未保存直接返回,则编辑无效; 4)编辑后实时生效,图表信息保持展示最新效果 3.6 删除图表 1)操作流程:选择图表-删除图表 2)操作路径:数据可视化-图表-二级分组-图表-删除图表 3)未发布或者已发布但没有被隐藏的图表,并且没被前端或者报表引用,才展示图表菜单名称后的删除图标 4)删除后图表消失 3.7 复制 1)操作流程:选择图表-复制图表 2)操作路径:数据可视化-图表-二级分组-图表-复制图表 3)点击【复制】按钮,复制成功,名称为copy of 原图表标题,展示在原图表分组的最后一个 3.8 发布 1)操作流程:选择图表-发布图表 2)操作路径:数据可视化-图表-二级分组-图表-发布 3)选择单个未发布且没有被隐藏的图表,点击【发布】按钮,图表发布后可以被前端引用,图表状态变为已发布,展示最近发布时间; 4)如果图表发布后有更新内容,会展示的更新类型:更新图表信息/更新图表内容 3.9 查看最近一次发布的版本 1)操作流程:选择图表-查看最近一次发布的版本 2)操作路径:数据可视化-图表-二级分组-图表-查看最近一次发布的版本 3)当图表发布后有更新,在最近发布时间左侧展示【查看】,在最近发布时间下展示更新的类型,点击查看可以查看最近发布的版本 3.10 更新发布 1)操作流程:选择图表-更新发布图表 2)操作路径:数据可视化-图表-二级分组-图表-更新发布图表 3)选择单个已发布且没有被隐藏的图表,并且该图表在上次发布后有所更新,可以点击【更新发布】按钮,将最新的图表内容发布至业务系统,业务系统引用的图表为最新内容; 4)如果更新了内容,但未点击更新发布,则前端业务系统查看的图表仍为最近发布的图表 3.11 隐藏 1)操作流程:选择图表-隐藏图表 2)操作路径:数据可视化-图表-二级分组-图表-隐藏图表 3)图表默认不隐藏,点击图表左侧的是否隐藏可以切换,切换是否隐藏=是 a未发布的图表,较隐藏前,不可以操作【发布】,可以【取消隐藏】; b已发布的图表,较隐藏前,只能操作【导出图片、导出excel、取消隐藏】; 4)隐藏后的图表不可以被引用,但不影响已经被引用的数据 3.12 取消隐藏 1)操作流程:选择图表-取消隐藏图表 2)操作路径:数据可视化-图表-二级分组-图表-取消隐藏图表 3)隐藏后的图表可以取消隐藏,切换是否隐藏=否,取消隐藏后,图表恢复隐藏前的状态和功能,可以被引用 3.13 查看引用 1)流程:选择图表-查看被哪些报表/数据大屏/页面引用 2)操作路径:数据可视化-图表-二级分组-图表-更多-查看引用 3)选择具体的图表,查看当前图表被引用的所有信息 3.14 不允许别人编辑 1)流程:选择图表-不允许别人编辑 2)操作路径:数据可视化-图表-二级分组-图表-更多-不允许别人编辑 3)选择自己创建的图表,对图表是否允许其他人编辑进行设置;如果设置为不允许,则其他人无法编辑图表 3.15 不允许别人引用 1)流程:选择图表-更多-不允许别人引用 2)操作路径:数据可视化-图表-二级分组-图表-更多-不允许别人引用 3)选择自己创建的图表,对图表是否允许他人引用进行设置;如果设置为不允许,则其他人无法在报表、数据大屏、界面设计器引用到该图表 3.16 导出图片 1)操作流程:选择图表-导出图片 2)操作路径:数据可视化-图表-二级分组-图表-图表导出图片 3)选择图表后,点击【导出图片】按钮可以将当前图表导出为图片 3.17 导出EXCEL 1)操作流程:选择图表-导出EXCEL 2)操作路径:数据可视化-图表-二级分组-图表-图表导出EXCEL 3)选择图表后,点击【导出EXCEL】按钮可以将当前图表导出为EXCEL 4. 图表设计页面 4.1 修改模型、方法 1)操作流程:创建图表-进入图表设计页面 2)操作路径:数据可视化-图表-二级分组-图表-创建图表 3)在“创建图表”弹窗中选择了模型和方法后,可以在进入图表设计页面修改 4)图表设计页面,点击模型后的设置图标后,右侧弹出弹窗,可以修改模型和获取模型数据的方法,需要注意的是:修改模型后,图表信息会清空 4.2 维度 1)操作流程:创建图表-进入图表设计页面 2)操作路径:数据可视化-图表-二级分组-图表-创建图表 3)维度字段:布尔、文本、枚举、日期时间、年份、日期、时间、用户ID、手机号、邮箱 4.2.1 维度的添加 1)图表设计页面,点击维度后的「+」,右侧弹出弹窗,展示所有的维度字段,可以选择对应的字段进行分析 a拖动字段进入维度列表 b点击字段,则字段进入维度列表 2)不同的图表支持的维度个数不同,当维度字段个数已达上限后不可再添加;此时拖动新字段到旧字段上后,新字段会代替旧字段进行数据分析,且会保留相同的样式 4.2.2 维度的删除 1)维度选择后,鼠标放到维度字段上,显示「删除图标」 2)点击则字段删除成功,维度字段的效果消失 4.2.3 修改维度展示名称 1)维度选择后,鼠标放到维度字段上,显示「设置图标」 2)点击后下方弹出「修改展示名称」的设置选项,点击后右侧出现修改展示名称的弹窗,可以进行修改,在输入框下方可以查看原字段名称 4.3 数值 1)操作流程:创建图表-进入图表设计页面 2)操作路径:数据可视化-图表-二级分组-图表-创建图表 3)数值字段:整数、浮点数、金额、(连续的日期时间、年份、日期、时间) 4.3.1 数值的添加 1)图表设计页面,点击数值后的「+」,右侧弹出弹窗,展示所有的数值字段,可以选择对应的字段进行分析 a拖动字段进入数值列表 b点击字段,则字段进入数值列表 2)不同的图表支持的数值个数不同,当数值字段个数已达上限后不可再添加;此时拖动新字段到旧字段上后,新字段会代替旧字段进行数据分析,且会保留相同的样式 3)拖入的数值字段中,可以同时拖入整数、浮点数、金额;但是拖入字段类型=年份/日期时间/日期/时间后,不可以拖入其他字段类型的数值字段 4)饼图、漏斗图不可以在数值列表中拖入字段类型=年份/日期时间/日期/时间的字段 4.3.2 数值的删除 1)数值选择后,鼠标放到数值字段上,显示「删除图标」 2)点击则字段删除成功,数值字段的效果消失 4.3.3 修改数值展示名称 1)维度选择后,鼠标放到数值字段上,显示「设置图标」 2)点击后下方弹出可以设置的选项,点击「修改展示名称」选项,点击后右侧出现修改展示名称的弹窗,可以进行修改,在输入框下方可以查看原字段名称 4.3.4 修改数值聚合方式 1)维度选择后,鼠标放到数值字段上,显示「设置图标」 2)点击后下方弹出可以设置的选项,点击「聚合方式」选项,点击后右侧出现修改展示名称的弹窗,可以进行修改 3)默认是求和,可以修改为「无处理、最小值、最大值、平均值、计数」 a求和:将维度值对应的所有数值进行加和 b无处理:取维度值对应数值中的最近一条不为空的值 c最小值:取维度值对应数值中的最小值 d最大值:取维度值对应数值中的最大值 e平均值:取维度值对应数值的平均值 f计数:计算维度值对应的数值个数 4)修改后实时更新图表信息,会影响辅助线取数值字段时的值 4.3.5 修改数值数据格式 1)维度选择后,鼠标放到数值字段上,显示「设置图标」 2)点击后下方弹出可以设置的选项,点击「数据格式」选项,点击后右侧出现修改数据格式的弹窗,可以进行修改 3)可以设置字段的数据类型、单位;…

    2024年6月20日
    1.5K00
  • 4.2.8 自定义组件与设计器结合(新)

    界面设计器组件管理页面添加组件 进入组件的元件管理页面 点击“添加元件” 设计元件的属性 这里以是否“显示清除按钮”作为自定义属性从左侧拖入到中间设计区域,然后发布 点击“返回组件” 鼠标悬浮到卡片的更多按钮的图标,弹出下拉弹出“低无一体”的按钮 在弹窗内点击“生成SDK”的按钮 生成完成后,点击“下载模板工程” 解压模板工程kunlun-sdk.zip 解压后先查看README.MD,了解一下工程运行要点,可以先运行 npm i 安装依赖 再看kunlun-plugin目录下已经有生成好的组件对应的ts和vue文件 下面在vue文件内增加自定义代码,可以运行 npm run dev 在开发模式下调试看效果 <template> <div class="my-form-string-input"> <oio-input :value="realValue" @update:value="change" > <template #prepend>MyPrepend</template> </oio-input> </div> </template> <script lang="ts"> import { defineComponent, ref } from 'vue'; import { OioInput } from '@kunlun/vue-ui-antd'; export default defineComponent({ name: 'customField1', components: { OioInput }, props: { value: { type: String }, change: { type: Function }, }, setup(props) { const realValue = ref<string | null | undefined>(props.value); return { realValue }; } }); </script> <style lang="scss"> .my-form-string-input { border: 1px solid red; } </style> 确定改好代码后运行 npm run build,生成上传所需的js和css文件 可以看到 kunlun-plugin目录下多出了dist目录,我们需要的是 kunlun-plugin.umd.js 和 kunlun-plugin.css 这2个文件 再次回到组件的“低无一体”管理弹窗页面,上传上面生成的js和css文件,并点击“确定”保存,到这里我们的组件就新增完成了。 下面我们再到页面设计器的页面中使用上面设计的组件(这里的表单页面是提前准备好的,这里就不介绍如何新建表单页面了) 将左侧组件库拉直最底部,可以看到刚刚新建的组件,将其拖至中间设计区域,我们可以看到自定义组件的展示结果跟刚刚的代码是对应上的(ps: 如果样式未生效,请刷新页面查看,因为刚刚上传的js和css文件在页面初始加载的时候才会导入进来,刚刚上传的动作未导入新上传的代码文件),再次点击设计区域中的自定义组件,可以看到右侧属性设置面板也出现了元件设计时拖入的属性。 最后再去运行时的页面查看效果,与代码逻辑一致!

    2024年5月23日
    1.3K00

Leave a Reply

登录后才能评论