mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-11-10 12:43:48 +08:00
v3.23.0 【新增】TS代码生成和优化;【优化】log日志格式;【优化】数据字典缓存;【优化】职位表结构
This commit is contained in:
@@ -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']);
|
||||
|
||||
@@ -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)
|
||||
);
|
||||
|
||||
// -------------------------- 选中 相关、事件 --------------------------
|
||||
|
||||
|
||||
@@ -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)
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
smartSentry.captureError(err);
|
||||
}
|
||||
}
|
||||
buildDepartmentEmployeeTree
|
||||
|
||||
// 递归构建部门员工树
|
||||
function buildDepartmentEmployeeTree(departmentTree, employeeList) {
|
||||
for (const department of departmentTree) {
|
||||
|
||||
@@ -110,20 +110,10 @@
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: '代码配置',
|
||||
title: '代码配置时间',
|
||||
dataIndex: 'configTime',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '表创建时间',
|
||||
dataIndex: 'createTime',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: '表修改时间',
|
||||
dataIndex: 'updateTime',
|
||||
width: 150,
|
||||
},
|
||||
|
||||
{
|
||||
title: '操作',
|
||||
|
||||
@@ -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', //
|
||||
];
|
||||
|
||||
// -------------------------------- 后端文件 --------------------------------
|
||||
|
||||
@@ -68,7 +68,6 @@
|
||||
if (deletedFlagColumn) {
|
||||
deleteFlagColumnName.value = deletedFlagColumn.columnName;
|
||||
}
|
||||
console.log(deletedFlagColumn);
|
||||
|
||||
//表单
|
||||
let deleteInfo = config.deleteInfo;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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, //备注
|
||||
};
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
},
|
||||
{
|
||||
title: '职级',
|
||||
dataIndex: 'level',
|
||||
dataIndex: 'positionLevel',
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user