guhongwei 4 tahun lalu
induk
melakukan
f236500209

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
     "babel-polyfill": "^6.26.0",
     "core-js": "^3.6.5",
     "element-ui": "^2.13.2",
+    "jsonwebtoken": "^8.5.1",
     "lodash": "^4.17.20",
     "naf-core": "^0.1.2",
     "qrcode": "^1.4.4",

+ 1 - 7
src/components/common/Sidebar.vue

@@ -80,13 +80,7 @@ export default {
       let user = this.user;
       // 复制列表
       let list = _.cloneDeep(this.items);
-      let data = [
-        {
-          icon: 'el-icon-s-home',
-          index: 'test',
-          title: '测试菜单',
-        },
-      ];
+      let data = [];
       list.push(...data);
       this.$set(this, `items`, _.uniqBy(list, 'index'));
     },

+ 0 - 5
src/router/index.js

@@ -20,11 +20,6 @@ export default new Router({
           component: () => import('../views/homeIndex.vue'),
           meta: { title: '系统首页' },
         },
-        {
-          path: '/test',
-          component: () => import('../views/test/index.vue'),
-          meta: { title: '测试菜单' },
-        },
         {
           path: '/company',
           component: () => import('../views/company/index.vue'),

+ 2 - 0
src/store/index.js

@@ -5,6 +5,7 @@ import * as umutations from './user/mutations';
 import login from './login';
 import company from './company';
 import testmess from './testmess';
+import password from './password';
 
 Vue.use(Vuex);
 
@@ -16,5 +17,6 @@ export default new Vuex.Store({
     login,
     company,
     testmess,
+    password,
   },
 });

+ 43 - 0
src/store/password.js

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

File diff ditekan karena terlalu besar
+ 16989 - 0
src/util/user.js


+ 0 - 112
src/views/Login copy.vue

@@ -1,112 +0,0 @@
-<template>
-  <div class="login-wrap">
-    <div class="ms-login">
-      <div class="ms-title">后台管理系统</div>
-      <el-form :model="form" :rules="rules" ref="login" label-width="0px" class="ms-content">
-        <el-form-item prop="username">
-          <el-input v-model="form.tel" placeholder="请输入手机号">
-            <el-button slot="prepend" icon="el-icon-user"></el-button>
-          </el-input>
-        </el-form-item>
-        <el-form-item prop="password">
-          <el-input type="password" placeholder="请输入密码" v-model="form.pwd">
-            <el-button slot="prepend" icon="el-icon-lock"></el-button>
-          </el-input>
-        </el-form-item>
-        <div class="login-btn">
-          <el-button type="primary" @click="submitForm()">登录</el-button>
-        </div>
-      </el-form>
-    </div>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: login } = createNamespacedHelpers('login');
-export default {
-  metaInfo: { title: '登录' },
-  name: 'login',
-  props: {},
-  components: {},
-  data: function() {
-    return {
-      form: {},
-      rules: {
-        tel: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
-        pwd: [{ required: true, message: '请输入密码', trigger: 'blur' }],
-      },
-    };
-  },
-  created() {},
-  methods: {
-    ...login(['login']),
-    submitForm() {
-      this.$refs.login.validate(async valid => {
-        if (valid) {
-          let res = await this.login({ user: this.form });
-          if (this.$checkRes(res)) {
-            this.$message.success('登录成功');
-            // localStorage.setItem('user', JSON.stringify(res.data));
-            this.$router.push('/homeIndex');
-          }
-        } else {
-          this.$message.error('请输入账号和密码');
-          console.log('error submit!!');
-          return false;
-        }
-      });
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.login-wrap {
-  position: relative;
-  width: 100%;
-  height: 100%;
-  background-image: url(../assets/img/login-bg.jpg);
-  background-size: 100%;
-}
-.ms-title {
-  width: 100%;
-  line-height: 50px;
-  text-align: center;
-  font-size: 20px;
-  color: #fff;
-  border-bottom: 1px solid #ddd;
-}
-.ms-login {
-  position: absolute;
-  left: 50%;
-  top: 50%;
-  width: 350px;
-  margin: -190px 0 0 -175px;
-  border-radius: 5px;
-  background: rgba(255, 255, 255, 0.3);
-  overflow: hidden;
-}
-.ms-content {
-  padding: 30px 30px;
-}
-.login-btn {
-  text-align: center;
-}
-.login-btn button {
-  width: 100%;
-  height: 36px;
-  margin-bottom: 10px;
-}
-.login-tips {
-  font-size: 12px;
-  line-height: 30px;
-  color: #fff;
-}
-/deep/.js .el-form-item__content {
-  padding: 0 25px;
-  .el-radio {
-    color: #fff;
-  }
-}
-</style>

+ 9 - 237
src/views/company/index.vue

@@ -1,255 +1,27 @@
 <template>
   <div id="index">
-    <el-row>
-      <el-col :span="24" class="main">
-        <breadcrumb :breadcrumbTitle="this.$route.meta.title"></breadcrumb>
-        <el-col :span="24" class="container info">
-          <el-col :span="24" class="top">
-            <el-button type="primary" size="mini" @click="dialog = true">添加</el-button>
-          </el-col>
-          <el-col :span="24" class="list">
-            <data-table :fields="fields" :opera="opera" :data="list" :total="total" @edit="toEdit" @delete="toDelete" @query="search"></data-table>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-    <el-dialog :visible.sync="dialog" title="增加企业信息" @close="toClose" :destroy-on-close="true" width="50%">
-      <data-form :data="form" :fields="formFields" :rules="rules" @save="turnSave">
-        <!-- 单选 -->
-        <!-- <template #radios="{item}">
-          <template v-if="item.model === 'type'">
-            <el-radio label="0">技术</el-radio>
-            <el-radio label="1">产品</el-radio>
-            <el-radio label="1">服务</el-radio>
-          </template>
-        </template> -->
-        <!-- 下拉单选 -->
-        <!-- <template #options="{item}">
-          <template v-if="item.model == 'type'">
-            <template v-for="(i, index) in typeList">
-              <el-option :key="index" :label="`${i.name}`" :value="i.id"></el-option>
-            </template>
-          </template>
-        </template>
-        <template #custom="{item,form}">
-          <template v-if="item.model === 'file'">
-            <upload
-              :limit="1"
-              :data="form.file"
-              type="file"
-              :isBtn="true"
-              :url="`/files/file/upload`"
-              @upload="uploadSuccess"
-              @onedelete="uploadDeletefile"
-            ></upload>
-          </template>
-          <template v-else-if="item.model === 'video'">
-            <upload
-              :limit="1"
-              :data="form.video"
-              type="video"
-              :uploadBtn="true"
-              listType=""
-              :url="`/files/video/upload`"
-              @upload="uploadSuccess"
-              @onedelete="uploadDeletevideo"
-            ></upload>
-          </template>
-          <template v-else-if="item.model === 'image'">
-            <upload
-              :limit="2"
-              :data="form.image"
-              type="image"
-              :isBtn="true"
-              fileType="2"
-              :url="`/files/image/upload`"
-              @upload="uploadSuccess"
-              @delete="uploadDelete"
-            ></upload>
-          </template>
-        </template> -->
-      </data-form>
-    </el-dialog>
+    <p>index</p>
   </div>
 </template>
 
 <script>
-import breadcrumb from '@c/common/breadcrumb.vue';
-import dataTable from '@/components/frame/filter-page-table.vue';
-import dataForm from '@/components/frame/form.vue';
-import upload from '@/components/frame/uploadone.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: testmess } = createNamespacedHelpers('testmess');
 export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
   name: 'index',
   props: {},
-  components: {
-    breadcrumb,
-    dataTable,
-    dataForm,
-    // upload,
-  },
+  components: {},
   data: function() {
-    return {
-      opera: [
-        {
-          label: '修改',
-          icon: 'el-icon-edit',
-          method: 'edit',
-        },
-        {
-          label: '删除',
-          icon: 'el-icon-delete',
-          method: 'delete',
-        },
-      ],
-      fields: [
-        { label: '标题', prop: 'title' },
-        { label: '发布时间', prop: 'publish_time' },
-        { label: '来源', prop: 'origin' },
-        { label: '内容', prop: 'content' },
-      ],
-      list: [],
-      total: 0,
-      // 增加菜单
-      dialog: false,
-      formFields: [
-        { label: '标题', required: true, model: 'title' },
-        { label: '发布时间', required: true, model: 'publish_time', type: 'date' },
-        { label: '来源', required: true, model: 'origin' },
-        { label: '内容', required: true, model: 'content' },
-      ],
-      form: {},
-      rules: {},
-      // 类型
-      typeList: [
-        {
-          id: '0',
-          name: '技术',
-        },
-        {
-          id: '1',
-          name: '产品',
-        },
-        {
-          id: '2',
-          name: '服务',
-        },
-      ],
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...testmess(['query', 'fetch', 'create', 'update', 'delete']),
-    // 查询列表
-    async search({ skip = 0, limit = 10, ...info } = {}) {
-      let res = await this.query({ skip, limit, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-        this.$set(this, `total`, res.total);
-      }
-    },
-    // 修改
-    async toEdit({ data }) {
-      this.dialog = true;
-      let res = await this.fetch(data.id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `form`, res.data);
-      }
-    },
-    // 删除
-    async toDelete() {
-      let res = await this.delete(data);
-      if (this.$checkRes(res)) {
-        this.$message({
-          message: '删除成功',
-          type: 'success',
-        });
-        this.search();
-      }
-    },
-    // 增加菜单
-    // 保存
-    async turnSave({ data }) {
-      if (data.id) {
-        let res = await this.update(data);
-        if (this.$checkRes(res)) {
-          this.$message({
-            message: '修改成功',
-            type: 'success',
-          });
-          this.toClose();
-        } else {
-          this.$message({
-            message: res.errmsg,
-            type: 'error',
-          });
-        }
-      } else {
-        let res = await this.create(data);
-        if (this.$checkRes(res)) {
-          this.$message({
-            message: '创建成功',
-            type: 'success',
-          });
-          this.toClose();
-        } else {
-          this.$message({
-            message: res.errmsg,
-            type: 'error',
-          });
-        }
-      }
-    },
-    // 取消增加
-    toClose() {
-      this.form = {};
-      this.dialog = false;
-      this.search();
-    },
-    uploadSuccess({ type, data }) {
-      if (type == 'image') {
-        let arr = _.get(this.form, type);
-        if (_.isArray(arr)) {
-          let datas = { name: data.name, url: data.uri };
-          this.form[type].push({ name: data.name, url: data.uri });
-        } else {
-          let newArr = [{ name: data.name, url: data.uri }];
-          this.$set(this.form, `${type}`, newArr);
-        }
-      } else {
-        this.$set(this.form, `${type}`, data.uri);
-      }
-    },
-    // 删除图片
-    uploadDelete(index) {
-      this.form.image.splice(index, 1);
-    },
-    uploadDeletefile(data) {
-      this.form.file = null;
-    },
-    uploadDeletevideo(data) {
-      this.form.video = null;
-    },
+    return {};
   },
+  created() {},
+  methods: {},
   computed: {
     ...mapState(['user']),
   },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
 };
 </script>
 
-<style lang="less" scoped>
-.main {
-  .info {
-    .top {
-      text-align: right;
-      margin: 10px 0;
-    }
-  }
-}
-</style>
+<style lang="less" scoped></style>

+ 0 - 125
src/views/test/index.vue

@@ -1,125 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="main">
-        <breadcrumb :breadcrumbTitle="this.$route.meta.title"></breadcrumb>
-        <el-col :span="24" class="container info">
-          <el-col :span="24" class="top">
-            <el-button type="primary" size="mini" @click="dialog = true">添加</el-button>
-          </el-col>
-          <el-col :span="24" class="list">
-            <data-table :fields="fields" :opera="opera" :data="list" :total="total" @edit="toEdit" @delete="toDelete" @query="search"></data-table>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-    <el-dialog :visible.sync="dialog" title="增加菜单" @close="toClose" :destroy-on-close="true" width="50%">
-      <data-form :data="form" :fields="formFields" :rules="rules" @save="turnSave">
-        <template #custom="{item}">
-          <template v-if="item.model == 'icon'">
-            <el-radio-group v-model="form.icon">
-              <el-radio v-for="(item, index) in iconlist" :key="index" :label="item.iconkey"><i :class="item.iconkey"></i></el-radio>
-            </el-radio-group>
-          </template>
-        </template>
-      </data-form>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { iconmenu } from '@/util/iconmenu';
-import breadcrumb from '@c/common/breadcrumb.vue';
-import dataTable from '@/components/frame/filter-page-table.vue';
-import dataForm from '@/components/frame/form.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'index',
-  props: {},
-  components: {
-    breadcrumb,
-    dataTable,
-    dataForm,
-  },
-  data: function() {
-    return {
-      opera: [
-        {
-          label: '修改',
-          icon: 'el-icon-edit',
-          method: 'edit',
-        },
-        {
-          label: '删除',
-          icon: 'el-icon-delete',
-          method: 'delete',
-        },
-      ],
-      fields: [
-        { label: '菜单名称', prop: 'title' },
-        { label: '菜单地址', prop: 'index' },
-        { label: '菜单图标', prop: 'icon' },
-      ],
-      list: [],
-      total: 0,
-      // 增加菜单
-      dialog: false,
-      formFields: [
-        { label: '菜单名称', required: true, model: 'title' },
-        { label: '菜单地址', required: true, model: 'index' },
-        { label: '菜单图标', required: true, model: 'icon', custom: true },
-      ],
-      form: {},
-      rules: {
-        title: [{ required: true, message: '请输入菜单名称', trigger: 'blur' }],
-        index: [{ required: true, message: '请输入菜单地址', trigger: 'blur' }],
-        icon: [{ required: true, message: '请输入菜单图标', trigger: 'blur' }],
-      },
-      // 图标
-      iconlist: iconmenu,
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    // 查询列表
-    async search({ skip = 0, limit = 10, ...info } = {}) {},
-    // 修改
-    toEdit({ data }) {
-      console.log(data);
-    },
-    // 删除
-    toDelete({ data }) {
-      console.log(data);
-    },
-    // 增加菜单
-    // 保存
-    turnSave({ data }) {
-      console.log(data);
-    },
-    // 取消增加
-    toClose() {
-      this.form = {};
-      this.dialog = false;
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  .info {
-    .top {
-      text-align: right;
-      margin: 15px 0;
-    }
-  }
-}
-</style>

+ 1 - 1
vue.config.js

@@ -23,7 +23,7 @@ module.exports = {
         target: 'http://free.liaoningdoupo.com',
       },
       '/api': {
-        target: 'http://192.168.1.43:8081',
+        target: 'http://free.liaoningdoupo.com',
         changeOrigin: true,
         ws: true,
       },