This commit is contained in:
april 2023-07-21 18:18:51 +08:00
commit 0e564753da
7 changed files with 123 additions and 33 deletions

View File

@ -1,3 +1,14 @@
# 2.4.1 (2023/7/20)
### ✨ feat
- 整合 vite-plugin-compression 插件打包优化(3.66MB → 1.58MB) author by [april-tong](https://april-tong.com/)
- 字典组件封装author by [haoxr](https://juejin.cn/user/4187394044331261/posts)
### 🐛 fix
- 分页组件hidden无效
- 签名无法保存至后端
- Git 提交 stylelint 校验部分机器报错
# 2.4.0 (2023/6/17)
### ✨ feat

View File

@ -120,6 +120,10 @@ server {
项目同步仓库更新升级之后,建议 `pnpm install` 安装更新依赖之后启动 。
- **项目组件、函数和引用爆红**
重启 VSCode 尝试
- **其他问题**
如果有其他问题或者建议,建议 [ISSUE](https://gitee.com/youlaiorg/vue3-element-admin/issues/new)

View File

@ -1,7 +1,7 @@
{
"name": "vue3-element-admin",
"private": true,
"version": "2.4.0",
"version": "2.4.1",
"type": "module",
"scripts": {
"preinstall": "npx only-allow pnpm",

View File

@ -1,13 +1,13 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import request from "@/utils/request";
import { AxiosPromise } from "axios";
import {
DictTypeQuery,
DictTypePageResult,
DictTypeForm,
DictQuery,
DictForm,
DictPageResult
} from './types';
DictPageResult,
} from "./types";
/**
*
@ -18,9 +18,9 @@ export function getDictTypePage(
queryParams: DictTypeQuery
): AxiosPromise<DictTypePageResult> {
return request({
url: '/api/v1/dict/types/page',
method: 'get',
params: queryParams
url: "/api/v1/dict/types/page",
method: "get",
params: queryParams,
});
}
@ -31,8 +31,8 @@ export function getDictTypePage(
*/
export function getDictTypeForm(id: number): AxiosPromise<DictTypeForm> {
return request({
url: '/api/v1/dict/types/' + id + '/form',
method: 'get'
url: "/api/v1/dict/types/" + id + "/form",
method: "get",
});
}
@ -43,9 +43,9 @@ export function getDictTypeForm(id: number): AxiosPromise<DictTypeForm> {
*/
export function addDictType(data: DictTypeForm) {
return request({
url: '/api/v1/dict/types',
method: 'post',
data: data
url: "/api/v1/dict/types",
method: "post",
data: data,
});
}
@ -57,9 +57,9 @@ export function addDictType(data: DictTypeForm) {
*/
export function updateDictType(id: number, data: DictTypeForm) {
return request({
url: '/api/v1/dict/types/' + id,
method: 'put',
data: data
url: "/api/v1/dict/types/" + id,
method: "put",
data: data,
});
}
@ -68,8 +68,8 @@ export function updateDictType(id: number, data: DictTypeForm) {
*/
export function deleteDictTypes(ids: string) {
return request({
url: '/api/v1/dict/types/' + ids,
method: 'delete'
url: "/api/v1/dict/types/" + ids,
method: "delete",
});
}
@ -80,8 +80,8 @@ export function deleteDictTypes(ids: string) {
*/
export function getDictOptions(typeCode: string): AxiosPromise<OptionType[]> {
return request({
url: '/api/v1/dict/types/' + typeCode + '/items',
method: 'get'
url: "/api/v1/dict/" + typeCode + "/options",
method: "get",
});
}
@ -92,9 +92,9 @@ export function getDictPage(
queryParams: DictQuery
): AxiosPromise<DictPageResult> {
return request({
url: '/api/v1/dict/page',
method: 'get',
params: queryParams
url: "/api/v1/dict/page",
method: "get",
params: queryParams,
});
}
@ -105,8 +105,8 @@ export function getDictPage(
*/
export function getDictFormData(id: number): AxiosPromise<DictForm> {
return request({
url: '/api/v1/dict/' + id + '/form',
method: 'get'
url: "/api/v1/dict/" + id + "/form",
method: "get",
});
}
@ -117,9 +117,9 @@ export function getDictFormData(id: number): AxiosPromise<DictForm> {
*/
export function addDict(data: DictForm) {
return request({
url: '/api/v1/dict',
method: 'post',
data: data
url: "/api/v1/dict",
method: "post",
data: data,
});
}
@ -131,9 +131,9 @@ export function addDict(data: DictForm) {
*/
export function updateDict(id: number, data: DictForm) {
return request({
url: '/api/v1/dict/' + id,
method: 'put',
data: data
url: "/api/v1/dict/" + id,
method: "put",
data: data,
});
}
@ -144,7 +144,7 @@ export function updateDict(id: number, data: DictForm) {
*/
export function deleteDict(ids: string) {
return request({
url: '/api/v1/dict/' + ids,
method: 'delete'
url: "/api/v1/dict/" + ids,
method: "delete",
});
}

View File

@ -0,0 +1,53 @@
<template>
<div>
<el-select
v-model="selectedValue"
:placeholder="placeholder"
:disabled="disabled"
clearable
>
<el-option
v-for="option in options"
:key="option.value"
:label="option.label"
:value="option.value"
></el-option>
</el-select>
</div>
</template>
<script setup lang="ts">
import { getDictOptions } from "@/api/dict";
const props = defineProps({
typeCode: {
type: String,
required: true,
},
modelValue: {
type: String,
default: "",
},
placeholder: {
type: String,
default: "请选择",
},
disabled: {
type: Boolean,
default: false,
},
});
const emits = defineEmits(["update:modelValue"]);
const selectedValue = useVModel(props, "modelValue", emits);
const options: Ref<OptionType[]> = ref([]);
onBeforeMount(() => {
// (typeCode)
getDictOptions(props.typeCode).then((response) => {
options.value = response.data;
});
});
</script>

View File

@ -91,6 +91,7 @@ declare module "@vue/runtime-core" {
TagInput: typeof import("./../components/TagInput/index.vue")["default"];
TagsView: typeof import("./../layout/components/TagsView/index.vue")["default"];
WangEditor: typeof import("./../components/WangEditor/index.vue")["default"];
Dictionary: typeof import("./../components/Dictionary/index.vue")["default"];
}
export interface ComponentCustomProperties {
vLoading: typeof import("element-plus/es")["ElLoadingDirective"];

21
src/views/demo/dict.vue Normal file
View File

@ -0,0 +1,21 @@
<!-- 字典组件示例 -->
<script setup lang="ts">
const genderDefaultValue = ref("1"); //
</script>
<template>
<div class="app-container">
<el-link
href="https://gitee.com/youlaiorg/vue3-element-admin/blob/master/src/views/demo/dict.vue"
type="primary"
target="_blank"
class="mb-[20px]"
>示例源码 请点击>>>></el-link
>
<el-form>
<el-form-item label="性别">
<dictionary v-model="genderDefaultValue" type-code="gender" />
</el-form-item>
</el-form>
</div>
</template>