|
@@ -378,14 +378,20 @@ export default {
|
|
|
'formData.categoryId': {
|
|
|
handler(newVal) {
|
|
|
const key = newVal != null ? String(newVal) : '';
|
|
|
- if (key && this.categoryOptions && this.categoryOptions.length > 0) {
|
|
|
- const category = this.categoryOptions.find(item => item.id === key || item.value === key);
|
|
|
- if (category) {
|
|
|
- this.formData.categoryName = category.name;
|
|
|
- return;
|
|
|
- }
|
|
|
+ // 当未选择分类时,清空名称
|
|
|
+ if (!key) {
|
|
|
+ this.formData.categoryName = '';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 当分类选项尚未加载完成时,不覆盖已有的名称,避免被清空
|
|
|
+ if (!this.categoryOptions || this.categoryOptions.length === 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 分类选项已就绪时,按选项同步名称;若未命中则保留现有名称
|
|
|
+ const category = this.categoryOptions.find(item => item.id === key || item.value === key);
|
|
|
+ if (category && category.name != null) {
|
|
|
+ this.formData.categoryName = String(category.name);
|
|
|
}
|
|
|
- this.formData.categoryName = '';
|
|
|
},
|
|
|
immediate: true
|
|
|
},
|
|
@@ -696,6 +702,17 @@ export default {
|
|
|
// 选项加载后,标准化当前categoryId为字符串以保证回显
|
|
|
if (this.formData && this.formData.categoryId != null && this.formData.categoryId !== '') {
|
|
|
this.formData.categoryId = String(this.formData.categoryId);
|
|
|
+ // 分类选项加载完成后,尝试回填分类名称
|
|
|
+ const key = String(this.formData.categoryId);
|
|
|
+ const matched = this.categoryOptions.find(item => item.id === key || item.value === key);
|
|
|
+ if (matched && matched.name != null) {
|
|
|
+ this.formData.categoryName = String(matched.name);
|
|
|
+ } else {
|
|
|
+ // 找不到匹配项时,保留现有分类名称并给予轻提示
|
|
|
+ if (this.formData.categoryName) {
|
|
|
+ this.$message && this.$message.warning && this.$message.warning('当前分类已不可选,保留原分类名称');
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
// 修复首次加载下拉无数据:同步更新表单配置中分类列的dicData,触发Avue响应式渲染
|
|
|
if (this.formOption && Array.isArray(this.formOption.column)) {
|