diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 010e9fc..0c410a4 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -38,10 +38,10 @@ module.exports = { '@typescript-eslint/no-redeclare': 'error', '@typescript-eslint/no-non-null-asserted-optional-chain': 'off', '@typescript-eslint/no-unused-vars': [ - 'error', + 'warn', { argsIgnorePattern: '^_', - varsIgnorePattern: '^_', + varsIgnorePattern: '^_|props|watch', caughtErrorsIgnorePattern: '^_', }, ], @@ -64,6 +64,11 @@ module.exports = { 'vue/no-parsing-error': 'off', 'vue/no-deprecated-v-on-native-modifier': 'off', 'vue/multi-word-component-names': 'off', + 'vue/no-reserved-component-names': 'off', + 'vue/no-v-for-template-key': 'off', + 'vue/no-unused-vars': 'off', + 'vue/no-mutating-props': 'off', + 'no-mixed-spaces-and-tabs': 'off', 'no-useless-escape': 'off', 'no-sparse-arrays': 'off', 'no-prototype-builtins': 'off', @@ -77,8 +82,8 @@ module.exports = { 'no-unused-vars': 'off', 'no-v-model-argument': 'off', 'no-case-declarations': 'off', - 'no-console': 'error', - 'no-debugger': 'error', + 'no-console': 'off', + 'no-debugger': 'warn', 'no-redeclare': 'off', }, }; diff --git a/src/views/assets/category/component/editCategory.vue b/src/views/assets/category/component/editCategory.vue index 9c9c4a3..1701ecc 100644 --- a/src/views/assets/category/component/editCategory.vue +++ b/src/views/assets/category/component/editCategory.vue @@ -32,22 +32,12 @@
- + {{ attr.name || '请选择字典' }}
- +
@@ -155,13 +145,6 @@ interface DictInfo { remark: string; } -interface DictValue { - key: string; - value: string; - isDefault: number; - remark: string; -} - interface RuleForm { id: string | ''; parentId: string; @@ -219,15 +202,11 @@ const fetchDictTypeOptions = () => { .then((res: any) => { const list = res.data?.list ?? []; // 提取所有字典类型信息 - dictTypeOptions.value = list - .map((item: any) => item.info) - .filter((info: DictInfo) => info && info.name); + dictTypeOptions.value = list.map((item: any) => item.info).filter((info: DictInfo) => info && info.name); // 保存完整的字典数据列表(包含info和values) dictValueOptions.value = list; - }) .catch((err: any) => { - dictTypeOptions.value = []; dictValueOptions.value = []; }) @@ -270,7 +249,9 @@ const isDictOptionDisabled = (dictName: string, currentAttr: CustomAttr) => { const dictInfo = dictTypeOptions.value.find((item) => item.name === dictName); const dictType = dictInfo?.type || ''; // 检查该字典是否已被其他属性使用(使用 dictType 判断) - return ruleForm.attrs.some((attr) => attr !== currentAttr && isDictType(attr.type) && (attr.dictType === dictType || (!attr.dictType && attr.name === dictName))); + return ruleForm.attrs.some( + (attr) => attr !== currentAttr && isDictType(attr.type) && (attr.dictType === dictType || (!attr.dictType && attr.name === dictName)) + ); }; // 添加自定义属性 @@ -325,16 +306,16 @@ const openDialog = (row?: CategoryRow | string, edit?: boolean) => { // 获取分类树数据 getCategoryTree().then((res: any) => { const tree = res.data?.tree ?? []; - + // 递归函数,将所有id字段转换为字符串 const convertIdsToString = (items: any[]): any[] => { - return items.map(item => ({ + return items.map((item) => ({ ...item, id: item.id?.toString(), - children: item.children && item.children.length > 0 ? convertIdsToString(item.children) : [] + children: item.children && item.children.length > 0 ? convertIdsToString(item.children) : [], })); }; - + categoryData.value = convertIdsToString(tree); }); @@ -472,7 +453,7 @@ const onSubmit = () => { ...submitData, _originalData: originalData, }; - + updateCategory(requestData) .then(() => { ElMessage.success('修改成功'); diff --git a/src/views/home/components/ChatList.vue b/src/views/home/components/ChatList.vue index 5e82067..252ed96 100644 --- a/src/views/home/components/ChatList.vue +++ b/src/views/home/components/ChatList.vue @@ -13,7 +13,7 @@
- +
@@ -111,6 +111,23 @@ const messages = ref([ 0 2px 8px rgba(59, 130, 246, 0.15); } +.user-avatar { + width: 36px; + height: 36px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 12px; + font-weight: 700; + color: #ffffff; + background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); + border: 1px solid #f59e0b; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.25), + 0 2px 8px rgba(245, 158, 11, 0.2); +} + .bubble-wrap { display: flex; flex-direction: column; diff --git a/src/views/home/components/Sidebar.vue b/src/views/home/components/Sidebar.vue index 4e470a3..be67da0 100644 --- a/src/views/home/components/Sidebar.vue +++ b/src/views/home/components/Sidebar.vue @@ -3,10 +3,12 @@