import { hiprint } from "vue-plugin-hiprint";

export default function (options) {
  const addElementTypes = function (context) {
    // 移除 旧的 customModule "元素"类型, 以避免重复
    context.removePrintElementTypes("customModule"); // 这里不可用defaultModule，以为已经被插件占用了，如果用了，会导致与默认的provider冲突
    // 添加 customModule "元素"类型
    context.addPrintElementTypes("customModule", [
      // 如果使用 hiprint.PrintElementTypeManager.build('.hiprintEpContainer2', "customModule") 这里会渲染这个 "常规" 分组名称
      new hiprint.PrintElementTypeGroup("常规", [
        {
          tid: "customModule.beerName", // 唯一 key
          type: "text", // 元素类型
          title: "产品名称", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "产品名称",
            field: "beerName",
            testData: "小麦啤酒",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.materials", // 唯一 key
          type: "text", // 元素类型
          title: "原料/辅料", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "原料/辅料",
            field: "materials",
            testData: "大麦",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.netContent", // 唯一 key
          type: "text", // 元素类型
          title: "净含量", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "净含量",
            field: "netContent",
            testData: "20L",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },

        {
          tid: "customModule.beerAbv", // 唯一 key
          type: "text", // 元素类型
          title: "酒精度", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "酒精度",
            field: "beerAbv",
            testData: "≥4.3%vol",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.beerIbus", // 唯一 key
          type: "text", // 元素类型
          title: "苦度", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "苦度",
            field: "beerIbus",
            testData: "≥ 25",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.beerOg", // 唯一 key
          type: "text", // 元素类型
          title: "原麦汁浓度", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "原麦汁浓度",
            field: "beerOg",
            testData: "≥ 12P",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.shelfLife", // 唯一 key
          type: "text", // 元素类型
          title: "保质期", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "保质期",
            field: "shelfLife",
            testData: "12个月",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.productionDate", // 唯一 key
          type: "text", // 元素类型
          title: "生产日期", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "生产日期",
            field: "productionDate",
            testData: "2025-01-01",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.batchSn", // 唯一 key
          type: "text", // 元素类型
          title: "批次号", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "批次号",
            field: "batchSn",
            testData: "2025010101",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.executeStandard", // 唯一 key
          type: "text", // 元素类型
          title: "执行标准", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "执行标准",
            field: "executeStandard",
            testData: "GB/123123",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.qualityLevel", // 唯一 key
          type: "text", // 元素类型
          title: "质量等级", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "质量等级",
            field: "qualityLevel",
            testData: "优",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.storageMethod", // 唯一 key
          type: "text", // 元素类型
          title: "存储方式", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "存储方式",
            field: "storageMethod",
            testData: "冷藏储存",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.manufacturer", // 唯一 key
          type: "text", // 元素类型
          title: "生产商", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "生产商",
            field: "manufacturer",
            testData: "内蒙古",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.distributor", // 唯一 key
          type: "text", // 元素类型
          title: "委托生产商", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "委托生产商",
            field: "distributor",
            testData: "内蒙古",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.productionAddress", // 唯一 key
          type: "text", // 元素类型
          title: "生产地址", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "生产地址",
            field: "productionAddress",
            testData: "内蒙古",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.companyName", // 唯一 key
          type: "text", // 元素类型
          title: "公司地址", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "公司地址",
            field: "companyName",
            testData: "内蒙古",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.contactPerson", // 唯一 key
          type: "text", // 元素类型
          title: "产地", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "产地",
            field: "contactPerson",
            testData: "内蒙古",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.contactPhone", // 唯一 key
          type: "text", // 元素类型
          title: "联系电话", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "联系电话",
            field: "contactPhone",
            testData: "13888888888",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.remarks", // 唯一 key
          type: "text", // 元素类型
          title: "注意事项", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "注意事项",
            field: "remarks",
            testData: "请勿撞击！",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.licenseNumber", // 唯一 key
          type: "text", // 元素类型
          title: "生产许可证编号", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "生产许可证编号",
            field: "licenseNumber",
            testData: "SC1234567890",
            fontSize: 12,
            width: 200,
            height: 14,
          },
        },
        {
          tid: "customModule.numberInChina", // 唯一 key
          type: "text", // 元素类型
          title: "境外生产企业在华注册编号", // 这里和 options 中的 title 一样。"拖拽时就显示" 优先级高于 options 的, "无法彻底删除"
          // field: 'text' // 这里和 options 中的 field 一样。优先级高于 options 的, "无法彻底删除"
          // data: "1111", // 这里和 options 中的 testData 一样。会有冲突, "无法彻底删除"
          options: {
            title: "境外生产企业在华注册编号",
            field: "numberInChina",
            testData: "000000001",
            fontSize: 12,
            width: 300,
            height: 14,
          },
        },
      ]),
    ]);
  };
  return {
    addElementTypes: addElementTypes,
  };
}
