before delete 3software

This commit is contained in:
2025-06-29 18:55:59 +03:00
parent ebd77a3e66
commit b51a472738
147 changed files with 257326 additions and 3151 deletions

View File

@@ -1,37 +1,94 @@
import { ref } from 'vue'
import { ref, computed } from 'vue'
import { defineStore } from 'pinia'
import type { Company, CompanyParams } from '../types'
import { api } from 'boot/axios'
import type { Company, CompanyParams, CompanyMask } from 'types/Company'
import { useProjectsStore } from 'stores/projects'
export const useCompaniesStore = defineStore('companies', () => {
const projectsStore = useProjectsStore()
const companies = ref<Company[]>([])
const companiesMask = ref<CompanyMask[]>([])
companies.value.push(
{id: 11, project_id: 11, name: 'Рога и копытца', logo: '', description: 'Монтажники вывески' },
{id: 21, project_id: 12, name: 'ООО "Василек33"', logo: '' },
{id: 13, project_id: 13, name: 'Откат и деньги', logo: '', description: 'Договариваются с администрацией' },
)
const isInit = ref<boolean>(false)
const currentProjectId = computed(() => projectsStore.currentProjectId)
function companyById (id :number) {
async function init () {
const { data }= await api.get('/project/' + currentProjectId.value + '/company')
const companiesAPI = data.data
companies.value.push(...(companiesAPI.sort((a: Company, b: Company) => (a.id - b.id))))
companiesMask.value = [
{ "company_id": 11, "company_list": [ 9, 12 ] },
{ "company_id": 9, "company_list": [ 11, 12 ] },
{ "company_id": 12, "company_list": [ 9, 10, 13 ] }
]
// await getCompanyMasked()
isInit.value = true
}
function reset () {
companies.value = []
companiesMask.value = []
isInit.value = false
}
async function add (companyData: CompanyParams) {
const { data } = await api.post('/project/' + currentProjectId.value + '/company', companyData)
const newCompanyAPI = data.data
companies.value.push(newCompanyAPI)
return newCompanyAPI
}
async function update (companyId: number, companyData: CompanyParams) {
const { data } = await api.put('/project/' + currentProjectId.value + '/company/' + companyId, companyData)
const companyAPI = data.data
const idx = companies.value.findIndex(item => item.id === companyAPI.id)
if (companies.value[idx]) Object.assign(companies.value[idx], companyAPI)
}
async function remove (companyId: number) {
const { data } = await api.delete('/project/' + currentProjectId.value + '/company/' + companyId)
const companyAPIid = data.data.id
const idx = companies.value.findIndex(item => item.id === companyAPIid)
companies.value.splice(idx, 1)
await getCompanyMasked()
}
function companyById (id: number) {
return companies.value.find(el =>el.id === id)
}
function addCompany (company: CompanyParams) {
companies.value.push({
id: Date.now(),
project_id: Date.now() * 1000,
...company
})
async function getCompanyMasked () {
const { data } = await api.get('/project/' + currentProjectId.value + '/company/mapping')
const companiesMaskAPI = data.data
companiesMask.value = companiesMaskAPI
}
function updateCompany (id :number, company: CompanyParams) {
const idx = companies.value.findIndex(item => item.id === id)
Object.assign(companies.value[idx] || {}, company)
function checkCompanyMasked (id: number) {
return companiesMask.value.some(el => el.company_id === id)
}
function deleteCompany (id :number) {
const idx = companies.value.findIndex(item => item.id === id)
companies.value.splice(idx, 1)
async function updateMask (mask: CompanyMask[]) {
const { data } = await api.post('/project/' + currentProjectId.value + '/company/mapping', mask)
const maskAPI = data.data
companiesMask.value = maskAPI
}
return { companies, addCompany, updateCompany, deleteCompany, companyById }
const getCompanies = computed(() => companies.value)
return {
companies,
companiesMask,
isInit,
init,
reset,
add,
update,
remove,
companyById,
checkCompanyMasked,
updateMask,
getCompanies
}
})