下班
This commit is contained in:
parent
43da113a89
commit
c4e82a42fa
@ -1,4 +1,4 @@
|
|||||||
NODE_ENV = 'development'
|
NODE_ENV = 'development'
|
||||||
|
|
||||||
VITE_APP_BASE_URL = 'https://ceshi-engineering.lihaink.cn/'
|
# VITE_APP_BASE_URL = 'https://ceshi-engineering.lihaink.cn/'
|
||||||
# VITE_APP_BASE_URL = 'http://192.168.1.12:9090/'
|
VITE_APP_BASE_URL = 'http://192.168.1.5:9090/'
|
21
src/api/data_report.ts
Normal file
21
src/api/data_report.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
|
||||||
|
export function cost_approved_project_list(params: any) {
|
||||||
|
return request.post({ url: '/cost_consultation_report/cost_approved_project_list', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取首页文章数据
|
||||||
|
export function cost_project_report(params?: any) {
|
||||||
|
return request.get({ url: '/cost_consultation_report/cost_project_report', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 底部导航详情
|
||||||
|
export function project_trace(params?: any) {
|
||||||
|
return request.get({ url: '/cost_consultation_report/project_trace', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 底部导航保存
|
||||||
|
export function setDecorateTabbar(params: any) {
|
||||||
|
return request.post({ url: '/decorate.tabbar/save', params })
|
||||||
|
}
|
26
src/api/supervision_accept.ts
Normal file
26
src/api/supervision_accept.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 工程监理--验收登记列表
|
||||||
|
export function apiSupervisionAcceptLists(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_accept/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加工程监理--验收登记
|
||||||
|
export function apiSupervisionAcceptAdd(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_accept/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑工程监理--验收登记
|
||||||
|
export function apiSupervisionAcceptEdit(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_accept/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除工程监理--验收登记
|
||||||
|
export function apiSupervisionAcceptDelete(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_accept/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 工程监理--验收登记详情
|
||||||
|
export function apiSupervisionAcceptDetail(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_accept/detail', params })
|
||||||
|
}
|
26
src/api/supervision_check_item.ts
Normal file
26
src/api/supervision_check_item.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 工程监理--新增检查项列表
|
||||||
|
export function apiSupervisionCheckItemLists(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_check_item/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加工程监理--新增检查项
|
||||||
|
export function apiSupervisionCheckItemAdd(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_check_item/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑工程监理--新增检查项
|
||||||
|
export function apiSupervisionCheckItemEdit(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_check_item/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除工程监理--新增检查项
|
||||||
|
export function apiSupervisionCheckItemDelete(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_check_item/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 工程监理--新增检查项详情
|
||||||
|
export function apiSupervisionCheckItemDetail(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_check_item/detail', params })
|
||||||
|
}
|
26
src/api/supervision_device_entry.ts
Normal file
26
src/api/supervision_device_entry.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 工程监理--设备进场列表
|
||||||
|
export function apiSupervisionDeviceEntryLists(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_device_entry/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加工程监理--设备进场
|
||||||
|
export function apiSupervisionDeviceEntryAdd(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_device_entry/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑工程监理--设备进场
|
||||||
|
export function apiSupervisionDeviceEntryEdit(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_device_entry/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除工程监理--设备进场
|
||||||
|
export function apiSupervisionDeviceEntryDelete(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_device_entry/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 工程监理--设备进场详情
|
||||||
|
export function apiSupervisionDeviceEntryDetail(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_device_entry/detail', params })
|
||||||
|
}
|
26
src/api/supervision_inspection.ts
Normal file
26
src/api/supervision_inspection.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 工程监理--巡视登记列表
|
||||||
|
export function apiSupervisionInspectionLists(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_inspection/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加工程监理--巡视登记
|
||||||
|
export function apiSupervisionInspectionAdd(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_inspection/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑工程监理--巡视登记
|
||||||
|
export function apiSupervisionInspectionEdit(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_inspection/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除工程监理--巡视登记
|
||||||
|
export function apiSupervisionInspectionDelete(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_inspection/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 工程监理--巡视登记详情
|
||||||
|
export function apiSupervisionInspectionDetail(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_inspection/detail', params })
|
||||||
|
}
|
26
src/api/supervision_material_entry.ts
Normal file
26
src/api/supervision_material_entry.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 工程监理--材料进场列表
|
||||||
|
export function apiSupervisionMaterialEntryLists(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_material_entry/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加工程监理--材料进场
|
||||||
|
export function apiSupervisionMaterialEntryAdd(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_material_entry/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑工程监理--材料进场
|
||||||
|
export function apiSupervisionMaterialEntryEdit(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_material_entry/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除工程监理--材料进场
|
||||||
|
export function apiSupervisionMaterialEntryDelete(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_material_entry/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 工程监理--材料进场详情
|
||||||
|
export function apiSupervisionMaterialEntryDetail(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_material_entry/detail', params })
|
||||||
|
}
|
26
src/api/supervision_side_station.ts
Normal file
26
src/api/supervision_side_station.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 工程监理--旁站登记列表
|
||||||
|
export function apiSupervisionSideStationLists(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_side_station/lists', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加工程监理--旁站登记
|
||||||
|
export function apiSupervisionSideStationAdd(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_side_station/add', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑工程监理--旁站登记
|
||||||
|
export function apiSupervisionSideStationEdit(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_side_station/edit', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除工程监理--旁站登记
|
||||||
|
export function apiSupervisionSideStationDelete(params: any) {
|
||||||
|
return request.post({ url: '/supervision_work.supervision_side_station/delete', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 工程监理--旁站登记详情
|
||||||
|
export function apiSupervisionSideStationDetail(params: any) {
|
||||||
|
return request.get({ url: '/supervision_work.supervision_side_station/detail', params })
|
||||||
|
}
|
@ -80,7 +80,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="项目负责人" prop="principal">
|
<el-form-item label="项目负责人" prop="principal">
|
||||||
<el-input v-model="formData.principal" clearable placeholder="请输入项目负责人" />
|
<el-input v-model="formData.principal" clearable placeholder="请输入项目负责人" readonly />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -94,10 +94,10 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="印章是否外借" prop="loan">
|
<el-form-item label="印章是否外借" prop="loan">
|
||||||
<el-radio-group v-model="formData.loan" placeholder="请选择骑缝盖章">
|
<el-radio-group v-model="formData.loan" placeholder="请选择骑缝盖章">
|
||||||
<el-radio :label="1">
|
<el-radio label="1">
|
||||||
是
|
是
|
||||||
</el-radio>
|
</el-radio>
|
||||||
<el-radio :label="0">
|
<el-radio label="0">
|
||||||
否
|
否
|
||||||
</el-radio>
|
</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@ -227,7 +227,7 @@ const formData = reactive({
|
|||||||
org_id: "",
|
org_id: "",
|
||||||
depar: '',
|
depar: '',
|
||||||
stampman: '',
|
stampman: '',
|
||||||
project: '',
|
project_id: '',
|
||||||
project_name: '',
|
project_name: '',
|
||||||
principal: '',
|
principal: '',
|
||||||
content: '',
|
content: '',
|
||||||
@ -241,11 +241,12 @@ const formData = reactive({
|
|||||||
sjreturn: '',
|
sjreturn: '',
|
||||||
returnee: '',
|
returnee: '',
|
||||||
annex: [],
|
annex: [],
|
||||||
|
projectInfo: {}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const customEvent = (e: any) => {
|
const customEvent = (e: any) => {
|
||||||
formData.project = e.id
|
formData.project_id = e.id
|
||||||
formData.project_name = e.project_name
|
formData.project_name = e.project_name
|
||||||
formData.principal = e.principal
|
formData.principal = e.principal
|
||||||
showDialog.value = false
|
showDialog.value = false
|
||||||
@ -288,6 +289,10 @@ const setFormData = async (data: Record<any, any>) => {
|
|||||||
formData[key] = data[key]
|
formData[key] = data[key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
formData.project_id = formData.projectInfo.id
|
||||||
|
formData.project_name = formData.projectInfo.project_name
|
||||||
|
formData.principal = formData.projectInfo.principal
|
||||||
|
getlist1(formData.depar)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiApplyWithSealLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -47,14 +49,14 @@
|
|||||||
<el-table-column label="限制次数" prop="limit" show-overflow-tooltip />
|
<el-table-column label="限制次数" prop="limit" show-overflow-tooltip />
|
||||||
<el-table-column label="用印部门" prop="depar" show-overflow-tooltip />
|
<el-table-column label="用印部门" prop="depar" show-overflow-tooltip />
|
||||||
<el-table-column label="盖章人" prop="stampman" show-overflow-tooltip />
|
<el-table-column label="盖章人" prop="stampman" show-overflow-tooltip />
|
||||||
<el-table-column label="关联项目" prop="project" show-overflow-tooltip />
|
<el-table-column label="关联项目" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||||
<el-table-column label="项目负责人" prop="principal" show-overflow-tooltip />
|
<el-table-column label="项目负责人" prop="projectInfo.principal" show-overflow-tooltip />
|
||||||
<el-table-column label="盖章内容" prop="content" show-overflow-tooltip />
|
<el-table-column label="盖章内容" prop="content" show-overflow-tooltip />
|
||||||
<el-table-column label="印章是否外借" prop="loan" show-overflow-tooltip />
|
<el-table-column label="印章是否外借" prop="loan" show-overflow-tooltip />
|
||||||
<el-table-column label="印章借用日期" prop="borrow" show-overflow-tooltip />
|
<el-table-column label="印章借用日期" prop="borrow" show-overflow-tooltip />
|
||||||
<el-table-column label="结束借用日期" prop="returndate" show-overflow-tooltip />
|
<el-table-column label="结束借用日期" prop="returndate" show-overflow-tooltip />
|
||||||
<el-table-column label="申请人" prop="applicant" show-overflow-tooltip />
|
<!-- <el-table-column label="申请人" prop="applicant" show-overflow-tooltip /> -->
|
||||||
<el-table-column label="申请日期" prop="date" show-overflow-tooltip />
|
<!-- <el-table-column label="申请日期" prop="date" show-overflow-tooltip /> -->
|
||||||
<el-table-column label="实际借章日期" prop="sjborrow" show-overflow-tooltip />
|
<el-table-column label="实际借章日期" prop="sjborrow" show-overflow-tooltip />
|
||||||
<el-table-column label="实际借章人" prop="sjborrower" show-overflow-tooltip />
|
<el-table-column label="实际借章人" prop="sjborrower" show-overflow-tooltip />
|
||||||
<el-table-column label="实际归还日期" prop="sjreturn" show-overflow-tooltip />
|
<el-table-column label="实际归还日期" prop="sjreturn" show-overflow-tooltip />
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiApprovalIssuanceAchievementDocumentsLists"
|
||||||
|
:params="queryParams" :page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
@ -14,12 +14,20 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="甲方签约单位" prop="part_a" label-width="120px">
|
<el-form-item label="合同类型" prop="contract_type">
|
||||||
<el-input v-model="formData.part_a" clearable placeholder="请输入甲方签约单位" />
|
<el-select class="flex-1" v-model="formData.contract_type" clearable placeholder="请选择合同类型">
|
||||||
|
<el-option v-for="(item, index) in dictData.cost_contract_type" :key="index"
|
||||||
|
:label="item.name" :value="parseInt(item.value)" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="甲方签约单位" prop="part_a" label-width="120px">
|
||||||
|
<el-input v-model="formData.part_a" clearable placeholder="请输入甲方签约单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="甲方联系人" prop="part_a_contract">
|
<el-form-item label="甲方联系人" prop="part_a_contract">
|
||||||
<el-input v-model="formData.part_a_contract" clearable placeholder="请输入甲方联系人" />
|
<el-input v-model="formData.part_a_contract" clearable placeholder="请输入甲方联系人" />
|
||||||
@ -30,13 +38,14 @@
|
|||||||
<el-input v-model="formData.part_a_address" clearable placeholder="请输入业主地址" />
|
<el-input v-model="formData.part_a_address" clearable placeholder="请输入业主地址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="乙方签约单位" prop="part_b" label-width="120px">
|
<el-form-item label="乙方签约单位" prop="part_b" label-width="120px">
|
||||||
<el-input v-model="formData.part_b" clearable placeholder="请输入乙方签约单位" />
|
<el-input v-model="formData.part_b" clearable placeholder="请输入乙方签约单位" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="乙方签约人" prop="part_b_signatory">
|
<el-form-item label="乙方签约人" prop="part_b_signatory">
|
||||||
<el-input v-model="formData.part_b_signatory" clearable placeholder="请输入乙方签约人" />
|
<el-input v-model="formData.part_b_signatory" clearable placeholder="请输入乙方签约人" />
|
||||||
@ -50,6 +59,9 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="行业性质" prop="industry_nature">
|
<el-form-item label="行业性质" prop="industry_nature">
|
||||||
<el-select class="flex-1" v-model="formData.industry_nature" clearable placeholder="请选择行业性质">
|
<el-select class="flex-1" v-model="formData.industry_nature" clearable placeholder="请选择行业性质">
|
||||||
@ -58,8 +70,6 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="建设区域" prop="const_area">
|
<el-form-item label="建设区域" prop="const_area">
|
||||||
<el-select class="flex-1" v-model="formData.const_area" clearable placeholder="请选择建设区域">
|
<el-select class="flex-1" v-model="formData.const_area" clearable placeholder="请选择建设区域">
|
||||||
@ -76,14 +86,15 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="工程总投资" prop="project_money">
|
<el-form-item label="工程总投资" prop="project_money">
|
||||||
<el-input v-model="formData.project_money" clearable placeholder="请输入工程总投资" type="number" />
|
<el-input v-model="formData.project_money" clearable placeholder="请输入工程总投资" type="number" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="工程规模及概况" prop="project_scale" label-width="140px">
|
<el-form-item label="工程规模及概况" prop="project_scale" label-width="140px">
|
||||||
<el-input v-model="formData.project_scale" clearable placeholder="请输入工程规模及概况" />
|
<el-input v-model="formData.project_scale" clearable placeholder="请输入工程规模及概况" />
|
||||||
@ -94,13 +105,14 @@
|
|||||||
<el-input v-model="formData.money" clearable placeholder="请输入签订金额(元)" />
|
<el-input v-model="formData.money" clearable placeholder="请输入签订金额(元)" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合同服务工期" prop="contract_service" label-width="120px">
|
<el-form-item label="合同服务工期" prop="contract_service" label-width="120px">
|
||||||
<el-input v-model="formData.contract_service" clearable placeholder="请输入合同服务工期" />
|
<el-input v-model="formData.contract_service" clearable placeholder="请输入合同服务工期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合同签订费率(%)" prop="rate" label-width="140px">
|
<el-form-item label="合同签订费率(%)" prop="rate" label-width="140px">
|
||||||
<el-input v-model="formData.rate" clearable placeholder="请输入合同签订费率(%)" type="number" />
|
<el-input v-model="formData.rate" clearable placeholder="请输入合同签订费率(%)" type="number" />
|
||||||
@ -114,6 +126,9 @@
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合同计划结束日期" prop="end_date" label-width="160px">
|
<el-form-item label="合同计划结束日期" prop="end_date" label-width="160px">
|
||||||
<el-date-picker class="flex-1 !flex" v-model="formData.end_date" clearable type="date"
|
<el-date-picker class="flex-1 !flex" v-model="formData.end_date" clearable type="date"
|
||||||
@ -121,8 +136,6 @@
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合同履约金(元)" prop="performance" label-width="140px">
|
<el-form-item label="合同履约金(元)" prop="performance" label-width="140px">
|
||||||
<el-input v-model="formData.performance" clearable placeholder="请输入合同履约金(元)" type="number" />
|
<el-input v-model="formData.performance" clearable placeholder="请输入合同履约金(元)" type="number" />
|
||||||
@ -135,13 +148,14 @@
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合同付款方式" prop="payment" label-width="120px">
|
<el-form-item label="合同付款方式" prop="payment" label-width="120px">
|
||||||
<el-input v-model="formData.payment" clearable placeholder="请输入合同付款方式" />
|
<el-input v-model="formData.payment" clearable placeholder="请输入合同付款方式" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合同主要内容" prop="content" label-width="120px">
|
<el-form-item label="合同主要内容" prop="content" label-width="120px">
|
||||||
<el-input v-model="formData.content" clearable placeholder="请输入合同主要内容" />
|
<el-input v-model="formData.content" clearable placeholder="请输入合同主要内容" />
|
||||||
@ -152,6 +166,9 @@
|
|||||||
<el-input v-model="formData.founder" clearable placeholder="请输入创建人" />
|
<el-input v-model="formData.founder" clearable placeholder="请输入创建人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="创建日期" prop="create_date">
|
<el-form-item label="创建日期" prop="create_date">
|
||||||
<el-date-picker class="flex-1 !flex" v-model="formData.create_date" clearable type="date"
|
<el-date-picker class="flex-1 !flex" v-model="formData.create_date" clearable type="date"
|
||||||
@ -159,8 +176,6 @@
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="签订部门" prop="dept">
|
<el-form-item label="签订部门" prop="dept">
|
||||||
<el-input v-model="formData.dept" clearable placeholder="请输入签订部门" />
|
<el-input v-model="formData.dept" clearable placeholder="请输入签订部门" />
|
||||||
@ -171,13 +186,14 @@
|
|||||||
<el-input v-model="formData.signing_person" clearable placeholder="请输入签订负责人" />
|
<el-input v-model="formData.signing_person" clearable placeholder="请输入签订负责人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="监管部门" prop="regulators">
|
<el-form-item label="监管部门" prop="regulators">
|
||||||
<el-input v-model="formData.regulators" clearable placeholder="请输入监管部门" />
|
<el-input v-model="formData.regulators" clearable placeholder="请输入监管部门" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="项目总监/经理" prop="project_director" label-width="140px">
|
<el-form-item label="项目总监/经理" prop="project_director" label-width="140px">
|
||||||
<el-input v-model="formData.project_director" clearable placeholder="请输入项目总监/经理" />
|
<el-input v-model="formData.project_director" clearable placeholder="请输入项目总监/经理" />
|
||||||
@ -191,17 +207,17 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="盖章名称" prop="seal_name">
|
<el-form-item label="盖章名称" prop="seal_name">
|
||||||
<el-select class="flex-1" v-model="formData.seal_name" clearable placeholder="请选择盖章名称">
|
<el-select class="flex-1" v-model="formData.seal_name" clearable placeholder="请选择盖章名称">
|
||||||
<el-option v-for="(item, index) in dictData.cost_consultation_seal_name" :key="index"
|
<el-option v-for="(item, index) in dictData.cost_consultation_seal_name" :key="index"
|
||||||
:label="item.name" :value="parseInt(item.value)" />
|
:label="item.name" :value="parseInt(item.value)" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="是否限制" prop="limit">
|
<el-form-item label="是否限制" prop="limit">
|
||||||
<el-select class="flex-1" v-model="formData.limit" clearable placeholder="请选择">
|
<el-select class="flex-1" v-model="formData.limit" clearable placeholder="请选择">
|
||||||
@ -215,6 +231,9 @@
|
|||||||
<el-input v-model="formData.limit_num" clearable type="number" placeholder="请输入限制次数" />
|
<el-input v-model="formData.limit_num" clearable type="number" placeholder="请输入限制次数" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="文件类型" prop="file_type">
|
<el-form-item label="文件类型" prop="file_type">
|
||||||
<el-select class="flex-1" v-model="formData.file_type" clearable placeholder="请选择盖章名称">
|
<el-select class="flex-1" v-model="formData.file_type" clearable placeholder="请选择盖章名称">
|
||||||
@ -224,8 +243,6 @@
|
|||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="盖章份数" prop="seal_num">
|
<el-form-item label="盖章份数" prop="seal_num">
|
||||||
<el-input v-model="formData.seal_num" clearable type="number" placeholder="请输入盖章份数" />
|
<el-input v-model="formData.seal_num" clearable type="number" placeholder="请输入盖章份数" />
|
||||||
@ -236,6 +253,9 @@
|
|||||||
<el-input v-model="formData.sealer" clearable placeholder="请输入盖章人" />
|
<el-input v-model="formData.sealer" clearable placeholder="请输入盖章人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="骑缝盖章" prop="plance_seal">
|
<el-form-item label="骑缝盖章" prop="plance_seal">
|
||||||
<el-select class="flex-1" v-model="formData.plance_seal" clearable placeholder="请选择">
|
<el-select class="flex-1" v-model="formData.plance_seal" clearable placeholder="请选择">
|
||||||
@ -244,8 +264,6 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="发出日期" prop="send_date">
|
<el-form-item label="发出日期" prop="send_date">
|
||||||
<el-date-picker class="flex-1 !flex" v-model="formData.send_date" clearable type="date"
|
<el-date-picker class="flex-1 !flex" v-model="formData.send_date" clearable type="date"
|
||||||
@ -296,6 +314,7 @@ const formData = reactive({
|
|||||||
id: '',
|
id: '',
|
||||||
contract_name: '',
|
contract_name: '',
|
||||||
contract_num: '',
|
contract_num: '',
|
||||||
|
contract_type: '',
|
||||||
part_a: '',
|
part_a: '',
|
||||||
part_a_contract: '',
|
part_a_contract: '',
|
||||||
part_a_address: '',
|
part_a_address: '',
|
||||||
|
@ -41,6 +41,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiCostApprovedProjectLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -138,7 +140,7 @@ const handleSelectionChange = (val: any[]) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取字典数据
|
// 获取字典数据
|
||||||
const { dictData } = useDictData('cost_consultation_business_nature,cost_consultation_industry_nature,cost_consultation_fund_sources,cost_consultation_const_area,cost_consultation_file_type,cost_consultation_way,cost_consultation_seal_name')
|
const { dictData } = useDictData('cost_contract_type,cost_consultation_business_nature,cost_consultation_industry_nature,cost_consultation_fund_sources,cost_consultation_const_area,cost_consultation_file_type,cost_consultation_way,cost_consultation_seal_name')
|
||||||
|
|
||||||
|
|
||||||
// 分页相关
|
// 分页相关
|
||||||
|
@ -169,6 +169,11 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="建设单位" prop="js_unit">
|
||||||
|
<el-input v-model="formData.js_unit" clearable placeholder="请输入建设单位" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="注意事项" prop="note">
|
<el-form-item label="注意事项" prop="note">
|
||||||
<el-input v-model="formData.note" clearable placeholder="请输入注意事项" />
|
<el-input v-model="formData.note" clearable placeholder="请输入注意事项" />
|
||||||
@ -179,13 +184,13 @@
|
|||||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="附件" prop="annex">
|
|
||||||
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
|
||||||
@delFile="delFileFn" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
|
@delFile="delFileFn" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
<cost_approved_projects @customEvent="customEvent"></cost_approved_projects>
|
<cost_approved_projects @customEvent="customEvent"></cost_approved_projects>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
@ -247,6 +252,7 @@ const formData = reactive({
|
|||||||
province: '',
|
province: '',
|
||||||
city: '',
|
city: '',
|
||||||
org_id: "",
|
org_id: "",
|
||||||
|
js_unit: "",
|
||||||
address: '',
|
address: '',
|
||||||
starting: '',
|
starting: '',
|
||||||
endtime: '',
|
endtime: '',
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiCostProjectLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
@ -1,63 +1,65 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-card class="!border-none mb-4" shadow="never">
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
<el-form-item label="单据编号" prop="num">
|
<el-form-item label="单据编号" prop="num">
|
||||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目名称" prop="project">
|
<el-form-item label="项目名称" prop="project">
|
||||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目编号" prop="project_num">
|
<el-form-item label="项目编号" prop="project_num">
|
||||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
</el-form-item>
|
<export-data class="ml-2.5" :fetch-fun="apiDataReceptionLists" :params="queryParams"
|
||||||
</el-form>
|
:page-size="pager.size" />
|
||||||
</el-card>
|
</el-form-item>
|
||||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
</el-form>
|
||||||
<el-button v-perms="['data_reception/add']" type="primary" @click="handleAdd">
|
</el-card>
|
||||||
<template #icon>
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
<icon name="el-icon-Plus" />
|
<el-button v-perms="['data_reception/add']" type="primary" @click="handleAdd">
|
||||||
</template>
|
<template #icon>
|
||||||
新增
|
<icon name="el-icon-Plus" />
|
||||||
</el-button>
|
</template>
|
||||||
<el-button v-perms="['data_reception/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
新增
|
||||||
删除
|
</el-button>
|
||||||
</el-button>
|
<el-button v-perms="['data_reception/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||||
<div class="mt-4">
|
|
||||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
|
||||||
<el-table-column type="selection" width="55" />
|
|
||||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
|
||||||
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
|
||||||
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
|
||||||
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
|
|
||||||
<el-table-column label="登记人" prop="person" show-overflow-tooltip />
|
|
||||||
<el-table-column label="资料份数" prop="number" show-overflow-tooltip />
|
|
||||||
<el-table-column label="存放位置" prop="position" show-overflow-tooltip />
|
|
||||||
<el-table-column label="说明" prop="tips" show-overflow-tooltip />
|
|
||||||
|
|
||||||
<el-table-column label="操作" width="120" fixed="right">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-button v-perms="['data_reception/edit']" type="primary" link @click="handleEdit(row)">
|
|
||||||
编辑
|
|
||||||
</el-button>
|
|
||||||
<el-button v-perms="['data_reception/delete']" type="danger" link @click="handleDelete(row.id)">
|
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
<div class="mt-4">
|
||||||
</el-table-column>
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
</el-table>
|
<el-table-column type="selection" width="55" />
|
||||||
</div>
|
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||||
<div class="flex justify-end mt-4">
|
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||||
<pagination v-model="pager" @change="getLists" />
|
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||||
</div>
|
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
|
||||||
</el-card>
|
<el-table-column label="登记人" prop="person" show-overflow-tooltip />
|
||||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
<el-table-column label="资料份数" prop="number" show-overflow-tooltip />
|
||||||
</div>
|
<el-table-column label="存放位置" prop="position" show-overflow-tooltip />
|
||||||
|
<el-table-column label="说明" prop="tips" show-overflow-tooltip />
|
||||||
|
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['data_reception/edit']" type="primary" link @click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['data_reception/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<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>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup name="dataReceptionLists">
|
<script lang="ts" setup name="dataReceptionLists">
|
||||||
@ -75,9 +77,9 @@ const showEdit = ref(false)
|
|||||||
|
|
||||||
// 查询条件
|
// 查询条件
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
num: '',
|
num: '',
|
||||||
project: '',
|
project: '',
|
||||||
project_num: '',
|
project_num: '',
|
||||||
})
|
})
|
||||||
|
|
||||||
// 选中数据
|
// 选中数据
|
||||||
@ -85,7 +87,7 @@ const selectData = ref<any[]>([])
|
|||||||
|
|
||||||
// 表格选择后回调事件
|
// 表格选择后回调事件
|
||||||
const handleSelectionChange = (val: any[]) => {
|
const handleSelectionChange = (val: any[]) => {
|
||||||
selectData.value = val.map(({ id }) => id)
|
selectData.value = val.map(({ id }) => id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取字典数据
|
// 获取字典数据
|
||||||
@ -93,31 +95,31 @@ const { dictData } = useDictData('')
|
|||||||
|
|
||||||
// 分页相关
|
// 分页相关
|
||||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
fetchFun: apiDataReceptionLists,
|
fetchFun: apiDataReceptionLists,
|
||||||
params: queryParams
|
params: queryParams
|
||||||
})
|
})
|
||||||
|
|
||||||
// 添加
|
// 添加
|
||||||
const handleAdd = async () => {
|
const handleAdd = async () => {
|
||||||
showEdit.value = true
|
showEdit.value = true
|
||||||
await nextTick()
|
await nextTick()
|
||||||
editRef.value?.open('add')
|
editRef.value?.open('add')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编辑
|
// 编辑
|
||||||
const handleEdit = async (data: any) => {
|
const handleEdit = async (data: any) => {
|
||||||
let res = await apiDataReceptionDetail({ id: data.id })
|
let res = await apiDataReceptionDetail({ id: data.id })
|
||||||
showEdit.value = true
|
showEdit.value = true
|
||||||
await nextTick()
|
await nextTick()
|
||||||
editRef.value?.open('edit')
|
editRef.value?.open('edit')
|
||||||
editRef.value?.setFormData(res)
|
editRef.value?.setFormData(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
const handleDelete = async (id: number | any[]) => {
|
const handleDelete = async (id: number | any[]) => {
|
||||||
await feedback.confirm('确定要删除?')
|
await feedback.confirm('确定要删除?')
|
||||||
await apiDataReceptionDelete({ id })
|
await apiDataReceptionDelete({ id })
|
||||||
getLists()
|
getLists()
|
||||||
}
|
}
|
||||||
|
|
||||||
getLists()
|
getLists()
|
||||||
|
84
src/views/data_report_collection/index.vue
Normal file
84
src/views/data_report_collection/index.vue
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="单据编号" prop="num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目名称" prop="project">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目编号" prop="project_num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiJianliProjectProgressReportLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="部门负责人" prop="bm_master" show-overflow-tooltip />
|
||||||
|
<el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际开始日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际结束日期" prop="end_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工期(天)" prop="duration" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工时" prop="working_hours" show-overflow-tooltip />
|
||||||
|
<el-table-column label="累计已完成进度(%)" prop="done_progress" show-overflow-tooltip />
|
||||||
|
<el-table-column label="本阶段完成进度(%)" prop="bjd_progress" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记时间" prop="apptime" show-overflow-tooltip />
|
||||||
|
<el-table-column label="形象进度描述" prop="jdms" show-overflow-tooltip />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="jianliProjectProgressReportLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiJianliProjectProgressReportLists, apiJianliProjectProgressReportDelete, apiJianliProjectProgressReportDetail } from '@/api/jianli_project_progress_report'
|
||||||
|
|
||||||
|
// 是否显示编辑框
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
num: '',
|
||||||
|
project: '',
|
||||||
|
project_num: '',
|
||||||
|
datas: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiJianliProjectProgressReportLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
84
src/views/data_report_commission/index.vue
Normal file
84
src/views/data_report_commission/index.vue
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="单据编号" prop="num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目名称" prop="project">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目编号" prop="project_num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiJianliProjectProgressReportLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="部门负责人" prop="bm_master" show-overflow-tooltip />
|
||||||
|
<el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际开始日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际结束日期" prop="end_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工期(天)" prop="duration" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工时" prop="working_hours" show-overflow-tooltip />
|
||||||
|
<el-table-column label="累计已完成进度(%)" prop="done_progress" show-overflow-tooltip />
|
||||||
|
<el-table-column label="本阶段完成进度(%)" prop="bjd_progress" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记时间" prop="apptime" show-overflow-tooltip />
|
||||||
|
<el-table-column label="形象进度描述" prop="jdms" show-overflow-tooltip />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="jianliProjectProgressReportLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiJianliProjectProgressReportLists, apiJianliProjectProgressReportDelete, apiJianliProjectProgressReportDetail } from '@/api/jianli_project_progress_report'
|
||||||
|
|
||||||
|
// 是否显示编辑框
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
num: '',
|
||||||
|
project: '',
|
||||||
|
project_num: '',
|
||||||
|
datas: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiJianliProjectProgressReportLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
89
src/views/data_report_course/index.vue
Normal file
89
src/views/data_report_course/index.vue
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="合同名称" prop="num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable placeholder="请输入单据编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目名称" prop="project">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目编号" prop="project_num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_num" 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">
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="部门" prop="dept.name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目负责人" prop="principal" show-overflow-tooltip />
|
||||||
|
<el-table-column label="任务分配状态" prop="task_allocation_status" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ row.task_allocation_status ? '已分配' : "未分配" }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="任务办理状态" prop="data_reception_status" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ row.data_reception_status ? '已开始' : "未开始" }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="资料归档状态" prop="task_handling_three_level_review_status" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ row.task_handling_three_level_review_status ? '已上传' : "未上传" }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column label="回款金额" prop="regulators" show-overflow-tooltip />
|
||||||
|
<el-table-column label="开票金额" prop="working_hours" show-overflow-tooltip />
|
||||||
|
<el-table-column label="提成金额" prop="part_a_contract" show-overflow-tooltip />
|
||||||
|
<el-table-column label="进度款金额" prop="start_date" show-overflow-tooltip /> -->
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="jianliProjectProgressReportLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { project_trace } from '@/api/data_report'
|
||||||
|
|
||||||
|
// 是否显示编辑框
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
contract_name: "",
|
||||||
|
project_num: "",
|
||||||
|
project_name: "",
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: project_trace,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
217
src/views/data_report_department/index.vue
Normal file
217
src/views/data_report_department/index.vue
Normal file
@ -0,0 +1,217 @@
|
|||||||
|
<template>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" inline>
|
||||||
|
<el-form-item label="图表类型">
|
||||||
|
<el-select v-model="chartType" placeholder="请选择图表类型" class="flex-1" @change="changeChartType">
|
||||||
|
<el-option v-for="item in chartTypeList" :key="item.value" :label="item.name" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="图标宽度" prop="num">
|
||||||
|
<el-input v-model="chartWitdth" clearable type="number" @blur="" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="图标高度" prop="project">
|
||||||
|
<el-input v-model="chartHeight" clearable type="number" @blur="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card style="min-height: 75vh;">
|
||||||
|
<div class="tit">项目部门分布</div>
|
||||||
|
|
||||||
|
<div id="main" style="margin: 0 auto;" :style="{ width: chartWitdth + 'px', height: chartHeight + 'px' }"></div>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="">
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
import { apistatisticsprojectInitiation } from '@/api/statistics'
|
||||||
|
import { ref, reactive, onMounted } from "vue"
|
||||||
|
|
||||||
|
var chartDom: any;
|
||||||
|
var option: any;
|
||||||
|
var myChart: any
|
||||||
|
|
||||||
|
const showChart = ref(true)
|
||||||
|
const chartWitdth = ref(800)
|
||||||
|
const chartHeight = ref(500)
|
||||||
|
const chartType = ref(3)
|
||||||
|
const chartTypeList = reactive([
|
||||||
|
{
|
||||||
|
name: '柱状图',
|
||||||
|
value: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '折线图',
|
||||||
|
value: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '饼状图',
|
||||||
|
value: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '漏斗图',
|
||||||
|
value: 4
|
||||||
|
},
|
||||||
|
|
||||||
|
])
|
||||||
|
// 柱状图
|
||||||
|
let option1 = {
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
data: [120, 200, 150, 80, 70, 110, 130],
|
||||||
|
type: 'bar'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
// 漏斗图
|
||||||
|
let option4 = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order']
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'Funnel',
|
||||||
|
type: 'funnel',
|
||||||
|
|
||||||
|
sort: 'descending',
|
||||||
|
gap: 2,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: 'inside'
|
||||||
|
},
|
||||||
|
labelLine: {
|
||||||
|
length: 10,
|
||||||
|
lineStyle: {
|
||||||
|
width: 1,
|
||||||
|
type: 'solid'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
borderColor: '#fff',
|
||||||
|
borderWidth: 1
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
label: {
|
||||||
|
fontSize: 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: [
|
||||||
|
{ value: 60, name: 'Visit' },
|
||||||
|
{ value: 40, name: 'Inquiry' },
|
||||||
|
{ value: 20, name: 'Order' },
|
||||||
|
{ value: 80, name: 'Click' },
|
||||||
|
{ value: 100, name: 'Show' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
// 折线图
|
||||||
|
let option2 = {
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
data: [150, 230, 224, 218, 135, 147, 260],
|
||||||
|
type: 'line'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
// 饼图
|
||||||
|
let option3 = {
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical',
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'Access From',
|
||||||
|
type: 'pie',
|
||||||
|
radius: '50%',
|
||||||
|
data: [
|
||||||
|
{ value: 1048, name: 'Search Engine' },
|
||||||
|
{ value: 735, name: 'Direct' },
|
||||||
|
{ value: 580, name: 'Email' },
|
||||||
|
{ value: 484, name: 'Union Ads' },
|
||||||
|
{ value: 300, name: 'Video Ads' }
|
||||||
|
],
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetX: 0,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
option = option3
|
||||||
|
|
||||||
|
|
||||||
|
const changeChartType = (e: any) => {
|
||||||
|
switch (e) {
|
||||||
|
case 1:
|
||||||
|
option = option1
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
option = option2
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
option = option3
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
option = option4
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
initChart()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
let res = await apistatisticsprojectInitiation()
|
||||||
|
// // option = option1
|
||||||
|
// // option = option2
|
||||||
|
// option = option3
|
||||||
|
initChart()
|
||||||
|
}
|
||||||
|
|
||||||
|
const initChart = () => {
|
||||||
|
myChart = echarts.init(chartDom);
|
||||||
|
myChart.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
chartDom = document.getElementById('main');
|
||||||
|
getData()
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.tit {
|
||||||
|
margin: 10px 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
94
src/views/data_report_information/index.vue
Normal file
94
src/views/data_report_information/index.vue
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="项目名称" prop="num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目编号" prop="project">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同名称" prop="project_num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable placeholder="请输入项目编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同名称" prop="project_num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable placeholder="请输入项目编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="委托单位" prop="project_num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.aunit" 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">
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="开始日期" prop="starting" show-overflow-tooltip />
|
||||||
|
<el-table-column label="结束日期" prop="endtime" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="咨询类型" prop="types" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-value :options="dictData.consultation_type" :value="row.types" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="行业" prop="industry" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-value :options="dictData.supervision_project_industry" :value="row.industry" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="项目所属部门" prop="dept.name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目负责人" prop="principal" show-overflow-tooltip />
|
||||||
|
<el-table-column label="委托单位" prop="aunit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="建设单位" prop="js_unit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目总投资(万)" prop="invest" show-overflow-tooltip />
|
||||||
|
<!-- <el-table-column label="汇款" prop="djr" show-overflow-tooltip /> -->
|
||||||
|
<!-- <el-table-column label="登记时间" prop="apptime" show-overflow-tooltip />
|
||||||
|
<el-table-column label="形象进度描述" prop="jdms" show-overflow-tooltip /> -->
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="jianliProjectProgressReportLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { cost_project_report } from '@/api/data_report'
|
||||||
|
|
||||||
|
// 是否显示编辑框
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
project_name: "",
|
||||||
|
project_num: "",
|
||||||
|
contract_name: "",
|
||||||
|
aunit: ""
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('consultation_type,supervision_project_industry')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: cost_project_report,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
92
src/views/data_report_ledger/index.vue
Normal file
92
src/views/data_report_ledger/index.vue
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="合同名称" prop="num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_name" clearable placeholder="请输入单据编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同编号" prop="project">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.contract_num" clearable placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="甲方签约单位" prop="project_num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.part_a" 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">
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同编号" prop="contract_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同类型" prop="contract_type" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-value :options="dictData.cost_contract_type" :value="row.contract_type" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="业务性质" prop="business_nature" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-value :options="dictData.cost_consultation_business_nature"
|
||||||
|
:value="row.business_nature" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="甲方签约单位" prop="part_a_contract" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同签订日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="签订部门" prop="dept" show-overflow-tooltip />
|
||||||
|
<el-table-column label="监管部门" prop="regulators" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同结算日期" prop="end_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="甲方联系人" prop="part_a_contract" show-overflow-tooltip />
|
||||||
|
<el-table-column label="合同计划开始日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程总投资(万)" prop="project_money" show-overflow-tooltip />
|
||||||
|
<!-- <el-table-column label="合同签订金额" prop="djr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="已开票金额" prop="djr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="已结算金额" prop="djr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="已到账金额" prop="djr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="应收账款" prop="djr" show-overflow-tooltip /> -->
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="jianliProjectProgressReportLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { cost_approved_project_list } from '@/api/data_report'
|
||||||
|
|
||||||
|
// 是否显示编辑框
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
contract_name: "",
|
||||||
|
contract_num: "",
|
||||||
|
part_a: ""
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('cost_contract_type,cost_consultation_business_nature')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: cost_approved_project_list,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
217
src/views/data_report_personnel/index.vue
Normal file
217
src/views/data_report_personnel/index.vue
Normal file
@ -0,0 +1,217 @@
|
|||||||
|
<template>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" inline>
|
||||||
|
<el-form-item label="图表类型">
|
||||||
|
<el-select v-model="chartType" placeholder="请选择图表类型" class="flex-1" @change="changeChartType">
|
||||||
|
<el-option v-for="item in chartTypeList" :key="item.value" :label="item.name" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="图标宽度" prop="num">
|
||||||
|
<el-input v-model="chartWitdth" clearable type="number" @blur="" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="图标高度" prop="project">
|
||||||
|
<el-input v-model="chartHeight" clearable type="number" @blur="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card style="min-height: 75vh;">
|
||||||
|
<div class="tit">项目部门分布</div>
|
||||||
|
|
||||||
|
<div id="main" style="margin: 0 auto;" :style="{ width: chartWitdth + 'px', height: chartHeight + 'px' }"></div>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="">
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
import { apistatisticsprojectInitiation } from '@/api/statistics'
|
||||||
|
import { ref, reactive, onMounted } from "vue"
|
||||||
|
|
||||||
|
var chartDom: any;
|
||||||
|
var option: any;
|
||||||
|
var myChart: any
|
||||||
|
|
||||||
|
const showChart = ref(true)
|
||||||
|
const chartWitdth = ref(800)
|
||||||
|
const chartHeight = ref(500)
|
||||||
|
const chartType = ref(3)
|
||||||
|
const chartTypeList = reactive([
|
||||||
|
{
|
||||||
|
name: '柱状图',
|
||||||
|
value: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '折线图',
|
||||||
|
value: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '饼状图',
|
||||||
|
value: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '漏斗图',
|
||||||
|
value: 4
|
||||||
|
},
|
||||||
|
|
||||||
|
])
|
||||||
|
// 柱状图
|
||||||
|
let option1 = {
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
data: [120, 200, 150, 80, 70, 110, 130],
|
||||||
|
type: 'bar'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
// 漏斗图
|
||||||
|
let option4 = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order']
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'Funnel',
|
||||||
|
type: 'funnel',
|
||||||
|
|
||||||
|
sort: 'descending',
|
||||||
|
gap: 2,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: 'inside'
|
||||||
|
},
|
||||||
|
labelLine: {
|
||||||
|
length: 10,
|
||||||
|
lineStyle: {
|
||||||
|
width: 1,
|
||||||
|
type: 'solid'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
borderColor: '#fff',
|
||||||
|
borderWidth: 1
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
label: {
|
||||||
|
fontSize: 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data: [
|
||||||
|
{ value: 60, name: 'Visit' },
|
||||||
|
{ value: 40, name: 'Inquiry' },
|
||||||
|
{ value: 20, name: 'Order' },
|
||||||
|
{ value: 80, name: 'Click' },
|
||||||
|
{ value: 100, name: 'Show' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
// 折线图
|
||||||
|
let option2 = {
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
data: [150, 230, 224, 218, 135, 147, 260],
|
||||||
|
type: 'line'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
// 饼图
|
||||||
|
let option3 = {
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical',
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'Access From',
|
||||||
|
type: 'pie',
|
||||||
|
radius: '50%',
|
||||||
|
data: [
|
||||||
|
{ value: 1048, name: 'Search Engine' },
|
||||||
|
{ value: 735, name: 'Direct' },
|
||||||
|
{ value: 580, name: 'Email' },
|
||||||
|
{ value: 484, name: 'Union Ads' },
|
||||||
|
{ value: 300, name: 'Video Ads' }
|
||||||
|
],
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetX: 0,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
option = option3
|
||||||
|
|
||||||
|
|
||||||
|
const changeChartType = (e: any) => {
|
||||||
|
switch (e) {
|
||||||
|
case 1:
|
||||||
|
option = option1
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
option = option2
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
option = option3
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
option = option4
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
initChart()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
let res = await apistatisticsprojectInitiation()
|
||||||
|
// // option = option1
|
||||||
|
// // option = option2
|
||||||
|
// option = option3
|
||||||
|
initChart()
|
||||||
|
}
|
||||||
|
|
||||||
|
const initChart = () => {
|
||||||
|
myChart = echarts.init(chartDom);
|
||||||
|
myChart.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
chartDom = document.getElementById('main');
|
||||||
|
getData()
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.tit {
|
||||||
|
margin: 10px 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
84
src/views/data_report_process/index.vue
Normal file
84
src/views/data_report_process/index.vue
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="单据编号" prop="num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目名称" prop="project">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目编号" prop="project_num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiJianliProjectProgressReportLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="部门负责人" prop="bm_master" show-overflow-tooltip />
|
||||||
|
<el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际开始日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际结束日期" prop="end_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工期(天)" prop="duration" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工时" prop="working_hours" show-overflow-tooltip />
|
||||||
|
<el-table-column label="累计已完成进度(%)" prop="done_progress" show-overflow-tooltip />
|
||||||
|
<el-table-column label="本阶段完成进度(%)" prop="bjd_progress" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记时间" prop="apptime" show-overflow-tooltip />
|
||||||
|
<el-table-column label="形象进度描述" prop="jdms" show-overflow-tooltip />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="jianliProjectProgressReportLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiJianliProjectProgressReportLists, apiJianliProjectProgressReportDelete, apiJianliProjectProgressReportDetail } from '@/api/jianli_project_progress_report'
|
||||||
|
|
||||||
|
// 是否显示编辑框
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
num: '',
|
||||||
|
project: '',
|
||||||
|
project_num: '',
|
||||||
|
datas: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiJianliProjectProgressReportLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
84
src/views/data_report_profit/index.vue
Normal file
84
src/views/data_report_profit/index.vue
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="单据编号" prop="num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目名称" prop="project">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目编号" prop="project_num">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiJianliProjectProgressReportLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
|
<div class="mt-4">
|
||||||
|
<el-table :data="pager.lists">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||||
|
<el-table-column label="部门负责人" prop="bm_master" show-overflow-tooltip />
|
||||||
|
<el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目负责人" prop="xm_master" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际开始日期" prop="start_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际结束日期" prop="end_date" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工期(天)" prop="duration" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工时" prop="working_hours" show-overflow-tooltip />
|
||||||
|
<el-table-column label="累计已完成进度(%)" prop="done_progress" show-overflow-tooltip />
|
||||||
|
<el-table-column label="本阶段完成进度(%)" prop="bjd_progress" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记时间" prop="apptime" show-overflow-tooltip />
|
||||||
|
<el-table-column label="形象进度描述" prop="jdms" show-overflow-tooltip />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<pagination v-model="pager" @change="getLists" />
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="jianliProjectProgressReportLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiJianliProjectProgressReportLists, apiJianliProjectProgressReportDelete, apiJianliProjectProgressReportDetail } from '@/api/jianli_project_progress_report'
|
||||||
|
|
||||||
|
// 是否显示编辑框
|
||||||
|
|
||||||
|
|
||||||
|
// 查询条件
|
||||||
|
const queryParams = reactive({
|
||||||
|
num: '',
|
||||||
|
project: '',
|
||||||
|
project_num: '',
|
||||||
|
datas: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiJianliProjectProgressReportLists,
|
||||||
|
params: queryParams
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
@ -15,6 +15,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiJianliProjectProgressReportLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiProjectChangeVisaLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -34,8 +36,8 @@
|
|||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column type="expand">
|
<el-table-column type="expand">
|
||||||
<template #default="props">
|
<template #default="props">
|
||||||
<div m="4">
|
<div style="width: 95%;margin: 0 auto;">
|
||||||
<el-table :data="props.row.taskTypeInfo">
|
<el-table :data="props.row.children" :stripe="true">
|
||||||
<el-table-column label="所在目录" prop="directory" show-overflow-tooltip />
|
<el-table-column label="所在目录" prop="directory" show-overflow-tooltip />
|
||||||
<el-table-column label="单位名称" prop="unit_name" show-overflow-tooltip />
|
<el-table-column label="单位名称" prop="unit_name" show-overflow-tooltip />
|
||||||
<el-table-column label="时间" prop="time" show-overflow-tooltip />
|
<el-table-column label="时间" prop="time" show-overflow-tooltip />
|
||||||
|
@ -39,6 +39,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiProjectChangeVisaContentLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiProjectCommissionLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -34,7 +36,7 @@
|
|||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column type="expand">
|
<el-table-column type="expand">
|
||||||
<template #default="props">
|
<template #default="props">
|
||||||
<div m="4">
|
<div style="width: 95%;margin: 0 auto;">
|
||||||
<el-table :data="props.row.children">
|
<el-table :data="props.row.children">
|
||||||
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
|
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
|
||||||
<el-table-column label="任务名称" prop="task_name" show-overflow-tooltip />
|
<el-table-column label="任务名称" prop="task_name" show-overflow-tooltip />
|
||||||
|
@ -1,64 +1,68 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-card class="!border-none mb-4" shadow="never">
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
<el-form-item label="工程师" prop="engineer">
|
<el-form-item label="工程师" prop="engineer">
|
||||||
<el-input class="w-[280px]" v-model="queryParams.engineer" clearable placeholder="请输入工程师" />
|
<el-input class="w-[280px]" v-model="queryParams.engineer" clearable placeholder="请输入工程师" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="任务名称" prop="task_name">
|
<el-form-item label="任务名称" prop="task_name">
|
||||||
<el-input class="w-[280px]" v-model="queryParams.task_name" clearable placeholder="请输入任务名称" />
|
<el-input class="w-[280px]" v-model="queryParams.task_name" clearable placeholder="请输入任务名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
</el-form-item>
|
<export-data class="ml-2.5" :fetch-fun="apiProjectCommissionDetailLists" :params="queryParams"
|
||||||
</el-form>
|
:page-size="pager.size" />
|
||||||
</el-card>
|
</el-form-item>
|
||||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
</el-form>
|
||||||
<el-button v-perms="['project_commission_detail/delete']" :disabled="!selectData.length"
|
</el-card>
|
||||||
@click="handleDelete(selectData)">
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
删除
|
<el-button v-perms="['project_commission_detail/delete']" :disabled="!selectData.length"
|
||||||
</el-button>
|
@click="handleDelete(selectData)">
|
||||||
<div class="mt-4">
|
|
||||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
|
||||||
<el-table-column type="selection" width="55" />
|
|
||||||
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
|
|
||||||
<el-table-column label="任务名称" prop="task_name" show-overflow-tooltip />
|
|
||||||
<el-table-column label="任务类型" prop="task_type">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-value :options="dictData.task_type" :value="row.task_type" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="专业类型" prop="professional_type">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-value :options="dictData.major_type" :value="row.professional_type" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="造价金额" prop="zj_amount" show-overflow-tooltip />
|
|
||||||
<el-table-column label="收款金额" prop="sk_amount" show-overflow-tooltip />
|
|
||||||
<el-table-column label="提成比例(%)" prop="tc_rate" show-overflow-tooltip />
|
|
||||||
<el-table-column label="应提成金额" prop="tc_amount" show-overflow-tooltip />
|
|
||||||
<el-table-column label="本次支付金额" prop="pay_amount" show-overflow-tooltip />
|
|
||||||
|
|
||||||
<el-table-column label="操作" width="120" fixed="right">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-button v-perms="['project_commission_detail/edit']" type="primary" link @click="handleEdit(row)">
|
|
||||||
编辑
|
|
||||||
</el-button>
|
|
||||||
<el-button v-perms="['project_commission_detail/delete']" type="danger" link @click="handleDelete(row.id)">
|
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
<div class="mt-4">
|
||||||
</el-table-column>
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
</el-table>
|
<el-table-column type="selection" width="55" />
|
||||||
</div>
|
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
|
||||||
<div class="flex justify-end mt-4">
|
<el-table-column label="任务名称" prop="task_name" show-overflow-tooltip />
|
||||||
<pagination v-model="pager" @change="getLists" />
|
<el-table-column label="任务类型" prop="task_type">
|
||||||
</div>
|
<template #default="{ row }">
|
||||||
</el-card>
|
<dict-value :options="dictData.task_type" :value="row.task_type" />
|
||||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
</template>
|
||||||
</div>
|
</el-table-column>
|
||||||
|
<el-table-column label="专业类型" prop="professional_type">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-value :options="dictData.major_type" :value="row.professional_type" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="造价金额" prop="zj_amount" show-overflow-tooltip />
|
||||||
|
<el-table-column label="收款金额" prop="sk_amount" show-overflow-tooltip />
|
||||||
|
<el-table-column label="提成比例(%)" prop="tc_rate" show-overflow-tooltip />
|
||||||
|
<el-table-column label="应提成金额" prop="tc_amount" show-overflow-tooltip />
|
||||||
|
<el-table-column label="本次支付金额" prop="pay_amount" show-overflow-tooltip />
|
||||||
|
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['project_commission_detail/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['project_commission_detail/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<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>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup name="projectCommissionDetailLists">
|
<script lang="ts" setup name="projectCommissionDetailLists">
|
||||||
@ -76,8 +80,8 @@ const showEdit = ref(false)
|
|||||||
|
|
||||||
// 查询条件
|
// 查询条件
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
engineer: '',
|
engineer: '',
|
||||||
task_name: '',
|
task_name: '',
|
||||||
})
|
})
|
||||||
|
|
||||||
// 选中数据
|
// 选中数据
|
||||||
@ -85,7 +89,7 @@ const selectData = ref<any[]>([])
|
|||||||
|
|
||||||
// 表格选择后回调事件
|
// 表格选择后回调事件
|
||||||
const handleSelectionChange = (val: any[]) => {
|
const handleSelectionChange = (val: any[]) => {
|
||||||
selectData.value = val.map(({ id }) => id)
|
selectData.value = val.map(({ id }) => id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取字典数据
|
// 获取字典数据
|
||||||
@ -93,31 +97,31 @@ const { dictData } = useDictData('task_type,major_type')
|
|||||||
|
|
||||||
// 分页相关
|
// 分页相关
|
||||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
fetchFun: apiProjectCommissionDetailLists,
|
fetchFun: apiProjectCommissionDetailLists,
|
||||||
params: queryParams
|
params: queryParams
|
||||||
})
|
})
|
||||||
|
|
||||||
// 添加
|
// 添加
|
||||||
const handleAdd = async () => {
|
const handleAdd = async () => {
|
||||||
showEdit.value = true
|
showEdit.value = true
|
||||||
await nextTick()
|
await nextTick()
|
||||||
editRef.value?.open('add')
|
editRef.value?.open('add')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编辑
|
// 编辑
|
||||||
const handleEdit = async (data: any) => {
|
const handleEdit = async (data: any) => {
|
||||||
let res = await apiProjectCommissionDetailDetail({ id: data.id })
|
let res = await apiProjectCommissionDetailDetail({ id: data.id })
|
||||||
showEdit.value = true
|
showEdit.value = true
|
||||||
await nextTick()
|
await nextTick()
|
||||||
editRef.value?.open('edit')
|
editRef.value?.open('edit')
|
||||||
editRef.value?.setFormData(res)
|
editRef.value?.setFormData(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
const handleDelete = async (id: number | any[]) => {
|
const handleDelete = async (id: number | any[]) => {
|
||||||
await feedback.confirm('确定要删除?')
|
await feedback.confirm('确定要删除?')
|
||||||
await apiProjectCommissionDetailDelete({ id })
|
await apiProjectCommissionDetailDelete({ id })
|
||||||
getLists()
|
getLists()
|
||||||
}
|
}
|
||||||
|
|
||||||
getLists()
|
getLists()
|
||||||
|
@ -34,7 +34,23 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="进度申报造价合计" prop="sbhj" label-width="160px">
|
||||||
|
<el-input v-model="formData.sbhj" clearable placeholder="系统自动计算" disabled type='number' />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="进度审核造价合计" prop="shhj" label-width="160px">
|
||||||
|
<el-input v-model="formData.shhj" clearable placeholder="系统自动计算" disabled type='number' />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="累计应付工程款合计" prop="ljhj" label-width="160px">
|
||||||
|
<el-input v-model="formData.ljhj" clearable placeholder="系统自动计算" disabled type='number' />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
<el-form-item label="附件" prop="annex">
|
<el-form-item label="附件" prop="annex">
|
||||||
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
@delFile="delFileFn" />
|
@delFile="delFileFn" />
|
||||||
@ -157,23 +173,6 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="进度申报造价合计" prop="sbhj" label-width="160px">
|
|
||||||
<el-input v-model="formData.sbhj" clearable placeholder="系统自动计算" disabled type='number' />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="进度审核造价合计" prop="shhj" label-width="160px">
|
|
||||||
<el-input v-model="formData.shhj" clearable placeholder="系统自动计算" disabled type='number' />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="累计应付工程款合计" prop="ljhj" label-width="160px">
|
|
||||||
<el-input v-model="formData.ljhj" clearable placeholder="系统自动计算" disabled type='number' />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</popup>
|
</popup>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -255,19 +254,12 @@ const formData = reactive({
|
|||||||
watch(
|
watch(
|
||||||
() => formData.project_progress_payment_detail,
|
() => formData.project_progress_payment_detail,
|
||||||
(value) => {
|
(value) => {
|
||||||
formData.sbhj = 0
|
|
||||||
formData.shhj = 0
|
|
||||||
formData.ljhj = 0
|
|
||||||
value.forEach(item => {
|
value.forEach(item => {
|
||||||
item.jdsbzj_xiaoji = Number(item.declared_cost_tj) + Number(item.declared_cost_az) + Number(item.declared_cost_other)
|
item.jdsbzj_xiaoji = Number(item.declared_cost_tj) + Number(item.declared_cost_az) + Number(item.declared_cost_other)
|
||||||
item.jdshzj_xiaoji = Number(item.audit_cost_tj) + Number(item.audit_cost_az) + Number(item.audit_cost_other)
|
item.jdshzj_xiaoji = Number(item.audit_cost_tj) + Number(item.audit_cost_az) + Number(item.audit_cost_other)
|
||||||
item.payment_rate = item.dcntract_payment_rate
|
item.payment_rate = item.dcntract_payment_rate
|
||||||
item.deduction_amount = item.jdsbzj_xiaoji - item.jdshzj_xiaoji
|
item.deduction_amount = jdsbzj_xiaoji - jdshzj_xiaoji
|
||||||
item.ljwc_funds = item.jdshzj_xiaoji
|
item.ljwc_funds
|
||||||
item.current_payable_funds = (Number(item.ljwc_funds) * Number(item.payment_rate)) || 0
|
|
||||||
formData.sbhj += Number(item.jdsbzj_xiaoji || 0)
|
|
||||||
formData.shhj += Number(item.jdshzj_xiaoji || 0)
|
|
||||||
formData.ljhj += Number(item.current_payable_funds || 0)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiProjectProgressPaymentLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -35,8 +37,8 @@
|
|||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column type="expand">
|
<el-table-column type="expand">
|
||||||
<template #default="props">
|
<template #default="props">
|
||||||
<div m="4">
|
<div style="width: 95%;margin: 0 auto;">
|
||||||
<el-table :data="props.row.taskTypeInfo">
|
<el-table :data="props.row.children">
|
||||||
<el-table-column label="所在目录" prop="directory" show-overflow-tooltip />
|
<el-table-column label="所在目录" prop="directory" show-overflow-tooltip />
|
||||||
<el-table-column label="单位工程名称" prop="unit_project_name" show-overflow-tooltip />
|
<el-table-column label="单位工程名称" prop="unit_project_name" show-overflow-tooltip />
|
||||||
<el-table-column label="时间" prop="time" show-overflow-tooltip />
|
<el-table-column label="时间" prop="time" show-overflow-tooltip />
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiProjectProgressPaymentDetailLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiProjectRectificationLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
@ -1,71 +1,74 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-card class="!border-none mb-4" shadow="never">
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
<el-form-item label="单据编号" prop="num">
|
<el-form-item label="单据编号" prop="num">
|
||||||
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目名称" prop="project">
|
<el-form-item label="项目名称" prop="project">
|
||||||
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目编号" prop="project_num">
|
<el-form-item label="项目编号" prop="project_num">
|
||||||
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
</el-form-item>
|
<export-data class="ml-2.5" :fetch-fun="apiProjectSurveySignatureLists" :params="queryParams"
|
||||||
</el-form>
|
:page-size="pager.size" />
|
||||||
</el-card>
|
</el-form-item>
|
||||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
</el-form>
|
||||||
<el-button v-perms="['project_process_management.project_survey_signature/add']" type="primary" @click="handleAdd">
|
</el-card>
|
||||||
<template #icon>
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
<icon name="el-icon-Plus" />
|
<el-button v-perms="['project_process_management.project_survey_signature/add']" type="primary"
|
||||||
</template>
|
@click="handleAdd">
|
||||||
新增
|
<template #icon>
|
||||||
</el-button>
|
<icon name="el-icon-Plus" />
|
||||||
<el-button v-perms="['project_process_management.project_survey_signature/delete']" :disabled="!selectData.length"
|
</template>
|
||||||
@click="handleDelete(selectData)">
|
新增
|
||||||
删除
|
</el-button>
|
||||||
</el-button>
|
<el-button v-perms="['project_process_management.project_survey_signature/delete']"
|
||||||
<div class="mt-4">
|
:disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
|
||||||
<el-table-column type="selection" width="55" />
|
|
||||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
|
||||||
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
|
||||||
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
|
||||||
<el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
|
|
||||||
<el-table-column label="建设单位" prop="jsdw" show-overflow-tooltip />
|
|
||||||
<el-table-column label="部门负责人" prop="bmfz" show-overflow-tooltip />
|
|
||||||
<el-table-column label="项目负责人" prop="xmfz" show-overflow-tooltip />
|
|
||||||
<el-table-column label="踏勘日期" prop="riqi" show-overflow-tooltip />
|
|
||||||
<el-table-column label="踏勘人员" prop="people" show-overflow-tooltip />
|
|
||||||
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
|
||||||
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
|
|
||||||
<el-table-column label="踏勘内容" prop="content" show-overflow-tooltip />
|
|
||||||
<el-table-column label="核实结果" prop="result" show-overflow-tooltip />
|
|
||||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
|
||||||
<el-table-column label="操作" width="120" fixed="right">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-button v-perms="['project_process_management.project_survey_signature/edit']" type="primary" link
|
|
||||||
@click="handleEdit(row)">
|
|
||||||
编辑
|
|
||||||
</el-button>
|
|
||||||
<el-button v-perms="['project_process_management.project_survey_signature/delete']" type="danger" link
|
|
||||||
@click="handleDelete(row.id)">
|
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
<div class="mt-4">
|
||||||
</el-table-column>
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
</el-table>
|
<el-table-column type="selection" width="55" />
|
||||||
</div>
|
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||||
<div class="flex justify-end mt-4">
|
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||||
<pagination v-model="pager" @change="getLists" />
|
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||||
</div>
|
<el-table-column label="委托单位" prop="wt_unit" show-overflow-tooltip />
|
||||||
</el-card>
|
<el-table-column label="建设单位" prop="jsdw" show-overflow-tooltip />
|
||||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
<el-table-column label="部门负责人" prop="bmfz" show-overflow-tooltip />
|
||||||
</div>
|
<el-table-column label="项目负责人" prop="xmfz" show-overflow-tooltip />
|
||||||
|
<el-table-column label="踏勘日期" prop="riqi" show-overflow-tooltip />
|
||||||
|
<el-table-column label="踏勘人员" prop="people" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记人" prop="djr" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
|
||||||
|
<el-table-column label="踏勘内容" prop="content" show-overflow-tooltip />
|
||||||
|
<el-table-column label="核实结果" prop="result" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['project_process_management.project_survey_signature/edit']" type="primary"
|
||||||
|
link @click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['project_process_management.project_survey_signature/delete']"
|
||||||
|
type="danger" link @click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<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>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup name="projectSurveySignatureLists">
|
<script lang="ts" setup name="projectSurveySignatureLists">
|
||||||
@ -83,9 +86,9 @@ const showEdit = ref(false)
|
|||||||
|
|
||||||
// 查询条件
|
// 查询条件
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
num: '',
|
num: '',
|
||||||
project: '',
|
project: '',
|
||||||
project_num: '',
|
project_num: '',
|
||||||
})
|
})
|
||||||
|
|
||||||
// 选中数据
|
// 选中数据
|
||||||
@ -93,7 +96,7 @@ const selectData = ref<any[]>([])
|
|||||||
|
|
||||||
// 表格选择后回调事件
|
// 表格选择后回调事件
|
||||||
const handleSelectionChange = (val: any[]) => {
|
const handleSelectionChange = (val: any[]) => {
|
||||||
selectData.value = val.map(({ id }) => id)
|
selectData.value = val.map(({ id }) => id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取字典数据
|
// 获取字典数据
|
||||||
@ -101,31 +104,31 @@ const { dictData } = useDictData('')
|
|||||||
|
|
||||||
// 分页相关
|
// 分页相关
|
||||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
fetchFun: apiProjectSurveySignatureLists,
|
fetchFun: apiProjectSurveySignatureLists,
|
||||||
params: queryParams
|
params: queryParams
|
||||||
})
|
})
|
||||||
|
|
||||||
// 添加
|
// 添加
|
||||||
const handleAdd = async () => {
|
const handleAdd = async () => {
|
||||||
showEdit.value = true
|
showEdit.value = true
|
||||||
await nextTick()
|
await nextTick()
|
||||||
editRef.value?.open('add')
|
editRef.value?.open('add')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编辑
|
// 编辑
|
||||||
const handleEdit = async (data: any) => {
|
const handleEdit = async (data: any) => {
|
||||||
let res = await apiProjectSurveySignatureDetail({ id: data.id })
|
let res = await apiProjectSurveySignatureDetail({ id: data.id })
|
||||||
showEdit.value = true
|
showEdit.value = true
|
||||||
await nextTick()
|
await nextTick()
|
||||||
editRef.value?.open('edit')
|
editRef.value?.open('edit')
|
||||||
editRef.value?.setFormData(res)
|
editRef.value?.setFormData(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
const handleDelete = async (id: number | any[]) => {
|
const handleDelete = async (id: number | any[]) => {
|
||||||
await feedback.confirm('确定要删除?')
|
await feedback.confirm('确定要删除?')
|
||||||
await apiProjectSurveySignatureDelete({ id })
|
await apiProjectSurveySignatureDelete({ id })
|
||||||
getLists()
|
getLists()
|
||||||
}
|
}
|
||||||
|
|
||||||
getLists()
|
getLists()
|
||||||
|
200
src/views/supervision_accept/edit.vue
Normal file
200
src/views/supervision_accept/edit.vue
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
<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="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="验收编号" prop="accept_code">
|
||||||
|
<el-input v-model="formData.accept_code" clearable placeholder="请输入验收编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="验收类型" prop="accept_type">
|
||||||
|
<el-input v-model="formData.accept_type" clearable placeholder="请输入验收类型" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单位工程" prop="check_item_id">
|
||||||
|
<el-input v-model="formData.check_item_id" clearable placeholder="请输入单位工程" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="验收内容" prop="accept_content">
|
||||||
|
<el-input v-model="formData.accept_content" clearable placeholder="请输入验收内容" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="验收位置" prop="accept_position">
|
||||||
|
<el-input v-model="formData.accept_position" clearable placeholder="请输入验收位置" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="验收时间" prop="accept_time">
|
||||||
|
<el-input v-model="formData.accept_time" clearable placeholder="请输入验收时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="施工单位" prop="company_id">
|
||||||
|
<el-input v-model="formData.company_id" clearable placeholder="请输入施工单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="验收结果 0-合格 1-不合格" prop="accept_result">
|
||||||
|
<el-input v-model="formData.accept_result" clearable placeholder="请输入验收结果 0-合格 1-不合格" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="检查项选择" prop="check_item_detail_ids">
|
||||||
|
<el-input v-model="formData.check_item_detail_ids" 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-item label="创建人" prop="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="supervisionAcceptEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiSupervisionAcceptAdd, apiSupervisionAcceptEdit, apiSupervisionAcceptDetail } from '@/api/supervision_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: '',
|
||||||
|
accept_code: '',
|
||||||
|
accept_type: '',
|
||||||
|
check_item_id: '',
|
||||||
|
accept_content: '',
|
||||||
|
accept_position: '',
|
||||||
|
accept_time: '',
|
||||||
|
company_id: '',
|
||||||
|
accept_result: '',
|
||||||
|
check_item_detail_ids: '',
|
||||||
|
remark: '',
|
||||||
|
annex: '',
|
||||||
|
create_user: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请选择项目',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
accept_code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入验收编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
accept_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入验收类型',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
check_item_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入单位工程',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
accept_content: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入验收内容',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
accept_position: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入验收位置',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
accept_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入验收时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
company_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入施工单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
accept_result: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入验收结果 0-合格 1-不合格',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
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 apiSupervisionAcceptDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiSupervisionAcceptEdit(data)
|
||||||
|
: await apiSupervisionAcceptAdd(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/supervision_accept/index.vue
Normal file
130
src/views/supervision_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="项目id" prop="project_id">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="验收编号" prop="accept_code">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.accept_code" clearable placeholder="请输入验收编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="验收类型" prop="accept_type">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.accept_type" 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="['supervision_work.supervision_accept/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_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="项目id" prop="project_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="验收编号" prop="accept_code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="验收类型" prop="accept_type" show-overflow-tooltip />
|
||||||
|
<el-table-column label="单位工程" prop="check_item_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="验收内容" prop="accept_content" show-overflow-tooltip />
|
||||||
|
<el-table-column label="验收位置" prop="accept_position" show-overflow-tooltip />
|
||||||
|
<el-table-column label="验收时间" prop="accept_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="施工单位" prop="company_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="验收结果 0-合格 1-不合格" prop="accept_result" show-overflow-tooltip />
|
||||||
|
<el-table-column label="检查项选择" prop="check_item_detail_ids" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||||
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||||
|
<el-table-column label="创建人" prop="create_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['supervision_work.supervision_accept/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_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 v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="supervisionAcceptLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiSupervisionAcceptLists, apiSupervisionAcceptDelete } from '@/api/supervision_accept'
|
||||||
|
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({
|
||||||
|
project_id: '',
|
||||||
|
accept_code: '',
|
||||||
|
accept_type: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiSupervisionAcceptLists,
|
||||||
|
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 apiSupervisionAcceptDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
236
src/views/supervision_check_item/edit.vue
Normal file
236
src/views/supervision_check_item/edit.vue
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
<template>
|
||||||
|
<div class="edit-popup">
|
||||||
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="60vw" @confirm="handleSubmit" @close="handleClose">
|
||||||
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="项目名称" prop="project_name">
|
||||||
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
||||||
|
@click="showDialog = true" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="节点名称" prop="node_name">
|
||||||
|
<el-input v-model="formData.node_name" clearable placeholder="请输入节点名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="节点类型" prop="node_type">
|
||||||
|
<el-select v-model="formData.node_type" clearable placeholder="请选择节点类型" class="flex-1">
|
||||||
|
<el-option v-for="(item, index) in dictData.check_item_node_type" :key="index"
|
||||||
|
:label="item.name" :value="parseInt(item.value)" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="节点编号" prop="node_code">
|
||||||
|
<el-input v-model="formData.node_code" clearable placeholder="请输入节点编号" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="父节点">
|
||||||
|
<el-input v-model="formData.pid" clearable placeholder="如果创建的节点为初始节点,可不选择" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="检查依据" prop="inspection_basis">
|
||||||
|
<editor v-model="formData.inspection_basis" :height="200" width="80vw" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="参考法规" prop="reference_law">
|
||||||
|
<editor v-model="formData.reference_law" :height="200" width="80vw" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<div style="margin-bottom: 30px;">检查项</div>
|
||||||
|
<div style="margin-bottom: 30px;">
|
||||||
|
<el-table :data="formData.check_item_detail">
|
||||||
|
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button @click="handleAdd()">+</el-button>
|
||||||
|
<el-button @click="handleDelete(row)">-</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="检查类别" prop="check_type">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-model="scope.row.check_type" :disabled="mode != 'add'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="检查类容" prop="check_content">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-input v-model="row.check_content" :disabled="mode != 'add'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="是否必检" prop="must_check">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-select class="flex-1" v-model="row.must_check" clearable placeholder="请选择"
|
||||||
|
:disabled="mode != 'add'">
|
||||||
|
<el-option label="否" :value="parseInt(0)" />
|
||||||
|
<el-option label="是" :value="parseInt(1)" />
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
|
<supervision_project @customEvent="customEvent"></supervision_project>
|
||||||
|
</el-dialog>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="supervisionCheckItemEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiSupervisionCheckItemAdd, apiSupervisionCheckItemEdit, apiSupervisionCheckItemDetail } from '@/api/supervision_check_item'
|
||||||
|
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 showDialog = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
// 弹窗标题
|
||||||
|
const popupTitle = computed(() => {
|
||||||
|
return mode.value == 'edit' ? '编辑工程监理--新增检查项' : '新增工程监理--新增检查项'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
id: '',
|
||||||
|
project_id: '',
|
||||||
|
project_name: "",
|
||||||
|
node_name: '',
|
||||||
|
node_type: '',
|
||||||
|
node_code: '',
|
||||||
|
pid: '',
|
||||||
|
inspection_basis: '',
|
||||||
|
reference_law: '',
|
||||||
|
check_item_detail: [{
|
||||||
|
"check_type": "",
|
||||||
|
"check_content": "",
|
||||||
|
"must_check": 0
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
const customEvent = (e) => {
|
||||||
|
formData.project_id = e.id
|
||||||
|
formData.project_name = e.project_name
|
||||||
|
showDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleAdd = () => {
|
||||||
|
formData.check_item_detail.push({
|
||||||
|
"check_type": "",
|
||||||
|
"check_content": "",
|
||||||
|
"must_check": 0
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const handleDelete = (row: any) => {
|
||||||
|
if (formData.check_item_detail.length == 1) return
|
||||||
|
const index = formData.check_item_detail.indexOf(row);
|
||||||
|
formData.check_item_detail.splice(index, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请选择项目',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
node_name: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入节点名称',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
node_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入节点类型',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
node_code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入节点编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
inspection_basis: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入检查依据',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
reference_law: [{
|
||||||
|
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 apiSupervisionCheckItemDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiSupervisionCheckItemEdit(data)
|
||||||
|
: await apiSupervisionCheckItemAdd(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>
|
124
src/views/supervision_check_item/index.vue
Normal file
124
src/views/supervision_check_item/index.vue
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="项目id" prop="project_id">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="节点名称" prop="node_name">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.node_name" clearable placeholder="请输入节点名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="节点类型" prop="node_type">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.node_type" 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="['supervision_work.supervision_check_item/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_check_item/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="node_name" show-overflow-tooltip />
|
||||||
|
<el-table-column label="节点类型" prop="node_type" show-overflow-tooltip />
|
||||||
|
<el-table-column label="节点编号" prop="node_code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="父节点id" prop="pid" show-overflow-tooltip />
|
||||||
|
<el-table-column label="检查依据" prop="inspection_basis" show-overflow-tooltip />
|
||||||
|
<el-table-column label="参考法规" prop="reference_law" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['supervision_work.supervision_check_item/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_check_item/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<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="supervisionCheckItemLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiSupervisionCheckItemLists, apiSupervisionCheckItemDelete } from '@/api/supervision_check_item'
|
||||||
|
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({
|
||||||
|
project_id: '',
|
||||||
|
node_name: '',
|
||||||
|
node_type: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('check_item_node_type')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiSupervisionCheckItemLists,
|
||||||
|
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 apiSupervisionCheckItemDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
@ -227,7 +227,7 @@ const customEvent1 = (e) => {
|
|||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
project_id: [{
|
project_id: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入项目id',
|
message: '请选择项目',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
name: [{
|
name: [{
|
||||||
|
165
src/views/supervision_device_entry/edit.vue
Normal file
165
src/views/supervision_device_entry/edit.vue
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
<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="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="编号" prop="code">
|
||||||
|
<el-input v-model="formData.code" clearable placeholder="请输入编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="进场时间" prop="enter_time">
|
||||||
|
<el-input v-model="formData.enter_time" clearable placeholder="请输入进场时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="施工单位" prop="company_id">
|
||||||
|
<el-input v-model="formData.company_id" clearable placeholder="请输入施工单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="进场结果 0-进场 1-退场" prop="enter_result">
|
||||||
|
<el-input v-model="formData.enter_result" clearable placeholder="请输入进场结果 0-进场 1-退场" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="共同参与人" prop="co_participant">
|
||||||
|
<el-input v-model="formData.co_participant" 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="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入操作人" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="supervisionDeviceEntryEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiSupervisionDeviceEntryAdd, apiSupervisionDeviceEntryEdit, apiSupervisionDeviceEntryDetail } from '@/api/supervision_device_entry'
|
||||||
|
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: '',
|
||||||
|
code: '',
|
||||||
|
enter_time: '',
|
||||||
|
company_id: '',
|
||||||
|
enter_result: '',
|
||||||
|
co_participant: '',
|
||||||
|
remark: '',
|
||||||
|
create_user: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请选择项目',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
enter_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入进场时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
company_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入施工单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
enter_result: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入进场结果 0-进场 1-退场',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
co_participant: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入共同参与人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
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 apiSupervisionDeviceEntryDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiSupervisionDeviceEntryEdit(data)
|
||||||
|
: await apiSupervisionDeviceEntryAdd(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>
|
126
src/views/supervision_device_entry/index.vue
Normal file
126
src/views/supervision_device_entry/index.vue
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="项目id" prop="project_id">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="编号" prop="code">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.code" clearable placeholder="请输入编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="进场结果 0-进场 1-退场" prop="enter_result">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.enter_result" clearable
|
||||||
|
placeholder="请输入进场结果 0-进场 1-退场" />
|
||||||
|
</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="['supervision_work.supervision_device_entry/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_device_entry/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="项目id" prop="project_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="编号" prop="code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="进场时间" prop="enter_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="施工单位" prop="company_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="进场结果 0-进场 1-退场" prop="enter_result" show-overflow-tooltip />
|
||||||
|
<el-table-column label="共同参与人" prop="co_participant" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作人" prop="create_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['supervision_work.supervision_device_entry/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_device_entry/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="supervisionDeviceEntryLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiSupervisionDeviceEntryLists, apiSupervisionDeviceEntryDelete } from '@/api/supervision_device_entry'
|
||||||
|
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({
|
||||||
|
project_id: '',
|
||||||
|
code: '',
|
||||||
|
enter_result: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiSupervisionDeviceEntryLists,
|
||||||
|
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 apiSupervisionDeviceEntryDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
236
src/views/supervision_inspection/edit.vue
Normal file
236
src/views/supervision_inspection/edit.vue
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
<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="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="编号" prop="inspection_code">
|
||||||
|
<el-input v-model="formData.inspection_code" clearable placeholder="请输入编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="巡视类型" prop="inspection_type">
|
||||||
|
<el-input v-model="formData.inspection_type" clearable placeholder="请输入巡视类型" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单位工程" prop="check_item_id">
|
||||||
|
<el-input v-model="formData.check_item_id" clearable placeholder="请输入单位工程" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="巡视部位" prop="inspection_position">
|
||||||
|
<el-input v-model="formData.inspection_position" clearable placeholder="请输入巡视部位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="施工人数" prop="workers">
|
||||||
|
<el-input v-model="formData.workers" clearable placeholder="请输入施工人数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="管理人数" prop="managers">
|
||||||
|
<el-input v-model="formData.managers" clearable placeholder="请输入管理人数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="巡视开始时间" prop="start_time">
|
||||||
|
<el-input v-model="formData.start_time" clearable placeholder="请输入巡视开始时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="巡视结束时间" prop="end_time">
|
||||||
|
<el-input v-model="formData.end_time" clearable placeholder="请输入巡视结束时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="巡视人员" prop="inspection_user">
|
||||||
|
<el-input v-model="formData.inspection_user" clearable placeholder="请输入巡视人员" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="施工单位" prop="company_id">
|
||||||
|
<el-input v-model="formData.company_id" clearable placeholder="请输入施工单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="巡视内容" prop="inspection_content">
|
||||||
|
<el-input v-model="formData.inspection_content" clearable placeholder="请输入巡视内容" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="设置重点关注事项 0-否 1-是" prop="is_importent">
|
||||||
|
<el-input v-model="formData.is_importent" clearable placeholder="请输入设置重点关注事项 0-否 1-是" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="关注人" prop="follow_user">
|
||||||
|
<el-input v-model="formData.follow_user" clearable placeholder="请输入关注人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="检查表单选择" prop="check_item_detail_ids">
|
||||||
|
<el-input v-model="formData.check_item_detail_ids" clearable placeholder="请输入检查表单选择" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="创建人" prop="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="supervisionInspectionEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiSupervisionInspectionAdd, apiSupervisionInspectionEdit, apiSupervisionInspectionDetail } from '@/api/supervision_inspection'
|
||||||
|
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: '',
|
||||||
|
inspection_code: '',
|
||||||
|
inspection_type: '',
|
||||||
|
check_item_id: '',
|
||||||
|
inspection_position: '',
|
||||||
|
workers: '',
|
||||||
|
managers: '',
|
||||||
|
start_time: '',
|
||||||
|
end_time: '',
|
||||||
|
inspection_user: '',
|
||||||
|
company_id: '',
|
||||||
|
inspection_content: '',
|
||||||
|
is_importent: '',
|
||||||
|
follow_user: '',
|
||||||
|
check_item_detail_ids: '',
|
||||||
|
annex: '',
|
||||||
|
create_user: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请选择项目',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
inspection_code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
inspection_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入巡视类型',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
check_item_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入单位工程',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
inspection_position: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入巡视部位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
workers: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入施工人数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
managers: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入管理人数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
start_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入巡视开始时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
end_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入巡视结束时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
inspection_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入巡视人员',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
inspection_content: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入巡视内容',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
is_importent: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入设置重点关注事项 0-否 1-是',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
follow_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入关注人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
check_item_detail_ids: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入检查表单选择',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
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 apiSupervisionInspectionDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiSupervisionInspectionEdit(data)
|
||||||
|
: await apiSupervisionInspectionAdd(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>
|
134
src/views/supervision_inspection/index.vue
Normal file
134
src/views/supervision_inspection/index.vue
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="项目id" prop="project_id">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="编号" prop="inspection_code">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.inspection_code" clearable placeholder="请输入编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="巡视类型" prop="inspection_type">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.inspection_type" 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="['supervision_work.supervision_inspection/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_inspection/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="项目id" prop="project_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="编号" prop="inspection_code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="巡视类型" prop="inspection_type" show-overflow-tooltip />
|
||||||
|
<el-table-column label="单位工程" prop="check_item_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="巡视部位" prop="inspection_position" show-overflow-tooltip />
|
||||||
|
<el-table-column label="施工人数" prop="workers" show-overflow-tooltip />
|
||||||
|
<el-table-column label="管理人数" prop="managers" show-overflow-tooltip />
|
||||||
|
<el-table-column label="巡视开始时间" prop="start_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="巡视结束时间" prop="end_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="巡视人员" prop="inspection_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="施工单位" prop="company_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="巡视内容" prop="inspection_content" show-overflow-tooltip />
|
||||||
|
<el-table-column label="设置重点关注事项 0-否 1-是" prop="is_importent" show-overflow-tooltip />
|
||||||
|
<el-table-column label="关注人" prop="follow_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="检查表单选择" prop="check_item_detail_ids" show-overflow-tooltip />
|
||||||
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||||
|
<el-table-column label="创建人" prop="create_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['supervision_work.supervision_inspection/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_inspection/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="supervisionInspectionLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiSupervisionInspectionLists, apiSupervisionInspectionDelete } from '@/api/supervision_inspection'
|
||||||
|
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({
|
||||||
|
project_id: '',
|
||||||
|
inspection_code: '',
|
||||||
|
inspection_type: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiSupervisionInspectionLists,
|
||||||
|
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 apiSupervisionInspectionDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
@ -196,7 +196,7 @@ const customEvent1 = (e) => {
|
|||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
unit_qualification_id: [{
|
unit_qualification_id: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入项目id',
|
message: '请选择项目',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
name: [{
|
name: [{
|
||||||
|
183
src/views/supervision_material_entry/edit.vue
Normal file
183
src/views/supervision_material_entry/edit.vue
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
<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="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="采购单位id" prop="company_id">
|
||||||
|
<el-input v-model="formData.company_id" clearable placeholder="请输入采购单位id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="进场主题" prop="theme">
|
||||||
|
<el-input v-model="formData.theme" clearable placeholder="请输入进场主题" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="编号" prop="code">
|
||||||
|
<el-input v-model="formData.code" clearable placeholder="请输入编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="进场时间" prop="enter_time">
|
||||||
|
<el-input v-model="formData.enter_time" clearable placeholder="请输入进场时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="共同参与人" prop="co_participant">
|
||||||
|
<el-input v-model="formData.co_participant" clearable placeholder="请输入共同参与人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="进场结果 0-进场 1-进场后复检 2-退检" prop="enter_result">
|
||||||
|
<el-input v-model="formData.enter_result" clearable placeholder="请输入进场结果 0-进场 1-进场后复检 2-退检" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否平行检验 0-否 1-是" prop="parallel_test">
|
||||||
|
<el-input v-model="formData.parallel_test" clearable placeholder="请输入是否平行检验 0-否 1-是" />
|
||||||
|
</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="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="supervisionMaterialEntryEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiSupervisionMaterialEntryAdd, apiSupervisionMaterialEntryEdit, apiSupervisionMaterialEntryDetail } from '@/api/supervision_material_entry'
|
||||||
|
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: '',
|
||||||
|
company_id: '',
|
||||||
|
theme: '',
|
||||||
|
code: '',
|
||||||
|
enter_time: '',
|
||||||
|
co_participant: '',
|
||||||
|
enter_result: '',
|
||||||
|
parallel_test: '',
|
||||||
|
remark: '',
|
||||||
|
create_user: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请选择项目',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
company_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入采购单位id',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
theme: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入进场主题',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
enter_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入进场时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
co_participant: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入共同参与人',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
enter_result: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入进场结果 0-进场 1-进场后复检 2-退检',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
parallel_test: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入是否平行检验 0-否 1-是',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
remark: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入备注',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
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 apiSupervisionMaterialEntryDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiSupervisionMaterialEntryEdit(data)
|
||||||
|
: await apiSupervisionMaterialEntryAdd(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>
|
127
src/views/supervision_material_entry/index.vue
Normal file
127
src/views/supervision_material_entry/index.vue
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="项目id" prop="project_id">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="进场主题" prop="theme">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.theme" clearable placeholder="请输入进场主题" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="编号" prop="code">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.code" 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="['supervision_work.supervision_material_entry/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_material_entry/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="项目id" prop="project_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="采购单位id" prop="company_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="进场主题" prop="theme" show-overflow-tooltip />
|
||||||
|
<el-table-column label="编号" prop="code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="进场时间" prop="enter_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="共同参与人" prop="co_participant" show-overflow-tooltip />
|
||||||
|
<el-table-column label="进场结果 0-进场 1-进场后复检 2-退检" prop="enter_result" show-overflow-tooltip />
|
||||||
|
<el-table-column label="是否平行检验 0-否 1-是" prop="parallel_test" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||||
|
<el-table-column label="创建人" prop="create_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['supervision_work.supervision_material_entry/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_material_entry/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="supervisionMaterialEntryLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiSupervisionMaterialEntryLists, apiSupervisionMaterialEntryDelete } from '@/api/supervision_material_entry'
|
||||||
|
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({
|
||||||
|
project_id: '',
|
||||||
|
theme: '',
|
||||||
|
code: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiSupervisionMaterialEntryLists,
|
||||||
|
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 apiSupervisionMaterialEntryDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
@ -117,7 +117,7 @@ const customEvent1 = (e) => {
|
|||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
project_id: [{
|
project_id: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入项目id',
|
message: '请选择项目',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
company_id: [{
|
company_id: [{
|
||||||
|
@ -229,7 +229,7 @@ const customEvent1 = (e) => {
|
|||||||
const formRules = reactive<any>({
|
const formRules = reactive<any>({
|
||||||
project_id: [{
|
project_id: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入项目id',
|
message: '请选择项目',
|
||||||
trigger: ['blur']
|
trigger: ['blur']
|
||||||
}],
|
}],
|
||||||
name: [{
|
name: [{
|
||||||
|
227
src/views/supervision_side_station/edit.vue
Normal file
227
src/views/supervision_side_station/edit.vue
Normal file
@ -0,0 +1,227 @@
|
|||||||
|
<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="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="旁站编号" prop="side_station_code">
|
||||||
|
<el-input v-model="formData.side_station_code" clearable placeholder="请输入旁站编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="旁站类型" prop="side_station_type">
|
||||||
|
<el-input v-model="formData.side_station_type" clearable placeholder="请输入旁站类型" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单位工程" prop="check_item_id">
|
||||||
|
<el-input v-model="formData.check_item_id" clearable placeholder="请输入单位工程" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="部位" prop="position">
|
||||||
|
<el-input v-model="formData.position" clearable placeholder="请输入部位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="施工单位" prop="company_id">
|
||||||
|
<el-input v-model="formData.company_id" clearable placeholder="请输入施工单位" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="旁站开始时间" prop="start_time">
|
||||||
|
<el-input v-model="formData.start_time" clearable placeholder="请输入旁站开始时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="旁站结束时间" prop="end_time">
|
||||||
|
<el-input v-model="formData.end_time" clearable placeholder="请输入旁站结束时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="施工人数" prop="workers">
|
||||||
|
<el-input v-model="formData.workers" clearable placeholder="请输入施工人数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="管理人数" prop="managers">
|
||||||
|
<el-input v-model="formData.managers" clearable placeholder="请输入管理人数" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="现场施工情况" prop="situation">
|
||||||
|
<el-input v-model="formData.situation" clearable placeholder="请输入现场施工情况" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="旁站结果 0-完成 1-交班" prop="side_station_result">
|
||||||
|
<el-input v-model="formData.side_station_result" clearable placeholder="请输入旁站结果 0-完成 1-交班" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="旁站人员" prop="side_station_user">
|
||||||
|
<el-input v-model="formData.side_station_user" clearable placeholder="请输入旁站人员" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="检查项选择" prop="check_item_detail_ids">
|
||||||
|
<el-input v-model="formData.check_item_detail_ids" clearable placeholder="请输入检查项选择" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="附件" prop="annex">
|
||||||
|
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="创建人" prop="create_user">
|
||||||
|
<el-input v-model="formData.create_user" clearable placeholder="请输入创建人" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</popup>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup name="supervisionSideStationEdit">
|
||||||
|
import type { FormInstance } from 'element-plus'
|
||||||
|
import Popup from '@/components/popup/index.vue'
|
||||||
|
import { apiSupervisionSideStationAdd, apiSupervisionSideStationEdit, apiSupervisionSideStationDetail } from '@/api/supervision_side_station'
|
||||||
|
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: '',
|
||||||
|
side_station_code: '',
|
||||||
|
side_station_type: '',
|
||||||
|
check_item_id: '',
|
||||||
|
position: '',
|
||||||
|
company_id: '',
|
||||||
|
start_time: '',
|
||||||
|
end_time: '',
|
||||||
|
workers: '',
|
||||||
|
managers: '',
|
||||||
|
situation: '',
|
||||||
|
side_station_result: '',
|
||||||
|
side_station_user: '',
|
||||||
|
check_item_detail_ids: '',
|
||||||
|
annex: '',
|
||||||
|
create_user: '',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// 表单验证
|
||||||
|
const formRules = reactive<any>({
|
||||||
|
project_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请选择项目',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
side_station_code: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入旁站编号',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
side_station_type: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入旁站类型',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
check_item_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入单位工程',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
position: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入部位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
company_id: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入施工单位',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
start_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入旁站开始时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
end_time: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入旁站结束时间',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
workers: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入施工人数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
managers: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入管理人数',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
situation: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入现场施工情况',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
side_station_result: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入旁站结果 0-完成 1-交班',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
side_station_user: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入旁站人员',
|
||||||
|
trigger: ['blur']
|
||||||
|
}],
|
||||||
|
create_user: [{
|
||||||
|
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 apiSupervisionSideStationDetail({
|
||||||
|
id: row.id
|
||||||
|
})
|
||||||
|
setFormData(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交按钮
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
await formRef.value?.validate()
|
||||||
|
const data = { ...formData, }
|
||||||
|
mode.value == 'edit'
|
||||||
|
? await apiSupervisionSideStationEdit(data)
|
||||||
|
: await apiSupervisionSideStationAdd(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>
|
133
src/views/supervision_side_station/index.vue
Normal file
133
src/views/supervision_side_station/index.vue
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
|
<el-form-item label="项目id" prop="project_id">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="旁站编号" prop="side_station_code">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.side_station_code" clearable placeholder="请输入旁站编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="旁站类型" prop="side_station_type">
|
||||||
|
<el-input class="w-[280px]" v-model="queryParams.side_station_type" 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="['supervision_work.supervision_side_station/add']" type="primary" @click="handleAdd">
|
||||||
|
<template #icon>
|
||||||
|
<icon name="el-icon-Plus" />
|
||||||
|
</template>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_side_station/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="项目id" prop="project_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="旁站编号" prop="side_station_code" show-overflow-tooltip />
|
||||||
|
<el-table-column label="旁站类型" prop="side_station_type" show-overflow-tooltip />
|
||||||
|
<el-table-column label="单位工程" prop="check_item_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="部位" prop="position" show-overflow-tooltip />
|
||||||
|
<el-table-column label="施工单位" prop="company_id" show-overflow-tooltip />
|
||||||
|
<el-table-column label="旁站开始时间" prop="start_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="旁站结束时间" prop="end_time" show-overflow-tooltip />
|
||||||
|
<el-table-column label="施工人数" prop="workers" show-overflow-tooltip />
|
||||||
|
<el-table-column label="管理人数" prop="managers" show-overflow-tooltip />
|
||||||
|
<el-table-column label="现场施工情况" prop="situation" show-overflow-tooltip />
|
||||||
|
<el-table-column label="旁站结果 0-完成 1-交班" prop="side_station_result" show-overflow-tooltip />
|
||||||
|
<el-table-column label="旁站人员" prop="side_station_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="检查项选择" prop="check_item_detail_ids" show-overflow-tooltip />
|
||||||
|
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||||
|
<el-table-column label="创建人" prop="create_user" show-overflow-tooltip />
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['supervision_work.supervision_side_station/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['supervision_work.supervision_side_station/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="supervisionSideStationLists">
|
||||||
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { useDictData } from '@/hooks/useDictOptions'
|
||||||
|
import { apiSupervisionSideStationLists, apiSupervisionSideStationDelete } from '@/api/supervision_side_station'
|
||||||
|
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({
|
||||||
|
project_id: '',
|
||||||
|
side_station_code: '',
|
||||||
|
side_station_type: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
// 选中数据
|
||||||
|
const selectData = ref<any[]>([])
|
||||||
|
|
||||||
|
// 表格选择后回调事件
|
||||||
|
const handleSelectionChange = (val: any[]) => {
|
||||||
|
selectData.value = val.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取字典数据
|
||||||
|
const { dictData } = useDictData('')
|
||||||
|
|
||||||
|
// 分页相关
|
||||||
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
|
fetchFun: apiSupervisionSideStationLists,
|
||||||
|
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 apiSupervisionSideStationDelete({ id })
|
||||||
|
getLists()
|
||||||
|
}
|
||||||
|
|
||||||
|
getLists()
|
||||||
|
</script>
|
||||||
|
|
@ -1,165 +1,168 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="edit-popup">
|
<div class="edit-popup">
|
||||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||||
<el-form-item label="单据编号" prop="num">
|
<el-form-item label="单据编号" prop="num">
|
||||||
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
|
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目名称" prop="project_id">
|
<el-form-item label="项目名称" prop="project_id">
|
||||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly @click="showDialog = true" />
|
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
|
||||||
</el-form-item>
|
@click="showDialog = true" />
|
||||||
<el-form-item label="项目编号" prop="project_num">
|
</el-form-item>
|
||||||
<el-input v-model="formData.project_num" clearable readonly />
|
<el-form-item label="项目编号" prop="project_num">
|
||||||
</el-form-item>
|
<el-input v-model="formData.project_num" clearable readonly />
|
||||||
<el-form-item label="项目负责人" prop="head">
|
</el-form-item>
|
||||||
<el-input v-model="formData.head" clearable placeholder="请输入项目负责人" />
|
<el-form-item label="项目负责人" prop="head">
|
||||||
</el-form-item>
|
<el-input v-model="formData.head" clearable placeholder="请输入项目负责人" />
|
||||||
<el-form-item label="登记日期" prop="apptime">
|
</el-form-item>
|
||||||
<el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date" value-format="YYYY-MM-DD"
|
<el-form-item label="登记日期" prop="apptime">
|
||||||
placeholder="请选择日期">
|
<el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date"
|
||||||
</el-date-picker>
|
value-format="YYYY-MM-DD" placeholder="请选择日期">
|
||||||
</el-form-item>
|
</el-date-picker>
|
||||||
<el-form-item label="附件">
|
</el-form-item>
|
||||||
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four" @delFile="delFileFn" />
|
<el-form-item label="附件">
|
||||||
</el-form-item>
|
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
|
||||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
@delFile="delFileFn" />
|
||||||
<cost_project @customEvent="customEvent" :task_allocation="1"></cost_project>
|
</el-form-item>
|
||||||
</el-dialog>
|
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||||
<el-dialog v-model="showDialog1" title="选择任务" width="70%">
|
<cost_project @customEvent="customEvent" :task_allocation="1"></cost_project>
|
||||||
<task_type @customEvent="customEvent1"></task_type>
|
</el-dialog>
|
||||||
</el-dialog>
|
<el-dialog v-model="showDialog1" title="选择任务" width="70%">
|
||||||
<div v-if="showDialog3">
|
<task_type @customEvent="customEvent1"></task_type>
|
||||||
<personnelselector ref="personnel" @confirm="submituser" type="1">
|
</el-dialog>
|
||||||
</personnelselector>
|
<div v-if="showDialog3">
|
||||||
</div>
|
<personnelselector ref="personnel" @confirm="submituser" type="1">
|
||||||
|
</personnelselector>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div style="margin-bottom: 30px;">任务明细</div>
|
<div style="margin-bottom: 30px;">任务明细</div>
|
||||||
<div style="margin-bottom: 30px;">
|
<div style="margin-bottom: 30px;">
|
||||||
<el-table :data="formData.task_detail">
|
<el-table :data="formData.task_detail">
|
||||||
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
|
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button @click="handleAdd(row)">+</el-button>
|
<el-button @click="handleAdd(row)">+</el-button>
|
||||||
<el-button @click="handleDelete(row)">-</el-button>
|
<el-button @click="handleDelete(row)">-</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="任务名称" prop="task_name" width="200px">
|
<el-table-column label="任务名称" prop="task_name" width="200px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.task_name" readonly @click="showDialog1 = true, tableIndex = scope.$index"
|
<el-input v-model="scope.row.task_name" readonly
|
||||||
placeholder="点击选择" :disabled="mode != 'add'" />
|
@click="showDialog1 = true, tableIndex = scope.$index" placeholder="点击选择"
|
||||||
</template>
|
:disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="任务次级" prop="level" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="任务次级" prop="level" width="200px">
|
||||||
<el-input v-model="row.level" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.level" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="工序" prop="process" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="工序" prop="process" width="200px">
|
||||||
<el-input v-model="row.process" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.process" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="任务类型" prop="task_type_id" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="任务类型" prop="task_type_id" width="200px">
|
||||||
<el-select class="flex-1" v-model="row.task_type_id" clearable placeholder="请选择任务类型"
|
<template #default="{ row }">
|
||||||
:disabled="mode != 'add'">
|
<el-select class="flex-1" v-model="row.task_type_id" clearable placeholder="请选择任务类型"
|
||||||
<el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name"
|
:disabled="mode != 'add'">
|
||||||
:value="parseInt(item.value)" />
|
<el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name"
|
||||||
</el-select>
|
:value="parseInt(item.value)" />
|
||||||
</template>
|
</el-select>
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="专业类型" prop="professional_type" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="专业类型" prop="professional_type" width="200px">
|
||||||
<el-select class="flex-1" v-model="row.professional_type" clearable placeholder="请选择专业类型"
|
<template #default="{ row }">
|
||||||
:disabled="mode != 'add'">
|
<el-select class="flex-1" v-model="row.professional_type" clearable placeholder="请选择专业类型"
|
||||||
<el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name"
|
:disabled="mode != 'add'">
|
||||||
:value="item.value" />
|
<el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name"
|
||||||
</el-select>
|
:value="item.value" />
|
||||||
</template>
|
</el-select>
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="工程师" prop="engineer" width="200px">
|
</el-table-column>
|
||||||
<template #default="scope">
|
<el-table-column label="工程师" prop="engineer" width="200px">
|
||||||
<el-input v-model="scope.row.engineer" :disabled="mode != 'add'"
|
<template #default="scope">
|
||||||
@click="userclick(scope.$index, 'engineer')" />
|
<el-input v-model="scope.row.engineer" :disabled="mode != 'add'"
|
||||||
</template>
|
@click="userclick(scope.$index, 'engineer')" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="一级审核人" prop="first_reviewer" width="200px">
|
</el-table-column>
|
||||||
<template #default="scope">
|
<el-table-column label="一级审核人" prop="first_reviewer" width="200px">
|
||||||
<el-input v-model="scope.row.first_reviewer" :disabled="mode != 'add'"
|
<template #default="scope">
|
||||||
@click="userclick(scope.$index, 'first_reviewer')" />
|
<el-input v-model="scope.row.first_reviewer" :disabled="mode != 'add'"
|
||||||
</template>
|
@click="userclick(scope.$index, 'first_reviewer')" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="二级审核人" prop="secondary_reviewer" width="200px">
|
</el-table-column>
|
||||||
<template #default="scope">
|
<el-table-column label="二级审核人" prop="secondary_reviewer" width="200px">
|
||||||
<el-input v-model="scope.row.secondary_reviewer" :disabled="mode != 'add'"
|
<template #default="scope">
|
||||||
@click="userclick(scope.$index, 'secondary_reviewer')" />
|
<el-input v-model="scope.row.secondary_reviewer" :disabled="mode != 'add'"
|
||||||
</template>
|
@click="userclick(scope.$index, 'secondary_reviewer')" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="三级审核人" prop="third_level_reviewer" width="200px">
|
</el-table-column>
|
||||||
<template #default="scope">
|
<el-table-column label="三级审核人" prop="third_level_reviewer" width="200px">
|
||||||
<el-input v-model="scope.row.third_level_reviewer" :disabled="mode != 'add'"
|
<template #default="scope">
|
||||||
@click="userclick(scope.$index, 'third_level_reviewer')" />
|
<el-input v-model="scope.row.third_level_reviewer" :disabled="mode != 'add'"
|
||||||
</template>
|
@click="userclick(scope.$index, 'third_level_reviewer')" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="天数" prop="days" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="天数" prop="days" width="200px">
|
||||||
<el-input v-model="row.days" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.days" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="开始日期" prop="start_date" width="220px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="开始日期" prop="start_date" width="220px">
|
||||||
<el-date-picker v-model="row.start_date" clearable type="date" value-format="YYYY-MM-DD"
|
<template #default="{ row }">
|
||||||
:disabled="mode != 'add'" placeholder="请选择日期">
|
<el-date-picker v-model="row.start_date" clearable type="date" value-format="YYYY-MM-DD"
|
||||||
</el-date-picker>
|
:disabled="mode != 'add'" placeholder="请选择日期">
|
||||||
</template>
|
</el-date-picker>
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="结束日期" prop="end_date" width="220px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="结束日期" prop="end_date" width="220px">
|
||||||
<el-date-picker v-model="row.end_date" clearable type="date" value-format="YYYY-MM-DD"
|
<template #default="{ row }">
|
||||||
:disabled="mode != 'add'" placeholder="请选择日期">
|
<el-date-picker v-model="row.end_date" clearable type="date" value-format="YYYY-MM-DD"
|
||||||
</el-date-picker>
|
:disabled="mode != 'add'" placeholder="请选择日期">
|
||||||
</template>
|
</el-date-picker>
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="中标金额(元)" prop="bid_winning_amount" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="中标金额(元)" prop="bid_winning_amount" width="200px">
|
||||||
<el-input v-model="row.bid_winning_amount" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.bid_winning_amount" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="送审造价(元)" prop="cost" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="送审造价(元)" prop="cost" width="200px">
|
||||||
<el-input v-model="row.cost" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.cost" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="第三方核定金额(元)" prop="approved_amount" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="第三方核定金额(元)" prop="approved_amount" width="200px">
|
||||||
<el-input v-model="row.approved_amount" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.approved_amount" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="施工单位" prop="construction_unit" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="施工单位" prop="construction_unit" width="200px">
|
||||||
<el-input v-model="row.construction_unit" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.construction_unit" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="联系人" prop="contact" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="联系人" prop="contact" width="200px">
|
||||||
<el-input v-model="row.contact" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.contact" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="联系电话" prop="contact_phone" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="联系电话" prop="contact_phone" width="200px">
|
||||||
<el-input v-model="row.contact_phone" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.contact_phone" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
<el-table-column label="备注" prop="remark" width="200px">
|
</el-table-column>
|
||||||
<template #default="{ row }">
|
<el-table-column label="备注" prop="remark" width="200px">
|
||||||
<el-input v-model="row.remark" :disabled="mode != 'add'" />
|
<template #default="{ row }">
|
||||||
</template>
|
<el-input v-model="row.remark" :disabled="mode != 'add'" />
|
||||||
</el-table-column>
|
</template>
|
||||||
</el-table>
|
</el-table-column>
|
||||||
</div>
|
</el-table>
|
||||||
</el-form>
|
</div>
|
||||||
</popup>
|
</el-form>
|
||||||
</div>
|
</popup>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup name="taskAllocationEdit">
|
<script lang="ts" setup name="taskAllocationEdit">
|
||||||
@ -168,10 +171,10 @@ import Popup from '@/components/popup/index.vue'
|
|||||||
import { apiTaskAllocationAdd, apiTaskAllocationEdit, } from '@/api/task_allocation'
|
import { apiTaskAllocationAdd, apiTaskAllocationEdit, } from '@/api/task_allocation'
|
||||||
import type { PropType } from 'vue'
|
import type { PropType } from 'vue'
|
||||||
defineProps({
|
defineProps({
|
||||||
dictData: {
|
dictData: {
|
||||||
type: Object as PropType<Record<string, any[]>>,
|
type: Object as PropType<Record<string, any[]>>,
|
||||||
default: () => ({})
|
default: () => ({})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const emit = defineEmits(['success', 'close'])
|
const emit = defineEmits(['success', 'close'])
|
||||||
@ -184,8 +187,8 @@ const showDialog3 = ref(false)
|
|||||||
const personnel = ref<any>()
|
const personnel = ref<any>()
|
||||||
|
|
||||||
const handleAvatarSuccess_four = (response: any) => {
|
const handleAvatarSuccess_four = (response: any) => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 删除上传的文件
|
// 删除上传的文件
|
||||||
@ -193,120 +196,120 @@ const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
|
|||||||
|
|
||||||
// 弹窗标题
|
// 弹窗标题
|
||||||
const popupTitle = computed(() => {
|
const popupTitle = computed(() => {
|
||||||
return mode.value == 'edit' ? '编辑任务分配' : '新增任务分配'
|
return mode.value == 'edit' ? '编辑任务分配' : '新增任务分配'
|
||||||
})
|
})
|
||||||
|
|
||||||
// 表单数据
|
// 表单数据
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
id: '',
|
id: '',
|
||||||
dataid: '',
|
dataid: '',
|
||||||
num: '',
|
num: '',
|
||||||
project_id: '',
|
project_id: '',
|
||||||
project_name: "",
|
project_name: "",
|
||||||
project_num: '',
|
project_num: '',
|
||||||
head: '',
|
head: '',
|
||||||
apptime: '',
|
apptime: '',
|
||||||
annex: [],
|
annex: [],
|
||||||
task_detail: [{
|
task_detail: [{
|
||||||
task_name: '',
|
task_name: '',
|
||||||
task_name_id: '',
|
task_name_id: '',
|
||||||
process: '',
|
process: '',
|
||||||
task_type_id: '',
|
task_type_id: '',
|
||||||
professional_type: '',
|
professional_type: '',
|
||||||
engineer: '',
|
engineer: '',
|
||||||
engineer_id: '',
|
engineer_id: '',
|
||||||
level: '',
|
level: '',
|
||||||
first_reviewer: '',
|
first_reviewer: '',
|
||||||
first_reviewer_id: '',
|
first_reviewer_id: '',
|
||||||
secondary_reviewer: '',
|
secondary_reviewer: '',
|
||||||
secondary_reviewer_id: '',
|
secondary_reviewer_id: '',
|
||||||
third_level_reviewer: '',
|
third_level_reviewer: '',
|
||||||
third_level_reviewer_id: '',
|
third_level_reviewer_id: '',
|
||||||
bid_winning_amount: '',
|
bid_winning_amount: '',
|
||||||
cost: '',
|
cost: '',
|
||||||
approved_amount: '',
|
approved_amount: '',
|
||||||
construction_unit: '',
|
construction_unit: '',
|
||||||
construction_unit_id: '',
|
construction_unit_id: '',
|
||||||
contact: '',
|
contact: '',
|
||||||
contact_phone: '',
|
contact_phone: '',
|
||||||
days: '',
|
days: '',
|
||||||
start_date: '',
|
start_date: '',
|
||||||
end_date: '',
|
end_date: '',
|
||||||
remark: '',
|
remark: '',
|
||||||
}],
|
}],
|
||||||
projectInfo: {}
|
projectInfo: {}
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
formData.task_detail.push({
|
formData.task_detail.push({
|
||||||
task_name: '',
|
task_name: '',
|
||||||
task_name_id: '',
|
task_name_id: '',
|
||||||
process: '',
|
process: '',
|
||||||
task_type_id: '',
|
task_type_id: '',
|
||||||
professional_type: '',
|
professional_type: '',
|
||||||
engineer: '',
|
engineer: '',
|
||||||
engineer_id: '',
|
engineer_id: '',
|
||||||
level: '',
|
level: '',
|
||||||
first_reviewer: '',
|
first_reviewer: '',
|
||||||
first_reviewer_id: '',
|
first_reviewer_id: '',
|
||||||
secondary_reviewer: '',
|
secondary_reviewer: '',
|
||||||
secondary_reviewer_id: '',
|
secondary_reviewer_id: '',
|
||||||
third_level_reviewer: '',
|
third_level_reviewer: '',
|
||||||
third_level_reviewer_id: '',
|
third_level_reviewer_id: '',
|
||||||
bid_winning_amount: '',
|
bid_winning_amount: '',
|
||||||
cost: '',
|
cost: '',
|
||||||
approved_amount: '',
|
approved_amount: '',
|
||||||
construction_unit: '',
|
construction_unit: '',
|
||||||
construction_unit_id: '',
|
construction_unit_id: '',
|
||||||
contact: '',
|
contact: '',
|
||||||
contact_phone: '',
|
contact_phone: '',
|
||||||
days: '',
|
days: '',
|
||||||
start_date: '',
|
start_date: '',
|
||||||
end_date: '',
|
end_date: '',
|
||||||
remark: '',
|
remark: '',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const handleDelete = (row: any) => {
|
const handleDelete = (row: any) => {
|
||||||
if (formData.task_detail.length == 1) return
|
if (formData.task_detail.length == 1) return
|
||||||
const index = formData.task_detail.indexOf(row);
|
const index = formData.task_detail.indexOf(row);
|
||||||
formData.task_detail.splice(index, 1);
|
formData.task_detail.splice(index, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
const tableIndex = ref(0)
|
const tableIndex = ref(0)
|
||||||
|
|
||||||
const customEvent = (e) => {
|
const customEvent = (e) => {
|
||||||
formData.project_id = e.id
|
formData.project_id = e.id
|
||||||
formData.project_name = e.project_name
|
formData.project_name = e.project_name
|
||||||
formData.project_num = e.project_num
|
formData.project_num = e.project_num
|
||||||
showDialog.value = false
|
showDialog.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
const customEvent1 = (e) => {
|
const customEvent1 = (e) => {
|
||||||
formData.task_detail[tableIndex.value].task_name = e.name
|
formData.task_detail[tableIndex.value].task_name = e.name
|
||||||
formData.task_detail[tableIndex.value].task_name_id = e.id
|
formData.task_detail[tableIndex.value].task_name_id = e.id
|
||||||
formData.task_detail[tableIndex.value].level = e.level
|
formData.task_detail[tableIndex.value].level = e.level
|
||||||
showDialog1.value = false
|
showDialog1.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
const tableKey = ref('')
|
const tableKey = ref('')
|
||||||
//打开弹窗
|
//打开弹窗
|
||||||
const userclick = async (e: any, key) => {
|
const userclick = async (e: any, key) => {
|
||||||
tableIndex.value = e
|
tableIndex.value = e
|
||||||
tableKey.value = key
|
tableKey.value = key
|
||||||
showDialog3.value = true
|
showDialog3.value = true
|
||||||
await nextTick()
|
await nextTick()
|
||||||
personnel.value.open()
|
personnel.value.open()
|
||||||
console.log(tableIndex.value, tableKey.value)
|
console.log(tableIndex.value, tableKey.value)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//确认
|
//确认
|
||||||
const submituser = (e: any) => {
|
const submituser = (e: any) => {
|
||||||
formData.task_detail[tableIndex.value][tableKey.value] = e.name
|
formData.task_detail[tableIndex.value][tableKey.value] = e.name
|
||||||
formData.task_detail[tableIndex.value][tableKey.value + '_id'] = e.id
|
formData.task_detail[tableIndex.value][tableKey.value + '_id'] = e.id
|
||||||
showDialog3.value = false
|
showDialog3.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
@ -317,54 +320,54 @@ const formRules = reactive<any>({
|
|||||||
|
|
||||||
// 获取详情
|
// 获取详情
|
||||||
const setFormData = async (data: Record<any, any>) => {
|
const setFormData = async (data: Record<any, any>) => {
|
||||||
for (const key in formData) {
|
for (const key in formData) {
|
||||||
if (data[key] != null && data[key] != undefined) {
|
if (data[key] != null && data[key] != undefined) {
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
formData[key] = data[key]
|
formData[key] = data[key]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
formData.project_name = formData.projectInfo?.project_name || ""
|
||||||
formData.project_name = formData.projectInfo?.project_name || ""
|
formData.project_num = formData.projectInfo?.project_num || ""
|
||||||
formData.project_num = formData.projectInfo?.project_num || ""
|
formData.project_id = formData.projectInfo?.project_id || ""
|
||||||
formData.project_id = formData.projectInfo?.project_id || ""
|
formData.head = formData.projectInfo?.principal || ""
|
||||||
formData.head = formData.projectInfo?.principal || ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const getDetail = async (row: Record<string, any>) => {
|
const getDetail = async (row: Record<string, any>) => {
|
||||||
const data = await apiTaskAllocationDetail({
|
const data = await apiTaskAllocationDetail({
|
||||||
id: row.id
|
id: row.id
|
||||||
})
|
})
|
||||||
setFormData(data)
|
setFormData(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 提交按钮
|
// 提交按钮
|
||||||
const handleSubmit = async () => {
|
const handleSubmit = async () => {
|
||||||
|
|
||||||
await formRef.value?.validate()
|
await formRef.value?.validate()
|
||||||
const data = { ...formData, }
|
const data = { ...formData, }
|
||||||
mode.value == 'edit'
|
mode.value == 'edit'
|
||||||
? await apiTaskAllocationEdit(data)
|
? await apiTaskAllocationEdit(data)
|
||||||
: await apiTaskAllocationAdd(data)
|
: await apiTaskAllocationAdd(data)
|
||||||
popupRef.value?.close()
|
popupRef.value?.close()
|
||||||
emit('success')
|
emit('success')
|
||||||
}
|
}
|
||||||
|
|
||||||
//打开弹窗
|
//打开弹窗
|
||||||
const open = (type = 'add') => {
|
const open = (type = 'add') => {
|
||||||
mode.value = type
|
mode.value = type
|
||||||
popupRef.value?.open()
|
popupRef.value?.open()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 关闭回调
|
// 关闭回调
|
||||||
const handleClose = () => {
|
const handleClose = () => {
|
||||||
emit('close')
|
emit('close')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
open,
|
open,
|
||||||
setFormData,
|
setFormData,
|
||||||
getDetail
|
getDetail
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
@ -9,6 +9,9 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiTaskAllocationLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -28,8 +31,8 @@
|
|||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column type="expand">
|
<el-table-column type="expand">
|
||||||
<template #default="props">
|
<template #default="props">
|
||||||
<div m="4">
|
<div style="width: 95%;margin: 0 auto;">
|
||||||
<el-table :data="props.row.taskTypeInfo">
|
<el-table :data="props.row.children">
|
||||||
<el-table-column label="任务名称" prop="taskTypeInfo.name" show-overflow-tooltip />
|
<el-table-column label="任务名称" prop="taskTypeInfo.name" show-overflow-tooltip />
|
||||||
<el-table-column label="工序" prop="process" show-overflow-tooltip />
|
<el-table-column label="工序" prop="process" show-overflow-tooltip />
|
||||||
<el-table-column label="任务类型" prop="task_type_id">
|
<el-table-column label="任务类型" prop="task_type_id">
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiTaskDetailLists" :params="queryParams"
|
||||||
|
:page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
@ -1,95 +1,98 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-card class="!border-none mb-4" shadow="never">
|
<el-card class="!border-none mb-4" shadow="never">
|
||||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||||
<el-form-item label="时间段">
|
<el-form-item label="时间段">
|
||||||
<el-date-picker v-model="queryTime" type="daterange" unlink-panels range-separator="-" start-placeholder="开始时间"
|
<el-date-picker v-model="queryTime" type="daterange" unlink-panels range-separator="-"
|
||||||
end-placeholder="结束时间" @change="changeTime" value-format="YYYY-MM-DD" />
|
start-placeholder="开始时间" end-placeholder="结束时间" @change="changeTime" value-format="YYYY-MM-DD" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
</el-form-item>
|
<export-data class="ml-2.5" :fetch-fun="apiTaskHandlingThreeLevelReviewLists" :params="queryParams"
|
||||||
</el-form>
|
:page-size="pager.size" />
|
||||||
</el-card>
|
</el-form-item>
|
||||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
</el-form>
|
||||||
<el-button v-perms="['task_handling_three_level_review/add']" type="primary" @click="handleAdd">
|
</el-card>
|
||||||
<template #icon>
|
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||||
<icon name="el-icon-Plus" />
|
<el-button v-perms="['task_handling_three_level_review/add']" type="primary" @click="handleAdd">
|
||||||
</template>
|
<template #icon>
|
||||||
新增
|
<icon name="el-icon-Plus" />
|
||||||
</el-button>
|
</template>
|
||||||
<el-button v-perms="['task_handling_three_level_review/delete']" :disabled="!selectData.length"
|
新增
|
||||||
@click="handleDelete(selectData)">
|
</el-button>
|
||||||
删除
|
<el-button v-perms="['task_handling_three_level_review/delete']" :disabled="!selectData.length"
|
||||||
</el-button>
|
@click="handleDelete(selectData)">
|
||||||
<div class="mt-4">
|
|
||||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
|
||||||
<el-table-column type="selection" width="55" />
|
|
||||||
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
|
||||||
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
|
||||||
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
|
||||||
<el-table-column label="任务名称" prop="task" show-overflow-tooltip />
|
|
||||||
<el-table-column label="工序" prop="processes" show-overflow-tooltip />
|
|
||||||
<el-table-column label="任务类型" prop="rtype" show-overflow-tooltip>
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-value :options="dictData.task_type" :value="row.rtype" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="专业类型" prop="zType" show-overflow-tooltip>
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-value :options="dictData.major_type" :value="row.zType" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
|
|
||||||
<el-table-column label="项目负责人" prop="head" show-overflow-tooltip />
|
|
||||||
<el-table-column label="审核流程" prop="examine" show-overflow-tooltip>
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-value :options="dictData.review_process" :value="row.examine" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="一级审核人" prop="one" show-overflow-tooltip />
|
|
||||||
<el-table-column label="二级审核人" prop="two" show-overflow-tooltip />
|
|
||||||
<el-table-column label="三级审核人" prop="three" show-overflow-tooltip />
|
|
||||||
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
|
|
||||||
<el-table-column label="任务级次" prop="level" show-overflow-tooltip />
|
|
||||||
<el-table-column label="建筑面积" prop="area" show-overflow-tooltip />
|
|
||||||
<!-- <el-table-column label="建筑结构类型" prop="type" show-overflow-tooltip /> -->
|
|
||||||
<el-table-column label="建筑用途" prop="use" show-overflow-tooltip />
|
|
||||||
<el-table-column label="施工单位" prop="construction" show-overflow-tooltip />
|
|
||||||
<!-- <el-table-column label="编制要求" prop="ask" show-overflow-tooltip /> -->
|
|
||||||
<!-- <el-table-column label="造价依据" prop="according" show-overflow-tooltip /> -->
|
|
||||||
<!-- <el-table-column label="材料补差" prop="clbc" show-overflow-tooltip /> -->
|
|
||||||
<el-table-column label="送审金额" prop="ssje" show-overflow-tooltip />
|
|
||||||
<el-table-column label="工程师核定价" prop="gcshd" show-overflow-tooltip />
|
|
||||||
<el-table-column label="核增/核减金额" prop="hzhj" show-overflow-tooltip />
|
|
||||||
<el-table-column label="人工单价" prop="rg" show-overflow-tooltip />
|
|
||||||
<el-table-column label="项目负责人核定价" prop="xmhd" show-overflow-tooltip />
|
|
||||||
<el-table-column label="部门负责人核定价" prop="bmhd" show-overflow-tooltip />
|
|
||||||
<el-table-column label="审核部核定价" prop="shbhd" show-overflow-tooltip />
|
|
||||||
<el-table-column label="开工日期" prop="kaigong" show-overflow-tooltip />
|
|
||||||
<el-table-column label="竣工日期" prop="jungong" show-overflow-tooltip />
|
|
||||||
<el-table-column label="备注" prop="bz" show-overflow-tooltip />
|
|
||||||
|
|
||||||
<el-table-column label="操作" width="120" fixed="right">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<el-button v-perms="['task_handling_three_level_review/edit']" type="primary" link @click="handleEdit(row)">
|
|
||||||
编辑
|
|
||||||
</el-button>
|
|
||||||
<el-button v-perms="['task_handling_three_level_review/delete']" type="danger" link
|
|
||||||
@click="handleDelete(row.id)">
|
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
<div class="mt-4">
|
||||||
</el-table-column>
|
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||||
</el-table>
|
<el-table-column type="selection" width="55" />
|
||||||
</div>
|
<el-table-column label="单据编号" prop="num" show-overflow-tooltip />
|
||||||
<div class="flex justify-end mt-4">
|
<el-table-column label="项目名称" prop="projectInfo.project_name" show-overflow-tooltip />
|
||||||
<pagination v-model="pager" @change="getLists" />
|
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
|
||||||
</div>
|
<el-table-column label="任务名称" prop="task" show-overflow-tooltip />
|
||||||
</el-card>
|
<el-table-column label="工序" prop="processes" show-overflow-tooltip />
|
||||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
<el-table-column label="任务类型" prop="rtype" show-overflow-tooltip>
|
||||||
</div>
|
<template #default="{ row }">
|
||||||
|
<dict-value :options="dictData.task_type" :value="row.rtype" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="专业类型" prop="zType" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-value :options="dictData.major_type" :value="row.zType" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="工程师" prop="engineer" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目负责人" prop="head" show-overflow-tooltip />
|
||||||
|
<el-table-column label="审核流程" prop="examine" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-value :options="dictData.review_process" :value="row.examine" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="一级审核人" prop="one" show-overflow-tooltip />
|
||||||
|
<el-table-column label="二级审核人" prop="two" show-overflow-tooltip />
|
||||||
|
<el-table-column label="三级审核人" prop="three" show-overflow-tooltip />
|
||||||
|
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
|
||||||
|
<el-table-column label="任务级次" prop="level" show-overflow-tooltip />
|
||||||
|
<el-table-column label="建筑面积" prop="area" show-overflow-tooltip />
|
||||||
|
<!-- <el-table-column label="建筑结构类型" prop="type" show-overflow-tooltip /> -->
|
||||||
|
<el-table-column label="建筑用途" prop="use" show-overflow-tooltip />
|
||||||
|
<el-table-column label="施工单位" prop="construction" show-overflow-tooltip />
|
||||||
|
<!-- <el-table-column label="编制要求" prop="ask" show-overflow-tooltip /> -->
|
||||||
|
<!-- <el-table-column label="造价依据" prop="according" show-overflow-tooltip /> -->
|
||||||
|
<!-- <el-table-column label="材料补差" prop="clbc" show-overflow-tooltip /> -->
|
||||||
|
<el-table-column label="送审金额" prop="ssje" show-overflow-tooltip />
|
||||||
|
<el-table-column label="工程师核定价" prop="gcshd" show-overflow-tooltip />
|
||||||
|
<el-table-column label="核增/核减金额" prop="hzhj" show-overflow-tooltip />
|
||||||
|
<el-table-column label="人工单价" prop="rg" show-overflow-tooltip />
|
||||||
|
<el-table-column label="项目负责人核定价" prop="xmhd" show-overflow-tooltip />
|
||||||
|
<el-table-column label="部门负责人核定价" prop="bmhd" show-overflow-tooltip />
|
||||||
|
<el-table-column label="审核部核定价" prop="shbhd" show-overflow-tooltip />
|
||||||
|
<el-table-column label="开工日期" prop="kaigong" show-overflow-tooltip />
|
||||||
|
<el-table-column label="竣工日期" prop="jungong" show-overflow-tooltip />
|
||||||
|
<el-table-column label="备注" prop="bz" show-overflow-tooltip />
|
||||||
|
|
||||||
|
<el-table-column label="操作" width="120" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-button v-perms="['task_handling_three_level_review/edit']" type="primary" link
|
||||||
|
@click="handleEdit(row)">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-perms="['task_handling_three_level_review/delete']" type="danger" link
|
||||||
|
@click="handleDelete(row.id)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end mt-4">
|
||||||
|
<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>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup name="taskHandlingThreeLevelReviewLists">
|
<script lang="ts" setup name="taskHandlingThreeLevelReviewLists">
|
||||||
@ -107,14 +110,14 @@ const showEdit = ref(false)
|
|||||||
|
|
||||||
// 查询条件
|
// 查询条件
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
start_time: "",
|
start_time: "",
|
||||||
end_time: ""
|
end_time: ""
|
||||||
})
|
})
|
||||||
|
|
||||||
const queryTime = ref('')
|
const queryTime = ref('')
|
||||||
const changeTime = () => {
|
const changeTime = () => {
|
||||||
queryParams.start_time = queryTime.value[0]
|
queryParams.start_time = queryTime.value[0]
|
||||||
queryParams.end_time = queryTime.value[1]
|
queryParams.end_time = queryTime.value[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 选中数据
|
// 选中数据
|
||||||
@ -122,7 +125,7 @@ const selectData = ref<any[]>([])
|
|||||||
|
|
||||||
// 表格选择后回调事件
|
// 表格选择后回调事件
|
||||||
const handleSelectionChange = (val: any[]) => {
|
const handleSelectionChange = (val: any[]) => {
|
||||||
selectData.value = val.map(({ id }) => id)
|
selectData.value = val.map(({ id }) => id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取字典数据
|
// 获取字典数据
|
||||||
@ -130,31 +133,31 @@ const { dictData } = useDictData('review_process,task_type,building_structure_ty
|
|||||||
|
|
||||||
// 分页相关
|
// 分页相关
|
||||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||||
fetchFun: apiTaskHandlingThreeLevelReviewLists,
|
fetchFun: apiTaskHandlingThreeLevelReviewLists,
|
||||||
params: queryParams
|
params: queryParams
|
||||||
})
|
})
|
||||||
|
|
||||||
// 添加
|
// 添加
|
||||||
const handleAdd = async () => {
|
const handleAdd = async () => {
|
||||||
showEdit.value = true
|
showEdit.value = true
|
||||||
await nextTick()
|
await nextTick()
|
||||||
editRef.value?.open('add')
|
editRef.value?.open('add')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编辑
|
// 编辑
|
||||||
const handleEdit = async (data: any) => {
|
const handleEdit = async (data: any) => {
|
||||||
let res = await apiTaskHandlingThreeLevelReviewDetail({ id: data.id })
|
let res = await apiTaskHandlingThreeLevelReviewDetail({ id: data.id })
|
||||||
showEdit.value = true
|
showEdit.value = true
|
||||||
await nextTick()
|
await nextTick()
|
||||||
editRef.value?.open('edit')
|
editRef.value?.open('edit')
|
||||||
editRef.value?.setFormData(res)
|
editRef.value?.setFormData(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
const handleDelete = async (id: number | any[]) => {
|
const handleDelete = async (id: number | any[]) => {
|
||||||
await feedback.confirm('确定要删除?')
|
await feedback.confirm('确定要删除?')
|
||||||
await apiTaskHandlingThreeLevelReviewDelete({ id })
|
await apiTaskHandlingThreeLevelReviewDelete({ id })
|
||||||
getLists()
|
getLists()
|
||||||
}
|
}
|
||||||
|
|
||||||
getLists()
|
getLists()
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||||
<el-button @click="resetParams">重置</el-button>
|
<el-button @click="resetParams">重置</el-button>
|
||||||
|
<export-data class="ml-2.5" :fetch-fun="apiTaskTypeLists" :params="queryParams" :page-size="pager.size" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user