项目列表

This commit is contained in:
jia 2024-01-08 18:13:35 +08:00
parent 1afe45fbce
commit 1c8479b198
161 changed files with 4285 additions and 1118 deletions

View File

@ -0,0 +1,26 @@
import request from '@/utils/request'
// 项目WBS表列表
export function apiProjectbudgetLists(params: any) {
return request.get({ url: '/project.project_total_budget/lists', params })
}
// 添加项目WBS
export function apiProjectbudgetAdd(params: any) {
return request.post({ url: '/project.project_total_budget/add', params })
}
// 编辑项目WBS
export function apiProjectbudgetEdit(params: any) {
return request.post({ url: '/project.project_total_budget/edit', params })
}
// 删除项目WBS
export function apiProjectbudgetDelete(params: any) {
return request.post({ url: '/project.project_total_budget/delete', params })
}
// 项目WBS详情
export function apiProjectbudgetDetail(params: any) {
return request.get({ url: '/project.project_total_budget/detail', params })
}

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -202,9 +202,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -177,9 +177,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -176,9 +176,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -189,9 +189,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -26,7 +26,7 @@
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }}查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
@ -42,7 +42,7 @@
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.technical_review_annex && formData.technical_review_annex.length > 0">
<div v-for="(item, index) in formData.technical_review_annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }}查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
@ -61,7 +61,7 @@
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.business_contract_deviation_annex && formData.business_contract_deviation_annex.length > 0">
<div v-for="(item, index) in formData.business_contract_deviation_annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }}查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>

View File

@ -153,9 +153,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -128,9 +128,13 @@ defineExpose({
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -295,9 +295,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -142,9 +142,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -143,9 +143,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -3,95 +3,68 @@
<div class="detail-popup">
<popup ref="popupRef" title="竞争对手详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="组织">
{{ formData.org_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="部门">
{{ formData.dept_name }}
<el-descriptions :column="2" border>
<el-descriptions-item label="组织名称" label-align="left" align="left" label-class-name="my-label">{{ formData.org_name }}</el-descriptions-item>
<el-descriptions-item label="部门名称" label-align="left" align="left" label-class-name="my-label">{{ formData.dept_name }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目名称">
{{ formData.project_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称">
{{ formData.custom_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目编码">
{{ formData.project_code }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求名称">
<el-descriptions-item label="需求名称" label-align="left" align="left" label-class-name="my-label">
{{ formData.customer_demand_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="竞争对手名称">
{{ formData.competitor_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="竞争对手联系人">
{{ formData.competitor_contacts }}
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="竞争对手名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.competitor_name
}}</el-descriptions-item>
<el-descriptions-item label="竞争对手联系人" label-align="left" align="left" label-class-name="my-label"> {{ formData.competitor_contacts
</el-col>
<el-col :span="12">
<el-form-item label="联系人电话">
{{ formData.competitor_contacts_phone }}
</el-form-item>
</el-col>
}}</el-descriptions-item>
<el-descriptions-item label="联系人电话" label-align="left" align="left" label-class-name="my-label"> {{ formData.competitor_contacts_phone
}}</el-descriptions-item>
<el-descriptions-item label="竞争能力" label-align="left" align="left" label-class-name="my-label"> {{ formData.competitive_power
}}</el-descriptions-item>
<el-descriptions-item label="竞争对手优势" label-align="left" align="left" label-class-name="my-label"> {{ formData.competitor_advantages
}}</el-descriptions-item>
<el-descriptions-item label="竞争对手劣势" label-align="left" align="left" label-class-name="my-label"> {{ formData.competitor_disadvantages
}}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{ formData.remark
}}</el-descriptions-item>
<el-col :span="12">
<el-form-item label="竞争能力">
{{ formData.competitive_power }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="竞争对手优势">
{{ formData.competitor_advantages }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="竞争对手劣势">
{{ formData.competitor_disadvantages }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注">
{{ formData.remark }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="附件">
<div v-if="formData.annex && formData.annex.length > 0">
<el-descriptions-item label="添加人" label-align="left" align="left" label-class-name="my-label"> {{ formData.add_user_name
}}</el-descriptions-item>
<el-descriptions-item label="创建日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.create_time
}}</el-descriptions-item>
<el-descriptions-item label="更新人" label-align="left" align="left" label-class-name="my-label"> {{ formData.update_user_name
}}</el-descriptions-item>
<el-descriptions-item label="更新日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.update_time
}}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }}查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>暂无附件</div>
</el-form-item>
</el-col>
</el-row>
</el-card>
<div v-else>
暂无附件
</div>
</el-descriptions-item>
</el-descriptions>
</el-form>
</popup>
</div>
@ -174,9 +147,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -3,119 +3,240 @@
<div class="detail-popup">
<popup ref="popupRef" title="项目合同详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="合同名称">
{{ formData.contract_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同编号">
{{ formData.contract_code }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="合同类型">
<dict-value :options="dictData.contract_type" :value="formData.contract_type" />
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="合同计价方式">
<dict-value :options="dictData.contract_pricing_method" :value="formData.contract_pricing_method" />
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="甲方">
{{ formData.party_a }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="甲方主要负责人">
{{ formData.party_a_diretor }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="甲方电话">
{{ formData.party_a_phone }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="甲方手机">
{{ formData.party_a_mobile }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="甲方邮箱">
{{ formData.party_a_email }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="合同名称">
{{ formData.contract_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="乙方">
{{ formData.party_b }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="乙方主要负责人">
{{ formData.party_b_diretor }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="乙方电话">
{{ formData.party_a_phone }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="乙方手机">
{{ formData.party_b_mobile }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="乙方邮箱">
{{ formData.party_b_email }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="金额">
{{ formData.amount }}
</el-form-item>
</el-col>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="合同信息" name="demo-tabs-1">
<el-descriptions :column="2" border>
<el-col :span="12">
<el-form-item label="金额大写">
{{ formData.amount_daxie }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="业务负责人">
{{ formData.business_director }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同有效期">
{{ formData.expire }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="签约日期">
{{ formData.contract_date }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="主要条款">
{{ formData.main_content }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注">
{{ formData.remark }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="附件" prop="field127">
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="投标编号" label-align="left" align="left" label-class-name="my-label">{{ formData.bid_document_no }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="合同名称" label-align="left" align="left" label-class-name="my-label">{{ formData.contract_code }}</el-descriptions-item>
<el-descriptions-item label="合同编号" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="合同类型" label-align="left" align="left" label-class-name="my-label">
{{ formData.contract_type_text }}
</el-descriptions-item>
<el-descriptions-item label="合同计价方式" label-align="left" align="left" label-class-name="my-label"> {{ formData.contract_pricing_method_text
}}</el-descriptions-item>
<el-descriptions-item label="甲方" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a
}}</el-descriptions-item>
<el-descriptions-item label="乙方" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b }}</el-descriptions-item>
<el-descriptions-item label="通讯地址" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_contact_address
}}</el-descriptions-item>
<el-descriptions-item label="通讯地址" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_contact_address
}}</el-descriptions-item>
<el-descriptions-item label="主要负责人" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_diretor
}}</el-descriptions-item>
<el-descriptions-item label="主要负责人" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_diretor
}}</el-descriptions-item>
<el-descriptions-item label="电话" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_phone
}}</el-descriptions-item>
<el-descriptions-item label="电话" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_phone
}}</el-descriptions-item>
<el-descriptions-item label="手机" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_mobile
}}</el-descriptions-item>
<el-descriptions-item label="手机" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_mobile
}}</el-descriptions-item>
<el-descriptions-item label="邮箱" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_a_email
}}</el-descriptions-item>
<el-descriptions-item label="邮箱" label-align="left" align="left" label-class-name="my-label"> {{ formData.party_b_email
}}</el-descriptions-item>
<el-descriptions-item label="金额" label-align="left" align="left" label-class-name="my-label"> {{ formData.amount
}}</el-descriptions-item>
<!-- <el-descriptions-item label="金额大写" label-align="left" align="left" label-class-name="my-label"> {{ formData.amount
}}</el-descriptions-item> -->
<el-descriptions-item label="业务负责人" label-align="left" align="left" label-class-name="my-label"> {{ formData.business_director_name
}}</el-descriptions-item>
<el-descriptions-item label="状态" label-align="left" align="left" label-class-name="my-label"> {{ formData.contract_status_text
}}</el-descriptions-item>
<el-descriptions-item label="合同有效期" label-align="left" align="left" label-class-name="my-label"> {{ formData.expire
}}</el-descriptions-item>
<el-descriptions-item label="签约日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.contract_date
}}</el-descriptions-item>
<el-descriptions-item label="主要条款" label-align="left" align="left" label-class-name="my-label"> {{ formData.main_content
}}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{ formData.remark
}}</el-descriptions-item>
<el-descriptions-item label="合同附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
<div v-if="formDataannex.length > 0">
<div v-for="(item, index) in formDataannex" :key="index" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
<!-- <span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span> -->
</div>
</div>
<div v-else>暂无文件</div>
</el-form-item>
</el-col>
</el-row>
</el-card>
<div v-else>
暂无附件
</div>
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="洽商" name="demo-tabs-2">
<div>
<el-table :data="tableData" stripe style="width: 100%">
<el-table-column label="解决方案主题" prop='customer_demand_name' width="180" />
<el-table-column label="提交时间" prop='submission_time' width="180" />
<el-table-column label="方案内容" prop='solution_content' />
<el-table-column label="客户反馈" prop='customer_feedback' />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
</el-tab-pane>
<el-tab-pane label="发票" name="demo-tabs-3">
<div>
<el-table :data="tableData1" stripe style="width: 100%">
<el-table-column label="概算来源" prop='estimate_source_text' width="180" />
<el-table-column label="制单人" prop='create_user' width="180" />
<el-table-column label="报价日期" prop='quotation_date' />
<el-table-column label="技术人员" prop='technician_name' width="180" />
<el-table-column label="概算金额(万元)" prop='estimate_amount' width="180" />
<el-table-column label="要求" prop='ask' />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager2.page_no" v-model:page-size="pager2.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total1" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />
</div>
</el-tab-pane>
<el-tab-pane label="回款" name="demo-tabs-4">
<div>
<el-table :data="tableData2" stripe style="width: 100%">
<el-table-column label="竞争对手名称" prop='competitor_name' width="180" />
<el-table-column label="竞争对手联系人" prop='competitor_contacts' width="180" />
<el-table-column label="联系人电话" prop='competitor_contacts_phone' />
<el-table-column label="竞争能力" prop='competitive_power' />
<el-table-column label="竞争对手优势" prop='competitor_advantages' />
<el-table-column label="竞争对手劣势" prop='competitor_disadvantages' />
<el-table-column label="备注" prop='remark' />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager3.page_no" v-model:page-size="pager3.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total2" @size-change="handleSizeChange3" @current-change="handleCurrentChange3" />
</div>
</el-tab-pane>
<el-tab-pane label="退款" name="demo-tabs-5">
<div>
<el-table :data="tableData2" stripe style="width: 100%">
<el-table-column label="竞争对手名称" prop='competitor_name' width="180" />
<el-table-column label="竞争对手联系人" prop='competitor_contacts' width="180" />
<el-table-column label="联系人电话" prop='competitor_contacts_phone' />
<el-table-column label="竞争能力" prop='competitive_power' />
<el-table-column label="竞争对手优势" prop='competitor_advantages' />
<el-table-column label="竞争对手劣势" prop='competitor_disadvantages' />
<el-table-column label="备注" prop='remark' />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager3.page_no" v-model:page-size="pager3.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total2" @size-change="handleSizeChange3" @current-change="handleCurrentChange3" />
</div>
</el-tab-pane>
<el-tab-pane label="结算" name="demo-tabs-6">
<div>
<el-table :data="tableData2" stripe style="width: 100%">
<el-table-column label="竞争对手名称" prop='competitor_name' width="180" />
<el-table-column label="竞争对手联系人" prop='competitor_contacts' width="180" />
<el-table-column label="联系人电话" prop='competitor_contacts_phone' />
<el-table-column label="竞争能力" prop='competitive_power' />
<el-table-column label="竞争对手优势" prop='competitor_advantages' />
<el-table-column label="竞争对手劣势" prop='competitor_disadvantages' />
<el-table-column label="备注" prop='remark' />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager3.page_no" v-model:page-size="pager3.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total2" @size-change="handleSizeChange3" @current-change="handleCurrentChange3" />
</div>
</el-tab-pane>
</el-tabs>
</el-form>
</popup>
</div>
@ -126,7 +247,14 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { apiCustomerDemandSolutionLists } from '@/api/customer_demand_solution'
import { apiProjectEstimateLists } from '@/api/project_estimate'
import { apiCompetitorLists } from '@/api/competitor'
import { timeFormat } from '@/utils/util'
import type { TabsPaneContext } from 'element-plus'
const activeName = ref('demo-tabs-1')
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -134,6 +262,26 @@ defineProps({
default: () => ({})
}
})
const pager1 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
})
const pager2 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
})
const pager3 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
})
const total = ref(0)
const total1 = ref(0)
const total2 = ref(0)
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
@ -143,19 +291,85 @@ const datas = reactive({
cityOptions: [],
areaOptions: [],
});
const tableData = ref([])
const tableData1 = ref([])
const tableData2 = ref([])
const handleClick = (tab: TabsPaneContext, event: Event) => {
console.log(tab, event)
}
//
const formData = reactive({
})
//
const handleSizeChange1 = (val: number) => {
pager1.page_size = val
solutionLists()
}
const handleSizeChange2 = (val: number) => {
pager2.page_size = val
estimateLists()
}
const handleSizeChange3 = (val: number) => {
pager3.page_size = val
competitorLists()
}
//
const handleCurrentChange1 = (val: number) => {
console.log(`current page: ${val}`)
pager1.page_no = val
solutionLists()
}
const handleCurrentChange2 = (val: number) => {
console.log(`current page: ${val}`)
pager2.page_no = val
estimateLists()
}
const handleCurrentChange3 = (val: number) => {
pager3.page_no = val
console.log(`current page: ${val}`)
competitorLists()
}
//
const solutionLists = () => {
apiCustomerDemandSolutionLists(pager1).then((res) => {
tableData.value = res.lists
total.value = res.count
})
}
//
const estimateLists = () => {
apiProjectEstimateLists(pager2).then((res) => {
tableData1.value = res.lists
total1.value = res.count
})
}
//
const competitorLists = () => {
apiCompetitorLists(pager3).then((res) => {
tableData2.value = res.lists
total2.value = res.count
})
}
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
pager1.customer_demand_id = data.id
pager2.customer_demand_id = data.id
pager3.customer_demand_id = data.id
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
@ -165,8 +379,9 @@ const setFormData = async (data: Record<any, any>) => {
});
Object.assign(formDataannex, arry1)
}
competitorLists()
solutionLists()
estimateLists()
}
const getDetail = async (row: Record<string, any>) => {
@ -207,9 +422,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -22,11 +22,11 @@
</el-form-item></el-col>
<el-col :span="8">
<el-form-item label="项目名称" prop="buy_bidding_document_id" @click="tanchuan" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="document_name" readonly clearable placeholder="请选择项目" />
<el-input v-model="project_name" readonly clearable placeholder="请选择项目" />
</el-form-item></el-col>
<el-col :span="8">
<el-form-item label="项目编码" prop="buy_bidding_document_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="document_code" clearable disabled placeholder="系统自动填写" />
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item></el-col>
<el-col :span="8">
<el-form-item label="合同名称" prop="contract_name" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
@ -87,10 +87,10 @@
<el-input v-model="formData.amount" clearable placeholder="请输入金额" @input="amountinput" />
</el-form-item></el-col><el-col :span="8">
<el-form-item label="金额大写" prop="amount_daxie">
<el-input v-model="formData.amount_daxie" readonly clearable placeholder="请输入金额大写" />
<el-input v-model="amount_daxie" readonly clearable placeholder="请输入金额大写" />
</el-form-item></el-col><el-col :span="8">
<el-form-item label="业务负责人" prop="business_director">
<el-input v-model="formData.business_director" clearable placeholder="请输入业务负责人" />
<el-form-item label="业务负责人" prop="business_director" @click="userclick">
<el-input v-model="business_director_name" readonly clearable placeholder="请输入业务负责人" />
</el-form-item></el-col>
<el-col :span="24">
@ -149,6 +149,7 @@
<el-dialog v-model="showDialog2" title="选择项目" width="70%">
<projectTable @customEvent="customEvent2" :customer_id="formData.customer_id"></projectTable>
</el-dialog>
<personnelselector ref="personnel" @confirm="submituser" type="1"></personnelselector>
</div>
</template>
@ -158,6 +159,7 @@ import Popup from '@/components/popup/index.vue'
import biddocumentTable from "@/components/biddocument/index.vue"
import reviewprocess from '@/components/reviewprocess/index.vue'
import projectTable from "@/components/project/index.vue"
import personnelselector from '@/components/personnelselector/index.vue'
import { apiContractAdd, apiContractEdit, apiContractDetail } from '@/api/contract'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
@ -180,11 +182,14 @@ const showDialog = ref(false)
const showDialog1 = ref(false)
const showDialog2 = ref(false)
const custom_name = ref('')
const document_name = ref('')
const document_code = ref('')
const project_name = ref('')
const project_code = ref('')
const bidding_code = ref('')
const amount_daxie = ref('')
const business_director_name = ref('')
const list1 = reactive([])
const list2 = reactive([])
const personnel = ref<any>()
import { deptAll } from '@/api/org/department'
import { getAll } from '@/api/org/organization'
import feedback from '@/utils/feedback'
@ -232,7 +237,18 @@ const handleAvatarSuccess_four = (
const delFileFn = (index: number) => {
formDataannex.splice(index, 1)
}
//
const userclick = () => {
// console.log(personnel.value, '1111111')
personnel.value.open()
}
//
const submituser = (e: any) => {
formData.business_director = e.id;
business_director_name.value = e.name;
}
//
const tanchuan = () => {
if (formData.customer_id) {
@ -251,14 +267,14 @@ const customEvent = (e: any) => {
};
const customEvent1 = (e: any) => {
formData.buy_bidding_document_id = e.id;
document_name.value = e.project_name;
document_code.value = e.project_code
project_name.value = e.project_name;
project_code.value = e.project_code
bidding_code.value = e.bid_document_no
showDialog1.value = false;
};
const customEvent2 = (e: any) => {
document_name.value = e.name;
document_code.value = e.project_code
project_name.value = e.name;
project_code.value = e.project_code
showDialog2.value = false;
};
@ -266,7 +282,7 @@ const customEvent2 = (e: any) => {
const amountinput = (e) => {
// console.log(e)
if (e && e > 0) {
formData.amount_daxie = toChinesNum(e)
amount_daxie.value = toChinesNum(e)
}
}
//
@ -327,7 +343,7 @@ const formData = reactive({
party_b_mobile: '',
party_b_email: '',
amount: '',
amount_daxie: '',
business_director: '',
contract_status: '',
expire: '',
@ -362,17 +378,21 @@ const setFormData = async (data: Record<any, any>) => {
if (data.dept_id) {
getlist1(data.org_id)
}
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
custom_name.value = data.custom.name
document_name.value = data.document.bid_company_name
document_code.value = data.document.bid_document_no
bidding_code.value = data.document.bid_document_no
if (data.amount) {
amountinput(data.amount)
}
custom_name.value = data.custom_name
project_name.value = data.project_name
project_code.value = data.project_code
bidding_code.value = data.bid_document_no
business_director_name.value = data.business_director_name
}
const getDetail = async (row: Record<string, any>) => {

View File

@ -31,11 +31,12 @@
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="客户名称" prop="customer_name" show-overflow-tooltip />
<el-table-column label="审批id" prop="approve_id" show-overflow-tooltip />
<el-table-column label="流程编号" prop="code" show-overflow-tooltip />
<el-table-column label="合同编号" prop="bid_document_no" show-overflow-tooltip />
<el-table-column label="客户名称" prop="custom_name" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
<el-table-column label="合同类型" prop="contract_type">
<template #default="{ row }">
<dict-value :options="dictData.contract_type" :value="row.contract_type" />

View File

@ -163,9 +163,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -471,11 +471,15 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -476,11 +476,15 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -476,11 +476,15 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -343,9 +343,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -568,9 +568,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -17,7 +17,8 @@
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }} 查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>

View File

@ -19,7 +19,8 @@
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }} 查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>

View File

@ -34,8 +34,8 @@
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }} 查看</a>
</div>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
<div v-else>
暂无文件

View File

@ -120,7 +120,7 @@
<el-form-item label="附件" prop="field87">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }}查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>

View File

@ -5,84 +5,58 @@
<el-form ref="formRef" :model="formData" label-width="120px">
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="需求详情" name="first">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="组织">
{{ formData.org_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="部门">
{{ formData.dept_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目名称">
{{ formData.project_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称">
{{ formData.custom_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目编码">
{{ formData.project_code }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求主题">
<el-descriptions :column="2" border>
<el-descriptions-item label="组织名称" label-align="left" align="left" label-class-name="my-label">{{ formData.org_name }}</el-descriptions-item>
<el-descriptions-item label="部门名称" label-align="left" align="left" label-class-name="my-label">{{ formData.dept_name }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="需求主题" label-align="left" align="left" label-class-name="my-label">
{{ formData.theme }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求提供人">
{{ formData.supplier }}
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="客户需求提供人" label-align="left" align="left" label-class-name="my-label"> {{ formData.supplier
}}</el-descriptions-item>
<el-descriptions-item label="提供人联系方式" label-align="left" align="left" label-class-name="my-label"> {{ formData.supplier_contacts
</el-col>
<el-col :span="12">
<el-form-item label="提供人联系方式">
{{ formData.supplier_contacts }}
</el-form-item>
</el-col>
}}</el-descriptions-item>
<el-col :span="24">
<el-form-item label="重要程度">
<dict-value :options="dictData.importance" :value="formData.importance" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="记录时间">
{{ formData.recording_time }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="需求内容">
{{ formData.demand_content }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="附件">
<el-descriptions-item label="重要程度" label-align="left" align="left" label-class-name="my-label"> {{ formData.importance_text }}</el-descriptions-item>
<el-descriptions-item label="记录时间" label-align="left" align="left" label-class-name="my-label"> {{ formData.recording_time
}}</el-descriptions-item>
<el-descriptions-item label="需求内容" label-align="left" align="left" label-class-name="my-label"> {{ formData.demand_content
}}</el-descriptions-item>
<el-descriptions-item label="添加人" label-align="left" align="left" label-class-name="my-label"> {{ formData.add_user_name
}}</el-descriptions-item>
<el-descriptions-item label="创建日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.create_time
}}</el-descriptions-item>
<el-descriptions-item label="更新人" label-align="left" align="left" label-class-name="my-label"> {{ formData.update_user_name
}}</el-descriptions-item>
<el-descriptions-item label="更新日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.update_time
}}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formDataannex.length > 0">
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无附件
</div>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="解决方案" name="second">
<div>
@ -350,9 +324,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -2,82 +2,57 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="解决方案详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="组织">
{{ formData.org_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="部门">
{{ formData.dept_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目名称">
{{ formData.project_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称">
{{ formData.custom_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目编码">
{{ formData.project_code }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求名称">
<el-descriptions :column="2" border>
<el-descriptions-item label="组织名称" label-align="left" align="left" label-class-name="my-label">{{ formData.org_name }}</el-descriptions-item>
<el-descriptions-item label="部门名称" label-align="left" align="left" label-class-name="my-label">{{ formData.dept_name }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="需求名称" label-align="left" align="left" label-class-name="my-label">
{{ formData.customer_demand_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="解决方案主题">
</el-descriptions-item>
<el-descriptions-item label="解决方案主题" label-align="left" align="left" label-class-name="my-label">
{{ formData.theme }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="方案内容">
{{ formData.solution_content }}
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="提交时间" label-align="left" align="left" label-class-name="my-label"> {{ formData.submission_time
}}</el-descriptions-item>
<el-descriptions-item label="方案内容" label-align="left" align="left" label-class-name="my-label"> {{ formData.solution_content
</el-col>
<el-col :span="12">
<el-form-item label="客户反馈">
{{ formData.customer_feedback }}
</el-form-item>
</el-col>
}}</el-descriptions-item>
<el-col :span="12">
<el-form-item label="提交时间">
{{ formData.submission_time }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="附件">
<div v-if="formData.annex && formData.annex.length > 0">
<el-descriptions-item label="添加人" label-align="left" align="left" label-class-name="my-label"> {{ formData.add_user_name
}}</el-descriptions-item>
<el-descriptions-item label="创建日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.create_time
}}</el-descriptions-item>
<el-descriptions-item label="更新人" label-align="left" align="left" label-class-name="my-label"> {{ formData.update_user_name
}}</el-descriptions-item>
<el-descriptions-item label="更新日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.update_time
}}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }}查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>暂无附件</div>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form>
<div v-else>
暂无附件
</div>
</el-descriptions-item>
</el-descriptions>
</popup>
</div>
</template>
@ -159,9 +134,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -176,9 +176,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -186,9 +186,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -168,9 +168,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -183,9 +183,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -167,9 +167,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -471,11 +471,15 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -476,11 +476,15 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -177,9 +177,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -177,9 +177,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -177,9 +177,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -176,9 +176,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -172,9 +172,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -174,9 +174,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -186,9 +186,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -275,9 +275,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -197,9 +197,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -181,9 +181,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -153,9 +153,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -51,7 +51,8 @@
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }} 查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>
@ -73,7 +74,7 @@
<el-tab-pane label="分包" name="demo-9">Config</el-tab-pane>
<el-tab-pane label="进度" name="demo-10">Role</el-tab-pane>
<el-tab-pane label="任务" name="demo-11">Task</el-tab-pane>
<el-tab-pane label="人力" name="demo-8">Task</el-tab-pane>
<el-tab-pane label="人力" name="demo-12">Task</el-tab-pane>
<el-tab-pane label="机具" name="demo-13">Task</el-tab-pane>
<el-tab-pane label="收款" name="demo-14">Task</el-tab-pane>
<el-tab-pane label="付款" name="demo-15">Task</el-tab-pane>

View File

@ -178,9 +178,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -178,9 +178,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -178,9 +178,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -126,9 +126,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -191,9 +191,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -118,9 +118,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -33,7 +33,7 @@
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="日期" prop="attendance_date" show-overflow-tooltip />
<el-table-column label="出勤人数" prop="due_date" show-overflow-tooltip />
<el-table-column label="出勤人数" prop=" " show-overflow-tooltip />
<el-table-column label="记工数量" prop="work_record_num_total" show-overflow-tooltip />
<el-table-column label="日工资合计" prop="daily_salary_total" show-overflow-tooltip />
<el-table-column label="日生活费合计" prop="daily_living_total" show-overflow-tooltip />

View File

@ -130,9 +130,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -130,9 +130,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -150,9 +150,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -132,9 +132,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -2,91 +2,75 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="项目概算详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="组织">
{{ formData.org_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="部门">
{{ formData.dept_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目名称">
{{ formData.project_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称">
{{ formData.custom_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求名称">
<el-descriptions :column="2" border>
<el-descriptions-item label="组织名称" label-align="left" align="left" label-class-name="my-label">{{ formData.org_name }}</el-descriptions-item>
<el-descriptions-item label="部门名称" label-align="left" align="left" label-class-name="my-label">{{ formData.dept_name }}</el-descriptions-item>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="概算来源" label-align="left" align="left" label-class-name="my-label">
{{ formData.estimate_source_text
}}
</el-descriptions-item>
<el-descriptions-item label="需求名称" label-align="left" align="left" label-class-name="my-label">
{{ formData.customer_demand_name }}
</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{ formData.contact_name
}}</el-descriptions-item>
<el-descriptions-item label="联系电话" label-align="left" align="left" label-class-name="my-label"> {{ formData.contact_phone
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="概算来源">
<dict-value :options="dictData.estimate_source" :value="formData.estimate_source" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="制单人">
{{ formData.create_user }}
</el-form-item>
}}</el-descriptions-item>
<el-descriptions-item label="制单人" label-align="left" align="left" label-class-name="my-label"> {{ formData.create_user
</el-col>
<el-col :span="12">
<el-form-item label="技术人员">
{{ formData.technician_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="报价日期">
{{ formData.quotation_date }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="发票类型">
<dict-value :options="dictData.invoice_type" :value="formData.invoice_type" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="概算金额">
{{ formData.estimate_amount }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="要求">
{{ formData.ask }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="附件" prop="field127">
}}</el-descriptions-item>
<el-descriptions-item label="报价日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.quotation_date
}}</el-descriptions-item>
<el-descriptions-item label="发票类型" label-align="left" align="left" label-class-name="my-label"> {{ formData.invoice_type_text
}}</el-descriptions-item>
<el-descriptions-item label="概算金额(万元)" label-align="left" align="left" label-class-name="my-label"> {{ formData.estimate_amount
}}</el-descriptions-item>
<el-descriptions-item label="要求" label-align="left" align="left" label-class-name="my-label"> {{ formData.ask
}}</el-descriptions-item>
<el-descriptions-item label="添加人" label-align="left" align="left" label-class-name="my-label"> {{ formData.add_user_name
}}</el-descriptions-item>
<el-descriptions-item label="创建日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.create_time
}}</el-descriptions-item>
<el-descriptions-item label="更新人" label-align="left" align="left" label-class-name="my-label"> {{ formData.update_user_name
}}</el-descriptions-item>
<el-descriptions-item label="更新日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.update_time
}}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
<div v-if="formDataannex.length > 0">
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
<!-- <span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span> -->
</div>
</div>
<div v-else>暂无附件</div>
</el-form-item></el-col>
</el-row>
</el-card>
</el-form>
<div v-else>
暂无附件
</div>
</el-descriptions-item>
</el-descriptions>
</popup>
</div>
</template>
@ -125,15 +109,7 @@ const formData = reactive({
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
name: `文件${index + 1}`,
uri: item
};
});
Object.assign(formDataannex, arry1)
}
@ -177,9 +153,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -178,9 +178,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -178,9 +178,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -178,9 +178,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -178,9 +178,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -178,9 +178,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -2,108 +2,69 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="项目更近记录详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="项目名称">
{{ formData.project_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目编码">
{{ formData.project_code }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称">
{{ formData.custom_name
}}
</el-form-item>
</el-col>
<el-descriptions :column="2" border>
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
<el-descriptions-item label="执行人" label-align="left" align="left" label-class-name="my-label">
{{ formData.executor }}
</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{ formData.contacts
}}</el-descriptions-item>
<el-descriptions-item label="联系方式" label-align="left" align="left" label-class-name="my-label"> {{ formData.contact_information
<el-col :span="12">
<el-form-item label="执行人">
{{ formData.executor
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人">
{{ formData.contacts }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系方式">
{{ formData.contact_information }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目角色">
{{ formData.project_role }}
</el-form-item>
</el-col>
}}</el-descriptions-item>
<el-col :span="12">
<el-form-item label="跟进类型">
<dict-value :options="dictData.follow_type" :value="formData.follow_type" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="跟进日期">
{{ formData.follow_date }}
</el-form-item>
<el-descriptions-item label="项目角色" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_role
</el-col>
<el-col :span="12">
<el-form-item label="主题">
{{ formData.theme }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行动描述">
{{ formData.action_description }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目把握度">
<dict-value :options="dictData.project_assurance" :value="formData.project_assurance" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="跟进状态">
<dict-value :options="dictData.follow_status" :value="formData.follow_status" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="跟进阶段">
<dict-value :options="dictData.follow_stage" :value="formData.follow_stage" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注">
{{ formData.notes }}
</el-form-item>
</el-col> <el-col :span="12">
<el-form-item label="下次回访日期">
{{ formData.next_follow_up_date }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="附件">
}}</el-descriptions-item>
<el-descriptions-item label="职位" label-align="left" align="left" label-class-name="my-label"> {{ formData.position
}}</el-descriptions-item>
<el-descriptions-item label="日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.follow_date
}}</el-descriptions-item>
<el-descriptions-item label="主题" label-align="left" align="left" label-class-name="my-label"> {{ formData.theme
}}</el-descriptions-item>
<el-descriptions-item label="行动描述" label-align="left" align="left" label-class-name="my-label"> {{ formData.action_description
}}</el-descriptions-item>
<el-descriptions-item label="项目把握度" label-align="left" align="left" label-class-name="my-label"> {{ formData.project_assurance_text
}}</el-descriptions-item>
<el-descriptions-item label="状态" label-align="left" align="left" label-class-name="my-label"> {{ formData.follow_status_text
}}</el-descriptions-item>
<el-descriptions-item label="阶段" label-align="left" align="left" label-class-name="my-label"> {{ formData.follow_stage_text
}}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{ formData.notes
}}</el-descriptions-item><el-descriptions-item label="下次回访日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.next_follow_up_date
}}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex && formData.annex.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">文件{{ index + 1 }}查看</a>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>暂无附件</div>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-form>
</el-descriptions-item>
</el-descriptions>
</popup>
</div>
</template>
@ -185,9 +146,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -178,9 +178,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -136,9 +136,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -185,9 +185,13 @@ defineExpose({
getDetail
})
</script>
<style lang="scss">
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More