Former-commit-id: 0e564753dab3909a20bba47645b926cca73fd248
This commit is contained in:
april
2023-07-21 18:18:51 +08:00
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) # 2.4.0 (2023/6/17)
### ✨ feat ### ✨ feat

View File

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

View File

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

View File

@@ -1,13 +1,13 @@
import request from '@/utils/request'; import request from "@/utils/request";
import { AxiosPromise } from 'axios'; import { AxiosPromise } from "axios";
import { import {
DictTypeQuery, DictTypeQuery,
DictTypePageResult, DictTypePageResult,
DictTypeForm, DictTypeForm,
DictQuery, DictQuery,
DictForm, DictForm,
DictPageResult DictPageResult,
} from './types'; } from "./types";
/** /**
* 字典类型分页列表 * 字典类型分页列表
@@ -18,9 +18,9 @@ export function getDictTypePage(
queryParams: DictTypeQuery queryParams: DictTypeQuery
): AxiosPromise<DictTypePageResult> { ): AxiosPromise<DictTypePageResult> {
return request({ return request({
url: '/api/v1/dict/types/page', url: "/api/v1/dict/types/page",
method: 'get', method: "get",
params: queryParams params: queryParams,
}); });
} }
@@ -31,8 +31,8 @@ export function getDictTypePage(
*/ */
export function getDictTypeForm(id: number): AxiosPromise<DictTypeForm> { export function getDictTypeForm(id: number): AxiosPromise<DictTypeForm> {
return request({ return request({
url: '/api/v1/dict/types/' + id + '/form', url: "/api/v1/dict/types/" + id + "/form",
method: 'get' method: "get",
}); });
} }
@@ -43,9 +43,9 @@ export function getDictTypeForm(id: number): AxiosPromise<DictTypeForm> {
*/ */
export function addDictType(data: DictTypeForm) { export function addDictType(data: DictTypeForm) {
return request({ return request({
url: '/api/v1/dict/types', url: "/api/v1/dict/types",
method: 'post', method: "post",
data: data data: data,
}); });
} }
@@ -57,9 +57,9 @@ export function addDictType(data: DictTypeForm) {
*/ */
export function updateDictType(id: number, data: DictTypeForm) { export function updateDictType(id: number, data: DictTypeForm) {
return request({ return request({
url: '/api/v1/dict/types/' + id, url: "/api/v1/dict/types/" + id,
method: 'put', method: "put",
data: data data: data,
}); });
} }
@@ -68,8 +68,8 @@ export function updateDictType(id: number, data: DictTypeForm) {
*/ */
export function deleteDictTypes(ids: string) { export function deleteDictTypes(ids: string) {
return request({ return request({
url: '/api/v1/dict/types/' + ids, url: "/api/v1/dict/types/" + ids,
method: 'delete' method: "delete",
}); });
} }
@@ -80,8 +80,8 @@ export function deleteDictTypes(ids: string) {
*/ */
export function getDictOptions(typeCode: string): AxiosPromise<OptionType[]> { export function getDictOptions(typeCode: string): AxiosPromise<OptionType[]> {
return request({ return request({
url: '/api/v1/dict/types/' + typeCode + '/items', url: "/api/v1/dict/" + typeCode + "/options",
method: 'get' method: "get",
}); });
} }
@@ -92,9 +92,9 @@ export function getDictPage(
queryParams: DictQuery queryParams: DictQuery
): AxiosPromise<DictPageResult> { ): AxiosPromise<DictPageResult> {
return request({ return request({
url: '/api/v1/dict/page', url: "/api/v1/dict/page",
method: 'get', method: "get",
params: queryParams params: queryParams,
}); });
} }
@@ -105,8 +105,8 @@ export function getDictPage(
*/ */
export function getDictFormData(id: number): AxiosPromise<DictForm> { export function getDictFormData(id: number): AxiosPromise<DictForm> {
return request({ return request({
url: '/api/v1/dict/' + id + '/form', url: "/api/v1/dict/" + id + "/form",
method: 'get' method: "get",
}); });
} }
@@ -117,9 +117,9 @@ export function getDictFormData(id: number): AxiosPromise<DictForm> {
*/ */
export function addDict(data: DictForm) { export function addDict(data: DictForm) {
return request({ return request({
url: '/api/v1/dict', url: "/api/v1/dict",
method: 'post', method: "post",
data: data data: data,
}); });
} }
@@ -131,9 +131,9 @@ export function addDict(data: DictForm) {
*/ */
export function updateDict(id: number, data: DictForm) { export function updateDict(id: number, data: DictForm) {
return request({ return request({
url: '/api/v1/dict/' + id, url: "/api/v1/dict/" + id,
method: 'put', method: "put",
data: data data: data,
}); });
} }
@@ -144,7 +144,7 @@ export function updateDict(id: number, data: DictForm) {
*/ */
export function deleteDict(ids: string) { export function deleteDict(ids: string) {
return request({ return request({
url: '/api/v1/dict/' + ids, url: "/api/v1/dict/" + ids,
method: 'delete' 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"]; TagInput: typeof import("./../components/TagInput/index.vue")["default"];
TagsView: typeof import("./../layout/components/TagsView/index.vue")["default"]; TagsView: typeof import("./../layout/components/TagsView/index.vue")["default"];
WangEditor: typeof import("./../components/WangEditor/index.vue")["default"]; WangEditor: typeof import("./../components/WangEditor/index.vue")["default"];
Dictionary: typeof import("./../components/Dictionary/index.vue")["default"];
} }
export interface ComponentCustomProperties { export interface ComponentCustomProperties {
vLoading: typeof import("element-plus/es")["ElLoadingDirective"]; 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>