若依框架前后端分离Vue如何做自定义的组件

若依框架前后端分离Vue如何做自定义的组件

在vue页面中用到了大量的组件,比如选择用户组件,下面咱们自己做一个组件。就拿用户选择组件作为例子。

1、创建组件WmsUserSelect

在vue项目目录src→components→WmsUserSelect目录下创建该组件目录及index.vue文件。
请添加图片描述

该index.vue文件的详细代码:

<template>
  <el-select placeholder="请选择用户" clearable v-model="customer">
    <el-option
      v-for="customer in userList"
      :key="customer.id"
      :label="customer.nickName"
      :value="customer.userId"
    ></el-option>
  </el-select>
</template>
<script>
import { mapGetters } from 'vuex';
export default {
  props: ['value','size'],
  data() {
    return {

    }
  },
  computed: {
    ...mapGetters(['userList']),
    customer: {
      get() {
        return this.value;
      },
      set(v) {
        this.$emit('input', v);
      }
    }
  },
  created() {
  },
  methods: {
  }
}
</script>

2、userList的配置

这里所说的userList指的是组件WmsUserSelect中的 …mapGetters([‘userList’]),中的关于用户列表配置。

这里用到了store文件夹下的相关文件配置。

2.1、getter.js配置

主要展示与我们例子相关的配置

const getters = {
  // userSelet组件相关
  userList: state => state.wms.userList,
  userMap: state=> state.wms.userMap,
  },

export default getters

2.2 、wms.js配置

主要展示与我们例子相关的配置

import {listUser} from "@/api/system/user";
const state = {
  userList: [],
  userMap: new Map()
}
const mutations = {
  SET_USERS(state, list) {
    state.userList = list;
    state.userMap = new Map();
    list.forEach((user) => {
      state.userMap.set(user.userId, user.nickName)
    })
  },
}
const actions = {
  
  getUser({ commit }) {
    return listUser({}, { page: 0, size: 1000 })
      .then(res => {
        console.log("getUser: ",res);
        const { rows } =res
        commit('SET_USERS', rows);
      })
  },
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}

2.3、index配置

导入wms.js配置

import Vue from 'vue'
import Vuex from 'vuex'
import app from './modules/app'
import user from './modules/user'
import tagsView from './modules/tagsView'
import permission from './modules/permission'
import settings from './modules/settings'
import getters from './getters'
// wms
import wms from './modules/wms'
import dict from './modules/dict'

Vue.use(Vuex)

const store = new Vuex.Store({
  modules: {
    app,
    user,
    tagsView,
    permission,
    settings,
    dict,
    wms
  },
  getters
})

export default store

3、main.js中配置注册挂载组件

import WmsUserSelect from '@/components/WmsUserSelect'

Vue.component('WmsUserSelect',WmsUserSelect)

4、页面表格中选用该组件

<el-form-item label="测试员" prop="customerId" >
   <WmsUserSelect v-model="form.customerId"></WmsUserSelect>
</el-form-item>

5、效果展示

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值