【sgCreateTableColumn】自定义小工具:敏捷开发→自动化生成表格列html代码(表格列生成工具)[基于el-table-column]

简介: 【sgCreateTableColumn】自定义小工具:敏捷开发→自动化生成表格列html代码(表格列生成工具)[基于el-table-column]

特性

  1. 支持单列中文字段名自动生成拼音声母组成的列名
  2. 支持两列(中英文空格分隔开,不区分中英文字段名前后顺序,可以多个空格隔开,仅识别前两列空格分开的字符串)的方式之自动生成el-table-column代码片段
  3. 支持键值对描述字段英文名和字段中文名,生成el-table-column代码片段

sgCreateTableColumn源码

<template>
  <!-- 
前往https://blog.csdn.net/qq_37860634/article/details/136126479
查看使用说明
-->
  <div :class="$options.name">
    <div class="sg-head">表格列生成工具</div>
    <div class="sg-container">
      <div class="sg-start">
        <div style="margin-bottom: 10px">字段中文名</div>
        <div style="display: flex; margin-bottom: 10px">
          <el-select
            style="width: 150px"
            v-model="selectValue_type"
            @change="(d) => {}"
            :placeholder="`请选择数据内容类型`"
          >
            <el-option
              v-for="(select, index) in selectOptions_type"
              :key="index"
              :value="select.value"
              :label="select.label"
              :disabled="select.disabled"
            ></el-option>
          </el-select>
          <template v-if="selectValue_type == 2">
            <div style="display: flex; align-items: center; margin-left: 10px">
              <label style="margin-right: 5px">fieldName</label>
              <el-input
                style="width: 150px"
                ref="fieldName"
                v-model.trim="fieldNameValue"
                maxlength="20"
                :show-word-limit="false"
                :placeholder="`字段名`"
                @focus="$refs.fieldName.select()"
                clearable
              />
 
              <label style="margin-left: 10px; margin-right: 5px">keyName</label>
              <el-input
                style="width: 150px"
                ref="keyName"
                v-model.trim="keyNameValue"
                maxlength="20"
                :show-word-limit="false"
                :placeholder="`字段值名`"
                @focus="$refs.keyName.select()"
                clearable
              />
            </div>
          </template>
        </div>
        <el-input
          ref="textareaValue1"
          style="margin-bottom: 10px"
          type="textarea"
          :placeholder="
            this.selectOptions_type.find((v) => v.value == this.selectValue_type)
              .placeholder
          "
          v-model.trim="textareaValue1"
          show-word-limit
        />
 
        <el-button type="primary" @click="createResult">生成表格列</el-button>
      </div>
      <div class="sg-center">→</div>
 
      <div class="sg-end">
        <div style="margin-bottom: 10px">生成结果</div>
        <el-input
          style="margin-bottom: 10px; flex-grow: 1"
          type="textarea"
          :placeholder="`请复制结果`"
          v-model.trim="textareaValue2"
          show-word-limit
        />
 
        <el-button type="primary" @click="copyResult">复制</el-button>
      </div>
    </div>
  </div>
</template>
 
<script>
import pinyin from "@/js/pinyin";
export default {
  name: "sgCreateTableColumn",
  data() {
    return {
      selectOptions_type: [
        {
          value: 1,
          label: "文本",
          placeholder: `请粘贴字段中文名(或者:字段英文名+空格+字段中文名)`,
        },
        { value: 2, label: "json数据", placeholder: `请粘贴键值对描述json数组` },
      ],
 
      selectValue_type: 1,
 
      fieldNameValue: `fieldName`,
      keyNameValue: `fieldName_TEXT`,
 
      textareaValue1: "",
      textareaValue2: "",
    };
  },
  watch: {
    textareaValue1(newValue, oldValue) {
      newValue && this.createResult(newValue);
    },
  },
  methods: {
    createResult(d) {
      let r = [];
      switch (this.selectValue_type) {
        case 1:
          let texts = this.textareaValue1
            .split("\n")
            .map((v) => v.split("\t").join("").trim());
          texts = texts.filter((v, i, ar) => v !== ``);
 
          r = texts.map((v) => {
            let strings = v.replace(/\s+/g, ` `).split(` `); //用空格分隔开两列字段名
            let label = ``;
            let prop = ``;
            // 如果是多列内容
            if (strings.length > 1) {
              // 如果第一列的字符串是中文
              if (this.$g.checkEverything(`cn`, strings[0])) {
                label = strings[0];
                prop = strings[1];
              } else {
                label = strings[1];
                prop = strings[0];
              }
            } else {
              // 如果是单列内容
              prop = pinyin.getCamelChars(v);
              label = v;
            }
            let r = `<el-table-column prop="${prop}" label="${label}" show-overflow-tooltip />`;
            return r;
          });
 
          break;
        case 2:
          if (this.fieldNameValue && this.keyNameValue) {
          } else {
            return this.$message.error(`fieldName和keyName都要填写`);
          }
          if (this.$g.json.isJSON(this.textareaValue1)) {
            let arr = JSON.parse(this.textareaValue1);
 
            r = arr.map((v) => {
              let prop = v[this.fieldNameValue];
              let label = v[this.keyNameValue];
              let r = `<el-table-column prop="${prop}" label="${label}" show-overflow-tooltip />`;
              return r;
            });
          } else {
            return this.$message.error(`请输入正确的json格式的对象数组内容`);
          }
 
          break;
      }
 
      this.textareaValue2 = r.join("\n");
 
      this.copyResult(); //自动复制生成结果
    },
    copyResult(d) {
      this.$g.copy(this.textareaValue2, true);
      this.$nextTick(() => {
        this.$refs.textareaValue1.select();
      });
    },
  },
};
</script>
 
<style lang="scss" scoped>
.sgCreateTableColumn {
  width: 100%;
  height: 100%;
  position: absolute;
  box-sizing: border-box;
  padding: 20px;
 
  .sg-head {
    display: flex;
    align-items: center;
    font-size: 24px;
    font-weight: bold;
    color: #409eff;
    margin-bottom: 10px;
  }
 
  .sg-container {
    display: flex;
    flex-wrap: nowrap;
    height: calc(100vh - 70px);
 
    & > .sg-start {
      width: calc(50% - 20px);
      height: 100%;
      flex-shrink: 0;
      display: flex;
      flex-direction: column;
    }
 
    & > .sg-center {
      display: flex;
      justify-content: center;
      align-items: center;
      flex-grow: 1;
      margin: 0 10px;
      font-size: 24px;
      color: #409eff;
      font-weight: bold;
    }
 
    & > .sg-end {
      width: calc(50% - 20px);
      height: 100%;
      flex-shrink: 0;
      display: flex;
      flex-direction: column;
    }
 
    >>> .el-textarea {
      width: 100%;
      height: 100%;
      textarea {
        width: 100%;
        height: 100%;
        max-height: revert;
      }
    }
  }
}
</style>


相关文章
|
15天前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
2月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
66 3
|
8天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
79 17
Selenium:强大的 Web 自动化测试工具
|
14天前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
22天前
|
监控 安全 测试技术
在实施自动化和持续集成的过程中,如何确保代码的安全性和合规性
在自动化和持续集成中,确保代码安全与合规至关重要。措施包括集成自动化安全工具、执行自动化合规检查、进行代码质量与安全检测、评估开源代码安全、实施基础设施即代码的安全标准、采用多层防御策略、加强安全教育与文化建设、使用合规性检测工具及许可证合规分析等,共同提升代码安全性与合规水平。
|
1月前
利用html2canvas插件自定义生成名片信息并保存图片
这是一个利用html2canvas插件自定义生成名片信息并保存图片,自定义上传头像,自定义输入个人信息内容,自定义图片名称,并将生成的图片保存到本地
37 1
利用html2canvas插件自定义生成名片信息并保存图片
|
24天前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
26天前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
108 4
|
1月前
|
移动开发 JavaScript 前端开发
html table+css实现可编辑表格的示例代码
html table+css实现可编辑表格的示例代码
53 12
|
1月前
|
监控 安全 测试技术
在实施自动化和持续集成的过程中,如何确保代码的安全性和合规性?
在实施自动化和持续集成的过程中,如何确保代码的安全性和合规性?