xjc 4 gadi atpakaļ
vecāks
revīzija
0397c3955d

+ 16 - 0
src/api.js

@@ -465,4 +465,20 @@ export default {
 	getSenWord: params => {
 		return axios.get(`${baseURL}/api/admin/senword`, { params: params });
 	},
+	// Banner图
+	getBannersList: params => {
+		return axios.get(`${baseURL}/api/admin/banners/list`, { params: params });
+	},
+	addBanners: params => {
+		return axios.post(`${baseURL}/api/admin/banners`, params);
+	},
+	updateBanners: params => {
+		return axios.put(`${baseURL}/api/admin/banners`, params);
+	},
+	delBanners: params => {
+		return axios.delete(`${baseURL}/api/admin/banners`, { params: params });
+	},
+	getBanners: params => {
+		return axios.get(`${baseURL}/api/admin/banners`, { params: params });
+	},
 }

+ 117 - 1
src/iconfont/demo_index.html

@@ -3,7 +3,8 @@
 <head>
   <meta charset="utf-8"/>
   <title>IconFont Demo</title>
-  <link rel="shortcut icon" href="https://img.alicdn.com/tps/i4/TB1_oz6GVXXXXaFXpXXJDFnIXXX-64-64.ico" type="image/x-icon"/>
+  <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">
@@ -30,6 +31,36 @@
       <div class="content unicode" style="display: block;">
           <ul class="icon_lists dib-box">
           
+            <li class="dib">
+              <span class="icon iconfont">&#xe605;</span>
+                <div class="name">热词滚动球</div>
+                <div class="code-name">&amp;#xe605;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe62f;</span>
+                <div class="name">图片</div>
+                <div class="code-name">&amp;#xe62f;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe6e0;</span>
+                <div class="name">日志</div>
+                <div class="code-name">&amp;#xe6e0;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe62d;</span>
+                <div class="name">敏感词库 (1)</div>
+                <div class="code-name">&amp;#xe62d;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe642;</span>
+                <div class="name">敏感词</div>
+                <div class="code-name">&amp;#xe642;</div>
+              </li>
+          
             <li class="dib">
               <span class="icon iconfont">&#xe6b8;</span>
                 <div class="name">酒店</div>
@@ -176,6 +207,51 @@
       <div class="content font-class">
         <ul class="icon_lists dib-box">
           
+          <li class="dib">
+            <span class="icon iconfont iconrecigundongqiu"></span>
+            <div class="name">
+              热词滚动球
+            </div>
+            <div class="code-name">.iconrecigundongqiu
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icontupian"></span>
+            <div class="name">
+              图片
+            </div>
+            <div class="code-name">.icontupian
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconrizhi"></span>
+            <div class="name">
+              日志
+            </div>
+            <div class="code-name">.iconrizhi
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconminganciku1"></span>
+            <div class="name">
+              敏感词库 (1)
+            </div>
+            <div class="code-name">.iconminganciku1
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconminganci"></span>
+            <div class="name">
+              敏感词
+            </div>
+            <div class="code-name">.iconminganci
+            </div>
+          </li>
+          
           <li class="dib">
             <span class="icon iconfont iconjiudianxinxi"></span>
             <div class="name">
@@ -349,6 +425,46 @@
       <div class="content symbol">
           <ul class="icon_lists dib-box">
           
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconrecigundongqiu"></use>
+                </svg>
+                <div class="name">热词滚动球</div>
+                <div class="code-name">#iconrecigundongqiu</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icontupian"></use>
+                </svg>
+                <div class="name">图片</div>
+                <div class="code-name">#icontupian</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconrizhi"></use>
+                </svg>
+                <div class="name">日志</div>
+                <div class="code-name">#iconrizhi</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconminganciku1"></use>
+                </svg>
+                <div class="name">敏感词库 (1)</div>
+                <div class="code-name">#iconminganciku1</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconminganci"></use>
+                </svg>
+                <div class="name">敏感词</div>
+                <div class="code-name">#iconminganci</div>
+            </li>
+          
             <li class="dib">
                 <svg class="icon svg-icon" aria-hidden="true">
                   <use xlink:href="#iconjiudianxinxi"></use>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 26 - 6
src/iconfont/iconfont.css


BIN
src/iconfont/iconfont.eot


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
src/iconfont/iconfont.js


+ 35 - 0
src/iconfont/iconfont.json

@@ -5,6 +5,41 @@
   "css_prefix_text": "icon",
   "description": "中科",
   "glyphs": [
+    {
+      "icon_id": "4755919",
+      "name": "热词滚动球",
+      "font_class": "recigundongqiu",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
+    {
+      "icon_id": "6548388",
+      "name": "图片",
+      "font_class": "tupian",
+      "unicode": "e62f",
+      "unicode_decimal": 58927
+    },
+    {
+      "icon_id": "16314001",
+      "name": "日志",
+      "font_class": "rizhi",
+      "unicode": "e6e0",
+      "unicode_decimal": 59104
+    },
+    {
+      "icon_id": "16375278",
+      "name": "敏感词库 (1)",
+      "font_class": "minganciku1",
+      "unicode": "e62d",
+      "unicode_decimal": 58925
+    },
+    {
+      "icon_id": "17437413",
+      "name": "敏感词",
+      "font_class": "minganci",
+      "unicode": "e642",
+      "unicode_decimal": 58946
+    },
     {
       "icon_id": "274921",
       "name": "酒店",

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 15 - 0
src/iconfont/iconfont.svg


BIN
src/iconfont/iconfont.ttf


BIN
src/iconfont/iconfont.woff


BIN
src/iconfont/iconfont.woff2


+ 29 - 3
src/router.js

@@ -290,7 +290,7 @@ export default new Router({
     {
       path: '/system/hotword',
       name: '热词',
-      icon: 'iconfont iconzhanghaoguanli',
+      icon: 'iconfont iconrecigundongqiu',
       component: () => import('./views/Home.vue'),
       show: 0,
       isLeaf: 1,
@@ -303,7 +303,7 @@ export default new Router({
     {
       path: '/system/coldword',
       name: '冷词',
-      icon: 'iconfont iconzhanghaoguanli',
+      icon: 'iconfont iconminganciku1',
       component: () => import('./views/Home.vue'),
       show: 0,
       isLeaf: 1,
@@ -316,7 +316,7 @@ export default new Router({
     {
       path: '/system/senword',
       name: '敏感词',
-      icon: 'iconfont iconzhanghaoguanli',
+      icon: 'iconfont iconminganci',
       component: () => import('./views/Home.vue'),
       show: 0,
       isLeaf: 1,
@@ -326,5 +326,31 @@ export default new Router({
         name: '敏感词'
       }, ]
     },
+    {
+      path: '/system/banners',
+      name: 'Banner图',
+      icon: 'iconfont icontupian',
+      component: () => import('./views/Home.vue'),
+      show: 0,
+      isLeaf: 1,
+      children: [{
+        path: '/system/banners',
+        component: () => import('./views/system/Banners.vue'),
+        name: 'Banner图'
+      }, ]
+    },
+    // {
+    //   path: '/system/oplog',
+    //   name: '日志',
+    //   icon: 'iconfont iconrizhi',
+    //   component: () => import('./views/Home.vue'),
+    //   show: 0,
+    //   isLeaf: 1,
+    //   children: [{
+    //     path: '/system/oplog',
+    //     component: () => import('./views/system/Banners.vue'),
+    //     name: '日志'
+    //   }, ]
+    // },
   ]
 })

+ 273 - 0
src/views/system/Banners.vue

@@ -0,0 +1,273 @@
+<style lang="scss" scoped>
+.preview {
+  .el-form-item {
+    margin-bottom: 15px;
+  }
+  label,
+  p {
+    line-height: 25px !important;
+  }
+}
+// 上传
+/deep/.avatar-uploader .el-upload {
+    width: 148px;
+    height: 148px;
+    line-height: 148px;
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+    .avatar{
+        width: 100%;
+        height: auto;
+    }
+}
+.avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+}
+.avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 68px;
+    height: 68px;
+    line-height: 68px;
+    text-align: center;
+}
+.avatar {
+    width: 68px;
+    height: 68px;
+    display: block;
+}
+/deep/.speaker_avatar .el-upload{
+    width: 80px;
+    height: 80px;
+    line-height: 80px;
+}
+.hotel_imgs {
+    /deep/.el-upload--picture-card{
+    width:79px;
+    height: 79px;
+    line-height: 79px;
+    }   
+}
+</style>
+<template>
+  <section>
+    <p><span>系统管理></span>Banner图管理</p>
+    <div class="content">
+      <div class="filter">
+        <el-form
+          size="small"
+          label-width="70px"
+          :inline="true"
+          label-position="left"
+        >
+          <el-form-item label="">
+            <el-input
+              clearable
+              placeholder="请输入Banner图标题"
+              v-model="form.name"
+            ></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" @click="search">搜索</el-button>
+          </el-form-item>
+          <el-form-item style="float: right">
+            <el-button
+              @click="(dialogVisible = true), (dialogTitle = '新增Banner图')"
+              type="primary"
+              >新增Banner图</el-button
+            >
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-table
+        class="table"
+        :data="list"
+        height="50vh"
+        border
+        v-loading="loading"
+        default-expand-all
+        row-key="id"
+        style="width: 100%"
+      >
+        <el-table-column prop="name" label="Banner标题"> </el-table-column>
+        <el-table-column label="Banner图">
+          <template slot-scope="scope">
+            <img :src="scope.row.img" alt="" width="220" height="80" />
+          </template>
+        </el-table-column>
+        <el-table-column prop="is_active" label="是否开启">
+          <template slot-scope="scope">
+            <el-switch v-model="scope.row.is_active"> </el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column prop="is_active" label="是否跳转">
+          <template slot-scope="scope">
+            <el-switch v-model="scope.row.is_jump"> </el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column prop="url" label="跳转链接"> </el-table-column>
+        <el-table-column prop="zip" width="150" label="操作">
+          <template slot-scope="scope">
+            <el-button class="edit" type="text" @click="edit(scope.row.id)"
+              >编辑</el-button
+            >
+            <el-button class="del" @click="del(scope.row.id)" type="text"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <Page
+        ref="pageButton"
+        :current="form.page"
+        :page_size="form.page_size"
+        :total="total"
+        @pageChange="gopage"
+      />
+    </div>
+
+    <el-dialog
+      :title="dialogTitle"
+      :close-on-click-modal="false"
+      :visible.sync="dialogVisible"
+    >
+      <el-form size="small" class="preview" :inline="false" label-width="120px">
+        <el-form-item label="Banner标题">
+          <el-input v-model="form1.name"></el-input>
+        </el-form-item>
+        <el-form-item label="封面图:">
+          <el-upload
+            class="avatar-uploader"
+            action="/api/admin/uploadfile"
+            :show-file-list="false"
+            :on-success="handleAvatarSuccess"
+          >
+            <img v-if="form1.img" :src="form1.img" class="avatar" />
+            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+          </el-upload>
+          <span style="font-size: 12px; color: #999999"
+            >建议图片尺寸为:210*160</span
+          >
+        </el-form-item>
+        <el-form-item label="是否开启">
+          <el-radio v-model="form1.is_active" :label="1">是</el-radio>
+          <el-radio v-model="form1.is_active" :label="0">否</el-radio>
+        </el-form-item>
+        <el-form-item label="是否跳转">
+          <el-radio v-model="form1.is_jump" :label="1">是</el-radio>
+          <el-radio v-model="form1.is_jump" :label="0">否</el-radio>
+        </el-form-item>
+        <el-form-item label="跳转地址">
+          <el-input v-model="form1.url" placeholder="请输入跳转地址"></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" type="primary" @click="save">确 定</el-button>
+      </span>
+    </el-dialog>
+  </section>
+</template>
+<script>
+import Page from "../../components/Page";
+export default {
+  components: {
+    Page,
+  },
+  data() {
+    return {
+      form: { name: "", page: 1, page_size: 20 },
+      form1: {is_active:1,is_jump:0,img:""},
+      total: 1,
+      list: [{ name: "2333" }],
+      loading: false,
+      input: "",
+      dialogVisible: false,
+      dialogTitle: "",
+      defaultProps: {},
+      data: [],
+      selected: [],
+    };
+  },
+  methods: {
+    handleAvatarSuccess(res, file) {
+      this.form1.img = file.response.data;
+      this.$set(this.form1,"img",file.response.data)
+    },
+    search() {
+      let parm = this.form;
+      this.getData();
+    },
+    getData() {
+      var parm = this.form;
+      this.loading = true;
+      this.$api.getBannersList(parm).then((res) => {
+        let list = res.data.data.list;
+        this.list = list;
+        this.total = res.data.data.total;
+        this.loading = false;
+      });
+    },
+    gopage(size) {
+      if (size) {
+        this.form.page_size = size;
+      }
+      this.form.page = this.$refs.pageButton.page;
+      this.getData();
+    },
+    edit(id){
+      this.$api.getBanners({id:id}).then((res)=>{
+        this.form1 = res.data.data
+        this.dialogVisible = true
+      })
+    },
+    del(id) {
+      this.$confirm("确定删除吗", "提示", {
+        type: "warning",
+      }).then(() => {
+        this.$api.delBanners({ id: id }).then((res) => {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.getData();
+        });
+      });
+    },
+    save() {
+      let parm = this.form1;
+      if (parm.id) {
+        this.$api.updateBanners(parm).then((res) => {
+          if (res.data.code == 0) {
+            this.$message({
+              type: "success",
+              message: "保存成功!",
+            });
+            this.getData();
+          } else {
+            this.$message.error("失败!");
+          }
+        });
+      } else {
+        this.$api.addBanners(parm).then((res) => {
+          if (res.data.code == 0) {
+            this.$message({
+              type: "success",
+              message: "保存成功!",
+            });
+            this.getData();
+          } else {
+            this.$message.error("失败!");
+          }
+        });
+      }
+      this.dialogVisible = false;
+    },
+  },
+  created() {
+    this.getData();
+  },
+};
+</script>