Files
zgty-mas-m/nx/store/company-dept.js
2025-12-01 17:02:40 +08:00

80 lines
2.2 KiB
JavaScript

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