1598 lines
52 KiB
Vue
1598 lines
52 KiB
Vue
<template>
|
||
<!-- 该页面用于企业后台,也用于项目的材料合同 -->
|
||
<div class="fullHeight" :class="pageType">
|
||
<div class="fullHeight">
|
||
<div class="areaTreeBox fullHeight" id="videoTreeBox">
|
||
<div class="areaTreeInner whiteBlock fullHeight">
|
||
<p class="pageTitle">组织机构</p>
|
||
<div class="treeBox">
|
||
<vue-scroll v-if="level1CompanyData.length > 0">
|
||
<p
|
||
class="parentTitle"
|
||
:class="searchSn == $store.state.userInfo.sn ? 'active' : ''"
|
||
@click="clickFirstLevel"
|
||
>
|
||
{{ currentCompanyName ? currentCompanyName : '总公司' }}
|
||
</p>
|
||
<el-tree
|
||
ref="companyTree"
|
||
:data="level1CompanyData"
|
||
@node-click="handleNodeClick"
|
||
:props="defaultProps"
|
||
node-key="companySn"
|
||
>
|
||
<span class="custom-tree-node" slot-scope="{ node, data }">
|
||
<span
|
||
:class="
|
||
data.videoName
|
||
? 'videoName'
|
||
: data.projectName
|
||
? 'projectName'
|
||
: data.companyType == 2
|
||
? 'companyName2'
|
||
: ''
|
||
"
|
||
>{{ node.label }}</span
|
||
>
|
||
</span>
|
||
</el-tree>
|
||
</vue-scroll>
|
||
<div class="placeholderBox" v-else>
|
||
<img src="@/assets/images/noData2.png" alt="" srcset="" />
|
||
<p>{{ $t('message.videoManage.empty') }}</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="rightPanel whiteBlock">
|
||
<p class="pageTitle">材料合同</p>
|
||
<el-form
|
||
:inline="true"
|
||
ref="searchForm"
|
||
:model="searchForm"
|
||
size="medium"
|
||
>
|
||
<el-form-item label="合同名称" prop="contractName">
|
||
<el-input
|
||
v-model="searchForm.contractName"
|
||
placeholder="请输入"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="合同编号" prop="contractNumber">
|
||
<el-input
|
||
v-model="searchForm.contractNumber"
|
||
placeholder="请输入"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="乙方" prop="secondPartyName">
|
||
<el-input
|
||
v-model="searchForm.secondPartyName"
|
||
placeholder="请输入"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button type="primary" plain @click="getContractList"
|
||
>查询</el-button
|
||
>
|
||
<el-button type="warning" plain @click="refreshFn">刷新</el-button>
|
||
<el-button type="primary" size="medium" @click="showAddOrEditDialog"
|
||
>添加合同</el-button
|
||
>
|
||
</el-form-item>
|
||
</el-form>
|
||
|
||
<div class="table_wrap whiteBlock">
|
||
<el-table class="tables" :data="contractList">
|
||
<el-table-column
|
||
type="index"
|
||
width="50"
|
||
align="center"
|
||
:label="$t('message.personnelPosition.beaconManage.table.index')"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="contractName"
|
||
:label="'合同名称'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="contractNumber"
|
||
:label="'合同编号'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="contractAmount"
|
||
:label="'合同金额(万元)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="firstPartyName"
|
||
:label="'甲方'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="secondPartyName"
|
||
:label="'乙方'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="signTime"
|
||
:label="'签约日期'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="contractType"
|
||
:label="'合同分类'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="state"
|
||
:label="'状态'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="remarks"
|
||
:label="'备注'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
width="180"
|
||
:label="$t('message.deviceManage.operation')"
|
||
align="center"
|
||
>
|
||
<template slot-scope="scope">
|
||
<div class="tableBtns">
|
||
<div @click="editContractFn(scope.row)" class="operationText">
|
||
<img
|
||
src="@/assets/images/icon-edit.png"
|
||
width="15px"
|
||
height="15px"
|
||
/>
|
||
<span>{{ $t('message.deviceManage.edit') }}</span>
|
||
</div>
|
||
<div
|
||
@click="deleteContractFn(scope.row)"
|
||
class="operationText"
|
||
>
|
||
<img
|
||
src="@/assets/images/icon-delete.png"
|
||
width="15px"
|
||
height="15px"
|
||
/>
|
||
<span>{{ $t('message.deviceManage.delete') }}</span>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<el-pagination
|
||
class="pagerBox"
|
||
@size-change="SizeChange"
|
||
@current-change="CurrentChange"
|
||
:current-page="pagInfo.pageNo"
|
||
:page-sizes="$store.state.PAGESIZRS"
|
||
:page-size="pagInfo.pageSize"
|
||
layout="total, sizes, prev, pager, next"
|
||
:total="Number(pagInfo.total)"
|
||
background
|
||
></el-pagination>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- 分三步添加合同弹框 1、添加合同基本信息 2、选择合同材料 3、添加合同附加费用 -->
|
||
<el-dialog
|
||
:title="dialogTitle"
|
||
:modal-append-to-body="false"
|
||
:visible.sync="addOrEditDialog"
|
||
width="1167px"
|
||
>
|
||
<div class="dialog_content">
|
||
<el-steps
|
||
class="dialogSteps"
|
||
v-if="isAdd"
|
||
:space="200"
|
||
:active="dialogSteps"
|
||
finish-status="success"
|
||
align-center
|
||
>
|
||
<el-step title="合同信息"></el-step>
|
||
<el-step title="材料信息"></el-step>
|
||
<el-step title="附加费用"></el-step>
|
||
</el-steps>
|
||
<el-tabs
|
||
style="margin-bottom: 5px"
|
||
v-model="dialogSteps"
|
||
@tab-click="handleTabClick"
|
||
v-else
|
||
>
|
||
<el-tab-pane label="合同信息" name="0"></el-tab-pane>
|
||
<el-tab-pane label="材料信息" name="1"></el-tab-pane>
|
||
<el-tab-pane label="附加费用" name="2"></el-tab-pane>
|
||
</el-tabs>
|
||
<div class="contractInfo" v-show="dialogSteps == 0">
|
||
<el-form
|
||
size="medium"
|
||
:model="contractForm"
|
||
ref="contractForm"
|
||
:rules="contractFormRules"
|
||
label-width="150px"
|
||
:inline="true"
|
||
>
|
||
<el-form-item :label="'合同金额(万元)'" prop="contractAmount">
|
||
<el-input
|
||
v-model="contractForm.contractAmount"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
type="number"
|
||
oninput="if(value.length>11)value=value.slice(0,11)"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'合同形式'" prop="contractForm">
|
||
<el-input
|
||
v-model="contractForm.contractForm"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'合同名称'" prop="contractName">
|
||
<el-input
|
||
v-model="contractForm.contractName"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'合同编号'" prop="contractNumber">
|
||
<el-input
|
||
v-model="contractForm.contractNumber"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
onkeyup="value=value.replace(/[^\x00-\xff]/g, '')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'合同状态'" prop="contractState">
|
||
<el-input
|
||
v-model="contractForm.contractState"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'合同分类'" prop="contractType">
|
||
<el-input
|
||
v-model="contractForm.contractType"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'甲方'" prop="firstPartyName">
|
||
<el-input
|
||
v-model="contractForm.firstPartyName"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'乙方'" prop="secondPartyName">
|
||
<el-input
|
||
v-model="contractForm.secondPartyName"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'支付方式'" prop="paymentMethod">
|
||
<el-input
|
||
v-model="contractForm.paymentMethod"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'签约日期'" prop="signTime">
|
||
<el-date-picker
|
||
style="width: 200px"
|
||
v-model="contractForm.signTime"
|
||
type="date"
|
||
placeholder="选择日期"
|
||
value-format="yyyy-MM-dd"
|
||
>
|
||
</el-date-picker>
|
||
</el-form-item>
|
||
<el-form-item :label="'供货方式'" prop="supplyMaterialType">
|
||
<el-input
|
||
v-model="contractForm.supplyMaterialType"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'备注信息'" prop="remarks">
|
||
<el-input
|
||
v-model="contractForm.remarks"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<div class="dialog-footer">
|
||
<el-button
|
||
v-show="!isAdd"
|
||
class="cancleBtn"
|
||
@click="addOrEditDialog = false"
|
||
icon="el-icon-circle-close"
|
||
size="medium"
|
||
>{{ $t('message.companyDiagram.cancel') }}
|
||
</el-button>
|
||
<el-button
|
||
type="primary"
|
||
icon="el-icon-circle-check"
|
||
@click="saveContractInfoFn"
|
||
size="medium"
|
||
>{{ isAdd ? '下一步' : $t('message.companyDiagram.determine') }}
|
||
</el-button>
|
||
</div>
|
||
</div>
|
||
<div class="importMaterialBox" v-show="dialogSteps == 1">
|
||
<el-button
|
||
style="margin-bottom: 15px"
|
||
type="primary"
|
||
size="medium"
|
||
@click="importMaterial(1)"
|
||
>选择本项目材料</el-button
|
||
>
|
||
<el-table
|
||
class="tables"
|
||
:data="contractMaterialList"
|
||
height="360"
|
||
style="min-height: auto"
|
||
>
|
||
<el-table-column
|
||
type="index"
|
||
width="50"
|
||
align="center"
|
||
:label="$t('message.personnelPosition.beaconManage.table.index')"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="materialName"
|
||
:label="'材料名称'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="contractNum"
|
||
:label="'合同数量'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxAmount"
|
||
:label="'含税金额(万元)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxRate"
|
||
:label="'税率(%)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxUnitPrice"
|
||
:label="'含税单价(元)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxlessAmount"
|
||
:label="'无税金额(万元)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxlessUnitPrice"
|
||
:label="'无税单价(元)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="state"
|
||
:label="'状态'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="remarks"
|
||
:label="'备注'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
width="180"
|
||
:label="$t('message.deviceManage.operation')"
|
||
align="center"
|
||
>
|
||
<template slot-scope="scope">
|
||
<div class="tableBtns">
|
||
<div @click="editMaterailFn(scope.row)" class="operationText">
|
||
<img
|
||
src="@/assets/images/icon-edit.png"
|
||
width="15px"
|
||
height="15px"
|
||
/>
|
||
<span>{{ $t('message.deviceManage.edit') }}</span>
|
||
</div>
|
||
<div
|
||
@click="deleteMaterailFn(scope.row)"
|
||
class="operationText"
|
||
>
|
||
<img
|
||
src="@/assets/images/icon-delete.png"
|
||
width="15px"
|
||
height="15px"
|
||
/>
|
||
<span>{{ $t('message.deviceManage.delete') }}</span>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<div class="dialog-footer" v-if="isAdd">
|
||
<el-button
|
||
type="primary"
|
||
icon="el-icon-circle-check"
|
||
@click="dialogSteps = 2"
|
||
size="medium"
|
||
>{{ '下一步' }}
|
||
</el-button>
|
||
</div>
|
||
</div>
|
||
<div class="importMaterialBox" v-show="dialogSteps == 2">
|
||
<el-button
|
||
style="margin-bottom: 15px"
|
||
type="primary"
|
||
size="medium"
|
||
@click="addOrEditAdditionCost(true)"
|
||
>添加附加费用</el-button
|
||
>
|
||
<el-table
|
||
class="tables"
|
||
:data="additionalCostList"
|
||
height="360"
|
||
style="min-height: auto"
|
||
>
|
||
<el-table-column
|
||
type="index"
|
||
width="50"
|
||
align="center"
|
||
:label="$t('message.personnelPosition.beaconManage.table.index')"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="costName"
|
||
:label="'费用名称'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="costCode"
|
||
:label="'费用编号'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="costNum"
|
||
:label="'数量'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxAmount"
|
||
:label="'含税金额(万元)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxRate"
|
||
:label="'税率(%)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxUnitPrice"
|
||
:label="'含税单价(元)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxlessAmount"
|
||
:label="'无税金额(万元)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="taxlessUnitPrice"
|
||
:label="'无税单价(元)'"
|
||
align="center"
|
||
></el-table-column>
|
||
<!-- <el-table-column
|
||
prop="state"
|
||
:label="'状态'"
|
||
align="center"
|
||
></el-table-column> -->
|
||
<el-table-column
|
||
prop="remarks"
|
||
:label="'备注'"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
width="180"
|
||
:label="$t('message.deviceManage.operation')"
|
||
align="center"
|
||
>
|
||
<template slot-scope="scope">
|
||
<div class="tableBtns">
|
||
<div
|
||
@click="addOrEditAdditionCost(false, scope.row)"
|
||
class="operationText"
|
||
>
|
||
<img
|
||
src="@/assets/images/icon-edit.png"
|
||
width="15px"
|
||
height="15px"
|
||
/>
|
||
<span>{{ $t('message.deviceManage.edit') }}</span>
|
||
</div>
|
||
<div
|
||
@click="deleteAdditionCostFn(scope.row)"
|
||
class="operationText"
|
||
>
|
||
<img
|
||
src="@/assets/images/icon-delete.png"
|
||
width="15px"
|
||
height="15px"
|
||
/>
|
||
<span>{{ $t('message.deviceManage.delete') }}</span>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<div class="dialog-footer" v-if="isAdd">
|
||
<el-button
|
||
type="primary"
|
||
icon="el-icon-circle-check"
|
||
@click="
|
||
addOrEditDialog = false
|
||
getContractList()
|
||
"
|
||
size="medium"
|
||
>{{ '完成' }}
|
||
</el-button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-dialog>
|
||
<!-- 用于为合同选择材料 -->
|
||
<el-dialog
|
||
title="选择合同材料"
|
||
:modal-append-to-body="false"
|
||
:visible.sync="selectMaterialDialog"
|
||
width="1167px"
|
||
>
|
||
<div class="dialog_content">
|
||
<el-tabs v-model="dialogTabActiveName" @tab-click="showSelectCheck">
|
||
<el-tab-pane label="全部材料" name="first">
|
||
<div class="" style="overflow: hidden">
|
||
<div class="system-left" style="padding: 0; height: 520px">
|
||
<vue-scroll class="treeList" style="height: 100% !important">
|
||
<div style="padding-top: 10px">
|
||
<ul v-for="(name, index) in companyCateList" :key="index">
|
||
<li
|
||
@click="changeCompanyCate(index, name, 1)"
|
||
:class="{
|
||
active:
|
||
index == dialogCateIndex && dialogCateIndex2 == -1
|
||
}"
|
||
>
|
||
<div class="clickName" style="width: 100%">
|
||
<div class="imgbox">
|
||
<i
|
||
v-if="dialogCateIndex != index"
|
||
class="el-icon-caret-right"
|
||
></i>
|
||
<i v-else class="el-icon-caret-bottom"></i>
|
||
</div>
|
||
<el-popover
|
||
placement="top-start"
|
||
v-model="name.visible"
|
||
:content="name.categoryName"
|
||
>
|
||
<span
|
||
slot="reference"
|
||
@mouseenter="
|
||
name.visible =
|
||
name.categoryName.length > 9 ? true : false
|
||
"
|
||
@mouseleave="name.visible = false"
|
||
>{{
|
||
name.categoryName.length > 9
|
||
? name.categoryName.substring(0, 8) + '...'
|
||
: name.categoryName
|
||
}}</span
|
||
>
|
||
</el-popover>
|
||
</div>
|
||
</li>
|
||
<ul
|
||
v-for="(item, i) in name.children"
|
||
id="child"
|
||
v-if="dialogCateIndex == index"
|
||
:key="i"
|
||
>
|
||
<li
|
||
:class="{
|
||
active:
|
||
i == dialogCateIndex2 && dialogCateIndex != -1
|
||
}"
|
||
@click="changeCompanyCate(i, item, 2)"
|
||
>
|
||
<el-popover
|
||
placement="top-start"
|
||
v-model="item.visible"
|
||
:content="item.categoryName"
|
||
>
|
||
<div
|
||
slot="reference"
|
||
@mouseenter="
|
||
item.visible =
|
||
item.categoryName.length > 9 ? true : false
|
||
"
|
||
@mouseleave="item.visible = false"
|
||
style="display: inline-block; width: 60%"
|
||
>
|
||
{{
|
||
item.categoryName.length > 10
|
||
? item.categoryName.substring(0, 9) + '...'
|
||
: item.categoryName
|
||
}}
|
||
</div>
|
||
</el-popover>
|
||
</li>
|
||
</ul>
|
||
</ul>
|
||
<li
|
||
class="title"
|
||
style="text-align: center; line-height: 140px"
|
||
v-show="companyCateList.length == 0"
|
||
>
|
||
暂无数据
|
||
</li>
|
||
</div>
|
||
</vue-scroll>
|
||
</div>
|
||
<div class="system-right">
|
||
<el-table
|
||
ref="multipleTable"
|
||
style="min-height: auto"
|
||
height="520px"
|
||
:data="companyMaterialList"
|
||
class="tables"
|
||
@select="handleSelectionChange"
|
||
@select-all="handleSelectionChange"
|
||
>
|
||
<el-table-column
|
||
type="selection"
|
||
label=""
|
||
width="55"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="materialName"
|
||
label="材料名称"
|
||
align="center"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="materialCode"
|
||
label="材料编码"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="computeUnit"
|
||
label="计算单位"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="materialSpecifications"
|
||
label="规格型号"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="materialSpecifications"
|
||
label="正负差"
|
||
align="center"
|
||
>
|
||
<template slot-scope="scope">
|
||
<span v-if="scope.row.deviationType">
|
||
{{ scope.row.adjustStartValue
|
||
}}{{ scope.row.deviationType == 1 ? '%' : '吨' }} ~
|
||
{{ scope.row.adjustEndValue
|
||
}}{{ scope.row.deviationType == 1 ? '%' : '吨' }}
|
||
</span>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</div>
|
||
</div>
|
||
</el-tab-pane>
|
||
<el-tab-pane label="已选材料" name="second">
|
||
<el-table height="552px" :data="multipleSelection" class="tables">
|
||
<el-table-column
|
||
type="index"
|
||
label="序号"
|
||
width="100"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="materialName"
|
||
label="材料名称"
|
||
align="center"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="materialCode"
|
||
label="材料编码"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="computeUnit"
|
||
label="计算单位"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="materialSpecifications"
|
||
label="规格型号"
|
||
align="center"
|
||
></el-table-column>
|
||
<el-table-column
|
||
prop="materialSpecifications"
|
||
label="正负差"
|
||
align="center"
|
||
>
|
||
<template slot-scope="scope">
|
||
<span v-if="scope.row.deviationType">
|
||
{{ scope.row.adjustStartValue
|
||
}}{{ scope.row.deviationType == 1 ? '%' : '吨' }} ~
|
||
{{ scope.row.adjustEndValue
|
||
}}{{ scope.row.deviationType == 1 ? '%' : '吨' }}
|
||
</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="操作" align="center">
|
||
<template slot-scope="scope">
|
||
<el-button
|
||
@click="removeSelect(scope.$index)"
|
||
type="text"
|
||
size="small"
|
||
style="color: red"
|
||
icon="el-icon-delete"
|
||
>
|
||
<span style="font-size: 14px">移除</span>
|
||
</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-tab-pane>
|
||
</el-tabs>
|
||
<div class="dialog-footer">
|
||
<el-button
|
||
@click="selectMaterialDialog = false"
|
||
size="medium"
|
||
icon="el-icon-circle-close"
|
||
>取 消</el-button
|
||
>
|
||
<el-button
|
||
type="primary"
|
||
@click="saveImportMaterial()"
|
||
size="medium"
|
||
icon="el-icon-circle-check"
|
||
>确 定</el-button
|
||
>
|
||
</div>
|
||
</div>
|
||
</el-dialog>
|
||
<!-- 修改材料信息 -->
|
||
<el-dialog
|
||
title="修改材料信息"
|
||
:modal-append-to-body="false"
|
||
:visible.sync="editMaterialDialog"
|
||
width="667px"
|
||
>
|
||
<div class="dialog_content">
|
||
<el-form
|
||
size="medium"
|
||
:model="materialInfoForm"
|
||
ref="materialInfoForm"
|
||
:rules="materialInfoFormRules"
|
||
label-width="100px"
|
||
>
|
||
<el-form-item :label="'材料名称'" prop="materialName">
|
||
<el-input
|
||
disabled
|
||
v-model="materialInfoForm.materialName"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'合同数量'" prop="contractNum">
|
||
<el-input
|
||
v-model="materialInfoForm.contractNum"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'含税金额(万元)'" prop="taxAmount">
|
||
<el-input
|
||
v-model="materialInfoForm.taxAmount"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'税率(%)'" prop="taxRate">
|
||
<el-input
|
||
v-model="materialInfoForm.taxRate"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'含税单价(元)'" prop="taxUnitPrice">
|
||
<el-input
|
||
v-model="materialInfoForm.taxUnitPrice"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'无税金额(万元)'" prop="taxlessAmount">
|
||
<el-input
|
||
v-model="materialInfoForm.taxlessAmount"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'无税单价(元)'" prop="taxlessUnitPrice">
|
||
<el-input
|
||
v-model="materialInfoForm.taxlessUnitPrice"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'状态'" prop="state">
|
||
<el-input
|
||
v-model="materialInfoForm.state"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'备注信息'" prop="remarks">
|
||
<el-input
|
||
v-model="materialInfoForm.remarks"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<div class="dialog-footer">
|
||
<el-button
|
||
class="cancleBtn"
|
||
@click="editMaterialDialog = false"
|
||
icon="el-icon-circle-close"
|
||
size="medium"
|
||
>{{ $t('message.companyDiagram.cancel') }}
|
||
</el-button>
|
||
<el-button
|
||
type="primary"
|
||
icon="el-icon-circle-check"
|
||
@click="saveMaterailInfoFn"
|
||
size="medium"
|
||
>{{ $t('message.companyDiagram.determine') }}
|
||
</el-button>
|
||
</div>
|
||
</div>
|
||
</el-dialog>
|
||
<!-- 添加或编辑合同的附加费用 -->
|
||
<el-dialog
|
||
:modal-append-to-body="false"
|
||
:title="isAddAdditionalCost ? '添加附加费用' : '编辑附加费用'"
|
||
:visible.sync="additionalCostDialog"
|
||
width="667px"
|
||
>
|
||
<div class="dialog_content">
|
||
<el-form
|
||
size="medium"
|
||
:model="additionalCostForm"
|
||
ref="additionalCostForm"
|
||
:rules="additionalCostFormRules"
|
||
label-width="100px"
|
||
>
|
||
<el-form-item :label="'费用名称'" prop="costName">
|
||
<el-input
|
||
v-model="additionalCostForm.costName"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'费用编码'" prop="costCode">
|
||
<el-input
|
||
v-model="additionalCostForm.costCode"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'数量'" prop="costNum">
|
||
<el-input
|
||
v-model="additionalCostForm.costNum"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
type="number"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'含税金额(万元)'" prop="taxAmount">
|
||
<el-input
|
||
v-model="additionalCostForm.taxAmount"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
type="number"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'税率(%)'" prop="taxRate">
|
||
<el-input
|
||
v-model="additionalCostForm.taxRate"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
type="number"
|
||
oninput="if(value > 100) value = 100; if(value < 0 || value == '' || value == null) value = ''; if(value.length>3)value=value.slice(0,3);"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'含税单价(元)'" prop="taxUnitPrice">
|
||
<el-input
|
||
v-model="additionalCostForm.taxUnitPrice"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
type="number"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'无税金额(万元)'" prop="taxlessAmount">
|
||
<el-input
|
||
v-model="additionalCostForm.taxlessAmount"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
type="number"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item :label="'无税单价(元)'" prop="taxlessUnitPrice">
|
||
<el-input
|
||
v-model="additionalCostForm.taxlessUnitPrice"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
type="number"
|
||
></el-input>
|
||
</el-form-item>
|
||
<!-- <el-form-item :label="'状态'" prop="state">
|
||
<el-input
|
||
v-model="additionalCostForm.state"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item> -->
|
||
<el-form-item :label="'备注信息'" prop="remarks">
|
||
<el-input
|
||
v-model="additionalCostForm.remarks"
|
||
:placeholder="$t('message.companyDiagram.PleaseEnter')"
|
||
></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<div class="dialog-footer">
|
||
<el-button
|
||
class="cancleBtn"
|
||
@click="additionalCostDialog = false"
|
||
icon="el-icon-circle-close"
|
||
size="medium"
|
||
>{{ $t('message.companyDiagram.cancel') }}
|
||
</el-button>
|
||
<el-button
|
||
type="primary"
|
||
icon="el-icon-circle-check"
|
||
@click="saveContractAdditionalInfoFn"
|
||
size="medium"
|
||
>{{ $t('message.companyDiagram.determine') }}
|
||
</el-button>
|
||
</div>
|
||
</div>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
<script>
|
||
import { getComapnyStatisticsListApi } from '@/assets/js/api/company/project'
|
||
import {
|
||
addprocurementContractInfoApi,
|
||
editprocurementContractInfoApi,
|
||
deleteprocurementContractInfoApi,
|
||
procurementContractInfoListApi,
|
||
addprocurementContractMaterialApi,
|
||
editprocurementContractMaterialApi,
|
||
deleteprocurementContractMaterialApi,
|
||
procurementContractMaterialListApi,
|
||
addprocurementContractSurchargeApi,
|
||
editprocurementContractSurchargeApi,
|
||
deleteprocurementContractSurchargeApi,
|
||
procurementContractSurchargeListApi,
|
||
materialCategoryListApi,
|
||
materialRecordListApi
|
||
} from '@/assets/js/api/materialManage'
|
||
export default {
|
||
data() {
|
||
return {
|
||
level1CompanyData: [],
|
||
defaultProps: {
|
||
children: 'list',
|
||
label: 'name'
|
||
},
|
||
searchSn: '',
|
||
isAdd: true,
|
||
dialogTitle: '添加合同',
|
||
addOrEditDialog: false,
|
||
dialogSteps: 0,
|
||
contractForm: {
|
||
contractAmount: '',
|
||
contractFile: '',
|
||
contractForm: '',
|
||
contractName: '',
|
||
contractNumber: '',
|
||
contractState: '',
|
||
contractType: '',
|
||
firstPartyName: '',
|
||
paymentMethod: '',
|
||
remarks: '',
|
||
secondPartyName: '',
|
||
signTime: '',
|
||
sn: '',
|
||
supplyMaterialType: '',
|
||
type: 1
|
||
},
|
||
// additionalCostForm: {
|
||
// costCode: "",
|
||
// costName: "",
|
||
// costNum: 0,
|
||
// remarks: "",
|
||
// state: 0,
|
||
// taxAmount: 0,
|
||
// taxRate: 0,
|
||
// taxUnitPrice: 0,
|
||
// taxlessAmount: 0,
|
||
// taxlessUnitPrice: 0,
|
||
// },
|
||
contractFormRules: {
|
||
contractAmount: [{ required: true, message: '必填', trigger: 'blur' }],
|
||
contractName: [{ required: true, message: '必填', trigger: 'blur' }],
|
||
contractNumber: [{ required: true, message: '必填', trigger: 'blur' }],
|
||
firstPartyName: [{ required: true, message: '必填', trigger: 'blur' }],
|
||
secondPartyName: [{ required: true, message: '必填', trigger: 'blur' }],
|
||
signTime: [{ required: true, message: '必选', trigger: 'blur' }]
|
||
},
|
||
//选择材料所用变量 --- start
|
||
dialogCateIndex: 0,
|
||
dialogCateIndex2: -1,
|
||
dialogTabActiveName: 'first',
|
||
selectMaterialDialog: false,
|
||
companyCateList: [],
|
||
companyMaterialList: [],
|
||
multipleSelection: [],
|
||
//选择材料所用变量 --- end
|
||
contractList: [],
|
||
pagInfo: {
|
||
pageNo: 1, //页数
|
||
pageSize: 10, //条数
|
||
total: 0 //总条数
|
||
},
|
||
searchForm: {
|
||
contractName: '',
|
||
contractNumber: '',
|
||
secondPartyName: ''
|
||
},
|
||
// 材料信息
|
||
contractMaterialList: [],
|
||
editMaterialDialog: false,
|
||
materialInfoForm: {},
|
||
materialInfoFormRules: {},
|
||
//附加费用
|
||
additionalCostList: [],
|
||
additionalCostDialog: false,
|
||
additionalCostForm: {
|
||
contractId: 0,
|
||
costCode: '',
|
||
costName: '',
|
||
costNum: 0,
|
||
remarks: '',
|
||
state: 0,
|
||
taxAmount: 0,
|
||
taxRate: 0,
|
||
taxUnitPrice: 0,
|
||
taxlessAmount: 0,
|
||
taxlessUnitPrice: 0
|
||
},
|
||
isAddAdditionalCost: true,
|
||
additionalCostFormRules: {
|
||
costName: [{ required: true, message: '必填', trigger: 'blur' }],
|
||
costCode: [{ required: true, message: '必填', trigger: 'blur' }],
|
||
costNum: [{ required: true, message: '必填', trigger: 'blur' }]
|
||
},
|
||
currentCompanyName: '',
|
||
pageType: 'companyAdmin' //该页面用于企业后台和项目层级 companyAdmin代表是企业后台 project代表是项目层级
|
||
}
|
||
},
|
||
mounted() {
|
||
this.searchSn = this.$store.state.userInfo.sn
|
||
if (this.$route.path.indexOf('/project/') != -1) {
|
||
this.pageType = 'project'
|
||
} else {
|
||
this.loadData()
|
||
}
|
||
this.getContractList()
|
||
},
|
||
methods: {
|
||
//显示选择材料弹框
|
||
importMaterial(type) {
|
||
this.multipleSelection = []
|
||
this.dialogCateIndex = 0
|
||
;(this.dialogCateIndex2 = -1), (this.dialogTabActiveName = 'first')
|
||
this.loadCompanyCateList(type)
|
||
this.selectMaterialDialog = true
|
||
this.$nextTick(() => {
|
||
this.$refs.multipleTable.clearSelection()
|
||
})
|
||
},
|
||
//企业类别切换
|
||
changeCompanyCate(index, data, type) {
|
||
if (type == 1) {
|
||
this.dialogCateIndex2 = -1
|
||
this.dialogCateIndex = index
|
||
} else {
|
||
this.dialogCateIndex2 = index
|
||
}
|
||
|
||
this.loadCompanyMaterialList(data.id)
|
||
},
|
||
//获取企业的材料分类
|
||
loadCompanyCateList(type) {
|
||
let param = {
|
||
sn:
|
||
this.pageType == 'companyAdmin'
|
||
? this.$store.state.userInfo.headquartersSn
|
||
: this.searchSn
|
||
}
|
||
materialCategoryListApi(param).then((res) => {
|
||
this.companyCateList = res.result
|
||
if (this.companyCateList.length > 0) {
|
||
this.loadCompanyMaterialList(this.companyCateList[0].id)
|
||
}
|
||
})
|
||
},
|
||
//按企业分类获取材料列表
|
||
loadCompanyMaterialList(id) {
|
||
let param = {
|
||
categoryId: id
|
||
}
|
||
materialRecordListApi(param).then((res) => {
|
||
this.companyMaterialList = res.result
|
||
this.showSelectCheck()
|
||
})
|
||
},
|
||
handleSelectionChange(val) {
|
||
console.log('此次选中', val)
|
||
this.duplicateRemoval(val, this.multipleSelection)
|
||
},
|
||
//表格选中去重
|
||
duplicateRemoval(arr, arr2) {
|
||
let selectId = 0
|
||
if (this.dialogCateIndex2 == -1) {
|
||
selectId = this.companyCateList[this.dialogCateIndex].id
|
||
} else {
|
||
selectId =
|
||
this.companyCateList[this.dialogCateIndex].children[
|
||
this.dialogCateIndex2
|
||
].id
|
||
}
|
||
this.multipleSelection = []
|
||
for (let index2 = 0; index2 < arr2.length; index2++) {
|
||
const element2 = arr2[index2]
|
||
if (selectId == element2.categoryId) {
|
||
} else {
|
||
this.multipleSelection.push(element2)
|
||
}
|
||
}
|
||
this.multipleSelection = this.multipleSelection.concat(arr)
|
||
},
|
||
//表格checkbox选中
|
||
showSelectCheck() {
|
||
this.$nextTick(() => {
|
||
//
|
||
if (this.multipleSelection.length > 0) {
|
||
this.multipleSelection.forEach((row) => {
|
||
this.companyMaterialList.forEach((element) => {
|
||
if (element.id == row.id) {
|
||
this.$refs.multipleTable.toggleRowSelection(element)
|
||
}
|
||
})
|
||
})
|
||
} else {
|
||
this.$refs.multipleTable.clearSelection()
|
||
}
|
||
})
|
||
},
|
||
//移除已选的材料
|
||
removeSelect(index) {
|
||
this.multipleSelection.splice(index, 1)
|
||
},
|
||
//保存已选的材料到合同去
|
||
saveImportMaterial() {
|
||
let arr = []
|
||
if (this.multipleSelection.length == 0) {
|
||
this.$message.error('请选择材料')
|
||
return
|
||
} else {
|
||
this.multipleSelection.forEach((element) => {
|
||
arr.push(element.id)
|
||
})
|
||
}
|
||
let json = {
|
||
materialIds: arr.join(','),
|
||
contractId: this.contractForm.id
|
||
}
|
||
addprocurementContractMaterialApi(json).then((res) => {
|
||
this.selectMaterialDialog = false
|
||
this.$message.success('保存成功')
|
||
this.getContractMaterialList()
|
||
})
|
||
},
|
||
//显示添加合同弹框
|
||
showAddOrEditDialog() {
|
||
this.dialogTitle = '添加合同'
|
||
this.contractMaterialList = []
|
||
this.additionalCostList = []
|
||
this.addOrEditDialog = true
|
||
this.dialogSteps = 0
|
||
this.isAdd = true
|
||
this.$nextTick(() => {
|
||
this.$refs['contractForm'].resetFields()
|
||
})
|
||
},
|
||
loadData() {
|
||
getComapnyStatisticsListApi({
|
||
sn: this.searchSn
|
||
}).then((res) => {
|
||
this.level1CompanyData = res.result.companyList
|
||
? res.result.companyList
|
||
: res.result.projectList
|
||
if (res.result.companyInfo) {
|
||
this.currentCompanyName = res.result.companyInfo.companyName
|
||
}
|
||
})
|
||
},
|
||
//树的点击
|
||
handleNodeClick(data) {
|
||
if (data.projectSn) {
|
||
this.searchSn = data.projectSn
|
||
} else {
|
||
this.searchSn = data.companySn
|
||
}
|
||
|
||
this.getContractList()
|
||
},
|
||
//总公司层级点击
|
||
clickFirstLevel() {
|
||
this.$refs.companyTree.setCurrentKey(null)
|
||
this.searchSn = this.$store.state.userInfo.sn
|
||
this.getContractList()
|
||
},
|
||
//保存合同基本信息
|
||
saveContractInfoFn() {
|
||
this.$refs['contractForm'].validate((valid) => {
|
||
if (valid) {
|
||
if (this.isAdd) {
|
||
this.contractForm.sn = this.searchSn
|
||
addprocurementContractInfoApi(this.contractForm).then((res) => {
|
||
this.dialogSteps = 1
|
||
this.contractForm = res.result
|
||
})
|
||
} else {
|
||
editprocurementContractInfoApi(this.contractForm).then((res) => {
|
||
this.$message.success(res.message)
|
||
})
|
||
}
|
||
} else {
|
||
console.log('error submit!!')
|
||
return false
|
||
}
|
||
})
|
||
},
|
||
SizeChange(val) {
|
||
this.pagInfo.pageSize = val
|
||
this.getContractList()
|
||
},
|
||
CurrentChange(val) {
|
||
this.pagInfo.pageNo = val
|
||
this.getContractList()
|
||
},
|
||
//重置合同列表的搜索参数
|
||
refreshFn() {
|
||
this.$refs['searchForm'].resetFields()
|
||
this.pagInfo.pageNo = 1
|
||
this.getContractList()
|
||
},
|
||
//获取合同列表
|
||
getContractList() {
|
||
let json = this.searchForm
|
||
json.pageNo = this.pagInfo.pageNo
|
||
json.pageSize = this.pagInfo.pageSize
|
||
json.sn = this.searchSn
|
||
procurementContractInfoListApi(json).then((result) => {
|
||
this.contractList = result.result.records
|
||
this.pagInfo.total = result.result.total
|
||
})
|
||
},
|
||
//获取合同的材料列表
|
||
getContractMaterialList() {
|
||
procurementContractMaterialListApi({
|
||
contractId: this.contractForm.id
|
||
}).then((result) => {
|
||
this.contractMaterialList = result.result
|
||
})
|
||
},
|
||
//显示编辑合同信息弹框
|
||
editContractFn(item) {
|
||
this.isAdd = false
|
||
this.contractForm = JSON.parse(JSON.stringify(item))
|
||
this.addOrEditDialog = true
|
||
this.dialogTitle = '编辑合同'
|
||
this.dialogSteps = '0'
|
||
},
|
||
//删除合同信息
|
||
deleteContractFn(obj) {
|
||
this.$confirm(
|
||
this.$t('message.personnelPosition.beaconManage.table.confirmText') +
|
||
'【' +
|
||
obj.contractName +
|
||
'】?',
|
||
this.$t('message.personnelPosition.beaconManage.table.Tips'),
|
||
{
|
||
confirmButtonText: this.$t(
|
||
'message.personnelPosition.confirmButtonText'
|
||
),
|
||
cancelButtonText: this.$t(
|
||
'message.personnelPosition.cancelButtonText'
|
||
),
|
||
type: 'warning'
|
||
}
|
||
).then(() => {
|
||
deleteprocurementContractInfoApi({ id: obj.id }).then((result) => {
|
||
this.$message.success(result.message)
|
||
this.getContractList()
|
||
})
|
||
})
|
||
},
|
||
//编辑合同时tab切换
|
||
handleTabClick() {
|
||
if (this.dialogSteps == '1') {
|
||
this.getContractMaterialList()
|
||
} else if (this.dialogSteps == '2') {
|
||
this.getContractAdditionalCostList()
|
||
}
|
||
},
|
||
//显示编辑材料弹框
|
||
editMaterailFn(item) {
|
||
console.log(item)
|
||
this.editMaterialDialog = true
|
||
this.materialInfoForm = JSON.parse(JSON.stringify(item))
|
||
},
|
||
//保存材料信息
|
||
saveMaterailInfoFn() {
|
||
editprocurementContractMaterialApi(this.materialInfoForm).then(
|
||
(result) => {
|
||
this.$message.success(result.message)
|
||
this.editMaterialDialog = false
|
||
this.getContractMaterialList()
|
||
}
|
||
)
|
||
},
|
||
//删掉材料
|
||
deleteMaterailFn(obj) {
|
||
this.$confirm(
|
||
this.$t('message.personnelPosition.beaconManage.table.confirmText') +
|
||
'【' +
|
||
obj.materialName +
|
||
'】?',
|
||
this.$t('message.personnelPosition.beaconManage.table.Tips'),
|
||
{
|
||
confirmButtonText: this.$t(
|
||
'message.personnelPosition.confirmButtonText'
|
||
),
|
||
cancelButtonText: this.$t(
|
||
'message.personnelPosition.cancelButtonText'
|
||
),
|
||
type: 'warning'
|
||
}
|
||
).then(() => {
|
||
deleteprocurementContractMaterialApi({ id: obj.id }).then((result) => {
|
||
this.$message.success(result.message)
|
||
this.getContractMaterialList()
|
||
})
|
||
})
|
||
},
|
||
//显示添加或编辑附加费用弹框
|
||
addOrEditAdditionCost(type, item) {
|
||
this.isAddAdditionalCost = type
|
||
if (!type) {
|
||
this.additionalCostForm = JSON.parse(JSON.stringify(item))
|
||
}
|
||
this.additionalCostDialog = true
|
||
},
|
||
//保存合同附加费用
|
||
saveContractAdditionalInfoFn() {
|
||
this.$refs['additionalCostForm'].validate((valid) => {
|
||
if (valid) {
|
||
if (this.isAddAdditionalCost) {
|
||
this.additionalCostForm.contractId = this.contractForm.id
|
||
addprocurementContractSurchargeApi(this.additionalCostForm).then(
|
||
(res) => {
|
||
this.additionalCostDialog = false
|
||
this.$message.success(res.message)
|
||
this.getContractAdditionalCostList()
|
||
}
|
||
)
|
||
} else {
|
||
editprocurementContractSurchargeApi(this.additionalCostForm).then(
|
||
(res) => {
|
||
this.additionalCostDialog = false
|
||
this.$message.success(res.message)
|
||
this.getContractAdditionalCostList()
|
||
}
|
||
)
|
||
}
|
||
} else {
|
||
console.log('error submit!!')
|
||
return false
|
||
}
|
||
})
|
||
},
|
||
// 获取合同的附加费用列表
|
||
getContractAdditionalCostList() {
|
||
procurementContractSurchargeListApi({
|
||
contractId: this.contractForm.id
|
||
}).then((result) => {
|
||
this.additionalCostList = result.result
|
||
})
|
||
},
|
||
//删掉附加费用
|
||
deleteAdditionCostFn(obj) {
|
||
this.$confirm(
|
||
this.$t('message.personnelPosition.beaconManage.table.confirmText') +
|
||
'【' +
|
||
obj.costName +
|
||
'】?',
|
||
this.$t('message.personnelPosition.beaconManage.table.Tips'),
|
||
{
|
||
confirmButtonText: this.$t(
|
||
'message.personnelPosition.confirmButtonText'
|
||
),
|
||
cancelButtonText: this.$t(
|
||
'message.personnelPosition.cancelButtonText'
|
||
),
|
||
type: 'warning'
|
||
}
|
||
).then(() => {
|
||
deleteprocurementContractSurchargeApi({ id: obj.id }).then((result) => {
|
||
this.$message.success(result.message)
|
||
this.getContractAdditionalCostList()
|
||
})
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
<style lang="less" scoped>
|
||
.parentTitle {
|
||
padding: 5px 30px;
|
||
font-size: 16px;
|
||
font-weight: bold;
|
||
cursor: pointer;
|
||
&.active {
|
||
background-color: rgba(81, 129, 246, 0.14);
|
||
color: #5181f6;
|
||
}
|
||
}
|
||
.areaTreeBox {
|
||
float: left;
|
||
position: relative;
|
||
/deep/.el-tree {
|
||
font-size: 15px;
|
||
width: 100%;
|
||
background-color: transparent;
|
||
.el-tree-node {
|
||
white-space: normal;
|
||
&:focus > .el-tree-node__content {
|
||
background-color: transparent;
|
||
}
|
||
&.is-current > .el-tree-node__content {
|
||
background-color: rgba(81, 129, 246, 0.14);
|
||
color: #5181f6;
|
||
}
|
||
}
|
||
.el-tree-node__content {
|
||
// height: 32px;
|
||
padding: 7px 0;
|
||
height: auto;
|
||
line-height: 16px;
|
||
position: relative;
|
||
// margin-bottom: 7px;
|
||
&:hover {
|
||
background-color: rgba(81, 129, 246, 0.14);
|
||
color: #5181f6;
|
||
}
|
||
|
||
.videoName {
|
||
font-size: 14px;
|
||
}
|
||
.projectName {
|
||
font-size: 14px;
|
||
// width: calc(100% - 55px);
|
||
display: inline-block;
|
||
}
|
||
.companyName2 {
|
||
font-size: 16px;
|
||
font-weight: bold;
|
||
}
|
||
}
|
||
.el-tree-node__expand-icon {
|
||
font-size: 16px;
|
||
padding: 0 6px;
|
||
&.is-leaf {
|
||
color: transparent !important;
|
||
}
|
||
}
|
||
.treeTitle {
|
||
background-color: #f7f7f7;
|
||
margin-bottom: 10px;
|
||
}
|
||
}
|
||
}
|
||
|
||
.areaTreeInner {
|
||
// background-color: rgba(0, 0, 0, 0.7);
|
||
width: 300px;
|
||
padding: 20px 15px;
|
||
height: calc(100% - 40px);
|
||
}
|
||
.treeBox {
|
||
height: calc(100% - 42px);
|
||
background-color: rgba(216, 216, 216, 0.2);
|
||
padding-top: 10px;
|
||
}
|
||
.rightPanel {
|
||
float: left;
|
||
width: calc(100% - 330px - 20px - 30px);
|
||
margin-left: 20px;
|
||
padding: 20px 15px;
|
||
height: calc(100% - 40px);
|
||
}
|
||
.dialogSteps {
|
||
justify-content: center;
|
||
margin-bottom: 30px;
|
||
}
|
||
.system-left {
|
||
float: left;
|
||
width: 330px;
|
||
padding: 20px 15px;
|
||
height: calc(100% - 40px);
|
||
background-color: white;
|
||
.treeList {
|
||
background-color: rgba(216, 216, 216, 0.2);
|
||
height: calc(100% - 42px) !important;
|
||
}
|
||
li {
|
||
cursor: pointer;
|
||
font-size: 16px;
|
||
line-height: 32px;
|
||
letter-spacing: 1px;
|
||
font-weight: bold;
|
||
.clickName {
|
||
width: calc(100% - 176px);
|
||
.imgbox {
|
||
display: inline-block;
|
||
margin: 0 6px 0 13px;
|
||
font-size: 16px;
|
||
}
|
||
}
|
||
}
|
||
li:hover,
|
||
.active {
|
||
// background: linear-gradient(270deg, white, #b7d8ff 100%);
|
||
background-color: rgba(81, 129, 246, 0.14);
|
||
color: @--color-primary;
|
||
}
|
||
#child {
|
||
li {
|
||
font-size: 15px;
|
||
padding-left: 39px;
|
||
font-weight: normal;
|
||
}
|
||
}
|
||
}
|
||
.system-right {
|
||
float: right;
|
||
// margin-right: 1.5%;
|
||
margin-left: 20px;
|
||
width: calc(100% - 360px - 20px - 30px);
|
||
// min-height: 620px;
|
||
height: calc(100% - 40px);
|
||
// border: 1px solid #e9e9e9;
|
||
background-color: white;
|
||
padding: 20px 15px;
|
||
}
|
||
.project {
|
||
.areaTreeBox {
|
||
display: none;
|
||
}
|
||
.rightPanel {
|
||
width: 100%;
|
||
margin-left: 0;
|
||
}
|
||
}
|
||
</style> |