import { defineStore } from 'pinia'; const defaultState = () => ({ show: false, title: '请选择当前业务办理归属的公司部门信息', companyList: [], selectedCompanyId: null, selectedDeptId: null, onConfirm: null, onCancel: null, }); const companyDeptStore = defineStore({ id: 'company-dept', state: defaultState, actions: { open({ companyList = [], onConfirm = null, onCancel = null, defaultCompanyId = null, defaultDeptId = null, title = null }) { this.companyList = companyList; this.onConfirm = onConfirm; this.onCancel = onCancel; this.title = title || '请选择当前业务办理归属的公司部门信息'; this.show = true; 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() { Object.assign(this, defaultState()); }, getDeptsByCompanyId(companyId) { const company = this.companyList.find((item) => item.companyId === companyId); return company?.depts || []; }, setSelectedCompany(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;