add
This commit is contained in:
parent
49f1f1f72b
commit
5862fe1dfa
26
src/api/consult_accept.ts
Normal file
26
src/api/consult_accept.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--验收管理列表
|
||||||
|
export function apiConsultAcceptLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_build.consult_accept/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--验收管理
|
||||||
|
export function apiConsultAcceptAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_accept/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--验收管理
|
||||||
|
export function apiConsultAcceptEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_accept/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--验收管理
|
||||||
|
export function apiConsultAcceptDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_accept/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--验收管理详情
|
||||||
|
export function apiConsultAcceptDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_build.consult_accept/detail', params })
|
||||||
|
}
|
26
src/api/consult_contract.ts
Normal file
26
src/api/consult_contract.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--合同管理列表
|
||||||
|
export function apiConsultContractLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_contract/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--合同管理
|
||||||
|
export function apiConsultContractAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_contract/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--合同管理
|
||||||
|
export function apiConsultContractEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_contract/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--合同管理
|
||||||
|
export function apiConsultContractDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_contract/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--合同管理详情
|
||||||
|
export function apiConsultContractDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_contract/detail', params })
|
||||||
|
}
|
26
src/api/consult_control.ts
Normal file
26
src/api/consult_control.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--总控管理列表
|
||||||
|
export function apiConsultControlLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_target.consult_control/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--总控管理
|
||||||
|
export function apiConsultControlAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_control/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--总控管理
|
||||||
|
export function apiConsultControlEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_control/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--总控管理
|
||||||
|
export function apiConsultControlDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_control/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--总控管理详情
|
||||||
|
export function apiConsultControlDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_target.consult_control/detail', params })
|
||||||
|
}
|
26
src/api/consult_cost.ts
Normal file
26
src/api/consult_cost.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--造价管理列表
|
||||||
|
export function apiConsultCostLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_cost/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--造价管理
|
||||||
|
export function apiConsultCostAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_cost/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--造价管理
|
||||||
|
export function apiConsultCostEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_cost/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--造价管理
|
||||||
|
export function apiConsultCostDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_cost/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--造价管理详情
|
||||||
|
export function apiConsultCostDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_cost/detail', params })
|
||||||
|
}
|
26
src/api/consult_decision.ts
Normal file
26
src/api/consult_decision.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--决策管理列表
|
||||||
|
export function apiConsultDecisionLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_target.consult_decision/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--决策管理
|
||||||
|
export function apiConsultDecisionAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_decision/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--决策管理
|
||||||
|
export function apiConsultDecisionEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_decision/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--决策管理
|
||||||
|
export function apiConsultDecisionDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_decision/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--决策管理详情
|
||||||
|
export function apiConsultDecisionDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_target.consult_decision/detail', params })
|
||||||
|
}
|
26
src/api/consult_declare.ts
Normal file
26
src/api/consult_declare.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--报建管理列表
|
||||||
|
export function apiConsultDeclareLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_declare/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--报建管理
|
||||||
|
export function apiConsultDeclareAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_declare/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--报建管理
|
||||||
|
export function apiConsultDeclareEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_declare/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--报建管理
|
||||||
|
export function apiConsultDeclareDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_declare/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--报建管理详情
|
||||||
|
export function apiConsultDeclareDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_declare/detail', params })
|
||||||
|
}
|
26
src/api/consult_demand.ts
Normal file
26
src/api/consult_demand.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--需求研究及管理列表
|
||||||
|
export function apiConsultDemandLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_target.consult_demand/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--需求研究及管理
|
||||||
|
export function apiConsultDemandAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_demand/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--需求研究及管理
|
||||||
|
export function apiConsultDemandEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_demand/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--需求研究及管理
|
||||||
|
export function apiConsultDemandDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_demand/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--需求研究及管理详情
|
||||||
|
export function apiConsultDemandDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_target.consult_demand/detail', params })
|
||||||
|
}
|
26
src/api/consult_design.ts
Normal file
26
src/api/consult_design.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--设计管理列表
|
||||||
|
export function apiConsultDesignLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_design/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--设计管理
|
||||||
|
export function apiConsultDesignAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_design/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--设计管理
|
||||||
|
export function apiConsultDesignEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_design/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--设计管理
|
||||||
|
export function apiConsultDesignDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_design/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--设计管理详情
|
||||||
|
export function apiConsultDesignDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_design/detail', params })
|
||||||
|
}
|
26
src/api/consult_directory.ts
Normal file
26
src/api/consult_directory.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--全过程咨询目录列表
|
||||||
|
export function apiConsultDirectoryLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_catalog.consult_directory/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--全过程咨询目录
|
||||||
|
export function apiConsultDirectoryAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_catalog.consult_directory/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--全过程咨询目录
|
||||||
|
export function apiConsultDirectoryEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_catalog.consult_directory/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--全过程咨询目录
|
||||||
|
export function apiConsultDirectoryDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_catalog.consult_directory/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--全过程咨询目录详情
|
||||||
|
export function apiConsultDirectoryDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_catalog.consult_directory/detail', params })
|
||||||
|
}
|
26
src/api/consult_procure.ts
Normal file
26
src/api/consult_procure.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--招采管理列表
|
||||||
|
export function apiConsultProcureLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_procure/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--招采管理
|
||||||
|
export function apiConsultProcureAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_procure/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--招采管理
|
||||||
|
export function apiConsultProcureEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_procure/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--招采管理
|
||||||
|
export function apiConsultProcureDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_strategy.consult_procure/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--招采管理详情
|
||||||
|
export function apiConsultProcureDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_strategy.consult_procure/detail', params })
|
||||||
|
}
|
26
src/api/consult_receive.ts
Normal file
26
src/api/consult_receive.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--接收管理列表
|
||||||
|
export function apiConsultReceiveLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_target.consult_receive/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--接收管理
|
||||||
|
export function apiConsultReceiveAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_receive/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--接收管理
|
||||||
|
export function apiConsultReceiveEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_receive/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--接收管理
|
||||||
|
export function apiConsultReceiveDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_target.consult_receive/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--接收管理详情
|
||||||
|
export function apiConsultReceiveDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_target.consult_receive/detail', params })
|
||||||
|
}
|
26
src/api/consult_scene_execute.ts
Normal file
26
src/api/consult_scene_execute.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--现场实施管理列表
|
||||||
|
export function apiConsultSceneExecuteLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_build.consult_scene_execute/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--现场实施管理
|
||||||
|
export function apiConsultSceneExecuteAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_scene_execute/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--现场实施管理
|
||||||
|
export function apiConsultSceneExecuteEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_scene_execute/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--现场实施管理
|
||||||
|
export function apiConsultSceneExecuteDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_scene_execute/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--现场实施管理详情
|
||||||
|
export function apiConsultSceneExecuteDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_build.consult_scene_execute/detail', params })
|
||||||
|
}
|
26
src/api/consult_scene_org.ts
Normal file
26
src/api/consult_scene_org.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--现场组织建设列表
|
||||||
|
export function apiConsultSceneOrgLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_build.consult_scene_org/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--现场组织建设
|
||||||
|
export function apiConsultSceneOrgAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_scene_org/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--现场组织建设
|
||||||
|
export function apiConsultSceneOrgEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_scene_org/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--现场组织建设
|
||||||
|
export function apiConsultSceneOrgDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_scene_org/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--现场组织建设详情
|
||||||
|
export function apiConsultSceneOrgDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_build.consult_scene_org/detail', params })
|
||||||
|
}
|
26
src/api/consult_scene_prepare.ts
Normal file
26
src/api/consult_scene_prepare.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--现场准备列表
|
||||||
|
export function apiConsultScenePrepareLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_build.consult_scene_prepare/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--现场准备
|
||||||
|
export function apiConsultScenePrepareAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_scene_prepare/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--现场准备
|
||||||
|
export function apiConsultScenePrepareEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_scene_prepare/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--现场准备
|
||||||
|
export function apiConsultScenePrepareDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_build.consult_scene_prepare/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--现场准备详情
|
||||||
|
export function apiConsultScenePrepareDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_build.consult_scene_prepare/detail', params })
|
||||||
|
}
|
26
src/api/consult_subdirectory.ts
Normal file
26
src/api/consult_subdirectory.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 项目咨询--全过程咨询子目录列表
|
||||||
|
export function apiConsultSubdirectoryLists(params: any) {
|
||||||
|
return request.get({ url: '/consult_catalog.consult_subdirectory/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加项目咨询--全过程咨询子目录
|
||||||
|
export function apiConsultSubdirectoryAdd(params: any) {
|
||||||
|
return request.post({ url: '/consult_catalog.consult_subdirectory/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑项目咨询--全过程咨询子目录
|
||||||
|
export function apiConsultSubdirectoryEdit(params: any) {
|
||||||
|
return request.post({ url: '/consult_catalog.consult_subdirectory/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除项目咨询--全过程咨询子目录
|
||||||
|
export function apiConsultSubdirectoryDelete(params: any) {
|
||||||
|
return request.post({ url: '/consult_catalog.consult_subdirectory/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目咨询--全过程咨询子目录详情
|
||||||
|
export function apiConsultSubdirectoryDetail(params: any) {
|
||||||
|
return request.get({ url: '/consult_catalog.consult_subdirectory/detail', params })
|
||||||
|
}
|
@ -28,10 +28,7 @@
|
|||||||
import useMultipleTabs from "@/hooks/useMultipleTabs";
|
import useMultipleTabs from "@/hooks/useMultipleTabs";
|
||||||
import { useWatchRoute } from "@/hooks/useWatchRoute";
|
import { useWatchRoute } from "@/hooks/useWatchRoute";
|
||||||
import useTabsStore, { getRouteParams } from "@/stores/modules/multipleTabs";
|
import useTabsStore, { getRouteParams } from "@/stores/modules/multipleTabs";
|
||||||
import useSettingStore from '@/stores/modules/setting'
|
|
||||||
|
|
||||||
const settingStore = useSettingStore()
|
|
||||||
const themeColor = computed(() => settingStore.theme || '#4A5DFF')
|
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
@ -86,7 +83,6 @@ const handleCommand = (command: any) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// console.log(useSetting, 'useSetting')
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.menu {
|
.menu {
|
||||||
@ -103,17 +99,16 @@ const handleCommand = (command: any) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.act {
|
.act {
|
||||||
background-color: #edefff;
|
background-color: var(--el-color-primary-light-9);
|
||||||
color: v-bind(themeColor);
|
color: var(--el-color-primary)
|
||||||
}
|
}
|
||||||
|
|
||||||
.dot {
|
.dot {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 5px;
|
width: 5px;
|
||||||
height: 5px;
|
height: 5px;
|
||||||
background-color: v-bind(themeColor);
|
background-color: var(--el-color-primary);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
// font-size: 30px;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
326
src/views/consult_accept/edit.vue
Normal file
326
src/views/consult_accept/edit.vue
Normal file
@ -0,0 +1,326 @@
|
|||||||
|
<!-- <template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目id" prop="project_id">
|
||||||
|
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录id" prop="directory_id">
|
||||||
|
<el-input v-model="formData.directory_id" clearable placeholder="请输入目录id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-input v-model="formData.subdirectory_id" clearable placeholder="请输入子目录" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultAcceptEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultAcceptAdd, apiConsultAcceptEdit, apiConsultAcceptDetail } from '@/api/consult_accept'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--验收管理' : '新增项目咨询--验收管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiConsultAcceptDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultAcceptEdit(data)
|
||||||
|
: await apiConsultAcceptAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script> -->
|
||||||
|
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultAcceptAdd, apiConsultAcceptEdit } from '@/api/consult_accept'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultAcceptEdit(data)
|
||||||
|
: await apiConsultAcceptAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
130
src/views/consult_accept/index.vue
Normal file
130
src/views/consult_accept/index.vue
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_build.consult_accept/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_build.consult_accept/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_build.consult_accept/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_build.consult_accept/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultAcceptLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultAcceptLists, apiConsultAcceptDelete, apiConsultAcceptDetail } from '@/api/consult_accept'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultAcceptLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 13 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultAcceptDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultAcceptDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getDirectory()
|
||||||
|
getLists()
|
||||||
|
</script>
|
181
src/views/consult_contract/edit.vue
Normal file
181
src/views/consult_contract/edit.vue
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultContractAdd, apiConsultContractEdit, apiConsultContractDetail } from '@/api/consult_contract'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultContractEdit(data)
|
||||||
|
: await apiConsultContractAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
130
src/views/consult_contract/index.vue
Normal file
130
src/views/consult_contract/index.vue
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_contract/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_contract/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_contract/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_contract/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultContractLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultContractLists, apiConsultContractDelete, apiConsultContractDetail } from '@/api/consult_contract'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultContractLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 7 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultContractDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultContractDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
getDirectory()
|
||||||
|
</script>
|
188
src/views/consult_control/edit.vue
Normal file
188
src/views/consult_control/edit.vue
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultControlAdd, apiConsultControlEdit } from '@/api/consult_control'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiConsultDemandDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultControlEdit(data)
|
||||||
|
: await apiConsultControlAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
130
src/views/consult_control/index.vue
Normal file
130
src/views/consult_control/index.vue
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_target.consult_control/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_target.consult_control/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_target.consult_control/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_target.consult_control/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultControlLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultControlLists, apiConsultControlDelete, apiConsultControlDetail } from '@/api/consult_control'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultControlLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 3 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultControlDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultControlDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
getDirectory()
|
||||||
|
getLists()
|
||||||
|
</script>
|
325
src/views/consult_cost/edit.vue
Normal file
325
src/views/consult_cost/edit.vue
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
<!-- <template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目id" prop="project_id">
|
||||||
|
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录id" prop="directory_id">
|
||||||
|
<el-input v-model="formData.directory_id" clearable placeholder="请输入目录id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-input v-model="formData.subdirectory_id" clearable placeholder="请输入子目录" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultCostEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultCostAdd, apiConsultCostEdit, apiConsultCostDetail } from '@/api/consult_cost'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--造价管理' : '新增项目咨询--造价管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiConsultCostDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultCostEdit(data)
|
||||||
|
: await apiConsultCostAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script> -->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultCostAdd, apiConsultCostEdit, apiConsultCostDetail } from '@/api/consult_cost'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultCostEdit(data)
|
||||||
|
: await apiConsultCostAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
131
src/views/consult_cost/index.vue
Normal file
131
src/views/consult_cost/index.vue
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_cost/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_cost/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_cost/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_cost/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultCostLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultCostLists, apiConsultCostDelete, apiConsultCostDetail } from '@/api/consult_cost'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 8 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultCostLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultCostDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultCostDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getDirectory()
|
||||||
|
getLists()
|
||||||
|
</script>
|
175
src/views/consult_decision/edit.vue
Normal file
175
src/views/consult_decision/edit.vue
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDecisionEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultDecisionAdd, apiConsultDecisionEdit } from '@/api/consult_decision'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--决策管理' : '新增项目咨询--决策管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultDecisionEdit(data)
|
||||||
|
: await apiConsultDecisionAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
129
src/views/consult_decision/index.vue
Normal file
129
src/views/consult_decision/index.vue
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_target.consult_decision/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_target.consult_decision/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_target.consult_decision/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_target.consult_decision/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false"
|
||||||
|
:DirectoryList="DirectoryList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDecisionLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultDecisionLists, apiConsultDecisionDelete, apiConsultDecisionDetail } from '@/api/consult_decision'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultDecisionLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 1 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultDecisionDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultDecisionDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
getDirectory()
|
||||||
|
getLists()
|
||||||
|
</script>
|
182
src/views/consult_declare/edit.vue
Normal file
182
src/views/consult_declare/edit.vue
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultReceiveAdd, apiConsultReceiveEdit, apiConsultReceiveDetail } from '@/api/consult_receive'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultReceiveEdit(data)
|
||||||
|
: await apiConsultReceiveAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
129
src/views/consult_declare/index.vue
Normal file
129
src/views/consult_declare/index.vue
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_declare/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_declare/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_declare/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_declare/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDeclareLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultDeclareLists, apiConsultDeclareDelete } from '@/api/consult_declare'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultDeclareLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 5 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultDeclareDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
getDirectory()
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
187
src/views/consult_demand/edit.vue
Normal file
187
src/views/consult_demand/edit.vue
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultDemandAdd, apiConsultDemandEdit, apiConsultDemandDetail } from '@/api/consult_demand'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiConsultDemandDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultDemandEdit(data)
|
||||||
|
: await apiConsultDemandAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
130
src/views/consult_demand/index.vue
Normal file
130
src/views/consult_demand/index.vue
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_target.consult_demand/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_target.consult_demand/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_target.consult_demand/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_target.consult_demand/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false"
|
||||||
|
:DirectoryList="DirectoryList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultDemandLists, apiConsultDemandDelete, apiConsultDemandDetail } from '@/api/consult_demand'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultDemandLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 2 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultDemandDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultDemandDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
getDirectory()
|
||||||
|
getLists()
|
||||||
|
</script>
|
182
src/views/consult_design/edit.vue
Normal file
182
src/views/consult_design/edit.vue
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultDesignAdd, apiConsultDesignEdit, } from '@/api/consult_design'
|
||||||
|
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultDesignEdit(data)
|
||||||
|
: await apiConsultDesignAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
131
src/views/consult_design/index.vue
Normal file
131
src/views/consult_design/index.vue
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_design/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_design/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_design/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_design/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDesignLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultDesignLists, apiConsultDesignDelete, apiConsultDesignDetail } from '@/api/consult_design'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 9 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultDesignLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultDesignDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultDesignDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getDirectory()
|
||||||
|
getLists()
|
||||||
|
</script>
|
115
src/views/consult_directory/edit.vue
Normal file
115
src/views/consult_directory/edit.vue
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="所属菜单" prop="menu">
|
||||||
|
<el-select class="flex-1" v-model="formData.menu" clearable placeholder="请选择所属菜单">
|
||||||
|
<el-option v-for="(item, index) in dictData.consult_menu" :key="index" :label="item.name"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录分类" prop="name">
|
||||||
|
<el-input v-model="formData.name" clearable placeholder="请输入目录分类" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDirectoryEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultDirectoryAdd, apiConsultDirectoryEdit, apiConsultDirectoryDetail } from '@/api/consult_directory'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--全过程咨询目录' : '新增项目咨询--全过程咨询目录'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
menu: '',
|
||||||
|
name: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
menu: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入所属菜单',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录分类',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
formData.menu = String(formData.menu)
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiConsultDirectoryDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultDirectoryEdit(data)
|
||||||
|
: await apiConsultDirectoryAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
121
src/views/consult_directory/index.vue
Normal file
121
src/views/consult_directory/index.vue
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="所属菜单" prop="menu">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.menu" clearable placeholder="请选择所属菜单">
|
||||||
|
<el-option v-for="(item, index) in dictData.consult_menu" :key="index" :label="item.name"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录分类" prop="name">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入目录分类" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_catalog.consult_directory/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_catalog.consult_directory/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="所属菜单" prop="menu" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-value :options="dictData.consult_menu" :value="String(row.menu)" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="目录分类" prop="name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_catalog.consult_directory/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_catalog.consult_directory/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDirectoryLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultDirectoryLists, apiConsultDirectoryDelete } from '@/api/consult_directory'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
menu: '',
|
||||||
|
name: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('consult_menu')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultDirectoryLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultDirectoryDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
181
src/views/consult_procure/edit.vue
Normal file
181
src/views/consult_procure/edit.vue
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultProcureAdd, apiConsultProcureEdit } from '@/api/consult_procure'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultProcureEdit(data)
|
||||||
|
: await apiConsultProcureAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
128
src/views/consult_procure/index.vue
Normal file
128
src/views/consult_procure/index.vue
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_procure/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_procure/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_strategy.consult_procure/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_strategy.consult_procure/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false"
|
||||||
|
:DirectoryList="DirectoryList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultProcureLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultProcureLists, apiConsultProcureDelete, apiConsultProcureDetail } from '@/api/consult_procure'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultProcureLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 6 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultProcureDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultProcureDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
getDirectory()
|
||||||
|
getLists()
|
||||||
|
</script>
|
326
src/views/consult_receive/edit.vue
Normal file
326
src/views/consult_receive/edit.vue
Normal file
@ -0,0 +1,326 @@
|
|||||||
|
<!-- <template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目id" prop="project_id">
|
||||||
|
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录id" prop="directory_id">
|
||||||
|
<el-input v-model="formData.directory_id" clearable placeholder="请输入目录id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-input v-model="formData.subdirectory_id" clearable placeholder="请输入子目录" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultReceiveEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultReceiveAdd, apiConsultReceiveEdit, apiConsultReceiveDetail } from '@/api/consult_receive'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--接收管理' : '新增项目咨询--接收管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiConsultReceiveDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultReceiveEdit(data)
|
||||||
|
: await apiConsultReceiveAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script> -->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultReceiveAdd, apiConsultReceiveEdit, apiConsultReceiveDetail } from '@/api/consult_receive'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultReceiveEdit(data)
|
||||||
|
: await apiConsultReceiveAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
129
src/views/consult_receive/index.vue
Normal file
129
src/views/consult_receive/index.vue
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_target.consult_receive/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_target.consult_receive/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_target.consult_receive/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_target.consult_receive/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultReceiveLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultReceiveLists, apiConsultReceiveDelete } from '@/api/consult_receive'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultReceiveLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 4 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultReceiveDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getDirectory()
|
||||||
|
getLists()
|
||||||
|
</script>
|
181
src/views/consult_scene_execute/edit.vue
Normal file
181
src/views/consult_scene_execute/edit.vue
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultSceneExecuteAdd, apiConsultSceneExecuteEdit } from '@/api/consult_scene_execute'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultSceneExecuteEdit(data)
|
||||||
|
: await apiConsultSceneExecuteAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
131
src/views/consult_scene_execute/index.vue
Normal file
131
src/views/consult_scene_execute/index.vue
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_execute/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_execute/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_execute/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_execute/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultSceneExecuteLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultSceneExecuteLists, apiConsultSceneExecuteDelete, apiConsultSceneExecuteDetail } from '@/api/consult_scene_execute'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultSceneExecuteLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 12 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultSceneExecuteDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultSceneExecuteDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
getDirectory()
|
||||||
|
</script>
|
181
src/views/consult_scene_org/edit.vue
Normal file
181
src/views/consult_scene_org/edit.vue
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultSceneOrgAdd, apiConsultSceneOrgEdit } from '@/api/consult_scene_org'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultSceneOrgEdit(data)
|
||||||
|
: await apiConsultSceneOrgAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
131
src/views/consult_scene_org/index.vue
Normal file
131
src/views/consult_scene_org/index.vue
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_org/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_org/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_org/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_org/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultSceneOrgLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultSceneOrgLists, apiConsultSceneOrgDelete, apiConsultSceneOrgDetail } from '@/api/consult_scene_org'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultSceneOrgLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 11 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultSceneOrgDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultSceneOrgDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
getDirectory()
|
||||||
|
</script>
|
325
src/views/consult_scene_prepare/edit.vue
Normal file
325
src/views/consult_scene_prepare/edit.vue
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
<!-- <template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目id" prop="project_id">
|
||||||
|
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录id" prop="directory_id">
|
||||||
|
<el-input v-model="formData.directory_id" clearable placeholder="请输入目录id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-input v-model="formData.subdirectory_id" clearable placeholder="请输入子目录" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultScenePrepareEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultScenePrepareAdd, apiConsultScenePrepareEdit, apiConsultScenePrepareDetail } from '@/api/consult_scene_prepare'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--现场准备' : '新增项目咨询--现场准备'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiConsultScenePrepareDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultScenePrepareEdit(data)
|
||||||
|
: await apiConsultScenePrepareAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script> -->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.directory_id" clearable placeholder="请选择目录"
|
||||||
|
@change="getSubdirectory">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录" prop="subdirectory_id">
|
||||||
|
<el-select class="flex-1" v-model="formData.subdirectory_id" clearable placeholder="请选择子目录">
|
||||||
|
<el-option v-for="(item, index) in SubdirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<dialogTable @customEvent="customEvent" :config="consult_project" />
|
||||||
|
</el-dialog>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultDemandEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultScenePrepareAdd, apiConsultScenePrepareEdit } from '@/api/consult_scene_prepare'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
import { consult_project } from "@/components/dialogTable/dialogTableConfig"
|
||||||
|
import { apiConsultSubdirectoryLists } from '@/api/consult_subdirectory'
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
DirectoryList: Array
|
||||||
|
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
const showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
title: '',
|
||||||
|
directory_id: '',
|
||||||
|
subdirectory_id: '',
|
||||||
|
remark: '',
|
||||||
|
annex: [],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
|
Array.isArray(formData.annex) ? '' : formData.annex = []
|
||||||
|
// @ts-ignore
|
||||||
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
|
};
|
||||||
|
// 删除上传的文件
|
||||||
|
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
||||||
|
|
||||||
|
const customEvent = (e: any) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
|
||||||
|
const SubdirectoryList = ref([])
|
||||||
|
// 根据目录获取子目录
|
||||||
|
const getSubdirectory = async () => {
|
||||||
|
formData.subdirectory_id = ''
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入项目id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
title: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文档名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入目录id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
subdirectory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let res = await apiConsultSubdirectoryLists({ directory_id: formData.directory_id })
|
||||||
|
SubdirectoryList.value = res.lists
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultScenePrepareEdit(data)
|
||||||
|
: await apiConsultScenePrepareAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
})
|
||||||
|
</script>
|
130
src/views/consult_scene_prepare/index.vue
Normal file
130
src/views/consult_scene_prepare/index.vue
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="文档名称" prop="title">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.title" clearable placeholder="请输入文档名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="目录" prop="directory_id">
|
||||||
|
<el-select class="flex-1" v-model="queryParams.directory_id" clearable placeholder="请选择目录">
|
||||||
|
<el-option v-for="(item, index) in DirectoryList" :key="index" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_prepare/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_prepare/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="文档名称" prop="title" show-overflow-tooltip />
|
||||||
|
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_prepare/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_build.consult_scene_prepare/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
|
||||||
|
@success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultScenePrepareLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultScenePrepareLists, apiConsultScenePrepareDelete, apiConsultScenePrepareDetail } from '@/api/consult_scene_prepare'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
const DirectoryList = ref([])
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_id: '',
|
||||||
|
title: '',
|
||||||
|
directory_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取目录
|
||||||
|
const getDirectory = async () => {
|
||||||
|
let res = await apiConsultDirectoryLists({ menu: 10 })
|
||||||
|
DirectoryList.value = res.lists
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultScenePrepareLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
let res = await apiConsultScenePrepareDetail({ id: data.id })
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultScenePrepareDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
getDirectory()
|
||||||
|
</script>
|
138
src/views/consult_subdirectory/edit.vue
Normal file
138
src/views/consult_subdirectory/edit.vue
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||||
|
@close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="100px" :rules="formRules">
|
||||||
|
<el-form-item label="所属目录" prop="directory_id">
|
||||||
|
<el-select v-model="formData.directory_id" remote filterable :remote-method="queryCostProject"
|
||||||
|
:loading="loading" class="flex-1">
|
||||||
|
<el-option v-for="(item, index) in optionsData.projectList.lists" :key="index"
|
||||||
|
:label="item.name" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录名称" prop="name">
|
||||||
|
<el-input v-model="formData.name" clearable placeholder="请输入子目录名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultSubdirectoryEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiConsultSubdirectoryAdd, apiConsultSubdirectoryEdit, apiConsultSubdirectoryDetail } from '@/api/consult_subdirectory'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import { useDictOptions } from "@/hooks/useDictOptions"
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import type { PropType } from 'vue'
|
||||||
|
defineProps({
|
||||||
|
dictData: {
|
||||||
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success', 'close'])
|
||||||
|
const formRef = shallowRef<FormInstance>()
|
||||||
|
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||||
|
const mode = ref('add')
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑项目咨询--全过程咨询子目录' : '新增项目咨询--全过程咨询子目录'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
directory_id: '',
|
||||||
|
name: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
directory_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入所属目录',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入子目录名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
|
||||||
|
const { optionsData } = useDictOptions<{
|
||||||
|
projectList: any[]
|
||||||
|
}>({
|
||||||
|
projectList: {
|
||||||
|
api: apiConsultDirectoryLists,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
|
|
||||||
|
const queryCostProject = async (query: string) => {
|
||||||
|
loading.value = true
|
||||||
|
const projectList = await apiConsultDirectoryLists()
|
||||||
|
optionsData.projectList = projectList
|
||||||
|
|
||||||
|
console.log(optionsData, 'optionsData')
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取详情
|
||||||
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
|
for (const key in formData) {
|
||||||
|
if (data[key] != null && data[key] != undefined) {
|
||||||
|
//@ts-ignore
|
||||||
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
|
const data = await apiConsultSubdirectoryDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiConsultSubdirectoryEdit(data)
|
||||||
|
: await apiConsultSubdirectoryAdd(data)
|
||||||
|
popupRef.value?.close()
|
||||||
|
emit('success')
|
||||||
|
}
|
||||||
|
|
||||||
|
//打开弹窗
|
||||||
|
const open = (type = 'add') => {
|
||||||
|
mode.value = type
|
||||||
|
popupRef.value?.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭回调
|
||||||
|
const handleClose = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
setFormData,
|
||||||
|
getDetail
|
||||||
|
})
|
||||||
|
</script>
|
141
src/views/consult_subdirectory/index.vue
Normal file
141
src/views/consult_subdirectory/index.vue
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="所属目录" prop="directory_id">
|
||||||
|
<el-select v-model="queryParams.directory_id" remote filterable :remote-method="queryCostProject"
|
||||||
|
:loading="loading" class="flex-1">
|
||||||
|
<el-option v-for="(item, index) in optionsData.projectList.lists" :key="index"
|
||||||
|
:label="item.name" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="子目录名称" prop="name">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入子目录名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<el-button v-perms="['consult_catalog.consult_subdirectory/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_catalog.consult_subdirectory/delete']" :disabled="!selectData.length"
|
||||||
|
@click="handleDelete(selectData)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="所属目录" prop="directory_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="子目录名称" prop="name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['consult_catalog.consult_subdirectory/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['consult_catalog.consult_subdirectory/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex mt-4 justify-end">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="consultSubdirectoryLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiConsultSubdirectoryLists, apiConsultSubdirectoryDelete } from '@/api/consult_subdirectory'
|
||||||
|
import { timeFormat } from '@/utils/util'
|
||||||
|
import feedback from '@/utils/feedback'
|
||||||
|
import EditPopup from './edit.vue'
|
||||||
|
import { apiConsultDirectoryLists } from '@/api/consult_directory'
|
||||||
|
import { useDictOptions } from "@/hooks/useDictOptions"
|
||||||
|
|
||||||
|
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||||
|
// 是否显示编辑框
|
||||||
|
const showEdit = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
directory_id: '',
|
||||||
|
name: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('consult_menu')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiConsultSubdirectoryLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
const { optionsData } = useDictOptions<{
|
||||||
|
projectList: any[]
|
||||||
|
}>({
|
||||||
|
projectList: {
|
||||||
|
api: apiConsultDirectoryLists,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
|
|
||||||
|
const queryCostProject = async (query: string) => {
|
||||||
|
loading.value = true
|
||||||
|
const projectList = await apiConsultDirectoryLists()
|
||||||
|
optionsData.projectList = projectList
|
||||||
|
|
||||||
|
console.log(optionsData, 'optionsData')
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 添加
|
||||||
|
const handleAdd = async () => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('add')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
const handleEdit = async (data: any) => {
|
||||||
|
showEdit.value = true
|
||||||
|
await nextTick()
|
||||||
|
editRef.value?.open('edit')
|
||||||
|
editRef.value?.setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleDelete = async (id: number | any[]) => {
|
||||||
|
await feedback.confirm('确定要删除?')
|
||||||
|
await apiConsultSubdirectoryDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
Loading…
x
Reference in New Issue
Block a user