This commit is contained in:
zmj 2024-03-19 16:12:27 +08:00
parent 2826bb2660
commit 9863f40bbb
65 changed files with 1822 additions and 525 deletions

View File

@ -6,7 +6,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-if="flag"> <el-col :span="8" v-if="flag">
<el-form-item label="创建时间" prop="create_time"> <el-form-item label="创建时间" prop="create_time">
<el-date-picker class="flex-1 !flex" v-model="formData.create_time" clearable type="datetime" <el-date-picker class="flex-1 !flex" v-model="formData.create_time" clearable type="datetime"
value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择创建时间"> value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择创建时间">
</el-date-picker> </el-date-picker>

View File

@ -0,0 +1,103 @@
const detailConfig = {
title: "用章申请",
config: [
{
label: "申请编号",
value: "num"
},
{
label: "盖章申请类型",
value: "types_text"
},
{
label: "文件类型",
value: "filetype_text"
},
{
label: "骑缝盖章",
value: "ridingseam_text"
},
{
label: "印章名称",
value: "name"
},
{
label: "盖章次数",
value: "frequency"
},
{
label: "限制次数",
value: "limit"
},
{
label: "组织",
value: "org_name"
},
{
label: "用印部门",
value: "dept_name"
},
{
label: "关联项目",
value: "projectInfo.project_name"
},
{
label: "项目负责人",
value: "project_director"
},
{
label: "盖章内容",
value: "content"
},
{
label: "印章是否外借",
value: "loan_text"
},
{
label: "印章借用日期",
value: "borrow"
},
{
label: "结束借用日期",
value: "returndate"
},
{
label: "申请人",
value: "applicant"
},
{
label: "申请日期",
value: "date"
},
{
label: "盖章人",
value: "stampman"
},
{
label: "实际借章日期",
value: "sjborrow"
},
{
label: "实际借章人",
value: "sjreturn"
},
{
label: "实际归还日期",
value: "sjreturn"
},
{
label: "实际归还人",
value: "returnee"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -71,7 +71,7 @@
<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 />
<el-table-column label="实际归还人" prop="returnee" show-overflow-tooltip /> <el-table-column label="实际归还人" prop="returnee" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="150" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['project_process_management.apply_with_seal/edit']" type="primary" link <el-button v-perms="['project_process_management.apply_with_seal/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -81,8 +81,13 @@
link @click="handleDelete(row.id)"> link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['project_process_management.apply_with_seal/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex justify-end mt-4"> <div class="flex justify-end mt-4">
@ -90,6 +95,7 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig" />
</div> </div>
</template> </template>
@ -100,12 +106,13 @@ import { apiApplyWithSealLists, apiApplyWithSealDelete, apiApplyWithSealDetail }
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import { apiCostProjectDatas } from "@/api/cost_project"; import { apiCostProjectDatas } from "@/api/cost_project";
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
@ -155,5 +162,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiApplyWithSealDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--验收管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -62,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--验收管理' : '新增项目咨询--验收管理'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align="center" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_build.consult_accept/edit']" type="primary" link <el-button v-perms="['consult_build.consult_accept/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_build.consult_accept/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -128,6 +137,15 @@ const handleDelete = async (id: number | any[]) => {
await apiConsultAcceptDelete({ id }) await apiConsultAcceptDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultAcceptDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getDirectory() getDirectory()
getLists() getLists()

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--合同管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -62,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--合同管理' : '新增项目咨询--合同管理'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_strategy.consult_contract/edit']" type="primary" link <el-button v-perms="['consult_strategy.consult_contract/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_strategy.consult_contract/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import { apiConsultDirectoryLists } from '@/api/consult_directory' import { apiConsultDirectoryLists } from '@/api/consult_directory'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -129,6 +138,16 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultContractDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
getDirectory() getDirectory()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--总控管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -62,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--总控管理' : '新增项目咨询--总控管理'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align="center" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_target.consult_control/edit']" type="primary" link <el-button v-perms="['consult_target.consult_control/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_target.consult_control/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -129,6 +138,15 @@ const handleDelete = async (id: number | any[]) => {
await apiConsultControlDelete({ id }) await apiConsultControlDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultControlDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getDirectory() getDirectory()
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--造价管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -1,147 +1,3 @@
<!-- <template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="项目id" prop="project_id">
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="文档名称" prop="title">
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
</el-form-item>
<el-form-item label="目录id" prop="directory_id">
<el-input v-model="formData.directory_id" clearable placeholder="请输入目录id" />
</el-form-item>
<el-form-item label="子目录" prop="subdirectory_id">
<el-input v-model="formData.subdirectory_id" clearable placeholder="请输入子目录" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
<el-form-item label="附件" prop="annex">
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
</el-form-item>
</el-form>
</popup>
</div>
</template>
<script lang="ts" setup name="consultCostEdit">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiConsultCostAdd, apiConsultCostEdit, apiConsultCostDetail } from '@/api/consult_cost'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--造价管理' : '新增项目咨询--造价管理'
})
//
const formData = reactive({
id: '',
project_id: '',
title: '',
directory_id: '',
subdirectory_id: '',
remark: '',
annex: '',
})
//
const formRules = reactive<any>({
project_id: [{
required: true,
message: '请输入项目id',
trigger: ['blur']
}],
title: [{
required: true,
message: '请输入文档名称',
trigger: ['blur']
}],
directory_id: [{
required: true,
message: '请输入目录id',
trigger: ['blur']
}],
subdirectory_id: [{
required: true,
message: '请输入子目录',
trigger: ['blur']
}],
remark: [{
required: true,
message: '请输入备注',
trigger: ['blur']
}]
})
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiConsultCostDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? await apiConsultCostEdit(data)
: await apiConsultCostAdd(data)
popupRef.value?.close()
emit('success')
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
defineExpose({
open,
setFormData,
getDetail
})
</script> -->
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" <popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@ -206,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--造价管理' : '新增项目咨询--造价管理'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align="center" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_strategy.consult_cost/edit']" type="primary" link <el-button v-perms="['consult_strategy.consult_cost/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_strategy.consult_cost/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -129,6 +138,15 @@ const handleDelete = async (id: number | any[]) => {
await apiConsultCostDelete({ id }) await apiConsultCostDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultCostDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getDirectory() getDirectory()
getLists() getLists()

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--决策管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align="center" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_target.consult_decision/edit']" type="primary" link <el-button v-perms="['consult_target.consult_decision/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,11 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_target.consult_decision/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +63,9 @@
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false"
:DirectoryList="DirectoryList" /> :DirectoryList="DirectoryList" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +77,14 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -128,6 +140,17 @@ const handleDelete = async (id: number | any[]) => {
await apiConsultDecisionDelete({ id }) await apiConsultDecisionDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultDecisionDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getDirectory() getDirectory()
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--报建管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -62,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--报建管理' : '新增项目咨询--报建管理'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align="center" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_strategy.consult_declare/edit']" type="primary" link <el-button v-perms="['consult_strategy.consult_declare/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_strategy.consult_declare/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,21 +62,26 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
<script lang="ts" setup name="consultDeclareLists"> <script lang="ts" setup name="consultDeclareLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiConsultDeclareLists, apiConsultDeclareDelete } from '@/api/consult_declare' import { apiConsultDeclareLists, apiConsultDeclareDelete, apiConsultDeclareDetail } from '@/api/consult_declare'
import { apiConsultDirectoryLists } from '@/api/consult_directory' import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -127,6 +136,15 @@ const handleDelete = async (id: number | any[]) => {
await apiConsultDeclareDelete({ id }) await apiConsultDeclareDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultDeclareDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getDirectory() getDirectory()
getLists() getLists()

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--需求研究及管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_target.consult_demand/edit']" type="primary" link <el-button v-perms="['consult_target.consult_demand/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_target.consult_demand/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false"
:DirectoryList="DirectoryList" /> :DirectoryList="DirectoryList" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -128,6 +137,16 @@ const handleDelete = async (id: number | any[]) => {
await apiConsultDemandDelete({ id }) await apiConsultDemandDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultDemandDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getDirectory() getDirectory()
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--设计管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -62,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--设计管理' : '新增项目咨询--设计管理'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align="center" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_strategy.consult_design/edit']" type="primary" link <el-button v-perms="['consult_strategy.consult_design/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_strategy.consult_design/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -130,6 +139,16 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultDesignDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getDirectory() getDirectory()
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,191 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :async="true" width="80vw" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="100px">
<el-descriptions :column="3" title="项目咨询--新开工项目管理" border>
<el-descriptions-item label="项目名称" label-align="left" align="left">
{{ formData.project_name }}
</el-descriptions-item>
<el-descriptions-item label="工程地点" label-align="left" align="left">
{{ formData.address }}
</el-descriptions-item>
<el-descriptions-item label="服务范围" label-align="left" align="left">
{{ formData.service_scope }}
</el-descriptions-item>
<el-descriptions-item label="建筑面积" label-align="left" align="left">
{{ formData.area }}
</el-descriptions-item>
<el-descriptions-item label="投资(万元)" label-align="left" align="left">
{{ formData.invest }}
</el-descriptions-item>
<el-descriptions-item label="基础类型" label-align="left" align="left">
{{ formData.basic_type }}
</el-descriptions-item>
<el-descriptions-item label="工期" label-align="left" align="left">
{{ formData.duration }}
</el-descriptions-item>
<el-descriptions-item label="结构类型" label-align="left" align="left">
{{ formData.structure_type }}
</el-descriptions-item>
<el-descriptions-item label="地上层数" label-align="left" align="left">
{{ formData.land_floors }}
</el-descriptions-item>
<el-descriptions-item label="地下层数" label-align="left" align="left">
{{ formData.underground_floors }}
</el-descriptions-item>
<el-descriptions-item label="业主单位" label-align="left" align="left">
{{ formData.owner_unit }}
</el-descriptions-item>
<el-descriptions-item label="业主单位联系人及电话" label-align="left" align="left">
{{ formData.owner_unit_contact }}
</el-descriptions-item>
<el-descriptions-item label="设计单位" label-align="left" align="left">
{{ formData.design_unit }}
</el-descriptions-item>
<el-descriptions-item label="设计单位联系人及电话" label-align="left" align="left">
{{ formData.design_unit_contact }}
</el-descriptions-item>
<el-descriptions-item label="勘察单位" label-align="left" align="left">
{{ formData.survey_unit }}
</el-descriptions-item>
<el-descriptions-item label="勘察单位" label-align="left" align="left">
{{ formData.survey_unit }}
</el-descriptions-item>
<el-descriptions-item label="勘察单位联系人及电话" label-align="left" align="left">
{{ formData.survey_unit_contact }}
</el-descriptions-item>
<el-descriptions-item label="施工单位" label-align="left" align="left">
{{ formData.build_unit }}
</el-descriptions-item>
<el-descriptions-item label="施工单位联系人及电话" label-align="left" align="left">
{{ formData.build_unit_contact }}
</el-descriptions-item>
<el-descriptions-item label="项目经理" label-align="left" align="left">
{{ formData.project_manager }}
</el-descriptions-item> <el-descriptions-item label="勘察单位" label-align="left" align="left">
{{ formData.survey_unit }}
</el-descriptions-item>
<el-descriptions-item label="项目副经理" label-align="left" align="left">
{{ formData.deputy_project_manager }}
</el-descriptions-item>
<el-descriptions-item label="专业工程师" label-align="left" align="left">
{{ formData.engineer }}
</el-descriptions-item> <el-descriptions-item label="其他事项情况说明" label-align="left" align="left">
{{ formData.content }}
</el-descriptions-item>
<el-descriptions-item label="填表人" label-align="left" align="left">
{{ formData.create_user }}
</el-descriptions-item>
<el-descriptions-item label="填表时间" label-align="left" align="left">
{{ formData.create_time }}
</el-descriptions-item>
</el-descriptions>
</el-form>
<el-card class="mt-5" v-if="formData.evolve.length">
<template #header>
项目组工作开展情况
</template>
<el-table :data="formData.evolve">
<el-table-column label="名称" prop="name" show-overflow-tooltip />
<el-table-column label="进展状态" prop="progress_status" show-overflow-tooltip />
<el-table-column label="项目组跟踪责任人" prop="resp_user" show-overflow-tooltip />
</el-table>
</el-card>
<el-card v-if="formData.preparation.length">
<template #header>
项目组后勤准备工作
</template>
<el-table :data="formData.preparation">
<el-table-column label="名称" prop="name" show-overflow-tooltip />
<el-table-column label="进展状态" prop="progress_status" show-overflow-tooltip />
<el-table-column label="项目组跟踪责任人" prop="resp_user" show-overflow-tooltip />
</el-table>
</el-card>
</popup>
</div>
</template>
<script lang="ts" setup name="supervisionInspectionEdit">
import Popup from '@/components/popup/index.vue'
import { apiconsult_project_evolve, apiconsult_project_preparation, } from '@/api/consult_new_start_project'
const emit = defineEmits(['success', 'close'])
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
//
const formData = reactive({
id: '',
project_id: '',
project_name: '',
address: '',
service_scope: '',
area: '',
invest: '',
basic_type: '',
duration: '',
structure_type: '',
land_floors: '',
underground_floors: '',
owner_unit: '',
owner_unit_contact: '',
design_unit: '',
design_unit_contact: '',
survey_unit: '',
survey_unit_contact: '',
build_unit: '',
build_unit_contact: '',
project_manager: '',
deputy_project_manager: '',
engineer: '',
content: '',
create_user: '',
create_time: '',
"evolve": [
],
"preparation": [
]
})
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
let res1 = await apiconsult_project_evolve({ new_start_project_id: formData.id })
formData.evolve = res1.lists
let res2 = await apiconsult_project_preparation({ new_start_project_id: formData.id })
formData.preparation = res2.lists
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
defineExpose({
open,
setFormData,
})
</script>

View File

@ -123,7 +123,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="填表间" prop="create_time"> <el-form-item label="填表间" prop="create_time">
<el-date-picker class="flex-1 !flex" v-model="formData.create_time" clearable <el-date-picker class="flex-1 !flex" v-model="formData.create_time" clearable
type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择创建时间"> type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择创建时间">
</el-date-picker> </el-date-picker>

View File

@ -44,7 +44,7 @@
<el-table-column label="投资(万元)" prop="invest" show-overflow-tooltip /> <el-table-column label="投资(万元)" prop="invest" show-overflow-tooltip />
<el-table-column label="基础类型" prop="basic_type" show-overflow-tooltip /> <el-table-column label="基础类型" prop="basic_type" show-overflow-tooltip />
<el-table-column label="工期" prop="duration" show-overflow-tooltip /> <el-table-column label="工期" prop="duration" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_basic.consult_new_start_project/edit']" type="primary" link <el-button v-perms="['consult_basic.consult_new_start_project/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -54,6 +54,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_basic.consult_new_start_project/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -63,6 +67,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detail-popup v-if="showDetail" ref="detailRef" @success="getLists" @close="showDetail = false" />
</div> </div>
</template> </template>
@ -73,10 +79,13 @@ import { apiConsultNewStartProjectLists, apiConsultNewStartProjectDelete, apiCon
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -127,6 +136,14 @@ const handleDelete = async (id: number | any[]) => {
await apiConsultNewStartProjectDelete({ id }) await apiConsultNewStartProjectDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultNewStartProjectDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--招采管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -62,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--招采管理' : '新增项目咨询--招采管理'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align="cneter" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_strategy.consult_procure/edit']" type="primary" link <el-button v-perms="['consult_strategy.consult_procure/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_strategy.consult_procure/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false"
:DirectoryList="DirectoryList" /> :DirectoryList="DirectoryList" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -127,6 +136,16 @@ const handleDelete = async (id: number | any[]) => {
await apiConsultProcureDelete({ id }) await apiConsultProcureDelete({ id })
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultProcureDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getDirectory() getDirectory()
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,136 @@
const detailConfig = {
title: "项目咨询--基本信息",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "项目编号",
value: "project_code"
},
{
label: "行业",
value: "industry_text"
},
{
label: "性质",
value: "nature_text"
}, {
label: "委托单位",
value: "company"
}, {
label: "建设区域",
value: "build_area_text"
}, {
label: "项目地址",
value: "address"
}, {
label: "项目级别",
value: "project_level_text"
}, {
label: "总投资(万元)",
value: "total_investment"
}, {
label: "立项日期",
value: "initiation_date"
}, {
label: "关联合同",
value: "contract"
}, {
label: "合同金额",
value: "contract_amount"
}, {
label: "合同服务内容",
value: "contract_content"
}, {
label: "项目规模及概况",
value: "project_overview"
}, {
label: "咨询范围",
value: "consult_content"
}, {
label: "备注",
value: "remark",
column: 1
}, {
label: "咨询开始日期",
value: "consult_start_date"
}, {
label: "咨询结束日期",
value: "consult_end_date"
},
{
label: "工程状态",
value: "engineering_status_text"
},
{
label: "咨询类型",
value: "consult_type_text"
},
{
label: "联系电话",
value: "telephone"
},
{
label: "委托联系人",
value: "consult_user"
},
{
label: "监管部门",
value: "supervision_department"
},
{
label: "实施部门",
value: "implementation_department"
},
{
label: "项目部",
value: "project_department"
},
{
label: "项目负责人员",
value: "project_manager"
},
{
label: "甲方单位",
value: "part_a_unit"
},
{
label: "项目归档",
value: "project_archiving_text"
},
{
label: "归档目录",
value: "archiving_directory"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -44,7 +44,7 @@
<el-table-column label="监管部门" prop="supervision_department" show-overflow-tooltip /> <el-table-column label="监管部门" prop="supervision_department" show-overflow-tooltip />
<el-table-column label="实施部门" prop="implementation_department" show-overflow-tooltip /> <el-table-column label="实施部门" prop="implementation_department" show-overflow-tooltip />
<el-table-column label="项目负责人员" prop="project_manager" show-overflow-tooltip /> <el-table-column label="项目负责人员" prop="project_manager" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="150" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_basic.consult_project/edit']" type="primary" link <el-button v-perms="['consult_basic.consult_project/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -54,6 +54,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_basic.consult_project/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -63,6 +67,7 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig" />
</div> </div>
</template> </template>
@ -70,13 +75,16 @@
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiConsultProjectLists, apiConsultProjectDelete, apiConsultProjectDetail } from '@/api/consult_project' import { apiConsultProjectLists, apiConsultProjectDelete, apiConsultProjectDetail } from '@/api/consult_project'
import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -127,5 +135,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultProjectDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--接收管理",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -1,147 +1,3 @@
<!-- <template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="项目id" prop="project_id">
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="文档名称" prop="title">
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
</el-form-item>
<el-form-item label="目录id" prop="directory_id">
<el-input v-model="formData.directory_id" clearable placeholder="请输入目录id" />
</el-form-item>
<el-form-item label="子目录" prop="subdirectory_id">
<el-input v-model="formData.subdirectory_id" clearable placeholder="请输入子目录" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
<el-form-item label="附件" prop="annex">
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
</el-form-item>
</el-form>
</popup>
</div>
</template>
<script lang="ts" setup name="consultReceiveEdit">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiConsultReceiveAdd, apiConsultReceiveEdit, apiConsultReceiveDetail } from '@/api/consult_receive'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--接收管理' : '新增项目咨询--接收管理'
})
//
const formData = reactive({
id: '',
project_id: '',
title: '',
directory_id: '',
subdirectory_id: '',
remark: '',
annex: '',
})
//
const formRules = reactive<any>({
project_id: [{
required: true,
message: '请输入项目id',
trigger: ['blur']
}],
title: [{
required: true,
message: '请输入文档名称',
trigger: ['blur']
}],
directory_id: [{
required: true,
message: '请输入目录id',
trigger: ['blur']
}],
subdirectory_id: [{
required: true,
message: '请输入子目录',
trigger: ['blur']
}],
remark: [{
required: true,
message: '请输入备注',
trigger: ['blur']
}]
})
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiConsultReceiveDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? await apiConsultReceiveEdit(data)
: await apiConsultReceiveAdd(data)
popupRef.value?.close()
emit('success')
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
defineExpose({
open,
setFormData,
getDetail
})
</script> -->
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" <popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@ -206,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--接收管理' : '新增项目咨询--接收管理'
}) })
// //

View File

@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_target.consult_receive/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,21 +62,26 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
<script lang="ts" setup name="consultReceiveLists"> <script lang="ts" setup name="consultReceiveLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiConsultReceiveLists, apiConsultReceiveDelete } from '@/api/consult_receive' import { apiConsultReceiveLists, apiConsultReceiveDelete, apiConsultReceiveDetail } from '@/api/consult_receive'
import { apiConsultDirectoryLists } from '@/api/consult_directory' import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -128,6 +137,16 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultReceiveDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getDirectory() getDirectory()
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--现场实施准备",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -62,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--现场实施准备' : '新增项目咨询--现场实施准备'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align='center' fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_build.consult_scene_execute/edit']" type="primary" link <el-button v-perms="['consult_build.consult_scene_execute/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_build.consult_scene_execute/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -130,6 +139,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultSceneExecuteDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
getDirectory() getDirectory()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--现场组织建设",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -62,7 +62,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--现场组织建设' : '新增项目咨询--现场组织建设'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align="center" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_build.consult_scene_org/edit']" type="primary" link <el-button v-perms="['consult_build.consult_scene_org/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_build.consult_scene_org/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -130,6 +139,16 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultSceneOrgDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
getDirectory() getDirectory()
</script> </script>

View File

@ -0,0 +1,36 @@
const detailConfig = {
title: "项目咨询--现成准备",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "文档名称",
value: "title"
},
{
label: "目录",
value: "directory_name"
},
{
label: "子目录",
value: "subdirectory_name"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -1,147 +1,3 @@
<!-- <template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="项目id" prop="project_id">
<el-input v-model="formData.project_id" clearable placeholder="请输入项目id" />
</el-form-item>
<el-form-item label="文档名称" prop="title">
<el-input v-model="formData.title" clearable placeholder="请输入文档名称" />
</el-form-item>
<el-form-item label="目录id" prop="directory_id">
<el-input v-model="formData.directory_id" clearable placeholder="请输入目录id" />
</el-form-item>
<el-form-item label="子目录" prop="subdirectory_id">
<el-input v-model="formData.subdirectory_id" clearable placeholder="请输入子目录" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
<el-form-item label="附件" prop="annex">
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
</el-form-item>
</el-form>
</popup>
</div>
</template>
<script lang="ts" setup name="consultScenePrepareEdit">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiConsultScenePrepareAdd, apiConsultScenePrepareEdit, apiConsultScenePrepareDetail } from '@/api/consult_scene_prepare'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--现场准备' : '新增项目咨询--现场准备'
})
//
const formData = reactive({
id: '',
project_id: '',
title: '',
directory_id: '',
subdirectory_id: '',
remark: '',
annex: '',
})
//
const formRules = reactive<any>({
project_id: [{
required: true,
message: '请输入项目id',
trigger: ['blur']
}],
title: [{
required: true,
message: '请输入文档名称',
trigger: ['blur']
}],
directory_id: [{
required: true,
message: '请输入目录id',
trigger: ['blur']
}],
subdirectory_id: [{
required: true,
message: '请输入子目录',
trigger: ['blur']
}],
remark: [{
required: true,
message: '请输入备注',
trigger: ['blur']
}]
})
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiConsultScenePrepareDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? await apiConsultScenePrepareEdit(data)
: await apiConsultScenePrepareAdd(data)
popupRef.value?.close()
emit('success')
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
}
defineExpose({
open,
setFormData,
getDetail
})
</script> -->
<template> <template>
<div class="edit-popup"> <div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" <popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@ -207,7 +63,7 @@ const showDialog = ref(false)
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目咨询--需求研究及管理' : '新增项目咨询--需求研究及管理' return mode.value == 'edit' ? '编辑项目咨询--现成准备' : '新增项目咨询--现成准备'
}) })
// //

View File

@ -38,7 +38,7 @@
<el-table-column label="文档名称" prop="title" show-overflow-tooltip /> <el-table-column label="文档名称" prop="title" show-overflow-tooltip />
<el-table-column label="目录" prop="directory_name" show-overflow-tooltip /> <el-table-column label="目录" prop="directory_name" show-overflow-tooltip />
<el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip /> <el-table-column label="子目录" prop="subdirectory_name" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" align="center" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['consult_build.consult_scene_prepare/edit']" type="primary" link <el-button v-perms="['consult_build.consult_scene_prepare/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -48,6 +48,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['consult_build.consult_scene_prepare/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -58,6 +62,8 @@
</el-card> </el-card>
<edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData" <edit-popup :DirectoryList="DirectoryList" v-if="showEdit" ref="editRef" :dict-data="dictData"
@success="getLists" @close="showEdit = false" /> @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig"
width="550px" :column="1" />
</div> </div>
</template> </template>
@ -69,10 +75,13 @@ import { apiConsultDirectoryLists } from '@/api/consult_directory'
import { apiConsultProjectSearch } from '@/api/consult_project' import { apiConsultProjectSearch } from '@/api/consult_project'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const DirectoryList = ref([]) const DirectoryList = ref([])
@ -129,6 +138,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiConsultScenePrepareDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
getDirectory() getDirectory()
</script> </script>

View File

@ -46,8 +46,7 @@
<el-table-column label="资料份数" prop="number" 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="position" show-overflow-tooltip />
<el-table-column label="说明" prop="tips" show-overflow-tooltip /> <el-table-column label="说明" prop="tips" show-overflow-tooltip />
<el-table-column label="操作" fixed="right">
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['data_reception/edit']" type="primary" link @click="handleEdit(row)"> <el-button v-perms="['data_reception/edit']" type="primary" link @click="handleEdit(row)">
编辑 编辑

View File

@ -0,0 +1,79 @@
const detailConfig = {
title: "项目进度汇报",
config: [
{
label: "单据编号",
value: "num"
},
{
label: "项目名称",
value: "projectInfo.project_name"
},
{
label: "项目编号",
value: "projectInfo.project_num"
},
{
label: "部门负责人",
value: "bm_master"
},
{
label: "委托单位",
value: "wt_unit"
},
{
label: "项目负责人",
value: "xm_master"
},
{
label: "实际开始日期",
value: "start_date"
},
{
label: "实际结束日期",
value: "end_date"
},
{
label: "工期(天)",
value: "duration"
},
{
label: "工时",
value: "working_hours"
},
{
label: "累计已完成进度",
value: "done_progress"
},
{
label: "本阶段完成进度",
value: "bjd_progress"
},
{
label: "登记人",
value: "djr"
},
{
label: "登记时间",
value: "apptime"
},
{
label: "形象进度描述",
value: "jdms"
},
{
label: "附件",
value: "annex",
column: 1
},
{
label: "文本输入框",
value: "fd_23",
column: 1
},
],
}
export default detailConfig;

View File

@ -142,14 +142,6 @@ const showDialog = ref(false)
const showDialog3 = ref(false) const showDialog3 = ref(false)
const personnel = ref<any>() const personnel = ref<any>()
const handleAvatarSuccess_four = (response: any) => {
formData.annex ||= []
// @ts-ignore
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
};
//
const delFileFn = (index: number) => { formData.annex.splice(index, 1) }
// //
const popupTitle = computed(() => { const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目进度汇报' : '新增项目进度汇报' return mode.value == 'edit' ? '编辑项目进度汇报' : '新增项目进度汇报'

View File

@ -52,7 +52,7 @@
<el-table-column label="登记人" prop="djr" 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="apptime" show-overflow-tooltip />
<el-table-column label="形象进度描述" prop="jdms" show-overflow-tooltip /> <el-table-column label="形象进度描述" prop="jdms" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="150" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['project_process_management.jianli_project_progress_report/edit']" <el-button v-perms="['project_process_management.jianli_project_progress_report/edit']"
type="primary" link @click="handleEdit(row)"> type="primary" link @click="handleEdit(row)">
@ -62,6 +62,10 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['project_process_management.jianli_project_progress_report/detail']"
link @click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -71,6 +75,7 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig" />
</div> </div>
</template> </template>
@ -81,10 +86,13 @@ import { apiJianliProjectProgressReportLists, apiJianliProjectProgressReportDele
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import { apiCostProjectDatas } from "@/api/cost_project"; import { apiCostProjectDatas } from "@/api/cost_project";
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -135,5 +143,15 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiJianliProjectProgressReportDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </script>

View File

@ -47,7 +47,7 @@
<el-table-column label="资质等级" prop="qualification_grade" show-overflow-tooltip /> <el-table-column label="资质等级" prop="qualification_grade" show-overflow-tooltip />
<el-table-column label="联系电话" prop="telephone" show-overflow-tooltip /> <el-table-column label="联系电话" prop="telephone" show-overflow-tooltip />
<el-table-column label="责任范围" prop="duty" show-overflow-tooltip /> <el-table-column label="责任范围" prop="duty" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['manage_basic.manage_company/edit']" type="primary" link <el-button v-perms="['manage_basic.manage_company/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">

View File

@ -61,7 +61,7 @@
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip /> <el-table-column label="项目编号" prop="projectInfo.project_num" 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="djrq" show-overflow-tooltip /> <el-table-column label="登记日期" prop="djrq" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['project_process_management.project_change_visa/edit']" type="primary" <el-button v-perms="['project_process_management.project_change_visa/edit']" type="primary"
link @click="handleEdit(row)"> link @click="handleEdit(row)">

View File

@ -0,0 +1,138 @@
const detailConfig = {
title: "项目进度款",
config: [
{
label: "单据编号",
value: "num"
},
{
label: "项目名称",
value: "projectInfo.project_name"
},
{
label: "项目编号",
value: "projectInfo.project_num"
},
{
label: "登记人",
value: "djr"
},
{
label: "登记日期",
value: "djrq"
},
{
label: "进度申报造价合计",
value: "sbhj"
},
{
label: "进度审核造价合计",
value: "shhj"
},
{
label: "累计应付工程款合计",
value: "ljhj"
},
{
label: "附件",
value: "annex",
column: 1
},
],
table: {
title: "进度明细",
tableConfig: [
{
label: "所在目录",
value: 'directory',
},
{
label: "单位工程名称",
value: 'unit_project_name'
},
{
label: "合同工程款总额",
value: 'contract_total_amount',
},
{
label: "合同付款比例",
value: 'dcntract_payment_rate',
},
{
label: "时间",
value: 'time',
},
{
label: "形象进度",
value: 'image_progress',
},
{
label: "申报造价(土建)",
value: 'declared_cost_tj',
},
{
label: "申报造价(安装)",
value: 'declared_cost_az',
},
{
label: "申报造价(其他)",
value: 'declared_cost_other',
},
{
label: "进度申报造价小计",
value: 'jdsbzj_xiaoji',
},
{
label: "审核造价(土建)",
value: 'audit_cost_tj',
},
{
label: "审核造价(安装)",
value: 'audit_cost_az',
},
{
label: "审核造价(其他)",
value: 'audit_cost_other',
},
{
label: "进度审核造价小计",
value: 'jdshzj_xiaoji',
},
{
label: "审核造价(其他)",
value: 'audit_cost_other',
},
{
label: "审减额(元)",
value: 'deduction_amount',
},
{
label: "完成产值比例(%)",
value: 'completed_rate',
},
{
label: "累计完成工程款",
value: 'ljwc_funds',
},
{
label: "当期应付工程款",
value: 'current_payable_funds',
},
{
label: "付款比例",
value: 'payment_rate',
},
{
label: "备注",
value: 'remark',
},
],
fetchFun: 'project_progress_payment_detail',
}
}
export default detailConfig;

View File

@ -54,7 +54,6 @@
</el-row> </el-row>
<el-form-item label="附件" prop="annex"> <el-form-item label="附件" prop="annex">
<uploadAnnex :formData="formData"></uploadAnnex> <uploadAnnex :formData="formData"></uploadAnnex>
</el-form-item> </el-form-item>
<el-dialog v-model="showDialog" title="选择项目" width="70%"> <el-dialog v-model="showDialog" title="选择项目" width="70%">
<dialogTable :config="cost_project" @customEvent="customEvent"> <dialogTable :config="cost_project" @customEvent="customEvent">
@ -74,8 +73,7 @@
<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="level" width="200px"> <el-table-column label="所在目录" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.directory" /> <el-input v-model="scope.row.directory" />
</template> </template>

View File

@ -77,7 +77,7 @@
<el-table-column label="进度申报造价合计" prop="sbhj" show-overflow-tooltip /> <el-table-column label="进度申报造价合计" prop="sbhj" show-overflow-tooltip />
<el-table-column label="进度审核造价合计" prop="shhj" show-overflow-tooltip /> <el-table-column label="进度审核造价合计" prop="shhj" show-overflow-tooltip />
<el-table-column label="累计应付工程款合计" prop="ljhj" show-overflow-tooltip /> <el-table-column label="累计应付工程款合计" prop="ljhj" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" fixed="right" align='center'>
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['project_process_management.project_progress_payment/edit']" <el-button v-perms="['project_process_management.project_progress_payment/edit']"
type="primary" link @click="handleEdit(row)"> type="primary" link @click="handleEdit(row)">
@ -87,6 +87,10 @@
type="danger" link @click="handleDelete(row.id)"> type="danger" link @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['project_process_management.project_progress_payment/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -96,6 +100,7 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig" />
</div> </div>
</template> </template>
@ -108,10 +113,13 @@ import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import { apiCostProjectDatas } from "@/api/cost_project"; import { apiCostProjectDatas } from "@/api/cost_project";
import { useDictOptions } from "@/hooks/useDictOptions" import { useDictOptions } from "@/hooks/useDictOptions"
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
const loading = ref(false) const loading = ref(false)
const queryCostProject = async (query: string) => { const queryCostProject = async (query: string) => {
@ -179,6 +187,14 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiProjectProgressPaymentDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </script>

View File

@ -46,7 +46,7 @@ const detailConfig = {
}, },
{ {
label: "任务类型", label: "任务类型",
value: 'task_type_text', value: 'task_type_id_text',
}, },
{ {
label: "专业类型", label: "专业类型",

View File

@ -56,7 +56,7 @@
<template #empty> <template #empty>
<span class="cursor-pointer">暂无数据点击添加 <el-button @click="handleAdd">+</el-button></span> <span class="cursor-pointer">暂无数据点击添加 <el-button @click="handleAdd">+</el-button></span>
</template> </template>
<el-table-column label="序号" v-if="mode == 'add'" width="150px"> <el-table-column label="序号" width="150px">
<template #default="{ row }"> <template #default="{ row }">
<el-button @click="handleAdd()">+</el-button> <el-button @click="handleAdd()">+</el-button>
<el-button @click="handleDelete(row)">-</el-button> <el-button @click="handleDelete(row)">-</el-button>
@ -66,27 +66,25 @@
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.task_name" readonly <el-input v-model="scope.row.task_name" readonly
@click="showDialog1 = true, tableIndex = scope.$index" placeholder="点击选择" @click="showDialog1 = true, tableIndex = scope.$index" placeholder="点击选择" />
:disabled="mode != 'add'" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="任务次级" prop="level" width="200px"> <el-table-column label="任务次级" prop="level" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.level" :disabled="mode != 'add'" /> <el-input v-model="row.level" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="工序" prop="process" width="200px"> <el-table-column label="工序" prop="process" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.process" :disabled="mode != 'add'" /> <el-input v-model="row.process" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="任务类型" prop="task_type_id" width="200px"> <el-table-column label="任务类型" prop="task_type_id" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-select class="flex-1" v-model="row.task_type_id" clearable placeholder="请选择任务类型" <el-select class="flex-1" v-model="row.task_type_id" clearable placeholder="请选择任务类型">
:disabled="mode != 'add'">
<el-option v-for="(item, index) in dictData.task_type" :key="index" <el-option v-for="(item, index) in dictData.task_type" :key="index"
:label="item.name" :value="parseInt(item.value)" /> :label="item.name" :value="parseInt(item.value)" />
</el-select> </el-select>
@ -96,7 +94,7 @@
<template #default="{ row }"> <template #default="{ row }">
<el-select class="flex-1" v-model="row.professional_type" clearable <el-select class="flex-1" v-model="row.professional_type" clearable
placeholder="请选择专业类型" :disabled="mode != 'add'"> placeholder="请选择专业类型">
<el-option v-for="(item, index) in dictData.major_type" :key="index" <el-option v-for="(item, index) in dictData.major_type" :key="index"
:label="item.name" :value="item.value" /> :label="item.name" :value="item.value" />
</el-select> </el-select>
@ -105,42 +103,41 @@
<el-table-column label="工程师" prop="engineer" width="200px"> <el-table-column label="工程师" prop="engineer" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.engineer" :disabled="mode != 'add'" <el-input v-model="scope.row.engineer" @click="userclick(scope.$index, 'engineer')" />
@click="userclick(scope.$index, 'engineer')" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="一级审核人" prop="first_reviewer" width="200px"> <el-table-column label="一级审核人" prop="first_reviewer" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.first_reviewer" :disabled="mode != 'add'" <el-input v-model="scope.row.first_reviewer"
@click="userclick(scope.$index, 'first_reviewer')" /> @click="userclick(scope.$index, 'first_reviewer')" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="二级审核人" prop="secondary_reviewer" width="200px"> <el-table-column label="二级审核人" prop="secondary_reviewer" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.secondary_reviewer" :disabled="mode != 'add'" <el-input v-model="scope.row.secondary_reviewer"
@click="userclick(scope.$index, 'secondary_reviewer')" /> @click="userclick(scope.$index, 'secondary_reviewer')" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="三级审核人" prop="third_level_reviewer" width="200px"> <el-table-column label="三级审核人" prop="third_level_reviewer" width="200px">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.third_level_reviewer" :disabled="mode != 'add'" <el-input v-model="scope.row.third_level_reviewer"
@click="userclick(scope.$index, 'third_level_reviewer')" /> @click="userclick(scope.$index, 'third_level_reviewer')" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="天数" prop="days" width="200px"> <el-table-column label="天数" prop="days" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.days" :disabled="mode != 'add'" /> <el-input v-model="row.days" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="开始日期" prop="start_date" width="220px"> <el-table-column label="开始日期" prop="start_date" width="220px">
<template #default="{ row }"> <template #default="{ row }">
<el-date-picker v-model="row.start_date" clearable type="date" value-format="YYYY-MM-DD" <el-date-picker v-model="row.start_date" clearable type="date" value-format="YYYY-MM-DD"
:disabled="mode != 'add'" placeholder="请选择日期"> placeholder="请选择日期">
</el-date-picker> </el-date-picker>
</template> </template>
</el-table-column> </el-table-column>
@ -148,50 +145,50 @@
<template #default="{ row }"> <template #default="{ row }">
<el-date-picker v-model="row.end_date" clearable type="date" value-format="YYYY-MM-DD" <el-date-picker v-model="row.end_date" clearable type="date" value-format="YYYY-MM-DD"
:disabled="mode != 'add'" placeholder="请选择日期"> placeholder="请选择日期">
</el-date-picker> </el-date-picker>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="中标金额(元)" prop="bid_winning_amount" width="200px"> <el-table-column label="中标金额(元)" prop="bid_winning_amount" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.bid_winning_amount" :disabled="mode != 'add'" /> <el-input v-model="row.bid_winning_amount" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="送审造价(元)" prop="cost" width="200px"> <el-table-column label="送审造价(元)" prop="cost" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.cost" :disabled="mode != 'add'" /> <el-input v-model="row.cost" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="第三方核定金额(元)" prop="approved_amount" width="200px"> <el-table-column label="第三方核定金额(元)" prop="approved_amount" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.approved_amount" :disabled="mode != 'add'" /> <el-input v-model="row.approved_amount" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="施工单位" prop="construction_unit" width="200px"> <el-table-column label="施工单位" prop="construction_unit" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.construction_unit" :disabled="mode != 'add'" /> <el-input v-model="row.construction_unit" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="联系人" prop="contact" width="200px"> <el-table-column label="联系人" prop="contact" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.contact" :disabled="mode != 'add'" /> <el-input v-model="row.contact" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="联系电话" prop="contact_phone" width="200px"> <el-table-column label="联系电话" prop="contact_phone" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.contact_phone" :disabled="mode != 'add'" /> <el-input v-model="row.contact_phone" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" prop="remark" width="200px"> <el-table-column label="备注" prop="remark" width="200px">
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.remark" :disabled="mode != 'add'" /> <el-input v-model="row.remark" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -206,6 +203,8 @@
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue' import Popup from '@/components/popup/index.vue'
import { apiTaskAllocationAdd, apiTaskAllocationEdit, } from '@/api/task_allocation' import { apiTaskAllocationAdd, apiTaskAllocationEdit, } from '@/api/task_allocation'
import { apiTaskDetailDelete } from '@/api/task_detail'
import { cost_project, task_type } from "@/components/dialogTable/dialogTableConfig" import { cost_project, task_type } from "@/components/dialogTable/dialogTableConfig"
import type { PropType } from 'vue' import type { PropType } from 'vue'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
@ -277,7 +276,8 @@ const handleAdd = () => {
} }
const handleDelete = (row: any) => { const handleDelete = async (row: any) => {
if (row.id) await apiTaskDetailDelete({ id: row.id });
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);
} }

View File

@ -36,7 +36,7 @@
<el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip /> <el-table-column label="项目编号" prop="projectInfo.project_num" show-overflow-tooltip />
<el-table-column label="项目负责人" prop="project_director" show-overflow-tooltip /> <el-table-column label="项目负责人" prop="project_director" show-overflow-tooltip />
<el-table-column label="登记日期" prop="apptime" show-overflow-tooltip /> <el-table-column label="登记日期" prop="apptime" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['task.task_allocation/edit']" type="primary" link <el-button v-perms="['task.task_allocation/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">

View File

@ -67,7 +67,7 @@ const detailConfig = {
}, },
{ {
label: "建筑结构类型", label: "建筑结构类型",
value: "types_text" value: "type_text"
}, },
{ {
label: "建筑用途", label: "建筑用途",

View File

@ -0,0 +1,107 @@
const detailConfig = {
title: "造价咨询--开票台账",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "项目编号",
value: "project_num"
},
{
label: "合同名称",
value: "contract_name"
},
{
label: "合同类型",
value: "contract_type"
},
{
label: "甲方签约单位",
value: "part_a"
},
{
label: "乙方签约单位",
value: "part_b"
},
{
label: "签订金额",
value: "sign_money"
},
{
label: "合同签订日期",
value: "sign_time"
},
{
label: "累计已开票",
value: "total_invoice_amount"
},
{
label: "累计已到账",
value: "total_refund_amount"
},
{
label: "开票编号",
value: "invoice_code"
},
{
label: "发票类型",
value: "invoice_type_text"
},
{
label: "开票申请金额",
value: "apply_amount"
},
{
label: "开票单位名称",
value: "apply_company"
},
{
label: "纳税人识别号",
value: "apply_company_number"
},
{
label: "开票单位注册地址",
value: "apply_company_address"
},
{
label: "开票单位电话",
value: "apply_company_telephone"
},
{
label: "开户银行",
value: "apply_company_bank"
},
{
label: "开户账号",
value: "apply_company_account"
},
{
label: "开票联系人",
value: "apply_contact"
},
{
label: "对应付款方式",
value: "pay_type"
},
{
label: "开票内容",
value: "invoice_content"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
],
}
export default detailConfig;

View File

@ -51,7 +51,7 @@
<el-table-column label="是否到账" prop="is_refund" show-overflow-tooltip /> <el-table-column label="是否到账" prop="is_refund" show-overflow-tooltip />
<el-table-column label="开票申请金额" prop="apply_amount" show-overflow-tooltip /> <el-table-column label="开票申请金额" prop="apply_amount" show-overflow-tooltip />
<el-table-column label="到账金额" prop="refund_amount" show-overflow-tooltip /> <el-table-column label="到账金额" prop="refund_amount" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="150" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['zjzx_finance.zjzx_invoice/edit']" type="primary" link <el-button v-perms="['zjzx_finance.zjzx_invoice/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -61,6 +61,9 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['zjzx_finance.zjzx_invoice/detail']" link @click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -70,6 +73,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig" />
</div> </div>
</template> </template>
@ -80,11 +85,13 @@ import { apiZjzxInvoiceLists, apiZjzxInvoiceDelete, apiZjzxInvoiceDetail } from
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import { apiCostProjectDatas } from "@/api/cost_project"; import { apiCostProjectDatas } from "@/api/cost_project";
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
@ -134,5 +141,14 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiZjzxInvoiceDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,79 @@
const detailConfig = {
title: "造价咨询--到账台账",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "项目编号",
value: "project_num"
},
{
label: "合同名称",
value: "contract_name"
},
{
label: "合同类型",
value: "contract_type"
},
{
label: "甲方签约单位",
value: "part_a"
},
{
label: "乙方签约单位",
value: "part_b"
},
{
label: "签约金额",
value: "sign_money"
},
{
label: "合同签订日期",
value: "sign_time"
},
{
label: "开票申请金额",
value: "apply_amount"
},
{
label: "累计已开票",
value: "total_invoice_amount"
},
{
label: "累计已到账",
value: "total_refund_amount"
},
{
label: "开票编号",
value: "invoice_code"
},
{
label: "本次到账金额",
value: "amount"
},
{
label: "到账日期",
value: "date"
},
{
label: "说明",
value: "remark"
},
{
label: "创建人",
value: "create_user"
},
{
label: "创建时间",
value: "create_time"
},
],
}
export default detailConfig;

View File

@ -10,8 +10,6 @@
placeholder="点击选择项目" /> placeholder="点击选择项目" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="项目编号"> <el-form-item label="项目编号">
<el-input v-model="formData.project_num" disabled /> <el-input v-model="formData.project_num" disabled />
@ -46,7 +44,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="签订金额"> <el-form-item label="签订时间">
<el-input v-model="formData.sign_time" disabled /> <el-input v-model="formData.sign_time" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -67,13 +65,6 @@
<el-input v-model="formData.total_refund_amount" disabled /> <el-input v-model="formData.total_refund_amount" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="开票编号" prop="invoice_id"> <el-form-item label="开票编号" prop="invoice_id">
<el-input v-model="formData.invoice_code" clearable placeholder="点击选择开票台账" <el-input v-model="formData.invoice_code" clearable placeholder="点击选择开票台账"

View File

@ -42,7 +42,7 @@
<el-table-column label="到账日期" prop="date" show-overflow-tooltip /> <el-table-column label="到账日期" prop="date" show-overflow-tooltip />
<el-table-column label="甲方单位" prop="part_a" show-overflow-tooltip /> <el-table-column label="甲方单位" prop="part_a" show-overflow-tooltip />
<el-table-column label="乙方单位" prop="part_b" show-overflow-tooltip /> <el-table-column label="乙方单位" prop="part_b" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="150" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['zjzx_finance.zjzx_refund/edit']" type="primary" link <el-button v-perms="['zjzx_finance.zjzx_refund/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -52,6 +52,9 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['zjzx_finance.zjzx_refund/detail']" link @click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -61,6 +64,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig" />
</div> </div>
</template> </template>
@ -72,10 +77,13 @@ import { apiZjzxInvoiceDatas } from '@/api/zjzx_invoice'
import { apiCostProjectDatas } from "@/api/cost_project"; import { apiCostProjectDatas } from "@/api/cost_project";
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
@ -125,5 +133,14 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiZjzxRefundDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </script>

View File

@ -0,0 +1,67 @@
const detailConfig = {
title: "造价咨询--项目结算",
config: [
{
label: "项目名称",
value: "project_name"
},
{
label: "项目编号",
value: "project_num"
},
{
label: "合同名称",
value: "contract_name"
},
{
label: "合同类型",
value: "contract_type"
},
{
label: "甲方签约单位",
value: "part_a"
},
{
label: "乙方签约单位",
value: "part_b"
},
{
label: "签订金额",
value: "sign_money"
},
{
label: "合同签订日期",
value: "sign_time"
},
{
label: "累计已开票",
value: "total_invoice_amount"
},
{
label: "累计已到账",
value: "amount"
},
{
label: "结算日期",
value: "date"
},
{
label: "备注",
value: "remark",
column: 1
},
{
label: "附件",
value: "annex",
column: 1
},
],
}
export default detailConfig;

View File

@ -40,7 +40,7 @@
<el-table-column label="结算日期" prop="date" show-overflow-tooltip /> <el-table-column label="结算日期" prop="date" show-overflow-tooltip />
<el-table-column label="已开票金额" prop="total_invoice_amount" show-overflow-tooltip /> <el-table-column label="已开票金额" prop="total_invoice_amount" show-overflow-tooltip />
<el-table-column label="已回款金额" prop="total_refund_amount" show-overflow-tooltip /> <el-table-column label="已回款金额" prop="total_refund_amount" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="150" fixed="right" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button v-perms="['zjzx_finance.zjzx_settlement/edit']" type="primary" link <el-button v-perms="['zjzx_finance.zjzx_settlement/edit']" type="primary" link
@click="handleEdit(row)"> @click="handleEdit(row)">
@ -50,6 +50,10 @@
@click="handleDelete(row.id)"> @click="handleDelete(row.id)">
删除 删除
</el-button> </el-button>
<el-button v-perms="['zjzx_finance.zjzx_settlement/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -59,6 +63,8 @@
</div> </div>
</el-card> </el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" /> <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
<detailPage v-if="showDetail" ref="detailRef" @close="showDetail = false" :detailConfig="detailConfig" />
</div> </div>
</template> </template>
@ -69,11 +75,13 @@ import { apiZjzxSettlementLists, apiZjzxSettlementDelete, apiZjzxSettlementDetai
import { apiCostProjectDatas } from "@/api/cost_project"; import { apiCostProjectDatas } from "@/api/cost_project";
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import EditPopup from './edit.vue' import EditPopup from './edit.vue'
import detailConfig from './detail'
const editRef = shallowRef<InstanceType<typeof EditPopup>>() const editRef = shallowRef<InstanceType<typeof EditPopup>>()
const detailRef = ref('')
// //
const showEdit = ref(false) const showEdit = ref(false)
const showDetail = ref(false)
// //
const queryParams = reactive({ const queryParams = reactive({
@ -121,5 +129,14 @@ const handleDelete = async (id: number | any[]) => {
getLists() getLists()
} }
//
const handleDetail = async (row) => {
let res = await apiZjzxSettlementDetail({ id: row.id })
showDetail.value = true
await nextTick()
detailRef.value?.open()
detailRef.value?.setFormData(res)
}
getLists() getLists()
</script> </script>