liyongli 2 年之前
父節點
當前提交
c51bfa577e

+ 539 - 0
src/assets/iconFont/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

+ 464 - 0
src/assets/iconFont/demo_index.html

@@ -0,0 +1,464 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8"/>
+  <title>iconfont Demo</title>
+  <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico" type="image/x-icon"/>
+  <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64.svg"/>
+  <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
+  <link rel="stylesheet" href="demo.css">
+  <link rel="stylesheet" href="iconfont.css">
+  <script src="iconfont.js"></script>
+  <!-- jQuery -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
+  <!-- 代码高亮 -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
+  <style>
+    .main .logo {
+      margin-top: 0;
+      height: auto;
+    }
+
+    .main .logo a {
+      display: flex;
+      align-items: center;
+    }
+
+    .main .logo .sub-title {
+      margin-left: 0.5em;
+      font-size: 22px;
+      color: #fff;
+      background: linear-gradient(-45deg, #3967FF, #B500FE);
+      -webkit-background-clip: text;
+      -webkit-text-fill-color: transparent;
+    }
+  </style>
+</head>
+<body>
+  <div class="main">
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
+      <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
+      
+    </a></h1>
+    <div class="nav-tabs">
+      <ul id="tabs" class="dib-box">
+        <li class="dib active"><span>Unicode</span></li>
+        <li class="dib"><span>Font class</span></li>
+        <li class="dib"><span>Symbol</span></li>
+      </ul>
+      
+      <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=2863570" target="_blank" class="nav-more">查看项目</a>
+      
+    </div>
+    <div class="tab-container">
+      <div class="content unicode" style="display: block;">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe60c;</span>
+                <div class="name">今日头条</div>
+                <div class="code-name">&amp;#xe60c;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe61e;</span>
+                <div class="name">b站</div>
+                <div class="code-name">&amp;#xe61e;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe666;</span>
+                <div class="name">微博</div>
+                <div class="code-name">&amp;#xe666;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe609;</span>
+                <div class="name">ssp</div>
+                <div class="code-name">&amp;#xe609;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe67a;</span>
+                <div class="name">微博</div>
+                <div class="code-name">&amp;#xe67a;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe603;</span>
+                <div class="name">微信</div>
+                <div class="code-name">&amp;#xe603;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe8db;</span>
+                <div class="name">抖音</div>
+                <div class="code-name">&amp;#xe8db;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe8dc;</span>
+                <div class="name">快手</div>
+                <div class="code-name">&amp;#xe8dc;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe607;</span>
+                <div class="name">sxtt</div>
+                <div class="code-name">&amp;#xe607;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe637;</span>
+                <div class="name">日期</div>
+                <div class="code-name">&amp;#xe637;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe665;</span>
+                <div class="name">arrow-down</div>
+                <div class="code-name">&amp;#xe665;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe8b8;</span>
+                <div class="name">时间</div>
+                <div class="code-name">&amp;#xe8b8;</div>
+              </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="unicode-">Unicode 引用</h2>
+          <hr>
+
+          <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
+          <ul>
+            <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
+            <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
+          </ul>
+          <blockquote>
+            <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
+          </blockquote>
+          <p>Unicode 使用步骤如下:</p>
+          <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
+<pre><code class="language-css"
+>@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.woff2?t=1648692917508') format('woff2'),
+       url('iconfont.woff?t=1648692917508') format('woff'),
+       url('iconfont.ttf?t=1648692917508') format('truetype');
+}
+</code></pre>
+          <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
+<pre><code class="language-css"
+>.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
+<pre>
+<code class="language-html"
+>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
+</code></pre>
+          <blockquote>
+            <p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+          </blockquote>
+          </div>
+      </div>
+      <div class="content font-class">
+        <ul class="icon_lists dib-box">
+          
+          <li class="dib">
+            <span class="icon iconfont icon-jinritoutiao"></span>
+            <div class="name">
+              今日头条
+            </div>
+            <div class="code-name">.icon-jinritoutiao
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-bzhan"></span>
+            <div class="name">
+              b站
+            </div>
+            <div class="code-name">.icon-bzhan
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-weibo1"></span>
+            <div class="name">
+              微博
+            </div>
+            <div class="code-name">.icon-weibo1
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-ssp"></span>
+            <div class="name">
+              ssp
+            </div>
+            <div class="code-name">.icon-ssp
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-weibo"></span>
+            <div class="name">
+              微博
+            </div>
+            <div class="code-name">.icon-weibo
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-weixin"></span>
+            <div class="name">
+              微信
+            </div>
+            <div class="code-name">.icon-weixin
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-douyin"></span>
+            <div class="name">
+              抖音
+            </div>
+            <div class="code-name">.icon-douyin
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-kuaishou"></span>
+            <div class="name">
+              快手
+            </div>
+            <div class="code-name">.icon-kuaishou
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-sxtt"></span>
+            <div class="name">
+              sxtt
+            </div>
+            <div class="code-name">.icon-sxtt
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-date"></span>
+            <div class="name">
+              日期
+            </div>
+            <div class="code-name">.icon-date
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-arrow-down"></span>
+            <div class="name">
+              arrow-down
+            </div>
+            <div class="code-name">.icon-arrow-down
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-shijian"></span>
+            <div class="name">
+              时间
+            </div>
+            <div class="code-name">.icon-shijian
+            </div>
+          </li>
+          
+        </ul>
+        <div class="article markdown">
+        <h2 id="font-class-">font-class 引用</h2>
+        <hr>
+
+        <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
+        <p>与 Unicode 使用方式相比,具有如下特点:</p>
+        <ul>
+          <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
+          <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
+        </ul>
+        <p>使用步骤如下:</p>
+        <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
+<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
+</code></pre>
+        <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
+</code></pre>
+        <blockquote>
+          <p>"
+            iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+        </blockquote>
+      </div>
+      </div>
+      <div class="content symbol">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-jinritoutiao"></use>
+                </svg>
+                <div class="name">今日头条</div>
+                <div class="code-name">#icon-jinritoutiao</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-bzhan"></use>
+                </svg>
+                <div class="name">b站</div>
+                <div class="code-name">#icon-bzhan</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-weibo1"></use>
+                </svg>
+                <div class="name">微博</div>
+                <div class="code-name">#icon-weibo1</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-ssp"></use>
+                </svg>
+                <div class="name">ssp</div>
+                <div class="code-name">#icon-ssp</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-weibo"></use>
+                </svg>
+                <div class="name">微博</div>
+                <div class="code-name">#icon-weibo</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-weixin"></use>
+                </svg>
+                <div class="name">微信</div>
+                <div class="code-name">#icon-weixin</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-douyin"></use>
+                </svg>
+                <div class="name">抖音</div>
+                <div class="code-name">#icon-douyin</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-kuaishou"></use>
+                </svg>
+                <div class="name">快手</div>
+                <div class="code-name">#icon-kuaishou</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-sxtt"></use>
+                </svg>
+                <div class="name">sxtt</div>
+                <div class="code-name">#icon-sxtt</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-date"></use>
+                </svg>
+                <div class="name">日期</div>
+                <div class="code-name">#icon-date</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-arrow-down"></use>
+                </svg>
+                <div class="name">arrow-down</div>
+                <div class="code-name">#icon-arrow-down</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-shijian"></use>
+                </svg>
+                <div class="name">时间</div>
+                <div class="code-name">#icon-shijian</div>
+            </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="symbol-">Symbol 引用</h2>
+          <hr>
+
+          <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
+            这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
+          <ul>
+            <li>支持多色图标了,不再受单色限制。</li>
+            <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
+            <li>兼容性较差,支持 IE9+,及现代浏览器。</li>
+            <li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
+          </ul>
+          <p>使用步骤如下:</p>
+          <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
+<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
+</code></pre>
+          <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
+<pre><code class="language-html">&lt;style&gt;
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+&lt;/style&gt;
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
+  &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
+&lt;/svg&gt;
+</code></pre>
+          </div>
+      </div>
+
+    </div>
+  </div>
+  <script>
+  $(document).ready(function () {
+      $('.tab-container .content:first').show()
+
+      $('#tabs li').click(function (e) {
+        var tabContent = $('.tab-container .content')
+        var index = $(this).index()
+
+        if ($(this).hasClass('active')) {
+          return
+        } else {
+          $('#tabs li').removeClass('active')
+          $(this).addClass('active')
+
+          tabContent.hide().eq(index).fadeIn()
+        }
+      })
+    })
+  </script>
+</body>
+</html>

+ 63 - 0
src/assets/iconFont/iconfont.css

@@ -0,0 +1,63 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 2863570 */
+  src: url('iconfont.woff2?t=1648692917508') format('woff2'),
+       url('iconfont.woff?t=1648692917508') format('woff'),
+       url('iconfont.ttf?t=1648692917508') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-jinritoutiao:before {
+  content: "\e60c";
+}
+
+.icon-bzhan:before {
+  content: "\e61e";
+}
+
+.icon-weibo1:before {
+  content: "\e666";
+}
+
+.icon-ssp:before {
+  content: "\e609";
+}
+
+.icon-weibo:before {
+  content: "\e67a";
+}
+
+.icon-weixin:before {
+  content: "\e603";
+}
+
+.icon-douyin:before {
+  content: "\e8db";
+}
+
+.icon-kuaishou:before {
+  content: "\e8dc";
+}
+
+.icon-sxtt:before {
+  content: "\e607";
+}
+
+.icon-date:before {
+  content: "\e637";
+}
+
+.icon-arrow-down:before {
+  content: "\e665";
+}
+
+.icon-shijian:before {
+  content: "\e8b8";
+}
+

文件差異過大導致無法顯示
+ 0 - 0
src/assets/iconFont/iconfont.js


+ 93 - 0
src/assets/iconFont/iconfont.json

@@ -0,0 +1,93 @@
+{
+  "id": "2863570",
+  "name": "big_screen",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "1966937",
+      "name": "今日头条",
+      "font_class": "jinritoutiao",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
+    },
+    {
+      "icon_id": "10190740",
+      "name": "b站",
+      "font_class": "bzhan",
+      "unicode": "e61e",
+      "unicode_decimal": 58910
+    },
+    {
+      "icon_id": "9186712",
+      "name": "微博",
+      "font_class": "weibo1",
+      "unicode": "e666",
+      "unicode_decimal": 58982
+    },
+    {
+      "icon_id": "25654949",
+      "name": "ssp",
+      "font_class": "ssp",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    },
+    {
+      "icon_id": "2742669",
+      "name": "微博",
+      "font_class": "weibo",
+      "unicode": "e67a",
+      "unicode_decimal": 59002
+    },
+    {
+      "icon_id": "7533290",
+      "name": "微信",
+      "font_class": "weixin",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "18166694",
+      "name": "抖音",
+      "font_class": "douyin",
+      "unicode": "e8db",
+      "unicode_decimal": 59611
+    },
+    {
+      "icon_id": "18166712",
+      "name": "快手",
+      "font_class": "kuaishou",
+      "unicode": "e8dc",
+      "unicode_decimal": 59612
+    },
+    {
+      "icon_id": "25646757",
+      "name": "sxtt",
+      "font_class": "sxtt",
+      "unicode": "e607",
+      "unicode_decimal": 58887
+    },
+    {
+      "icon_id": "695589",
+      "name": "日期",
+      "font_class": "date",
+      "unicode": "e637",
+      "unicode_decimal": 58935
+    },
+    {
+      "icon_id": "15838429",
+      "name": "arrow-down",
+      "font_class": "arrow-down",
+      "unicode": "e665",
+      "unicode_decimal": 58981
+    },
+    {
+      "icon_id": "11372699",
+      "name": "时间",
+      "font_class": "shijian",
+      "unicode": "e8b8",
+      "unicode_decimal": 59576
+    }
+  ]
+}

二進制
src/assets/iconFont/iconfont.ttf


二進制
src/assets/iconFont/iconfont.woff


二進制
src/assets/iconFont/iconfont.woff2


二進制
src/assets/img/hart.png


二進制
src/assets/img/hj.png


+ 2 - 0
src/main.js

@@ -1,6 +1,8 @@
 import { createApp } from "vue";
 import ElementPlus from "element-plus";
 import "element-plus/dist/index.css";
+import "./assets/iconFont/iconfont.css";
+
 import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
 
 import router from "./router";

+ 14 - 0
src/router/allMedia.js

@@ -6,6 +6,13 @@ export default [
     component: () =>
       import(/* webpackChunkName: "Login" */ '../view/allMedia/login.vue'),
   },
+  {
+    path: '/authorization',
+    component: () =>
+      import(
+        /* webpackChunkName: "authorization" */ '../view/allMedia/authorization.vue'
+      ),
+  },
   // 主页
   {
     path: '/main_home',
@@ -27,6 +34,13 @@ export default [
             /* webpackChunkName: "analysis" */ '../view/allMedia/analysis.vue'
           ),
       },
+      {
+        path: 'convergence',
+        component: () =>
+          import(
+            /* webpackChunkName: "convergence" */ '../view/allMedia/convergence.vue'
+          ),
+      },
     ],
   },
 ];

+ 18 - 5
src/utils/request.js

@@ -37,12 +37,16 @@ function ajax(longRange) {
 
 function fetch(longRange) {
   return new Promise((resolve, reject) => {
+    const met = (longRange.method || 'GET').toUpperCase();
+    const p = {
+      method: met,
+      headers: headerFunc(longRange.headers),
+    };
+    if (met !== 'GET') p.body = bodyFunc(longRange.data);
+    else longRange.api = longRange.api + bodyGetFunc(longRange.data);
+
     window
-      .fetch(config.base.origin + longRange.api, {
-        method: (longRange.method || 'GET').toUpperCase(),
-        body: bodyFunc(longRange.data),
-        headers: headerFunc(longRange.headers),
-      })
+      .fetch(config.base.origin + longRange.api, p)
       .then(res => {
         const json = res.json();
         if (res.status !== 200) {
@@ -88,6 +92,15 @@ function errorStatus(err) {
   }
 }
 
+function bodyGetFunc(body = {}) {
+  let search = '?';
+  for (const key in body) {
+    if (!Object.hasOwnProperty.call(body, key)) continue;
+    search += key + '=' + body[key] + '&';
+  }
+  return search;
+}
+
 function bodyFunc(body = {}) {
   const bodys = {};
   return JSON.stringify({

+ 20 - 10
src/view/allMedia/analysis.vue

@@ -30,7 +30,7 @@
         <div
           :class="{
             searchCol: true,
-            searchActive: searchActive[1] === -1,
+            searchActive: searchActive.time === -1,
           }"
           @click="() => clickSelect('time', -1)"
         >
@@ -88,10 +88,14 @@
             #唐嫣何广智说脱口秀# 《我们的客栈》唐嫣何广智说脱口秀好期待!
           </div>
           <el-row>
-            <el-col :span="12">
+            <el-col :span="12" style="color: #9aa8c4;">
               <el-icon><Clock /></el-icon> 2023-02-16 16:11:49
+              <img src="../../assets/img/hart.png" style="width: 1em;margin-left: 1em;" /> 10
+            </el-col>
+            <el-col :span="12" style="text-align: right"> 
+                来源:
+                <span class="source">农民日报</span>
             </el-col>
-            <el-col :span="12" style="text-align: right"> 2 </el-col>
           </el-row>
         </div>
       </div>
@@ -100,13 +104,13 @@
 </template>
 
 <script setup>
-import { ref, reactive } from 'vue';
+import { ref } from 'vue';
 import { Search } from '@element-plus/icons-vue';
 const searchActive = ref({
   classification: 0,
   time: 0,
 });
-const classification = ref([
+const classification = [
   {
     type: 'option',
     name: '全部',
@@ -132,8 +136,8 @@ const classification = ref([
     name: '教育',
     id: 4,
   },
-]);
-const time = ref([
+];
+const time = [
   {
     type: 'option',
     name: '全部',
@@ -159,10 +163,10 @@ const time = ref([
     name: '近30天',
     id: 4,
   },
-]);
+];
 const searchText = ref('');
 const removal = ref(false);
-const selectlist = reactive([
+const selectlist = [
   {
     label: '按发布时间降序',
     value: 0,
@@ -179,7 +183,7 @@ const selectlist = reactive([
     label: '按发情感值降序',
     value: 3,
   },
-]);
+];
 const selectValue = ref(0);
 const date = ref([]);
 
@@ -189,9 +193,11 @@ const clickSelect = (select, index) => {
 };
 
 const changeSelect = () => {
+    // 更改排序
   console.log(selectValue.value);
 };
 const changeBox = () => {
+    // 去重
   console.log(removal.value);
 };
 </script>
@@ -287,4 +293,8 @@ const changeBox = () => {
 .listSubtitle {
   color: #b9c0d3;
 }
+
+.source{
+    color: #22ac38;
+}
 </style>

+ 104 - 0
src/view/allMedia/authorization.vue

@@ -0,0 +1,104 @@
+<template>
+  <div class="authorization">
+    <div class="sohuquan">
+      <h1 style="font-weight: 400; color: #777777">点击授权登录</h1>
+      <div class="platform">
+        <img v-for="item in platformLsit" @click="() => toClick(item)" :key="item.url" :src="item.url" />
+      </div>
+      <div class="text">
+        <span class="textarea">授权登录平台</span>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import ajax from '../../utils/request';
+import { ref } from 'vue';
+// import config from '../../config/index';
+const platformLsit = ref([
+  {
+    code: '/oauth/douyin/code',
+    url: 'https://import.smcic.net/img/douyin.png',
+  },
+  {
+    code: '/oauth/kuaishou/code',
+    url: 'https://import.smcic.net/img/kuaishou.png',
+  },
+  {
+    code: '',
+    url: 'https://import.smcic.net/img/weixin.png',
+  },
+  {
+    code: '/oauth/bilibili/code',
+    url: 'https://import.smcic.net/img/bilibili.png',
+  },
+  {
+    code: '',
+    url: 'https://import.smcic.net/img/weibo.png',
+  },
+  {
+    code: '/oauth/toutiao/code',
+    url: 'https://import.smcic.net/img/toutiao.png',
+  },
+]);
+
+const toClick = item => {
+    if(!item.code) return;
+    ajax({
+        api: item.code,
+        data: {},
+        headers: {
+            Authorization: localStorage.getItem("token")
+        }
+    }).then(r=>{
+        if(location.replace) location.replace(r.url);
+        else location.href = r.url;
+    })
+}
+</script>
+
+<style scoped></style>
+
+<style>
+.authorization {
+  width: 100vw;
+  height: 100vh;
+  position: relative;
+  background-image: url(https://import.smcic.net/img/bg.png);
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+}
+.sohuquan {
+  position: absolute;
+  top: 50%;
+  right: 3em;
+  transform: translateY(-50%);
+  background-color: #fff;
+  padding: 1em;
+  border-radius: 5px;
+  width: 55%;
+  max-width: 500px;
+  text-align: center;
+}
+.platform {
+  margin: 1.5em 0;
+}
+.platform img {
+  display: inline-block;
+  max-width: 55px;
+  margin-right: 5px;
+}
+.text {
+  border-top: 1px solid #fdc112;
+  color: #fdc112;
+  font-size: 22px;
+  margin: 3em 0 1em 0;
+}
+.text .textarea {
+  margin-top: -1.5em;
+  background: #fff;
+  display: inline-block;
+  padding: 0 1em;
+}
+</style>

+ 233 - 0
src/view/allMedia/convergence.vue

@@ -0,0 +1,233 @@
+<template>
+  <div class="convergence">
+    <el-form :inline="true" :model="condition" size="large">
+      <el-form-item prop="platform">
+        <el-button
+          v-for="(item, index) in btns"
+          :class="{
+            [item.platform]: true,
+            [item.platform + '_active']: condition.platform === index,
+          }"
+          :key="item.id"
+          @click="() => selectPlatform(item, index)"
+        >
+          <span
+            :class="{ icon: true, iconfont: true, [item.class]: true }"
+            style="margin-right: 5px"
+          >
+          </span>
+          {{ item.text }}
+        </el-button>
+      </el-form-item>
+      <br />
+      <el-form-item label="日期" prop="dt">
+        <el-date-picker
+          v-model="condition.dt"
+          type="daterange"
+          start-placeholder="开始时间"
+          end-placeholder="结束时间"
+        />
+      </el-form-item>
+      <el-form-item label="关键词" prop="keyword">
+        <el-input v-model="condition.keyword" placeholder="请输入关键词" />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="onSubmit">查询</el-button>
+        <el-button type="primary" @click="onSubmit">导出</el-button>
+        <el-button type="primary" @click="binding">绑定账号</el-button>
+      </el-form-item>
+    </el-form>
+    <br />
+    <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+      <el-tab-pane label="传播数据" name="T1">
+        <el-table
+          :data="tableData"
+          style="width: 100%"
+          :header-cell-style="{
+            backgroundColor: '#f4f5f7',
+            color: '#606266',
+          }"
+        >
+          <el-table-column prop="date" label="Date" width="180" />
+          <el-table-column prop="name" label="Name" width="180" />
+          <el-table-column prop="address" label="Address" />
+        </el-table>
+      </el-tab-pane>
+      <el-tab-pane label="稿件数据" name="T2">
+        <el-table
+          :data="tableData"
+          style="width: 100%"
+          :header-cell-style="{
+            backgroundColor: '#f4f5f7',
+            color: '#606266',
+          }"
+        >
+          <el-table-column prop="date" label="Date" width="180" />
+          <el-table-column prop="name" label="Name" width="180" />
+          <el-table-column prop="address" label="Address" />
+        </el-table>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
+</template>
+
+<script setup>
+import { ref } from 'vue';
+const condition = ref({
+  platform: 0,
+  keyword: '',
+  dt: [],
+});
+const activeName = ref('T1');
+const btns = [
+  {
+    text: '微信',
+    platform: 'weixin',
+    class: 'icon-weixin',
+  },
+  {
+    text: '微博',
+    platform: 'weibo',
+    class: 'icon-weibo',
+  },
+  {
+    text: '快手',
+    platform: 'kuaishou',
+    class: 'icon-kuaishou',
+  },
+  {
+    text: '抖音',
+    platform: 'douyin',
+    class: 'icon-douyin',
+  },
+  {
+    text: 'B站',
+    platform: 'bzhan',
+    class: 'icon-bzhan',
+  },
+  {
+    text: '今日头条',
+    platform: 'jinritoutiao',
+    class: 'icon-jinritoutiao',
+  },
+  {
+    text: '闪视频',
+    platform: 'ssp',
+    class: 'icon-ssp',
+  },
+  {
+    text: '头条',
+    platform: 'sxtt',
+    class: 'icon-sxtt',
+  },
+];
+
+const tableData = ref([
+  {
+    date: '2016-05-03',
+    name: 'Tom',
+    address: 'No. 189, Grove St, Los Angeles',
+  },
+  {
+    date: '2016-05-02',
+    name: 'Tom',
+    address: 'No. 189, Grove St, Los Angeles',
+  },
+  {
+    date: '2016-05-04',
+    name: 'Tom',
+    address: 'No. 189, Grove St, Los Angeles',
+  },
+  {
+    date: '2016-05-01',
+    name: 'Tom',
+    address: 'No. 189, Grove St, Los Angeles',
+  },
+]);
+
+const selectPlatform = (item, index) => {
+  condition.value.platform = index;
+};
+const onSubmit = () => {
+  console.log(condition.value);
+};
+
+const binding = () =>{
+    window.open('#/authorization','newwindow','toolbar=no,location=no,resizable=no,height=550,width=750,scrollbars=yes,left=380,top=100');
+}
+
+const handleClick = () => {};
+</script>
+
+<style scoped>
+.convergence {
+  height: 100%;
+  overflow: auto;
+  padding: 1em;
+}
+.convergence .platform {
+  width: 8em;
+}
+.convergence .el-form {
+  border-bottom: 1px solid #f3f3f3;
+}
+</style>
+
+<style>
+.convergence .el-form-item .weixin_active,
+.convergence .el-form-item .weixin:hover,
+.convergence .el-form-item .weixin:focus {
+  background-color: #1cc393;
+  border-color: #1cc393;
+  color: #ffffff;
+}
+.convergence .el-form-item .weibo_active,
+.convergence .el-form-item .weibo:hover,
+.convergence .el-form-item .weibo:focus {
+  background-color: #ffb712;
+  border-color: #ffb712;
+  color: #ffffff;
+}
+.convergence .el-form-item .kuaishou_active,
+.convergence .el-form-item .kuaishou:hover,
+.convergence .el-form-item .kuaishou:focus {
+  background-color: #eb3661;
+  border-color: #eb3661;
+  color: #ffffff;
+}
+.convergence .el-form-item .douyin_active,
+.convergence .el-form-item .douyin:hover,
+.convergence .el-form-item .douyin:focus {
+  background-color: #170b1a;
+  border-color: #170b1a;
+  color: #ffffff;
+}
+.convergence .el-form-item .bzhan_active,
+.convergence .el-form-item .bzhan:hover,
+.convergence .el-form-item .bzhan:focus {
+  background-color: #fb7299;
+  border-color: #fb7299;
+  color: #ffffff;
+}
+.convergence .el-form-item .jinritoutiao_active,
+.convergence .el-form-item .jinritoutiao:hover,
+.convergence .el-form-item .jinritoutiao:focus {
+  background-color: #f04142;
+  border-color: #f04142;
+  color: #ffffff;
+}
+.convergence .el-form-item .ssp_active,
+.convergence .el-form-item .ssp:hover,
+.convergence .el-form-item .ssp:focus {
+  background-color: #c11616;
+  border-color: #c11616;
+  color: #ffffff;
+}
+.convergence .el-form-item .sxtt_active,
+.convergence .el-form-item .sxtt:hover,
+.convergence .el-form-item .sxtt:focus {
+  background-color: #0083eb;
+  border-color: #0083eb;
+  color: #ffffff;
+}
+</style>

+ 1 - 1
src/view/allMedia/main.vue

@@ -40,7 +40,7 @@ const menu = ref([
   },
   {
     title: '数据汇聚',
-    icon: require('../../assets/img/sj.png'),
+    icon: require('../../assets/img/hj.png'),
     path: '/main_home/convergence',
   },
 ]);

部分文件因文件數量過多而無法顯示