update .
parent
3e1dd0d21b
commit
605c0bc184
@ -0,0 +1,100 @@
|
|||||||
|
<template>
|
||||||
|
<div :class="cls()">
|
||||||
|
<slot :dict="dictStore.get(props.name, Number(props.value))">{{ dictStore.get(props.name,
|
||||||
|
Number(props.value))?.label}}</slot>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
import { useDictStore } from '@/store'
|
||||||
|
|
||||||
|
const dictStore = useDictStore();
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
type: [String, Number],
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
border: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const cls = () => {
|
||||||
|
let list = [];
|
||||||
|
list.push("c-tag");
|
||||||
|
list.push('c-' + dictStore.get(props.name, Number(props.value))?.type);
|
||||||
|
if (!props.border) {
|
||||||
|
list.push("c-tag-text");
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@layer {
|
||||||
|
.c-tag {
|
||||||
|
margin: var(--margin, 0);
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 1.2;
|
||||||
|
border: solid 1px currentColor;
|
||||||
|
padding: .2em .4em;
|
||||||
|
border-radius: .2em;
|
||||||
|
position: relative;
|
||||||
|
transform: scale(.85);
|
||||||
|
color: var(--color, var(--inner-color, inherit));
|
||||||
|
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: currentColor;
|
||||||
|
opacity: 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-text {
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.c-primary {
|
||||||
|
--inner-color: var(--w-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.c-success {
|
||||||
|
--inner-color: var(--w-success);
|
||||||
|
}
|
||||||
|
|
||||||
|
.c-info {
|
||||||
|
--inner-color: var(--w-info);
|
||||||
|
}
|
||||||
|
|
||||||
|
.c-warning {
|
||||||
|
--inner-color: var(--w-warn);
|
||||||
|
}
|
||||||
|
|
||||||
|
.c-danger {
|
||||||
|
--inner-color: var(--w-danger);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
<template>
|
||||||
|
<el-select v-model="modelValue" :clearable="clearable" :size="size" :placeholder="placeholder" :disabled="disabled" >
|
||||||
|
<el-option v-for="item in dictStore.list(props.name)" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useDictStore } from '@/store'
|
||||||
|
|
||||||
|
const dictStore = useDictStore();
|
||||||
|
|
||||||
|
|
||||||
|
const modelValue = defineModel({type: Number});
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
clearable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
type: String,
|
||||||
|
default: 'default'
|
||||||
|
},
|
||||||
|
placeholder: {
|
||||||
|
type: String,
|
||||||
|
default: '请选择'
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const emit = defineEmits(['change'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<template v-for="(item,index) in dictStore.list(props.name)" :key="item.value">
|
||||||
|
<slot :dict="item" :index="index"><w-tag :value="item.value" :name="props.name" :border="props.border"/></slot>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
import { useDictStore } from '@/store'
|
||||||
|
|
||||||
|
const dictStore = useDictStore();
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
|
||||||
|
border: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
@ -0,0 +1,85 @@
|
|||||||
|
/**
|
||||||
|
* ruoyi字典数据仓库
|
||||||
|
*/
|
||||||
|
import { defineStore } from 'pinia'
|
||||||
|
|
||||||
|
import { ref, toRefs } from 'vue'
|
||||||
|
|
||||||
|
import { request } from '@/api'
|
||||||
|
|
||||||
|
|
||||||
|
const base = "/system/dict/data/"
|
||||||
|
|
||||||
|
const getDicts = (dictType) => request.get(base + "type/" + dictType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 授权仓库
|
||||||
|
*/
|
||||||
|
export const useDictStore = defineStore('useDictStore', {
|
||||||
|
state: () => {
|
||||||
|
return {
|
||||||
|
dicts: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//计算字段
|
||||||
|
getters: {
|
||||||
|
|
||||||
|
},
|
||||||
|
//方法
|
||||||
|
actions: {
|
||||||
|
getDicts,
|
||||||
|
load(...args) {
|
||||||
|
const res = ref({});
|
||||||
|
return (() => {
|
||||||
|
args.forEach((dictType, index) => {
|
||||||
|
res.value[dictType] = [];
|
||||||
|
if (this.dicts[dictType]) {
|
||||||
|
res.value[dictType] = this.dicts[dictType];
|
||||||
|
} else {
|
||||||
|
this.listAsync(dictType).then(() => {
|
||||||
|
res.value[dictType] = this.dicts[dictType];
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return res.value;
|
||||||
|
})()
|
||||||
|
},
|
||||||
|
listAsync(dictType) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (this.dicts[dictType] && this.dicts[dictType].length > 0) {
|
||||||
|
resolve(this.dicts[dictType]);
|
||||||
|
} else {
|
||||||
|
getDicts(dictType).then(resp => {
|
||||||
|
this.dicts[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: Number(p.dictValue), type: p.listClass }))
|
||||||
|
resolve(this.dicts[dictType]);
|
||||||
|
}).catch(e => {
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
list(dictType) {
|
||||||
|
return this.load(dictType)[dictType];
|
||||||
|
},
|
||||||
|
getAsync(dictType, value) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.listAsync(dictType).then(list => {
|
||||||
|
resolve(list.find(item => item.value == value));
|
||||||
|
}).catch(e => {
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
get(dictType, value) {
|
||||||
|
return this.load(dictType)[dictType].find(item => item.value == value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
unistorage: false // 开启后对 state 的数据读写都将持久化
|
||||||
|
|
||||||
|
})
|
||||||
@ -1,13 +1,46 @@
|
|||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
/**
|
||||||
|
* ${entity.name}的前端api
|
||||||
|
${entity.toComment(0)}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基础路径
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
const base = '/${moduleName}/${entity.toSimpleLowerName()}/'
|
const base = '/${moduleName}/${entity.toSimpleLowerName()}/'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加${entity.name}
|
||||||
|
* @param data ${entity.name}的数据
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
export const doAdd = (data) => request.post(base, data)
|
export const doAdd = (data) => request.post(base, data)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改${entity.name}
|
||||||
|
* @param data ${entity.name}的数据
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
export const doUpdate = (data) => request.put(base, data)
|
export const doUpdate = (data) => request.put(base, data)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除${entity.name}
|
||||||
|
* @param ids 编号数组
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
export const doDelete = (ids) => request.delete(base+ids)
|
export const doDelete = (ids) => request.delete(base+ids)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取${entity.name}的分页数据
|
||||||
|
* @param params 查询条件
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
export const doPage = (params) => request.get(base + 'page', { params })
|
export const doPage = (params) => request.get(base + 'page', { params })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取单条${entity.name}的数据
|
||||||
|
* @param params 编号
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
export const doGet = (id) => request.get(base + id)
|
export const doGet = (id) => request.get(base + id)
|
||||||
|
|||||||
Loading…
Reference in New Issue