Files
cutejava/cutejava-front/src/views/components/business/CuteProductLineSelectPro.vue
T
odboy df6dc89b96 feat(component): 添加产品线选择组件并重构系统组件API
- 新增 CuteProductLineSelect 组件API接口
- 重命名 SystemComponentController 为 CuteProductLineSelectProApi
- 迁移部门选择数据源接口到新API路径
- 更新前端组件导入路径和API调用方式
- 修改 CuteDeptTree 组件分页大小限制
- 为文件上传组件添加上传方式配置选项
- 调整字典详情和定时任务模块的API导入路径
2026-01-17 05:28:24 +08:00

85 lines
1.9 KiB
Vue

<!--
* 产品线级联选择组件
* @author odboy
* @email tianjun@odboy.cn
* @created 2025-08-01
-->
<template>
<el-cascader
v-model="productLine"
:disabled="disabled"
:options="deptOptions"
style="width: 100%"
placeholder="请选择产品线"
@change="handleChange"
/>
</template>
<script>
import { listMetadata } from '@/api/application/cute-product-line-select-pro'
import CsMessage from '@/utils/elementui/CsMessage'
export default {
name: 'CuteProductLineSelectPro',
props: {
value: {
type: Array,
default: null
},
disabled: {
type: Boolean,
default: false
}
},
data() {
return {
deptOptions: [],
productLine: this.value
}
},
watch: {
value(newVal) {
this.productLine = newVal
}
},
created() {
this.fetchDeptData()
},
methods: {
// 递归清理空的children属性
cleanEmptyChildren(data) {
return data.map(item => {
const newItem = { ...item }
if (newItem.children && newItem.children.length > 0) {
// 递归处理子节点
newItem.children = this.cleanEmptyChildren(newItem.children)
} else {
// 删除空的children属性
delete newItem.children
}
return newItem
})
},
fetchDeptData() {
listMetadata().then(data => {
this.deptOptions = this.cleanEmptyChildren(data)
// console.error('deptOptions', this.deptOptions)
}).catch(error => {
console.error('获取部门数据失败:', error)
CsMessage.Error('获取部门数据失败')
})
},
handleChange(value) {
this.productLine = value
// console.error('value', value)
// 绑定change事件
this.$emit('change', value)
// 绑定form value
this.$emit('input', value)
}
}
}
</script>