Browse Source

第二版

guhongwei 4 năm trước cách đây
mục cha
commit
a7be799ae2

BIN
src/assets/center/jlhz.png


BIN
src/assets/center/kxpj.png


+ 159 - 0
src/assets/icon/iconfont.css

@@ -0,0 +1,159 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 1865865 */
+  src: url('iconfont.woff2?t=1623064737822') format('woff2'),
+       url('iconfont.woff?t=1623064737822') format('woff'),
+       url('iconfont.ttf?t=1623064737822') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.iconwenjuan:before {
+  content: "\e636";
+}
+
+.iconinformation-delivery:before {
+  content: "\e657";
+}
+
+.iconshenbao:before {
+  content: "\e6ef";
+}
+
+.iconchengguo:before {
+  content: "\e7af";
+}
+
+.iconyuyuefuwu:before {
+  content: "\e7ce";
+}
+
+.iconzhengji:before {
+  content: "\e6d1";
+}
+
+.iconicon-test1:before {
+  content: "\e6e0";
+}
+
+.iconicon_xinyong_xianxing_jijin-:before {
+  content: "\e60a";
+}
+
+.iconlianxiwomen:before {
+  content: "\e64a";
+}
+
+.icon111:before {
+  content: "\e602";
+}
+
+.iconwenxintishi:before {
+  content: "\e6cc";
+}
+
+.iconkefu:before {
+  content: "\e61a";
+}
+
+.iconicon-test:before {
+  content: "\e627";
+}
+
+.iconjiaoyu:before {
+  content: "\e61b";
+}
+
+.iconjianjie:before {
+  content: "\e616";
+}
+
+.iconzhubanfangrenzheng:before {
+  content: "\e603";
+}
+
+.iconzhubanfang:before {
+  content: "\e60f";
+}
+
+.icongerenzhongxin:before {
+  content: "\e638";
+}
+
+.icondajiangtang:before {
+  content: "\e609";
+}
+
+.iconmaikefeng-tianchong:before {
+  content: "\e64c";
+}
+
+.iconyijianfenxiang:before {
+  content: "\e600";
+}
+
+.iconfenxiang:before {
+  content: "\e63c";
+}
+
+.iconmaikefeng:before {
+  content: "\eb4a";
+}
+
+.iconshexiangtou:before {
+  content: "\e625";
+}
+
+.iconzhuangtai:before {
+  content: "\e655";
+}
+
+.iconfangjian1:before {
+  content: "\e617";
+}
+
+.iconshouye:before {
+  content: "\e615";
+}
+
+.iconfangjian:before {
+  content: "\e613";
+}
+
+.iconyonghu:before {
+  content: "\e608";
+}
+
+.iconzhibo:before {
+  content: "\e60b";
+}
+
+.icontongji:before {
+  content: "\e64b";
+}
+
+.iconquanxian:before {
+  content: "\e7ae";
+}
+
+.iconicon-person:before {
+  content: "\e607";
+}
+
+.iconbangding:before {
+  content: "\e72b";
+}
+
+.iconmima_huaban1:before {
+  content: "\e605";
+}
+
+.iconiconfront-:before {
+  content: "\e621";
+}
+

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
src/assets/icon/iconfont.js


+ 261 - 0
src/assets/icon/iconfont.json

@@ -0,0 +1,261 @@
+{
+  "id": "1865865",
+  "name": "直播平台",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon",
+  "description": "直播后台",
+  "glyphs": [
+    {
+      "icon_id": "1048271",
+      "name": "问卷调查",
+      "font_class": "wenjuan",
+      "unicode": "e636",
+      "unicode_decimal": 58934
+    },
+    {
+      "icon_id": "2727674",
+      "name": "信息发布",
+      "font_class": "information-delivery",
+      "unicode": "e657",
+      "unicode_decimal": 58967
+    },
+    {
+      "icon_id": "8574234",
+      "name": "申报",
+      "font_class": "shenbao",
+      "unicode": "e6ef",
+      "unicode_decimal": 59119
+    },
+    {
+      "icon_id": "15861741",
+      "name": "成果",
+      "font_class": "chengguo",
+      "unicode": "e7af",
+      "unicode_decimal": 59311
+    },
+    {
+      "icon_id": "16137390",
+      "name": "预约服务",
+      "font_class": "yuyuefuwu",
+      "unicode": "e7ce",
+      "unicode_decimal": 59342
+    },
+    {
+      "icon_id": "16392817",
+      "name": "征集",
+      "font_class": "zhengji",
+      "unicode": "e6d1",
+      "unicode_decimal": 59089
+    },
+    {
+      "icon_id": "1810267",
+      "name": "关闭",
+      "font_class": "icon-test1",
+      "unicode": "e6e0",
+      "unicode_decimal": 59104
+    },
+    {
+      "icon_id": "9696382",
+      "name": "信用信息管理、信息管理类",
+      "font_class": "icon_xinyong_xianxing_jijin-",
+      "unicode": "e60a",
+      "unicode_decimal": 58890
+    },
+    {
+      "icon_id": "1831603",
+      "name": "联系我们",
+      "font_class": "lianxiwomen",
+      "unicode": "e64a",
+      "unicode_decimal": 58954
+    },
+    {
+      "icon_id": "43407",
+      "name": "专家",
+      "font_class": "111",
+      "unicode": "e602",
+      "unicode_decimal": 58882
+    },
+    {
+      "icon_id": "250687",
+      "name": "温馨提示-",
+      "font_class": "wenxintishi",
+      "unicode": "e6cc",
+      "unicode_decimal": 59084
+    },
+    {
+      "icon_id": "551592",
+      "name": "客服",
+      "font_class": "kefu",
+      "unicode": "e61a",
+      "unicode_decimal": 58906
+    },
+    {
+      "icon_id": "3745064",
+      "name": "会议",
+      "font_class": "icon-test",
+      "unicode": "e627",
+      "unicode_decimal": 58919
+    },
+    {
+      "icon_id": "8027282",
+      "name": "教育",
+      "font_class": "jiaoyu",
+      "unicode": "e61b",
+      "unicode_decimal": 58907
+    },
+    {
+      "icon_id": "9550452",
+      "name": "简介",
+      "font_class": "jianjie",
+      "unicode": "e616",
+      "unicode_decimal": 58902
+    },
+    {
+      "icon_id": "14893766",
+      "name": "主办方认证",
+      "font_class": "zhubanfangrenzheng",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "15253802",
+      "name": "主办方",
+      "font_class": "zhubanfang",
+      "unicode": "e60f",
+      "unicode_decimal": 58895
+    },
+    {
+      "icon_id": "6338139",
+      "name": "个人中心",
+      "font_class": "gerenzhongxin",
+      "unicode": "e638",
+      "unicode_decimal": 58936
+    },
+    {
+      "icon_id": "9606662",
+      "name": "大讲堂",
+      "font_class": "dajiangtang",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    },
+    {
+      "icon_id": "2570115",
+      "name": "麦克风",
+      "font_class": "maikefeng-tianchong",
+      "unicode": "e64c",
+      "unicode_decimal": 58956
+    },
+    {
+      "icon_id": "15220134",
+      "name": "一键分享",
+      "font_class": "yijianfenxiang",
+      "unicode": "e600",
+      "unicode_decimal": 58880
+    },
+    {
+      "icon_id": "573775",
+      "name": "分享",
+      "font_class": "fenxiang",
+      "unicode": "e63c",
+      "unicode_decimal": 58940
+    },
+    {
+      "icon_id": "7335647",
+      "name": "麦克风",
+      "font_class": "maikefeng",
+      "unicode": "eb4a",
+      "unicode_decimal": 60234
+    },
+    {
+      "icon_id": "8157938",
+      "name": "摄像头",
+      "font_class": "shexiangtou",
+      "unicode": "e625",
+      "unicode_decimal": 58917
+    },
+    {
+      "icon_id": "5076572",
+      "name": "状态",
+      "font_class": "zhuangtai",
+      "unicode": "e655",
+      "unicode_decimal": 58965
+    },
+    {
+      "icon_id": "5017103",
+      "name": "房间",
+      "font_class": "fangjian1",
+      "unicode": "e617",
+      "unicode_decimal": 58903
+    },
+    {
+      "icon_id": "1638357",
+      "name": "首页",
+      "font_class": "shouye",
+      "unicode": "e615",
+      "unicode_decimal": 58901
+    },
+    {
+      "icon_id": "3710184",
+      "name": "房间",
+      "font_class": "fangjian",
+      "unicode": "e613",
+      "unicode_decimal": 58899
+    },
+    {
+      "icon_id": "7738015",
+      "name": "用户",
+      "font_class": "yonghu",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "11800270",
+      "name": "直播",
+      "font_class": "zhibo",
+      "unicode": "e60b",
+      "unicode_decimal": 58891
+    },
+    {
+      "icon_id": "12837797",
+      "name": "统计1",
+      "font_class": "tongji",
+      "unicode": "e64b",
+      "unicode_decimal": 58955
+    },
+    {
+      "icon_id": "14033570",
+      "name": "权限",
+      "font_class": "quanxian",
+      "unicode": "e7ae",
+      "unicode_decimal": 59310
+    },
+    {
+      "icon_id": "712103",
+      "name": "姓名",
+      "font_class": "icon-person",
+      "unicode": "e607",
+      "unicode_decimal": 58887
+    },
+    {
+      "icon_id": "1356727",
+      "name": "绑定",
+      "font_class": "bangding",
+      "unicode": "e72b",
+      "unicode_decimal": 59179
+    },
+    {
+      "icon_id": "14683074",
+      "name": "修改密码",
+      "font_class": "mima_huaban1",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
+    {
+      "icon_id": "8098828",
+      "name": "退出",
+      "font_class": "iconfront-",
+      "unicode": "e621",
+      "unicode_decimal": 58913
+    }
+  ]
+}

BIN
src/assets/icon/iconfont.ttf


BIN
src/assets/icon/iconfont.woff


BIN
src/assets/icon/iconfont.woff2


+ 207 - 0
src/components/common/top copy.vue

@@ -0,0 +1,207 @@
+<template>
+  <div id="top">
+    <el-row>
+      <el-col :span="24" class="foot">
+        <el-col :span="24" class="top">
+          <div class="w_1200">
+            <el-col :span="6" class="left">
+              欢迎来到中科在线(长春)
+            </el-col>
+            <el-col :span="18" class="right">
+              <el-col :span="24" v-if="user ? user.id : ''">
+                <span>{{ user.name || user.adminuser || user.user || user.title || '游客' }}</span>
+                <el-button type="primary" size="mini" @click="centerLogin">个人中心</el-button>
+                <el-button type="danger" size="mini" @click="logout">退出登录</el-button>
+              </el-col>
+              <el-col :span="24" v-else>
+                <span>游客</span>
+                <el-button type="primary" size="mini" @click="$router.push({ path: '/login' })">平台登录</el-button>
+                <el-button type="primary" size="mini" @click="adminBtn()">管理登录</el-button>
+              </el-col>
+            </el-col>
+          </div>
+        </el-col>
+        <el-col :span="24" class="info">
+          <div class="w_1200">
+            <el-image :src="logo" @click="$router.push({ path: '/' })"></el-image>
+            <span @click="$router.push({ path: '/' })">中科在线(长春)</span>
+          </div>
+        </el-col>
+        <el-col :span="24" class="menu">
+          <div class="w_1200">
+            <el-col :span="24" class="menuInfo">
+              <ul>
+                <li :class="isTab('live') ? 'active' : ''">
+                  <a @click="turnTo('live')" target="">直播大厅</a>
+                </li>
+                <li :class="isTab('market') ? 'active' : ''">
+                  <a @click="turnTo('market')" target="">科技超市</a>
+                </li>
+                <li :class="isTab('news') ? 'active' : ''">
+                  <a @click="turnTo('news')" target="">新闻资讯</a>
+                </li>
+                <li :class="isTab('dynamic') ? 'active' : ''">
+                  <a @click="turnTo('dynamic')" target="">数据动态</a>
+                </li>
+                <li :class="isTab('techolchat') ? 'active' : ''">
+                  <a @click="turnTo('techolchat')" target="">技术交流</a>
+                </li>
+              </ul>
+            </el-col>
+          </div>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'top',
+  props: {},
+  components: {},
+  data: function() {
+    return {
+      logo: require('../../assets/logo.png'),
+    };
+  },
+  created() {
+    console.log(this.user);
+  },
+  methods: {
+    turnTo(type) {
+      this.$router.push({ path: `/${type}/index` });
+    },
+    // 选中
+    isTab(type) {
+      return this.$route.path.includes(`/${type}`);
+    },
+    // 个人中心
+    centerLogin() {
+      let data = this.user;
+      if (data.code) {
+        this.$router.push({ path: '/userCenter' });
+      } else if (data.room_id) {
+        let num = data.room_id.substr(0, 1);
+        if (num == 1) {
+          this.$router.push({ path: '/admin/live/achieve' });
+        } else if (num == 2) {
+          this.$router.push({ path: '/admin/live/science' });
+        } else if (num == 3) {
+          this.$router.push({ path: '/admin/live/train' });
+        }
+      } else {
+        console.log('31');
+        console.log(this.user);
+      }
+    },
+    // 退出登录
+    logout() {
+      localStorage.removeItem('token');
+      localStorage.removeItem('type');
+      this.$router.push('/');
+    },
+    adminBtn() {
+      window.location.href = 'http://broadcast.waityou24.cn/liveadmin/login';
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.foot {
+  height: 250px;
+  background: url('../../assets/top_bg.png');
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+  .top {
+    height: 40px;
+    line-height: 40px;
+    background: #2152991f;
+    .left {
+      color: #fff;
+    }
+    .right {
+      text-align: right;
+      span {
+        display: inline-block;
+        padding: 0px 10px;
+        font-weight: bold;
+      }
+    }
+  }
+  .info {
+    height: 160px;
+    overflow: hidden;
+    position: relative;
+    .el-image {
+      width: 70px;
+      height: 70px;
+      overflow: hidden;
+      top: 40px;
+    }
+    span {
+      color: #2d64b3;
+      font-size: 36px;
+      font-family: cursive;
+      text-shadow: -1px 0 #fff, 0 1px #fff, 1px 0 #fff, 0 -1px #fff;
+      font-weight: 600;
+      padding: 0 10px;
+      position: absolute;
+      height: 160px;
+      line-height: 160px;
+    }
+  }
+  .info:hover {
+    cursor: pointer;
+  }
+  .menu {
+    .menuInfo {
+      height: 50px;
+      overflow: hidden;
+      background: #0085d2;
+      ul {
+        margin: 0;
+        padding: 0;
+        li {
+          float: left;
+          width: 239px;
+          height: 50px;
+          line-height: 50px;
+          list-style: none;
+          text-align: center;
+          font-size: 20px;
+          border-right: 1px solid #f1f1f1;
+          color: #fff;
+          a {
+            float: left;
+            width: 100%;
+            height: 50px;
+            line-height: 50px;
+          }
+        }
+        li:hover {
+          cursor: pointer;
+          background-color: #fe950e;
+        }
+      }
+      ul .active {
+        background-color: #fe950e;
+      }
+      ul li:last-child {
+        width: 240px;
+        border-right: 0;
+      }
+    }
+  }
+}
+</style>

+ 7 - 7
src/components/common/top.vue

@@ -37,14 +37,14 @@
                 <li :class="isTab('market') ? 'active' : ''">
                   <a @click="turnTo('market')" target="">科技超市</a>
                 </li>
-                <li :class="isTab('news') ? 'active' : ''">
-                  <a @click="turnTo('news')" target="">新闻资讯</a>
+                <li :class="isTab('interflow') ? 'active' : ''">
+                  <a @click="turnTo('interflow')" target="">交流合作</a>
                 </li>
-                <li :class="isTab('dynamic') ? 'active' : ''">
-                  <a @click="turnTo('dynamic')" target="">数据动态</a>
+                <li :class="isTab('service') ? 'active' : ''">
+                  <a @click="turnTo('service')" target="">创新服务</a>
                 </li>
-                <li :class="isTab('techolchat') ? 'active' : ''">
-                  <a @click="turnTo('techolchat')" target="">技术交流</a>
+                <li :class="isTab('universal') ? 'active' : ''">
+                  <a @click="turnTo('universal')" target="">科学普及</a>
                 </li>
               </ul>
             </el-col>
@@ -71,7 +71,7 @@ export default {
   },
   methods: {
     turnTo(type) {
-      this.$router.push({ path: `/${type}/index` });
+      this.$router.push({ path: `/twoweb/${type}/index` });
     },
     // 选中
     isTab(type) {

+ 43 - 0
src/store/declare.js

@@ -0,0 +1,43 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+import { registerCoordinateSystem } from 'echarts';
+Vue.use(Vuex);
+const api = {
+  declare: `/api/live/v0/cysci/declare`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.declare}`, {
+      skip,
+      limit,
+      ...info,
+    });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.declare}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.declare}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.declare}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.declare}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 56 - 0
src/store/kjzl/Medium.js

@@ -0,0 +1,56 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+const jwt = require('jsonwebtoken');
+Vue.use(Vuex);
+const api = {
+  Medium: `/api/live/v0/kjzl/kjzlMedium`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.Medium}`, {
+      skip,
+      limit,
+      ...info,
+    });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.Medium}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.Medium}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.Medium}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.Medium}/${payload}`);
+    return res;
+  },
+  async fromFetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.Medium}/from/${payload}`);
+    return res;
+  },
+  async login({ commit }, { user }) {
+    const res = await this.$axios.$post(`${api.Medium}/login`, user);
+    if (res.errcode === 0) {
+      localStorage.setItem('token', res.data);
+      user = jwt.decode(res.data);
+      commit('setUser', user, { root: true });
+      return res;
+    }
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 42 - 0
src/store/kjzl/Order.js

@@ -0,0 +1,42 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  Order: `/api/live/v0/kjzl/kjzlOrder`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.Order}`, {
+      skip,
+      limit,
+      ...info,
+    });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.Order}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.Order}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.Order}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.Order}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 58 - 0
src/store/mechanism.js

@@ -0,0 +1,58 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  mechanism: `/api/live/v0/cysci/mechanism`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.mechanism}`, {
+      skip,
+      limit,
+      ...info,
+    });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.mechanism}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.mechanism}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.mechanism}/update/${id}`, data);
+    return res;
+  },
+
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.mechanism}/${payload}`);
+    return res;
+  },
+  async password({ commit }, { id, passwd }) {
+    const res = await this.$axios.$post(`${api.mechanism}/password/${id}`, { passwd });
+    return res;
+  },
+  async login({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.mechanism}/login`, payload);
+    const jwt = require('jsonwebtoken');
+    if (res.errcode === 0) {
+      localStorage.setItem('token', res.data);
+      localStorage.setItem('type', 'ZJJG');
+      const user = jwt.decode(res.data);
+      commit('setUser', user, { root: true });
+    }
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 43 - 0
src/store/universal.js

@@ -0,0 +1,43 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  universal: `/api/live/v0/tecinfo/universal`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.universal}`, {
+      skip,
+      limit,
+      ...info,
+    });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.universal}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.universal}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.universal}/update/${id}`, data);
+    return res;
+  },
+
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.universal}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};