😎1、优化字典获取 2、调整首页组件
This commit is contained in:
parent
b943a7850b
commit
731950d699
@ -132,37 +132,29 @@ export const useUserInfo = defineStore('userInfo', {
|
||||
|
||||
// 根据字典类型和代码取字典项
|
||||
getDictItemByCode(typePCode: string, val: string) {
|
||||
if (val != undefined) {
|
||||
val = val.toString();
|
||||
if (val) {
|
||||
if (val != undefined && val !== '') {
|
||||
const _val = val.toString();
|
||||
const ds = this.getDictDatasByCode(typePCode);
|
||||
for (let index = 0; index < ds.length; index++) {
|
||||
const element = ds[index];
|
||||
if (element.code == _val) {
|
||||
for (const element of ds) {
|
||||
if (element.value === _val) {
|
||||
return element;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return {};
|
||||
},
|
||||
|
||||
// 根据字典类型和值取描述
|
||||
getDictLabelByVal(typePCode: string, val: string) {
|
||||
if (val != undefined) {
|
||||
val = val.toString();
|
||||
if (val) {
|
||||
if (val != undefined && val !== '') {
|
||||
const _val = val.toString();
|
||||
const ds = this.getDictDatasByCode(typePCode);
|
||||
for (let index = 0; index < ds.length; index++) {
|
||||
const element = ds[index];
|
||||
if (element.value == _val) {
|
||||
for (const element of ds) {
|
||||
if (element.code === _val) {
|
||||
return element;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return {};
|
||||
},
|
||||
|
||||
@ -170,12 +162,12 @@ export const useUserInfo = defineStore('userInfo', {
|
||||
getDictValByLabel(typePCode: string, label: string) {
|
||||
if (!label) return '';
|
||||
const ds = this.getDictDatasByCode(typePCode);
|
||||
for (let index = 0; index < ds.length; index++) {
|
||||
const element = ds[index];
|
||||
if (element.name == label) {
|
||||
for (const element of ds) {
|
||||
if (element.name === label) {
|
||||
return element;
|
||||
}
|
||||
}
|
||||
return ''; // 明确返回空字符串
|
||||
},
|
||||
|
||||
// 根据字典类型获取字典数据
|
||||
@ -185,18 +177,20 @@ export const useUserInfo = defineStore('userInfo', {
|
||||
|
||||
// 根据字典类型获取字典数据(值转为数字类型)
|
||||
getDictIntDatasByCode(dictTypeCode: string) {
|
||||
var ds = this.dictListInt[dictTypeCode];
|
||||
let ds = this.dictListInt[dictTypeCode];
|
||||
if (ds) {
|
||||
return ds;
|
||||
} else {
|
||||
ds = this.dictList[dictTypeCode].map((element: { code: any }) => {
|
||||
var d = { ...element };
|
||||
d.code = element.code - 0;
|
||||
return d;
|
||||
}
|
||||
|
||||
const dictList = this.dictList[dictTypeCode];
|
||||
if (dictList) {
|
||||
ds = dictList.map((element: { code: any }) => {
|
||||
return { ...element, code: Number(element.code) };
|
||||
});
|
||||
this.dictListInt[dictTypeCode] = ds;
|
||||
return ds;
|
||||
}
|
||||
|
||||
return ds;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@ -4,6 +4,9 @@ type Component = any;
|
||||
|
||||
const resultComps: Record<string, Component> = {};
|
||||
|
||||
// 要排除的组件名称数组
|
||||
const excludeComponents = ['scheduleEdit'];
|
||||
|
||||
// 使用 import.meta.glob 动态导入当前目录中的所有 .vue 文件,急切导入
|
||||
const requireComponent = import.meta.glob('./*.vue', { eager: true });
|
||||
// console.log(requireComponent);
|
||||
@ -11,12 +14,18 @@ const requireComponent = import.meta.glob('./*.vue', { eager: true });
|
||||
Object.keys(requireComponent).forEach((fileName: string) => {
|
||||
// 处理文件名,去掉开头的 './' 和结尾的文件扩展名
|
||||
const componentName = fileName.replace(/^\.\/(.*)\.\w+$/, '$1');
|
||||
|
||||
// 如果组件名称在排除数组中,跳过导入
|
||||
if (excludeComponents.includes(componentName)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 确保模块导出存在并且是默认导出
|
||||
const componentModule = requireComponent[fileName] as { default: Component };
|
||||
|
||||
// 将组件添加到 resultComps 中,使用处理后的文件名作为键
|
||||
resultComps[componentName] = componentModule.default;
|
||||
});
|
||||
// 动态的,这里拿到title等东西是为了这里显示
|
||||
|
||||
// 标记 resultComps 为原始对象,避免其被设为响应式
|
||||
export default markRaw(resultComps);
|
||||
|
||||
@ -25,7 +25,14 @@
|
||||
<div class="schedule-list">
|
||||
<div class="item" v-for="(item, index) in state.TodayScheduleData" :key="index" @click="openEditSchedule(item)">
|
||||
<el-icon style="display: inline; vertical-align: middle"> <ele-Calendar /> </el-icon>
|
||||
<span class="content" style="padding-left: 10px">{{ item.content }}</span>
|
||||
<span class="content" style="padding-left: 10px">
|
||||
<span>
|
||||
{{ item.scheduleTime }}
|
||||
</span>
|
||||
<span style="padding-left: 15px; font-weight: 600; color: var(--el-color-primary)">
|
||||
{{ item.content }}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -207,7 +214,6 @@ function FormatDate(date: any) {
|
||||
|
||||
// 日程列表
|
||||
.schedule-list {
|
||||
padding: 0 20px 10px;
|
||||
overflow-y: auto;
|
||||
height: 150px;
|
||||
.item {
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<el-row :gutter="35">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
<el-form-item label="日程时间" prop="scheduleTime" :rules="[{ required: true, message: '日程时间不能为空', trigger: 'blur' }]">
|
||||
<el-date-picker v-model="state.ruleForm.scheduleTime" type="date" placeholder="请选择日程时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" class="w100" />
|
||||
<el-date-picker v-model="state.ruleForm.scheduleTime" type="datetime" placeholder="请选择日程时间" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" class="w100" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
<component :is="allComps[element]"></component>
|
||||
<div v-if="customizing" class="customize-overlay">
|
||||
<el-button class="close" type="danger" plain icon="ele-Close" @click="remove(element)"></el-button>
|
||||
<label>
|
||||
<label v-if="allComps[element]">
|
||||
<el-icon> <component :is="allComps[element].icon" /> </el-icon>{{ allComps[element].title }}
|
||||
</label>
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user