Added new API calls for managing dictionaries and updated related components and store modules.

master
Tuzki 2 years ago
parent e290b39e6a
commit 5e8f6f7d91
  1. 70
      api/system/dict/data.js
  2. 62
      api/system/dict/type.js
  3. 6
      main.js
  4. 4
      pages/block/index.vue
  5. 14
      store/getters.js
  6. 14
      store/index.js
  7. 54
      store/modules/dict.js
  8. 2
      store/modules/user.js
  9. 161
      utils/dict.js

@ -0,0 +1,70 @@
import request from '@/utils/request'
// 查询字典数据列表
export function listData(query) {
return request({
url: '/system/dict-data/page',
method: 'get',
params: query
})
}
// 查询字典数据详细
export function getData(dictCode) {
return request({
url: '/system/dict-data/get?id=' + dictCode,
method: 'get'
})
}
// 根据字典类型查询字典数据信息
export function getDicts(dictType) {
return request({
url: '/system/dict-data/type/' + dictType,
method: 'get'
})
}
// 新增字典数据
export function addData(data) {
return request({
url: '/system/dict-data/create',
method: 'post',
data: data
})
}
// 修改字典数据
export function updateData(data) {
return request({
url: '/system/dict-data/update',
method: 'put',
data: data
})
}
// 删除字典数据
export function delData(dictCode) {
return request({
url: '/system/dict-data/delete?id=' + dictCode,
method: 'delete'
})
}
// 导出字典数据
export function exportData(query) {
return request({
url: '/system/dict-data/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 查询全部字典数据列表
export function listSimpleDictDatas() {
return request({
url: '/system/dict-data/list-all-simple',
method: 'get',
})
}

@ -0,0 +1,62 @@
import request from '@/utils/request'
// 查询字典类型列表
export function listType(query) {
return request({
url: '/system/dict-type/page',
method: 'get',
params: query
})
}
// 查询字典类型详细
export function getType(dictId) {
return request({
url: '/system/dict-type/get?id=' + dictId,
method: 'get'
})
}
// 新增字典类型
export function addType(data) {
return request({
url: '/system/dict-type/create',
method: 'post',
data: data
})
}
// 修改字典类型
export function updateType(data) {
return request({
url: '/system/dict-type/update',
method: 'put',
data: data
})
}
// 删除字典类型
export function delType(dictId) {
return request({
url: '/system/dict-type/delete?id=' + dictId,
method: 'delete'
})
}
// 导出字典类型
export function exportType(query) {
return request({
url: '/system/dict-type/export',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 获取字典选择框列表
export function listAllSimple() {
return request({
url: '/system/dict-type/list-all-simple',
method: 'get'
})
}

@ -3,10 +3,16 @@ import App from './App'
import store from './store' // store
import plugins from './plugins' // plugins
import './permission' // permission
import {DICT_TYPE, getDictDataLabel, getDictDatas, getDictDatas2} from "@/utils/dict";
import { getDicts } from "@/api/system/dict/data";
Vue.use(plugins)
Vue.config.productionTip = false
Vue.prototype.$store = store
Vue.prototype.getDictDatas = getDictDatas
Vue.prototype.getDictDatas2 = getDictDatas2
Vue.prototype.getDictDataLabel = getDictDataLabel
Vue.prototype.DICT_TYPE = DICT_TYPE
App.mpType = 'app'

@ -1,6 +1,6 @@
<template>
<view>
<view v-for="dict in this.getDictDatas(DICT_TYPE.PLANTING_WAY)">{{ dict.label }}</view>
</view>
</template>
@ -11,6 +11,8 @@
}
},
created() {
},
methods: {
}

@ -1,8 +1,10 @@
const getters = {
token: state => state.user.token,
avatar: state => state.user.avatar,
name: state => state.user.name,
roles: state => state.user.roles,
permissions: state => state.user.permissions
token: state => state.user.token,
avatar: state => state.user.avatar,
name: state => state.user.name,
roles: state => state.user.roles,
permissions: state => state.user.permissions,
// 数据字典
dict_datas: state => state.dict.dictDatas
}
export default getters
export default getters

@ -2,14 +2,18 @@ import Vue from 'vue'
import Vuex from 'vuex'
import user from '@/store/modules/user'
import getters from './getters'
import dict from './modules/dict'
Vue.use(Vuex)
const store = new Vuex.Store({
modules: {
user
},
getters
modules: {
user,
dict
},
getters
})
export default store
export default store

@ -0,0 +1,54 @@
import { listSimpleDictDatas } from '@/api/system/dict/data'
const state = {
/**
* 数据字典 MAP
* key数据字典大类枚举值 dictType
* dictValue数据字典小类数值 {dictValue: '', dictLabel: ''} 的数组
*/
dictDatas: {}
}
const mutations = {
SET_DICT_DATAS: (state, dictDatas) => {
state.dictDatas = dictDatas
}
}
const actions = {
loadDictDatas({ commit }) {
listSimpleDictDatas().then(response => {
console.log(response,'0000')
// 如果未加载到数据,则直接返回
if (!response || !response.data) {
return;
}
// 设置数据
const dictDataMap = {}
response.data.forEach(dictData => {
// 获得 dictType 层级
const enumValueObj = dictDataMap[dictData.dictType]
if (!enumValueObj) {
dictDataMap[dictData.dictType] = []
}
// 处理 dictValue 层级
dictDataMap[dictData.dictType].push({
value: dictData.value,
label: dictData.label,
colorType: dictData.colorType,
cssClass: dictData.cssClass,
})
})
// 存储到 Store 中
commit('SET_DICT_DATAS', dictDataMap)
})
}
}
export default {
namespaced: true,
state,
mutations,
actions
}

@ -4,6 +4,7 @@ import constant from '@/utils/constant'
import { login, logout, getInfo } from '@/api/login'
import { setToken, removeToken } from '@/utils/auth'
import * as CryptoUtils from '@/utils/cryptoUtils.js'
import store from '@/store'
const baseUrl = config.baseUrl
@ -52,6 +53,7 @@ const user = {
res = res.data;
// 设置 token
setToken(res)
store.dispatch('dict/loadDictDatas')
resolve()
}).catch(error => {
reject(error)

@ -0,0 +1,161 @@
/**
* Created by 芋道源码
*
* 数据字典工具类
*/
import store from '@/store'
export const DICT_TYPE = {
USER_TYPE: 'user_type',
COMMON_STATUS: 'common_status',
TERMINAL: 'terminal',
// ========== SYSTEM 模块 ==========
SYSTEM_USER_SEX: 'system_user_sex',
SYSTEM_MENU_TYPE: 'system_menu_type',
SYSTEM_ROLE_TYPE: 'system_role_type',
SYSTEM_DATA_SCOPE: 'system_data_scope',
SYSTEM_NOTICE_TYPE: 'system_notice_type',
SYSTEM_OPERATE_TYPE: 'system_operate_type',
SYSTEM_LOGIN_TYPE: 'system_login_type',
SYSTEM_LOGIN_RESULT: 'system_login_result',
SYSTEM_SMS_CHANNEL_CODE: 'system_sms_channel_code',
SYSTEM_SMS_TEMPLATE_TYPE: 'system_sms_template_type',
SYSTEM_SMS_SEND_STATUS: 'system_sms_send_status',
SYSTEM_SMS_RECEIVE_STATUS: 'system_sms_receive_status',
SYSTEM_ERROR_CODE_TYPE: 'system_error_code_type',
SYSTEM_OAUTH2_GRANT_TYPE: 'system_oauth2_grant_type',
SYSTEM_MAIL_SEND_STATUS: 'system_mail_send_status',
SYSTEM_NOTIFY_TEMPLATE_TYPE: 'system_notify_template_type',
// ========== INFRA 模块 ==========
INFRA_BOOLEAN_STRING: 'infra_boolean_string',
INFRA_REDIS_TIMEOUT_TYPE: 'infra_redis_timeout_type',
INFRA_JOB_STATUS: 'infra_job_status',
INFRA_JOB_LOG_STATUS: 'infra_job_log_status',
INFRA_API_ERROR_LOG_PROCESS_STATUS: 'infra_api_error_log_process_status',
INFRA_CONFIG_TYPE: 'infra_config_type',
INFRA_CODEGEN_TEMPLATE_TYPE: 'infra_codegen_template_type',
INFRA_CODEGEN_FRONT_TYPE: 'infra_codegen_front_type',
INFRA_CODEGEN_SCENE: 'infra_codegen_scene',
INFRA_FILE_STORAGE: 'infra_file_storage',
// ========== BPM 模块 ==========
BPM_MODEL_CATEGORY: 'bpm_model_category',
BPM_MODEL_FORM_TYPE: 'bpm_model_form_type',
BPM_TASK_ASSIGN_RULE_TYPE: 'bpm_task_assign_rule_type',
BPM_PROCESS_INSTANCE_STATUS: 'bpm_process_instance_status',
BPM_PROCESS_INSTANCE_RESULT: 'bpm_process_instance_result',
BPM_TASK_ASSIGN_SCRIPT: 'bpm_task_assign_script',
BPM_OA_LEAVE_TYPE: 'bpm_oa_leave_type',
// ========== PAY 模块 ==========
PAY_CHANNEL_WECHAT_VERSION: 'pay_channel_wechat_version', // 微信渠道版本
PAY_CHANNEL_CODE: 'pay_channel_code', // 支付渠道编码类型
PAY_ORDER_STATUS: 'pay_order_status', // 商户支付订单状态
PAY_REFUND_STATUS: 'pay_refund_status', // 退款订单状态
PAY_NOTIFY_STATUS: 'pay_notify_status', // 商户支付回调状态
PAY_NOTIFY_TYPE: 'pay_notify_type', // 商户支付回调状态
// ========== MP 模块 ==========
MP_AUTO_REPLY_REQUEST_MATCH: 'mp_auto_reply_request_match', // 自动回复请求匹配类型
MP_MESSAGE_TYPE: 'mp_message_type', // 消息类型
// ========== MALL - PRODUCT 模块 ==========
PRODUCT_SPU_STATUS: 'product_spu_status', // 商品 SPU 状态
// ========== MALL - ORDER 模块 ==========
TRADE_AFTER_SALE_STATUS: 'trade_after_sale_status', // 售后 - 状态
TRADE_AFTER_SALE_WAY: 'trade_after_sale_way', // 售后 - 方式
TRADE_AFTER_SALE_TYPE: 'trade_after_sale_type', // 售后 - 类型
TRADE_ORDER_TYPE: 'trade_order_type', // 订单 - 类型
TRADE_ORDER_STATUS: 'trade_order_status', // 订单 - 状态
TRADE_ORDER_ITEM_AFTER_SALE_STATUS: 'trade_order_item_after_sale_status', // 订单项 - 售后状态
// ========== MALL - PROMOTION 模块 ==========
PROMOTION_DISCOUNT_TYPE: 'promotion_discount_type', // 优惠类型
PROMOTION_PRODUCT_SCOPE: 'promotion_product_scope', // 营销的商品范围
PROMOTION_COUPON_TEMPLATE_VALIDITY_TYPE: 'promotion_coupon_template_validity_type', // 优惠劵模板的有限期类型
PROMOTION_COUPON_STATUS: 'promotion_coupon_status', // 优惠劵的状态
PROMOTION_COUPON_TAKE_TYPE: 'promotion_coupon_take_type', // 优惠劵的领取方式
PROMOTION_ACTIVITY_STATUS: 'promotion_activity_status', // 优惠活动的状态
PROMOTION_CONDITION_TYPE: 'promotion_condition_type', // 营销的条件类型枚举
// ====== Traceability 模块 ===============
COMPANY_ENTITY_TYPE: 'company_entity_type',
COMPANY_INDUSTRY: 'company_industry',
AUTHENTICATION_TYPE: 'authentication_type',
LOSS_TYPE: 'loss_type',
PRODUCT_LOSS: 'product_loss',
PRODUCTS_INDUSTRY: 'products_industry',
LAND_TYPE: 'land_type',
BASE_TYPE: 'base_type',
PROCESSING_WORKSHOP_STATUS: 'processing_workshop_status',
COMPANY_STATUS: 'company_status',
AGRICULTURAL_TYPE:'agricultural_type',
SOURCE_TYPE:'source_type',
SALES_TYPE:'sales_type',
QUALITY_INSPECTION:'quality_inspection',
QUALITY_RESULT:'quality_result',
GLOBAL_STATE:'global_state',
AGRICULTURAL_USED:'agricultural_used',
OPERATION_WAY:'operation_way',
PLANTING_WAY:'planting_way'
}
/**
* 获取 dictType 对应的数据字典数组
*
* @param dictType 数据类型
* @returns {*|Array} 数据字典数组
*/
export function getDictDatas(dictType) {
return store.getters.dict_datas[dictType] || []
}
/**
* 获取 dictType 对应的数据字典数组
*
* @param dictType 数据类型
* @param values 数组单个元素
* @returns {*|Array} 数据字典数组
*/
export function getDictDatas2(dictType, values) {
if (values === undefined) {
return []
}
// 如果是单个元素,则转换成数组
if (!Array.isArray(values)) {
values = [this.value]
}
// 获得字典数据
const results = []
for (const value of values) {
const dict = getDictData(dictType, value)
if (dict) {
results.push(dict)
}
}
return results
}
export function getDictData(dictType, value) {
// 获取 dictType 对应的数据字典数组
const dictDatas = getDictDatas(dictType)
if (!dictDatas || dictDatas.length === 0) {
return ''
}
// 获取 value 对应的展示名
value = value + '' // 强制转换成字符串,因为 DictData 小类数值,是字符串
for (const dictData of dictDatas) {
if (dictData.value === value) {
return dictData
}
}
return undefined
}
export function getDictDataLabel(dictType, value) {
const dict = getDictData(dictType, value)
return dict ? dict.label : ''
}
Loading…
Cancel
Save