<template>
  <div>
    <t-anchor :bounds="150">
      <t-anchor-item href="#基础锚点" title="基础锚点"></t-anchor-item>
      <t-anchor-item href="#多级锚点" title="多级锚点"></t-anchor-item>
      <t-anchor-item href="#指定容器锚点" title="指定容器锚点"></t-anchor-item>
      <t-anchor-item href="#特定交互锚点" title="特定交互锚点"></t-anchor-item>
      <t-anchor-item href="#尺寸" title="尺寸"></t-anchor-item>
    </t-anchor>
  </div>
</template>
<script>
  export default {};
</script>
集成到如下代码中,作为目录放在页面左侧
<template>
  <t-card :bordered="false">
    <t-form
      ref="form"
      :data="formData"
      :rules="FORM_RULES"
      label-align="top"
      :label-width="100"
      @reset="onReset"
      @submit="onSubmit"
    >
      <div class="form-basic-container">
        <div class="form-basic-item">
          <div class="form-basic-container-title">模板信息【UUID:{{template.template_uuid}}】</div>
          <t-form-item label="模板名" name="templateTitle">
            <t-input v-model="formData.templateTitle" :style="{ width: '322px' }"  />
          </t-form-item>
          <t-form-item label="模板描述" name="templateDescription">
            <t-textarea v-model="formData.templateDescription" :autosize="{ minRows: 3, maxRows: 5 }" placeholder="模板描述" />
          </t-form-item>
<pre><code>      &lt;div class=&quot;form-basic-container-title&quot; style=&quot;font-size: 28px; margin-bottom: 0px;&quot;&gt;探索配置&lt;/div&gt;
        &lt;div class=&quot;form-basic-item&quot;&gt;
        &lt;!-- 表单内容 --&gt;
        &lt;t-row class=&quot;row-gap&quot; :gutter=&quot;[16, 24]&quot;&gt;
          &lt;t-col :span=&quot;12&quot;&gt;
            &lt;div class=&quot;form-basic-container-title&quot; style=&quot;font-size: 24px;&quot;&gt;探索范围配置&lt;/div&gt;
              &lt;t-form-item label=&quot;控件白名单&quot; name=&quot;controlWhitelist&quot;&gt;
                &lt;t-textarea v-model=&quot;formData.controlWhitelist&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;控件白名单&quot; /&gt;
              &lt;/t-form-item&gt;
              &lt;t-form-item label=&quot;控件黑名单&quot; name=&quot;controlBlacklist&quot;&gt;
                &lt;t-textarea v-model=&quot;formData.controlBlacklist&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;控件黑名单&quot; /&gt;
              &lt;/t-form-item&gt;
              &lt;t-form-item label=&quot;界面白名单&quot; name=&quot;interfaceWhitelist&quot;&gt;
                &lt;t-textarea v-model=&quot;formData.interfaceWhitelist&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;界面白名单&quot; /&gt;
              &lt;/t-form-item&gt;
              &lt;t-form-item label=&quot;界面黑名单&quot; name=&quot;interfaceBlacklist&quot;&gt;
                &lt;t-textarea v-model=&quot;formData.interfaceBlacklist&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;界面黑名单&quot; /&gt;
              &lt;/t-form-item&gt;
          &lt;/t-col&gt;
        &lt;/t-row&gt;
        &lt;t-row class=&quot;row-gap&quot; :gutter=&quot;[16, 24]&quot;&gt;
          &lt;t-col :span=&quot;12&quot;&gt;
            &lt;div class=&quot;form-basic-container-title&quot; style=&quot;font-size: 24px;&quot;&gt;定向操作配置&lt;/div&gt;
            &lt;t-form ref=&quot;formRef&quot; :model=&quot;formData&quot; label-width=&quot;100px&quot;&gt;
              &lt;div style=&quot;font-size: 16px; margin-bottom: 20px;&quot;&gt;识别器&lt;/div&gt;
              &lt;t-form-item label=&quot;所在界面名&quot; prop=&quot;interfaceName&quot;&gt;
                &lt;t-input v-model=&quot;formData.interfaceName&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;所在界面名&quot; /&gt;
              &lt;/t-form-item&gt;
              &lt;t-form-item label=&quot;包含元素&quot; prop=&quot;includedElements&quot;&gt;
                &lt;t-input v-model=&quot;formData.includedElements&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;包含元素&quot; /&gt;
              &lt;/t-form-item&gt;
              &lt;div style=&quot;font-size: 16px; margin-bottom: 20px;&quot;&gt;操作器&lt;/div&gt;
              &lt;t-form-item label=&quot;点击&quot; prop=&quot;click&quot;&gt;
                &lt;t-input v-model=&quot;formData.click&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;点击&quot; /&gt;
              &lt;/t-form-item&gt;
              &lt;t-form-item label=&quot;滑动&quot; prop=&quot;slide&quot;&gt;
                &lt;t-input v-model=&quot;formData.slide&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;滑动&quot; /&gt;
              &lt;/t-form-item&gt;
              &lt;t-form-item label=&quot;重启&quot; prop=&quot;restart&quot;&gt;
                &lt;t-input v-model=&quot;formData.restart&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;重启&quot; /&gt;
              &lt;/t-form-item&gt;
              &lt;t-form-item label=&quot;post&quot; prop=&quot;post&quot;&gt;
                &lt;t-input v-model=&quot;formData.post&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;post&quot; /&gt;
              &lt;/t-form-item&gt;
              &lt;t-form-item label=&quot;shell&quot; prop=&quot;shell&quot;&gt;
                &lt;t-input v-model=&quot;formData.shell&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;shell&quot; /&gt;
              &lt;/t-form-item&gt;
            &lt;/t-form&gt;
          &lt;/t-col&gt;
        &lt;/t-row&gt;
        &lt;t-row class=&quot;row-gap&quot; :gutter=&quot;[16, 24]&quot;&gt;
          &lt;t-col :span=&quot;12&quot;&gt;
            &lt;div class=&quot;form-basic-container-title&quot; style=&quot;font-size: 24px;&quot;&gt;定时操作配置&lt;/div&gt;
            &lt;t-form-item label=&quot;开始时&quot; name=&quot;controlWhitelist&quot;&gt;
              &lt;t-textarea v-model=&quot;formData.controlWhitelist&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;开始时&quot; /&gt;
            &lt;/t-form-item&gt;
            &lt;t-form-item label=&quot;定时操作&quot; name=&quot;controlBlacklist&quot;&gt;
              &lt;t-textarea v-model=&quot;formData.controlBlacklist&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;定时操作&quot; /&gt;
            &lt;/t-form-item&gt;
            &lt;t-form-item label=&quot;结束时&quot; name=&quot;interfaceWhitelist&quot;&gt;
              &lt;t-textarea v-model=&quot;formData.interfaceWhitelist&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;结束时&quot; /&gt;
            &lt;/t-form-item&gt;
          &lt;/t-col&gt;
        &lt;/t-row&gt;
        &lt;t-row class=&quot;row-gap&quot; :gutter=&quot;[16, 24]&quot;&gt;
          &lt;t-col :span=&quot;12&quot;&gt;
            &lt;div class=&quot;form-basic-container-title&quot; style=&quot;font-size: 24px;&quot;&gt;预设通用配置&lt;/div&gt;
            &lt;t-form-item label=&quot;登录方式&quot; name=&quot;login_method&quot;&gt;
              &lt;t-radio-group v-model=&quot;formData.login_method&quot;&gt;
                &lt;t-radio value=&quot;0&quot;&gt;微信登录&lt;/t-radio&gt;
                &lt;t-radio value=&quot;1&quot;&gt;QQ登录&lt;/t-radio&gt;
              &lt;/t-radio-group&gt;
            &lt;/t-form-item&gt;
            &lt;t-form-item label=&quot;账号-密码&quot; name=&quot;controlWhitelist&quot;&gt;
              &lt;t-textarea v-model=&quot;formData.Accounts&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;请输入账号密码&quot; /&gt;
            &lt;/t-form-item&gt;
          &lt;/t-col&gt;
        &lt;/t-row&gt;
        &lt;t-row class=&quot;row-gap&quot; :gutter=&quot;[16, 24]&quot;&gt;
          &lt;t-col :span=&quot;12&quot;&gt;
            &lt;div class=&quot;form-basic-container-title&quot; style=&quot;font-size: 24px;&quot;&gt;AI配置&lt;/div&gt;
            &lt;t-form-item label=&quot;AI生成配置&quot; name=&quot;AIGenConfig&quot;&gt;
              &lt;t-textarea v-model=&quot;formData.AIGenConfig&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;Al生成配置&quot; /&gt;
            &lt;/t-form-item&gt;
            &lt;t-form-item label=&quot;AI引导操作&quot; name=&quot;AIBootOpera&quot;&gt;
              &lt;t-textarea v-model=&quot;formData.AIBootOpera&quot; :autosize=&quot;{ minRows: 3, maxRows: 5 }&quot; placeholder=&quot;AI引导操作&quot; /&gt;
            &lt;/t-form-item&gt;
          &lt;/t-col&gt;
        &lt;/t-row&gt;
        &lt;/div&gt;
      &lt;div class=&quot;form-basic-container-title&quot; style=&quot;font-size: 28px; margin-bottom: 20px;&quot;&gt;环境配置&lt;/div&gt;
      &lt;t-form-item label=&quot;弱网配置&quot; name=&quot;networkConfig&quot;&gt;
        &lt;t-input v-model=&quot;formData.networkConfig&quot; :style=&quot;{ width: '322px' }&quot; placeholder=&quot;弱网配置&quot; /&gt;
      &lt;/t-form-item&gt;

      &lt;div class=&quot;form-basic-container-title&quot; style=&quot;font-size: 28px; margin-bottom: 20px;&quot;&gt;数据回收配置&lt;/div&gt;
      &lt;div style=&quot;font-size: 16px; margin-bottom: 20px;&quot;&gt;截图频率&lt;/div&gt;
      &lt;t-form-item label=&quot;操作时&quot; prop=&quot;DurOperation&quot;&gt;
        &lt;t-input v-model=&quot;formData.DurOperation&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;操作时&quot; /&gt;
      &lt;/t-form-item&gt;
      &lt;t-form-item label=&quot;定时频率&quot; prop=&quot;TimingFrequency&quot;&gt;
        &lt;t-input v-model=&quot;formData.TimingFrequency&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;定时频率&quot; /&gt;
      &lt;/t-form-item&gt;

      &lt;div style=&quot;font-size: 16px; margin-bottom: 20px;&quot;&gt;故障监控方式&lt;/div&gt;
      &lt;t-form-item label=&quot;系统日志监控&quot; prop=&quot;SystemLogMonitoring&quot;&gt;
        &lt;t-input v-model=&quot;formData.SystemLogMonitoring&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;系统日志监控&quot; /&gt;
      &lt;/t-form-item&gt;
      &lt;t-form-item label=&quot;ilogs查找&quot; prop=&quot;IlogsSearch&quot;&gt;
        &lt;t-input v-model=&quot;formData.IlogsSearch&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;uin 配置&quot; /&gt;
      &lt;/t-form-item&gt;

      &lt;div class=&quot;form-basic-container-title&quot; style=&quot;font-size: 28px; margin-bottom: 20px;&quot;&gt;故障提单配置&lt;/div&gt;
      &lt;div style=&quot;font-size: 16px; margin-bottom: 20px;&quot;&gt;提单模板&lt;/div&gt;
      &lt;t-form-item label=&quot;tapd&quot; prop=&quot;tapd&quot;&gt;
        &lt;t-input v-model=&quot;formData.tapd&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;tapd&quot; /&gt;
      &lt;/t-form-item&gt;
      &lt;t-form-item label=&quot;提单人&quot; prop=&quot;Presenter&quot;&gt;
        &lt;t-input v-model=&quot;formData.Presenter&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;提单人&quot; /&gt;
      &lt;/t-form-item&gt;
      &lt;t-form-item label=&quot;关注人&quot; prop=&quot;FollowPeople&quot;&gt;
        &lt;t-input v-model=&quot;formData.FollowPeople&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;关注人&quot; /&gt;
      &lt;/t-form-item&gt;
      &lt;t-form-item label=&quot;内容&quot; prop=&quot;Content&quot;&gt;
        &lt;t-input v-model=&quot;formData.Content&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;内容&quot; /&gt;
      &lt;/t-form-item&gt;
      &lt;div style=&quot;font-size: 16px; margin-bottom: 20px;&quot;&gt;提单过滤&lt;/div&gt;
      &lt;t-form-item label=&quot;重复单聚类&quot; prop=&quot;DuplicateOrderClustering&quot;&gt;
        &lt;t-input v-model=&quot;formData.DuplicateOrderClustering&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;重复单聚类&quot; /&gt;
      &lt;/t-form-item&gt;
      &lt;t-form-item label=&quot;非重点故障过滤&quot; prop=&quot;NonkeyFaultFiltering&quot;&gt;
        &lt;t-input v-model=&quot;formData.NonkeyFaultFiltering&quot; style=&quot;width: 322px; font-size: 14px;&quot; placeholder=&quot;非重点故障过滤&quot; /&gt;
      &lt;/t-form-item&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;form-submit-container&quot;&gt;
    &lt;div class=&quot;form-submit-sub&quot;&gt;
      &lt;div class=&quot;form-submit-left&quot;&gt;
        &lt;t-button theme=&quot;primary&quot; class=&quot;form-submit-confirm&quot; type=&quot;submit&quot;&gt; 提交 &lt;/t-button&gt;
        &lt;t-button type=&quot;reset&quot; class=&quot;form-submit-cancel&quot; theme=&quot;default&quot; variant=&quot;base&quot;&gt; 取消 &lt;/t-button&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/t-form&gt;
</code></pre>
  </t-card>
</template>
```
<pre><code class="language-javascript">&lt;script&gt;
import { prefix } from '@/config/global';

const INITIAL_DATA = {
  templateTitle: '',
  templateDescription: '',
  controlWhitelist: '',
  controlBlacklist: '',
  interfaceWhitelist: '',
  interfaceBlacklist: '',
  recognizer: '',
  operator: '',
  timingOperation: '',
  presetConfig: '',
  aiConfig: '',
  networkConfig: '',
  screenshotFrequency: '',
  faultMonitoring: '',
  ticketTemplate: '',
  ticketFilter: '',
  tapd:'',
  Presenter:'',
  FollowPeople:'',
  Content:'',
  DuplicateOrderClustering:'',
  NonkeyFaultFiltering:'',
  Accounts:'',

};
const FORM_RULES = {
  appIdentifier: [{ required: true, message: '请输入app的标识符', type: 'error' }],
};

export default {
  name: 'FormBase',
  data() {
    return {
      prefix,
      stepSuccess: true,
      formData: { ...INITIAL_DATA },
      FORM_RULES,
      dataLoading: false,
      template: { },
    };
  },
  watch: {
    // eslint-disable-next-line func-names
    '$route': function(to, from) {
      if (to.path.endsWith('/explore_config_details')) {
        console.log(&quot;to explore_config_detail&quot;)
        // 只有在 /tasks 路由的参数改变时才执行
        this.getTemplate();
      }
    }
  },
  mounted() {
    console.log(&quot;this is template detail page&quot;)
    this.getTemplate()
  },
  methods: {
    getTemplate() {
      this.dataLoading = true;
      this.$request
        .get(`/web/projects/${this.$route.params.id}/tasks/${this.$route.params.tid}/explore_config_templates/${this.$route.params.pid}`, {
          headers: {
          },
          withCredentials: true
        })
        .then((res) =&gt; {
          console.log(res)
          if (res.status === 200) {
            const tp = res.data;
            console.log(tp)
            this.template = tp;
            this.formData.templateTitle = this.template.template_title;
            this.formData.templateDescription = this.template.template_description;
            const content = JSON.parse(this.template.content)
            if (content !== null &amp;&amp; typeof content!== 'undefined') {
              this.formData.appIdentifier = content.app_identifier
              this.formData.initCommandDescription = content.init_command_description
              this.formData.formulatedCommandDescription = content.formulated_command_description
            }
          }
        })
        .catch((e) =&gt; {
          console.log(e);
        })
        .finally(() =&gt; {
          this.dataLoading = false;
        });
    },
    handleFail({ file }) {
      this.$message.error(`文件 ${file.name} 上传失败`);
    },
    beforeUpload(file) {
      if (!/.(pdf)$/.test(file.name)) {
        this.$message.warning('请上传pdf文件');
        return false;
      }
      return true;
    },
    // 用于格式化接口响应值,error 会被用于上传失败的提示文字;url 表示文件/图片地址
    formatResponse(res) {
      return { ...res, error: '上传失败,请重试', url: res.url };
    },
    changeStatus() {
      this.stepSuccess = !this.stepSuccess;
    },
    onReset() {
      this.$message.warning('取消新建');
    },
    onSubmit({ validateResult }) {
      if (validateResult === true) {
        const contentData = {
          app_identifier : this.formData.appIdentifier,
          init_command_description : this.formData.initCommandDescription,
          formulated_command_description : this.formData.formulatedCommandDescription
        }
        this.$request
          .put(`/web/projects/${this.$route.params.id}/tasks/${this.$route.params.tid}/explore_config_templates/${this.$route.params.pid}`, {
            template_title: this.formData.templateTitle,
            template_description: this.formData.templateDescription,
            content: JSON.stringify(contentData)
          }, {
            withCredentials: true
          })
          .then((res) =&gt; {
            console.log(res)
            if (res.status === 200) {
              this.$message.success('保存成功');
            }
          })
          .catch((e) =&gt; {
            console.log(e);
            this.$message.error('保存失败');
          })
          .finally(() =&gt; {
            console.log(&quot;save&quot;);
          });
      }
    },
  },
};
&lt;/script&gt;
&lt;style lang=&quot;less&quot; scoped&gt;
@import './index';
main {
  padding: 24px;
}

.form-basic-container-title {
  font-size: 18px;
  color: #333;
  margin-bottom: 16px;
}
&lt;/style&gt;
内容:将锚点代码集成到页面左侧的目录中,可以按照以下步骤进行操作:

1. 在页面左侧的目录位置,找到需要插入锚点的位置。
2. 将锚点代码&lt;template&gt;...&lt;/template&gt;放置在目录位置中,替换原有的内容。
3. 将锚点代码&lt;script&gt;...&lt;/script&gt;放置在目录位置中,替换原有的内容。
4. 根据需要修改锚点的标题和链接。

修改后的代码如下所示:

```html
&lt;template&gt;
  &lt;div&gt;
    &lt;t-anchor :bounds=&quot;150&quot;&gt;
      &lt;t-anchor-item href=&quot;#基础锚点&quot; title=&quot;基础锚点&quot;&gt;&lt;/t-anchor-item&gt;
      &lt;t-anchor-item href=&quot;#多级锚点&quot; title=&quot;多级锚点&quot;&gt;&lt;/t-anchor-item&gt;
      &lt;t-anchor-item href=&quot;#指定容器
</code></pre>

原文地址: https://www.cveoy.top/t/topic/qyQX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录