v3.23.0 【新增】TS代码生成和优化;【优化】log日志格式;【优化】数据字典缓存;【优化】职位表结构

This commit is contained in:
zhuoda
2025-06-19 20:36:30 +08:00
parent 245f8c7856
commit 7ae4e898ad
83 changed files with 1758 additions and 338 deletions

View File

@@ -28,12 +28,8 @@
</template>
<script setup>
import { onMounted, ref, watch } from 'vue';
import { dictApi } from '/@/api/support/dict-api';
defineExpose({
queryDict,
});
import { computed, ref, watch } from 'vue';
import { useDictStore } from '/@/store/modules/system/dict.js';
const props = defineProps({
value: [Array, String, Number],
@@ -54,27 +50,11 @@
type: Number,
default: null,
},
dictList: {
type: Array,
default: null,
},
});
// -------------------------- 查询 字典数据 --------------------------
// -------------------------- 字典数据 --------------------------
const dictList = ref(props.dictList || []);
async function queryDict() {
if (props.dictList) {
dictList.value = props.dictList;
return;
}
let response = await dictApi.getAllDict();
dictList.value = response.data;
}
if (!props.dictList) {
queryDict();
}
const dictList = computed(() => useDictStore().dictList.filter((item) => !item.disabledFlag));
// -------------------------- 选中 相关、事件 --------------------------
const emit = defineEmits(['update:value', 'change']);

View File

@@ -28,7 +28,7 @@
</template>
<script setup>
import { onMounted, ref, watch } from 'vue';
import { computed, ref, watch } from 'vue';
import { useDictStore } from '/@/store/modules/system/dict.js';
const props = defineProps({
@@ -69,13 +69,11 @@
// -------------------------- 查询 字典数据 --------------------------
const dictDataList = ref([]);
function initDictData() {
let list = useDictStore().getDictData(props.dictCode);
dictDataList.value = list.filter((item) => !props.hiddenOption.includes(item.dataValue) && !item.disabledFlag);
}
onMounted(initDictData);
const dictDataList = computed(() =>
useDictStore()
.getDictData(props.dictCode)
.filter((item) => !props.hiddenOption.includes(item.dataValue) && !item.disabledFlag)
);
// -------------------------- 选中 相关、事件 --------------------------

View File

@@ -1,15 +1,22 @@
import { defineStore } from 'pinia';
import { DICT_SPLIT } from '/@/constants/support/dict-const.js';
import _ from 'lodash';
import { dictApi } from '/@/api/support/dict-api.js';
import { smartSentry } from '/@/lib/smart-sentry.js';
export const useDictStore = defineStore({
id: 'dict',
state: () => ({
// 字典code集合
dictList: [],
// 字典集合
dictMap: new Map(),
}),
actions: {
getDictList(){
return this.dictList;
},
// 获取字典数据
getDictData(dictCode) {
if (!dictCode) {
@@ -31,7 +38,7 @@ export const useDictStore = defineStore({
}
// 是数字的话,需要特殊处理
if(_.isNumber(dataValue)){
if (_.isNumber(dataValue)) {
let target = _.find(dict, { dataValue: dataValue });
return target ? target.dataLabel : '';
}
@@ -46,10 +53,25 @@ export const useDictStore = defineStore({
}
return result.join(DICT_SPLIT);
},
// 刷新字典
async refreshData(){
try{
const dictRes = await dictApi.getAllDictData();
this.initData(dictRes.data);
}catch (e){
smartSentry.captureError(e);
}
},
// 初始化字典
initData(dictDataList) {
this.dictMap.clear();
this.dictList = [];
for (let data of dictDataList) {
if (!_.some(this.dictList, { dictCode: data.dictCode })) {
this.dictList.push({ dictCode: data.dictCode, dictName: data.dictName ,disabledFlag: data.dictDisabledFlag});
}
let dataArray = this.dictMap.get(data.dictCode);
if (!dataArray) {
dataArray = [];
@@ -57,6 +79,8 @@ export const useDictStore = defineStore({
}
dataArray.push(data);
}
console.log(this.dictList,2)
},
},
});

View File

@@ -79,7 +79,7 @@
smartSentry.captureError(err);
}
}
buildDepartmentEmployeeTree
// 递归构建部门员工树
function buildDepartmentEmployeeTree(departmentTree, employeeList) {
for (const department of departmentTree) {

View File

@@ -110,20 +110,10 @@
ellipsis: true,
},
{
title: '代码配置',
title: '代码配置时间',
dataIndex: 'configTime',
width: 150,
},
{
title: '表创建时间',
dataIndex: 'createTime',
width: 150,
},
{
title: '表修改时间',
dataIndex: 'updateTime',
width: 150,
},
{
title: '操作',

View File

@@ -112,8 +112,8 @@ export const JS_FILE_LIST = [
export const TS_FILE_LIST = [
'ts/list.vue', //
'ts/form.vue', //
'ts/api.js', //
'ts/const.js', //
'ts/api.ts', //
'ts/const.ts', //
];
// -------------------------------- 后端文件 --------------------------------

View File

@@ -68,7 +68,6 @@
if (deletedFlagColumn) {
deleteFlagColumnName.value = deletedFlagColumn.columnName;
}
console.log(deletedFlagColumn);
//表单
let deleteInfo = config.deleteInfo;

View File

@@ -44,7 +44,7 @@
</template>
<template v-if="column.dataIndex === 'nullableFlag'">
<a-tag color="error" v-if="text">非空</a-tag>
<a-tag color="error" v-if="!text">非空</a-tag>
</template>
<template v-if="column.dataIndex === 'fieldName'">
@@ -68,7 +68,7 @@
</template>
<template v-if="column.dataIndex === 'dict'">
<DictCodeSelect ref="dictRef" v-model:value="record.dict" :dict-list="dictList" />
<DictCodeSelect ref="dictRef" v-model:value="record.dict" />
</template>
<template v-if="column.dataIndex === 'enumName'">
@@ -84,18 +84,11 @@
import DictCodeSelect from '/@/components/support/dict-code-select/index.vue';
import { convertUpperCamel, convertLowerCamel } from '/@/utils/str-util';
import _ from 'lodash';
import { dictApi } from '/@/api/support/dict-api';
import { useDictStore } from '/@/store/modules/system/dict.js';
const dictRef = ref();
const dictList = ref([]);
async function loadDictList() {
const response = await dictApi.getAllDict();
dictList.value = response.data;
}
loadDictList();
function refreshDict() {
dictRef.value.queryDict();
useDictStore().refreshData();
}
//------------------------ 全局数据 ---------------------
@@ -239,4 +232,4 @@
});
</script>
<style lang="less" scoped></style>
<style lang="less" scoped></style>

View File

@@ -87,7 +87,7 @@
</template>
<template v-if="column.dataIndex === 'nullableFlag'">
<a-tag color="error" v-if="text">非空</a-tag>
<a-tag color="error" v-if="!text">非空</a-tag>
</template>
<template v-if="column.dataIndex === 'required'">
@@ -222,8 +222,8 @@
};
//表单
field.requiredFlag = configField ? configField.requiredFlag : field.nullableFlag;
field.insertFlag = configField ? configField.insertFlag : field.nullableFlag;
field.requiredFlag = configField ? configField.requiredFlag : !field.nullableFlag;
field.insertFlag = configField ? configField.insertFlag : !field.nullableFlag;
field.updateFlag = configField ? configField.updateFlag : false;
if (configField && configField.frontComponent) {

View File

@@ -19,7 +19,7 @@
</a-form-item>
<a-form-item label="备注" name="remark">
<a-textarea v-model="form.remark" style="width: 100%; height: 100px; outline: none" />
<a-textarea v-model:value="form.remark" style="width: 100%; height: 100px; outline: none" />
</a-form-item>
</a-form>
</a-modal>

View File

@@ -19,8 +19,8 @@
<a-form-item label="职务名称" name="positionName">
<a-input style="width: 100%" v-model:value="form.positionName" placeholder="职务名称" />
</a-form-item>
<a-form-item label="职级" name="level">
<a-input style="width: 100%" v-model:value="form.level" placeholder="职级" />
<a-form-item label="职级" name="positionLevel">
<a-input style="width: 100%" v-model:value="form.positionLevel" placeholder="职级" />
</a-form-item>
<a-form-item label="排序" name="sort">
<a-input-number :min="0" :step="1" :precision="0" style="width: 100%" v-model:value="form.sort" placeholder="排序" />
@@ -92,7 +92,7 @@
const formDefault = {
positionId: undefined,
positionName: undefined, //职务名称
level: undefined, //职纪
positionLevel: undefined, //职纪
sort: 0,
remark: undefined, //备注
};

View File

@@ -115,7 +115,7 @@
},
{
title: '职级',
dataIndex: 'level',
dataIndex: 'positionLevel',
ellipsis: true,
},
{