Merge branch 'master' of https://github.com/youlaitech/vue3-element-admin
This commit is contained in:
commit
0e564753da
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)
|
||||
|
||||
### ✨ feat
|
||||
|
|
|
|||
|
|
@ -120,6 +120,10 @@ server {
|
|||
|
||||
项目同步仓库更新升级之后,建议 `pnpm install` 安装更新依赖之后启动 。
|
||||
|
||||
- **项目组件、函数和引用爆红**
|
||||
|
||||
重启 VSCode 尝试
|
||||
|
||||
- **其他问题**
|
||||
|
||||
如果有其他问题或者建议,建议 [ISSUE](https://gitee.com/youlaiorg/vue3-element-admin/issues/new)
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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"];
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
Loading…
Reference in New Issue