当前位置: 首页 > news >正文

orchard可以做哪些网站qq推广

orchard可以做哪些网站,qq推广,北京营销型网站制作,自己怎样做网站文章关键词内链vuex缓存所有字典项 背景vuex管理所有字典项调用字典接口处理字典项数据的filter页面中使用字典 背景 每次用到字典都需要通过对应的字典type调用一次字典接口,当一个页面用到字典项很多时,接口请求炒鸡多,会导致接口响应超时。 本篇文章改为…

vuex缓存所有字典项

  • 背景
  • vuex管理所有字典项
  • 调用字典接口
  • 处理字典项数据的filter
  • 页面中使用字典

背景

每次用到字典都需要通过对应的字典type调用一次字典接口,当一个页面用到字典项很多时,接口请求炒鸡多,会导致接口响应超时。
本篇文章改为调用接口将所有字典项请求回存到vuex中,需要时通过过滤数据的方式解决这一问题。

vuex管理所有字典项

  1. 新建src\store\modules\dict.js文件
  2. dict.js完整代码
const state = {// 存储所有字典项allDict: new Array(),
};const mutations = {SET_ALL_DICT: (state, data) => {state.allDict = data;},CLEAN_ALL_DICT: (state) => {state.allDict = new Array();},
};const actions = {setAllDict({ commit }, data) {commit("SET_ALL_DICT", data);},cleanAllDict({ commit }) {commit("CLEAN_ALL_DICT");},
};export default {state,mutations,actions,
};
  1. 在src\store\index.js中引入dict.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";
import businessDictAll from "./modules/businessDictAll"; //引入Vue.use(Vuex);const store = new Vuex.Store({modules: {app,user,tagsView,permission,settings,businessDictAll,},getters,
});export default store;

4.src\store\getter.js中添加allDict

const getters = {sidebar: state => state.app.sidebar,size: state => state.app.size,device: state => state.app.device,dict: state => state.dict.dict,visitedViews: state => state.tagsView.visitedViews,cachedViews: state => state.tagsView.cachedViews,token: state => state.user.token,avatar: state => state.user.avatar,name: state => state.user.name,introduction: state => state.user.introduction,roles: state => state.user.roles,permissions: state => state.user.permissions,permission_routes: state => state.permission.routes,topbarRouters:state => state.permission.topbarRouters,defaultRoutes:state => state.permission.defaultRoutes,sidebarRouters:state => state.permission.sidebarRouters,allDict: state => state.businessDictAll.allDict, //所有字典项
}
export default getters

调用字典接口

我这块在src\store\modules\user.js中的的getInfo后调用的字典接口并存储字典数据,我放这的目的是当页面刷新会调用getInfo,调用成功后更新字典数据(也可以放到登录成功后,这种情况如果想要刷新字典数据,只能退出重新登录)。

  1. 关键代码
// 获取用户接口下的代码
let queryParams = {pageNum: 1,pageSize: 100000, //这块完全是因为后端不想再开接口,用的之前分页的接口,所以传了巨大个值
};
listData(queryParams).then((response) => {let dictData = response.rows;store.commit("SET_ALL_DICT", dictData);
});

处理字典项数据的filter

  1. src\filters\dict.js完整代码
import store from "@/store";const allDict = {// 处理select这类表单项数据// 如果有字典名dictName则过滤字典,若没有取当前表单项的option属性(这块是通过接口返回的数据字段)dictOption: function (formItem) {if (formItem.dictName) {let type = formItem.dictName;let dictList = [];if (type && typeof type === "string") {const dicts = store.getters && store.getters.allDict;dictList = dicts.filter((item) => item.dictType === type);} else {console.error(`字典获取失败`);}return dictList;} else {return formItem.option;}},// table中根据dictValue字段匹配对应dictLabel值dictAll: function (value, type) {let dictList = [];let foundItem = {};if (type && typeof type === "string") {const dicts = store.getters && store.getters.allDict;dictList = dicts.filter((item) => item.dictType === type);foundItem = dictList.find((item) => item.dictValue === value);} else {console.error(`字典获取失败`);}//如果过滤到了就返回dictLabel,// 否则判断当前是否有返回数据,如果有返回的数据,直接将数据返回// 否则接口没返回数据给table显示'-'(可根据需要去处理,我这块是因为table中数据为空要显示-)return foundItem ? foundItem.dictLabel : value ? value : "-";},
};export default allDict;
  1. 将过滤方法注册到全局
import dict from "./filters/dict";
// 注册所有过滤方法
for (let key in dict) {Vue.filter(key, dict[key]);
}

页面中使用字典

  1. table中使用
<baseTable:columns="columns":loading="loading":tableData="tableData":total="total":queryParams="queryParams":tableH="tableH"@getList="getList"><template #modeCode="record"><!-- 调用filter方法,record.row.modeCode为当前接口返回值,dictAll为全局过滤方法,mode_code为字典项名 --><span>{{ record.row.modeCode | dictAll("mode_code") }}</span></template><template #action="record"><el-buttonsize="mini"type="text"icon="el-icon-edit"@click="tableAction('update', record.row)">编辑</el-button><el-buttonsize="mini"type="text"icon="el-icon-delete"@click="tipClick">删除</el-button></template>
  1. 表单组件select和radio使用
<template><div><el-form:model="formModel":rules="rules"ref="baseForm":label-width="'120px'"><el-row :gutter="gutter"><div v-for="(item, index) in formData" :key="index"><el-col :span="item.span || 8" v-if="!item.hidden"><el-form-item :label="item.label" :prop="item.name"><!-- 省略组件其他表单项(具体可查看组件那篇) --><!-- 单选框 --><el-radio-groupv-if="item.type === 'radio'"v-model="formModel[item.name]":disabled="item.disabled || !isUpdate"@input="radioChange"><el-radiov-for="list in optionDicts(item)":key="list.value || list.dictValue":label="list.value || list.dictValue">{{ list.label }}</el-radio></el-radio-group><!-- select选择器 --><el-selectsize="small"v-if="item.type === 'select'"filterable:disabled="item.disabled || !isUpdate"v-model="formModel[item.name]":placeholder="item.disabled ? '' : '请选择' + item.label":multiple="item.multiple"style="width: 100%"@change="change(item.name, formModel[item.name])"><el-optionv-for="list in optionDicts(item)":key="list.value || list.dictValue":label="list.label || list.dictLabel":value="list.value || list.dictValue"/></el-select><!-- 自定义 --><template v-if="item.type == 'slot'" #default><slot :name="item.name"></slot></template></el-form-item></el-col></div></el-row></el-form></div>
</template>methods: {optionDicts(item) {//通过this.$options.filters调用处理表单项的过滤方法return this.$options.filters["dictOption"](item); }
}// 下面是给表单组件的栗子数据
data() {return {formItems: [{label: "XXX模式",type: "select",key: "modeCode",placeholder: "请选择XXX模式",dictName: "mode_code", },]}
}
http://www.zhongyajixie.com/news/54876.html

相关文章:

  • c2b网站开发公司打开百度网页版
  • 天津城市建设大学网站如何自己制作网站
  • 北京地铁建设管理公司网站网络营销的三大基础
  • 做网站写代码好还是模板什么是电商?电商怎么做
  • 成都微信微网站建设营销推广计划怎么写
  • 台州做网站设计的公司关键词优化公司费用多少
  • 网站站内搜索制作seo排名工具哪个好
  • 地产项目网站建设ppt如何设计网站步骤
  • 广州做网站哪家公司好湖南今日新闻最新头条
  • 网站建设开发程序代码推广引流工具
  • 体育直播网站开发数据源获取长沙官网seo收费标准
  • scatter网站开发网络推广公司有多少家
  • 淘宝刷单网站制作必应搜索引擎首页
  • 安庆网站建设推广保定百度seo排名
  • 北京网站优化效果怎样淘宝关键词排名查询工具免费
  • WordPress网站打不开nginxseo搜索引擎优化策略
  • 网站空间商推荐网站开发公司排行榜
  • wordpress 网站名称宁波seo外包费用
  • 自己做网站打开很卡怎么把网站排名排上去
  • 手机网站建设的第一个问题b站推广网站2024年不用下载
  • 西宁做网站网络优化主要做什么
  • 博彩网站开发seo关键词排名优
  • 界面设计好看的网站谷歌推广一年多少钱
  • 门户网站建设实施方案商丘搜索引擎优化
  • 网站建设 人员 年终总结哪里有软件培训班
  • 网站推广策划书 精品如何做网站推广及优化
  • 怎么做网站推广平台网站流量统计平台
  • 网站建设与网页制作基础入门教程营销广告网站
  • 如何做免费域名网站昆山网站建设公司
  • 莞城网站仿做seo网站优化培训要多少钱