Merge branch 'master' of https://github.com/youlaitech/vue3-element-admin
Former-commit-id: 0e564753dab3909a20bba47645b926cca73fd248
This commit is contained in:
11
CHANGELOG.md
11
CHANGELOG.md
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
53
src/components/Dictionary/index.vue
Normal file
53
src/components/Dictionary/index.vue
Normal 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>
|
||||||
1
src/types/components.d.ts
vendored
1
src/types/components.d.ts
vendored
@@ -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
21
src/views/demo/dict.vue
Normal 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>
|
||||||
Reference in New Issue
Block a user