import { defineStore } from 'pinia' const defaultState = () => ({ show: false, showCancel: false, title: '请选择当前业务办理归属的公司部门信息', companyList: [], selectedCompanyId: null, selectedDeptId: null, onConfirm: null, onCancel: null, showSelectDept: false }) const companyDeptStore = defineStore({ id: 'company-dept', state: defaultState, actions: { open({ companyList = [], onConfirm = null, onCancel = null, defaultCompanyId = null, defaultDeptId = null, title = null, showCancel = false }) { this.companyList = companyList this.onConfirm = onConfirm this.onCancel = onCancel this.title = title || '请选择当前业务办理归属的公司部门信息' this.show = true this.showCancel = showCancel this.selectedCompanyId = defaultCompanyId this.selectedDeptId = defaultDeptId if (!this.selectedCompanyId && this.companyList.length > 0) { this.selectedCompanyId = this.companyList[0].companyId } if (!this.selectedDeptId) { const depts = this.getDeptsByCompanyId(this.selectedCompanyId) this.selectedDeptId = depts.length > 0 ? depts[0].deptId : null } }, close() { this.show = false }, getDeptsByCompanyId(companyId) { const company = this.companyList.find(item => item.companyId === companyId) return company?.depts || [] }, setSelectedCompany(companyId) { console.log(companyId) this.selectedCompanyId = companyId const depts = this.getDeptsByCompanyId(companyId) const currentDeptIds = depts.map(dept => dept.deptId) if (!currentDeptIds.includes(this.selectedDeptId)) { this.selectedDeptId = depts.length > 0 ? depts[0].deptId : null } }, setSelectedDept(deptId) { this.selectedDeptId = deptId }, confirm() { if (this.onConfirm) { this.onConfirm({ companyId: this.selectedCompanyId, deptId: this.selectedDeptId }) } this.close() }, cancel() { if (this.onCancel) { this.onCancel() } this.close() } } }) export default companyDeptStore