|
@@ -1,322 +1,277 @@
|
|
|
<template>
|
|
|
<div class="_ContractDetail_xmxx form-disabled-style">
|
|
|
<div class="header">
|
|
|
- <ul
|
|
|
- class="contractTagList"
|
|
|
- v-if="(mContractDetails?.length ?? 0) > 1 || (childrenContracts?.length ?? 0) > 0"
|
|
|
- >
|
|
|
- <template v-if="(mContractDetails?.length ?? 0) > 1">
|
|
|
- <el-popover placement="bottom-start" trigger="hover">
|
|
|
- <template #reference>
|
|
|
- <li
|
|
|
- :class="{ active: contractInfoIndex === 0 }"
|
|
|
- @click="switchContractInfo(mContractDetails[mainContractIndex], 0)"
|
|
|
- >主合同-{{ mainContractIndex + 1 }}
|
|
|
- </li>
|
|
|
- </template>
|
|
|
- <template #default>
|
|
|
- <ul class="contractPopover">
|
|
|
- <li
|
|
|
- v-for="(item, index) in mContractDetails"
|
|
|
- :key="index"
|
|
|
- @click="switchContractInfo(item, 0, index)"
|
|
|
- >主合同-{{ index + 1 }}
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </template>
|
|
|
- </el-popover>
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <li
|
|
|
- :class="{ active: contractInfoIndex === 0 }"
|
|
|
- @click="switchContractInfo(mContractDetails[0], 0)"
|
|
|
- >主合同
|
|
|
- </li>
|
|
|
- </template>
|
|
|
+ <ul class="contractTagList" v-if="(mContractDetails?.length ?? 0) > 1">
|
|
|
<li
|
|
|
- v-for="(item, index) in childrenContracts"
|
|
|
- :class="{ active: contractInfoIndex === index + 1 }"
|
|
|
+ v-for="(item, index) in mContractDetails"
|
|
|
:key="index"
|
|
|
- @click="switchContractInfo(item, index + 1)"
|
|
|
- >
|
|
|
- {{ contractTypeFilter[item['contractType']] }}
|
|
|
+ :class="{ active: contractInfoIndex === index }"
|
|
|
+ @click="switchContractInfo(item, index)"
|
|
|
+ >主合同-{{ index + 1 }}
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div class="content">
|
|
|
- <template v-if="contractInfoIndex === 0">
|
|
|
- <div class="titleBox">
|
|
|
- <h2 @click="processLookHandle(mContractDetail.instanceId as string)">
|
|
|
- {{ mContractDetail?.name ?? '' }}
|
|
|
- </h2>
|
|
|
- <span v-if="mContractDetail?.amountStatus === 1" class="tag">已签</span>
|
|
|
- <span v-else-if="mContractDetail?.amountStatus === 2" class="tag">未付清</span>
|
|
|
- <span v-else-if="mContractDetail?.amountStatus === 3" class="tag">已付清</span>
|
|
|
- <span v-else-if="mContractDetail?.amountStatus === 4" class="tag">手动设置已付清</span>
|
|
|
- </div>
|
|
|
- <div class="tableBox tableBox—first">
|
|
|
- <h4 class="td_title"><i class="icon"></i>基本信息</h4>
|
|
|
- <ul>
|
|
|
- <li v-if="editor === false" @click="handleEditor">编辑合同</li>
|
|
|
- <li v-else @click="saveContractHandle">保存合同</li>
|
|
|
- <li
|
|
|
- v-if="
|
|
|
- projectPermis.projectPermisState.all || projectPermis.projectPermisState.xsLeader
|
|
|
- "
|
|
|
- @click="
|
|
|
- startUseMoneyMuate({
|
|
|
- projectId: mContractDetail?.projectId,
|
|
|
- supplierId: mContractDetail?.clientId
|
|
|
- })
|
|
|
- "
|
|
|
- >用款申请</li
|
|
|
- >
|
|
|
- <li
|
|
|
- v-if="
|
|
|
- projectPermis.projectPermisState.all || projectPermis.projectPermisState.xsLeader
|
|
|
- "
|
|
|
- @click="() => startContractInvoiceMuate(mContractDetail?.id)"
|
|
|
- >开票申请</li
|
|
|
- >
|
|
|
- </ul>
|
|
|
- <table>
|
|
|
+ <div class="titleBox">
|
|
|
+ <h2 @click="processLookHandle(mContractDetail.instanceId as string)">
|
|
|
+ {{ mContractDetail?.name ?? '' }}
|
|
|
+ </h2>
|
|
|
+ </div>
|
|
|
+ <div class="tableBox tableBox—first">
|
|
|
+ <h4 class="td_title"><i class="icon"></i>基本信息</h4>
|
|
|
+ <ul>
|
|
|
+ <li v-if="editor === false" @click="handleEditor">编辑合同</li>
|
|
|
+ <li v-else @click="saveContractHandle">保存合同</li>
|
|
|
+ <li
|
|
|
+ v-if="projectPermis.projectPermisState.all || projectPermis.projectPermisState.xsLeader"
|
|
|
+ @click="
|
|
|
+ startUseMoneyMuate({
|
|
|
+ projectId: mContractDetail?.projectId,
|
|
|
+ supplierId: mContractDetail?.clientId
|
|
|
+ })
|
|
|
+ "
|
|
|
+ >用款申请</li
|
|
|
+ >
|
|
|
+ <li
|
|
|
+ v-if="projectPermis.projectPermisState.all || projectPermis.projectPermisState.xsLeader"
|
|
|
+ @click="() => startContractInvoiceMuate(mContractDetail?.id)"
|
|
|
+ >开票申请</li
|
|
|
+ >
|
|
|
+ </ul>
|
|
|
+ <table>
|
|
|
+ <tr>
|
|
|
+ <td class="th">合同编号:</td>
|
|
|
+ <td>
|
|
|
+ <el-input v-model="mContractDetail.contractNumber" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ <td class="th">合同主类型:</td>
|
|
|
+ <td>
|
|
|
+ <el-select style="width: 100%" v-model="mContractDetail.mainType" :disabled="!editor">
|
|
|
+ <el-option
|
|
|
+ v-for="item in mainTypeList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="Number(item.value)"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">委托方:</td>
|
|
|
+ <td>
|
|
|
+ <TreeSelectV2
|
|
|
+ :data="contractTree"
|
|
|
+ :props="{ label: 'name', value: 'id' }"
|
|
|
+ v-model="mContractDetail.clientId"
|
|
|
+ :filter-method="filterNodeMethod"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ <td class="th">合同次类型:</td>
|
|
|
+ <td>
|
|
|
+ <el-select
|
|
|
+ style="width: 100%"
|
|
|
+ v-model="mContractDetail.secondType"
|
|
|
+ :disabled="!editor"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in secondTypeList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="Number(item.value)"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">受托方:</td>
|
|
|
+ <td>
|
|
|
+ <TreeSelectV2
|
|
|
+ :data="assigneeTree"
|
|
|
+ :props="{ label: 'name', value: 'id' }"
|
|
|
+ v-model="mContractDetail.assigneeId"
|
|
|
+ :filter-method="filterNodeMethod"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ <td class="th">签订状态:</td>
|
|
|
+ <td>
|
|
|
+ <el-select style="width: 100%" v-model="mContractDetail.isSign" :disabled="!editor">
|
|
|
+ <el-option
|
|
|
+ v-for="item in contractSignList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="Number(item.value)"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">合同拿出日期:</td>
|
|
|
+ <td>
|
|
|
+ <span v-if="!editor && !mContractDetail.contractOn"></span>
|
|
|
+ <el-date-picker
|
|
|
+ v-else
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled="!editor"
|
|
|
+ v-model="mContractDetail.contractOn"
|
|
|
+ type="date"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ placeholder="请选择合同拿出时间"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ <td class="th">合同拿回日期:</td>
|
|
|
+ <td>
|
|
|
+ <span v-if="!editor && !mContractDetail.contractOff"></span>
|
|
|
+ <el-date-picker
|
|
|
+ v-else
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled="!editor"
|
|
|
+ v-model="mContractDetail.contractOff"
|
|
|
+ type="date"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ placeholder="请选择合同拿回时间"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">销售经理:</td>
|
|
|
+ <td>
|
|
|
+ <UserOrgTree v-model="mContractDetail.areaManagerId" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ <td class="th">签订方式:</td>
|
|
|
+ <td>
|
|
|
+ <span v-if="!editor && !mContractDetail.signWay"></span>
|
|
|
+ <el-select
|
|
|
+ v-else
|
|
|
+ style="width: 100%"
|
|
|
+ placeholder="请选择签订方式"
|
|
|
+ v-model="mContractDetail.signWay"
|
|
|
+ :disabled="!editor"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in signWayList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="Number(item.value)"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">付款条件:</td>
|
|
|
+ <td colspan="3" style="height: 120px">
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ :rows="5"
|
|
|
+ v-model="mContractDetail.paymentTerms"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <h4 class="td_title"><i class="icon"></i>质保金</h4>
|
|
|
+ <tr>
|
|
|
+ <td class="th">质保金(元):</td>
|
|
|
+ <td>{{ mContractDetail.qualityMoney ?? 0 }} </td>
|
|
|
+ <td class="th">质保金状态:</td>
|
|
|
+ <td>
|
|
|
+ {{
|
|
|
+ mContractDetail.qualityMoney
|
|
|
+ ? mContractDetail.qualityMoneyStatus == 1
|
|
|
+ ? '已核销'
|
|
|
+ : '未核销'
|
|
|
+ : ''
|
|
|
+ }}
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <div class="tableBox tableLineBox">
|
|
|
+ <h4 class="td_title"><i class="icon"></i>税费与金额</h4>
|
|
|
+ <table>
|
|
|
+ <thead>
|
|
|
<tr>
|
|
|
- <td class="th">合同编号:</td>
|
|
|
- <td>
|
|
|
- <el-input v-model="mContractDetail.contractNumber" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- <td class="th">合同主类型:</td>
|
|
|
- <td>
|
|
|
- <el-select
|
|
|
- style="width: 100%"
|
|
|
- v-model="mContractDetail.mainType"
|
|
|
- :disabled="!editor"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in mainTypeList"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="Number(item.value)"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </td>
|
|
|
+ <th>税率及内容</th>
|
|
|
+ <th>含税金额(元)</th>
|
|
|
+ <th>综合税率</th>
|
|
|
+ <th>不含税总额(元)</th>
|
|
|
+ <th>软件产品</th>
|
|
|
</tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
<tr>
|
|
|
- <td class="th">委托方:</td>
|
|
|
- <td>
|
|
|
- <TreeSelectV2
|
|
|
- :data="contractTree"
|
|
|
- :props="{ label: 'name', value: 'id' }"
|
|
|
- v-model="mContractDetail.clientId"
|
|
|
- :filter-method="filterNodeMethod"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
+ <td class="title">
|
|
|
+ <span>0%</span>
|
|
|
+ 技术开发
|
|
|
</td>
|
|
|
- <td class="th">合同次类型:</td>
|
|
|
<td>
|
|
|
+ <el-input v-model="mContractDetail.taxHsjeJskf" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ <td rowspan="5">
|
|
|
+ <span>{{ mContractDetail.taxZhsl }}</span>
|
|
|
+ <!-- <el-input v-model="mContractDetail.taxZhsl" :disabled="!editor" /> -->
|
|
|
+ </td>
|
|
|
+ <td rowspan="5">
|
|
|
+ <span>{{ mContractDetail.taxBhsze }}</span>
|
|
|
+ <!-- <el-input v-model="mContractDetail.taxBhsze" :disabled="!editor" /> -->
|
|
|
+ </td>
|
|
|
+ <td rowspan="5">
|
|
|
<el-select
|
|
|
+ v-model="mContractDetail.taxSoftpatent"
|
|
|
style="width: 100%"
|
|
|
- v-model="mContractDetail.secondType"
|
|
|
+ placeholder=" "
|
|
|
:disabled="!editor"
|
|
|
>
|
|
|
<el-option
|
|
|
- v-for="item in secondTypeList"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="Number(item.value)"
|
|
|
+ v-for="item in productSoftList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
/>
|
|
|
</el-select>
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td class="th">受托方:</td>
|
|
|
- <td>
|
|
|
- <TreeSelectV2
|
|
|
- :data="assigneeTree"
|
|
|
- :props="{ label: 'name', value: 'id' }"
|
|
|
- v-model="mContractDetail.assigneeId"
|
|
|
- :filter-method="filterNodeMethod"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
+ <td class="title">
|
|
|
+ <span>6%</span>
|
|
|
+ 服务
|
|
|
</td>
|
|
|
- <td class="th">签订状态:</td>
|
|
|
<td>
|
|
|
- <el-select style="width: 100%" v-model="mContractDetail.isSign" :disabled="!editor">
|
|
|
- <el-option
|
|
|
- v-for="item in contractSignList"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="Number(item.value)"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">合同拿出日期:</td>
|
|
|
- <td>
|
|
|
- <span v-if="!editor && !mContractDetail.contractOn"></span>
|
|
|
- <el-date-picker
|
|
|
- v-else
|
|
|
- style="width: 100%"
|
|
|
+ <el-input
|
|
|
+ v-model="mContractDetail.taxHsjeFw"
|
|
|
:disabled="!editor"
|
|
|
- v-model="mContractDetail.contractOn"
|
|
|
- type="date"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- placeholder="请选择合同拿出时间"
|
|
|
- />
|
|
|
- </td>
|
|
|
- <td class="th">合同拿回日期:</td>
|
|
|
- <td>
|
|
|
- <span v-if="!editor && !mContractDetail.contractOff"></span>
|
|
|
- <el-date-picker
|
|
|
- v-else
|
|
|
style="width: 100%"
|
|
|
- :disabled="!editor"
|
|
|
- v-model="mContractDetail.contractOff"
|
|
|
- type="date"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- placeholder="请选择合同拿回时间"
|
|
|
/>
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td class="th">销售经理:</td>
|
|
|
- <td>
|
|
|
- <UserOrgTree v-model="mContractDetail.areaManagerId" :disabled="!editor" />
|
|
|
+ <td class="title">
|
|
|
+ <span>13%</span>
|
|
|
+ 产品软件
|
|
|
</td>
|
|
|
- <td class="th">签订方式:</td>
|
|
|
<td>
|
|
|
- <span v-if="!editor && !mContractDetail.signWay"></span>
|
|
|
- <el-select
|
|
|
- v-else
|
|
|
- style="width: 100%"
|
|
|
- placeholder="请选择签订方式"
|
|
|
- v-model="mContractDetail.signWay"
|
|
|
- :disabled="!editor"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in signWayList"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="Number(item.value)"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
+ <el-input v-model="mContractDetail.taxHsjeRjcp" :disabled="!editor" />
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td class="th">付款条件:</td>
|
|
|
- <td colspan="3" style="height: 120px">
|
|
|
- <el-input
|
|
|
- type="textarea"
|
|
|
- :rows="5"
|
|
|
- v-model="mContractDetail.paymentTerms"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
+ <td class="title">
|
|
|
+ <span>13%</span>
|
|
|
+ 硬件(平板等)
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <el-input v-model="mContractDetail.taxHsjeYj" :disabled="!editor" />
|
|
|
</td>
|
|
|
</tr>
|
|
|
- <h4 class="td_title"><i class="icon"></i>质保金</h4>
|
|
|
- <tr>
|
|
|
- <td class="th">质保金(元):</td>
|
|
|
- <td>{{ mContractDetail.qualityMoney ?? 0 }} </td>
|
|
|
- <td class="th">质保金状态:</td>
|
|
|
+ <tr class="subtotal">
|
|
|
+ <td> 小计</td>
|
|
|
<td>
|
|
|
- {{
|
|
|
- mContractDetail.qualityMoney
|
|
|
- ? mContractDetail.qualityMoneyStatus == 1
|
|
|
- ? '已核销'
|
|
|
- : '未核销'
|
|
|
- : ''
|
|
|
- }}
|
|
|
+ <el-input v-model="mContractDetail.taxHsjeTotal" :disabled="!editor" />
|
|
|
</td>
|
|
|
</tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- <div class="tableBox tableLineBox">
|
|
|
- <h4 class="td_title"><i class="icon"></i>税费与金额</h4>
|
|
|
- <table>
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th>税率及内容</th>
|
|
|
- <th>含税金额(元)</th>
|
|
|
- <th>综合税率</th>
|
|
|
- <th>不含税总额(元)</th>
|
|
|
- <th>软件产品</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td class="title">
|
|
|
- <span>0%</span>
|
|
|
- 技术开发
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <el-input v-model="mContractDetail.taxHsjeJskf" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- <td rowspan="5">
|
|
|
- <span>{{ mContractDetail.taxZhsl }}</span>
|
|
|
- <!-- <el-input v-model="mContractDetail.taxZhsl" :disabled="!editor" /> -->
|
|
|
- </td>
|
|
|
- <td rowspan="5">
|
|
|
- <span>{{ mContractDetail.taxBhsze }}</span>
|
|
|
- <!-- <el-input v-model="mContractDetail.taxBhsze" :disabled="!editor" /> -->
|
|
|
- </td>
|
|
|
- <td rowspan="5">
|
|
|
- <el-select
|
|
|
- v-model="mContractDetail.taxSoftpatent"
|
|
|
- style="width: 100%"
|
|
|
- placeholder=" "
|
|
|
- :disabled="!editor"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in productSoftList"
|
|
|
- :key="item.id"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="title">
|
|
|
- <span>6%</span>
|
|
|
- 服务
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <el-input
|
|
|
- v-model="mContractDetail.taxHsjeFw"
|
|
|
- :disabled="!editor"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="title">
|
|
|
- <span>13%</span>
|
|
|
- 产品软件
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <el-input v-model="mContractDetail.taxHsjeRjcp" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="title">
|
|
|
- <span>13%</span>
|
|
|
- 硬件(平板等)
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <el-input v-model="mContractDetail.taxHsjeYj" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr class="subtotal">
|
|
|
- <td> 小计</td>
|
|
|
- <td>
|
|
|
- <el-input v-model="mContractDetail.taxHsjeTotal" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- <!-- <div class="tableBox">
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <!-- <div class="tableBox">
|
|
|
<h4 class="td_title"><i class="icon"></i>维护条款</h4>
|
|
|
<table>
|
|
|
<tr>
|
|
@@ -381,166 +336,13 @@
|
|
|
</tr>
|
|
|
</table>
|
|
|
</div> -->
|
|
|
- <!-- 合同里程碑 -->
|
|
|
- <ContractMilestone
|
|
|
- :contractId="mContractDetail?.id"
|
|
|
- :contractAmount="mContractDetail?.contractAmount"
|
|
|
- />
|
|
|
- <!-- 回款 -->
|
|
|
- <ContractReturnedMoney :contractId="mContractDetail?.id" />
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <div class="titleBox">
|
|
|
- <h2>{{ cContractDetail?.name ?? '' }} </h2>
|
|
|
- <span class="tag">已签</span>
|
|
|
- <span class="tag">未付清</span>
|
|
|
- </div>
|
|
|
- <div class="tableBox tableBox—first">
|
|
|
- <h4 class="td_title"><i class="icon"></i>基本信息</h4>
|
|
|
- <ul>
|
|
|
- <li v-if="editor === false" @click="handleEditor">编辑合同</li>
|
|
|
- <li v-else @click="saveContractHandle">保存合同</li>
|
|
|
- <li
|
|
|
- @click="
|
|
|
- startUseMoneyMuate({
|
|
|
- projectId: mContractDetail?.projectId,
|
|
|
- supplierId: cContractDetail?.clientId
|
|
|
- })
|
|
|
- "
|
|
|
- >用款申请</li
|
|
|
- >
|
|
|
- </ul>
|
|
|
- <table>
|
|
|
- <template v-if="cContractDetail?.contractType == 2">
|
|
|
- <tr>
|
|
|
- <td class="th">分包理由:</td>
|
|
|
- <td colspan="3">
|
|
|
- <el-input v-model="cContractDetail.subReason" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">分包金额(元):</td>
|
|
|
- <td>
|
|
|
- <el-input v-model="cContractDetail.subAmount" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- <td class="th">供应商:</td>
|
|
|
- <td>
|
|
|
- <el-input v-model="cContractDetail.applyWorkerDept" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">合同拿出日期:</td>
|
|
|
- <td>
|
|
|
- <el-date-picker
|
|
|
- style="width: 100%"
|
|
|
- :disabled="!editor"
|
|
|
- v-model="cContractDetail.contractOn"
|
|
|
- type="date"
|
|
|
- @change="($evt) => (cContractDetail.contractOn = $evt)"
|
|
|
- placeholder="请选择合同拿出时间"
|
|
|
- />
|
|
|
- </td>
|
|
|
- <td class="th">合同拿回日期:</td>
|
|
|
- <td>
|
|
|
- <el-date-picker
|
|
|
- style="width: 100%"
|
|
|
- :disabled="!editor"
|
|
|
- v-model="cContractDetail.contractOff"
|
|
|
- type="date"
|
|
|
- @change="($evt) => (cContractDetail.contractOff = $evt)"
|
|
|
- placeholder="请选择合同拿回时间"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">是否需要签订合同:</td>
|
|
|
- <td>
|
|
|
- <el-radio-group v-model="cContractDetail.isSign" :disabled="!editor">
|
|
|
- <el-radio :label="1">是</el-radio>
|
|
|
- <el-radio :label="0">否</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </td>
|
|
|
- <td class="th">分包费用承担:</td>
|
|
|
- <td>
|
|
|
- <el-select
|
|
|
- style="width: 100%"
|
|
|
- v-model="cContractDetail.subShareWay"
|
|
|
- :disabled="!editor"
|
|
|
- >
|
|
|
- <el-option label="全部由公司承担" :value="1" />
|
|
|
- <el-option label="全部由技术部门承担" :value="2" />
|
|
|
- <el-option label="由公司和技术部门按比例承担" :value="3" />
|
|
|
- </el-select>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">分包采购内容需求:</td>
|
|
|
- <td colspan="3">
|
|
|
- <el-input
|
|
|
- type="textarea"
|
|
|
- :rows="4"
|
|
|
- v-model="cContractDetail.purchaseRequirements"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <tr>
|
|
|
- <td class="th">外包包理由:</td>
|
|
|
- <td colspan="3">
|
|
|
- <el-input v-model="cContractDetail.subReason" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">外包金额(元):</td>
|
|
|
- <td>
|
|
|
- <el-input v-model="cContractDetail.subAmount" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- <td class="th">供应商:</td>
|
|
|
- <td>
|
|
|
- <el-input v-model="cContractDetail.applyWorkerDept" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">是否需要签订合同:</td>
|
|
|
- <td>
|
|
|
- <el-radio-group v-model="cContractDetail.isSign" :disabled="!editor">
|
|
|
- <el-radio :label="1">是</el-radio>
|
|
|
- <el-radio :label="0">否</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </td>
|
|
|
- <td class="th">质量把控人:</td>
|
|
|
- <td>
|
|
|
- <UserOrgTree v-model="cContractDetail.qualityControllerId" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">备注:</td>
|
|
|
- <td colspan="3">
|
|
|
- <el-input
|
|
|
- type="textarea"
|
|
|
- :rows="4"
|
|
|
- v-model="cContractDetail.bz"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </template>
|
|
|
- <tr>
|
|
|
- <td class="th">付款条件:</td>
|
|
|
- <td colspan="3" style="height: 120px">{{ cContractDetail?.paymentTerms ?? '' }}</td>
|
|
|
- </tr>
|
|
|
- <h4 class="td_title"><i class="icon"></i>财务信息</h4>
|
|
|
- <tr>
|
|
|
- <td class="th">已付款金额(元):</td>
|
|
|
- <td>{{ calcInfo?.pay }}</td>
|
|
|
- <td class="th">合同余额(元):</td>
|
|
|
- <td>{{ calcInfo?.balance }}</td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
+ <!-- 合同里程碑 -->
|
|
|
+ <ContractMilestone
|
|
|
+ :contractId="mContractDetail?.id"
|
|
|
+ :contractAmount="mContractDetail?.contractAmount"
|
|
|
+ />
|
|
|
+ <!-- 回款 -->
|
|
|
+ <ContractReturnedMoney :contractId="mContractDetail?.id" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -566,7 +368,6 @@ import {
|
|
|
} from '@/service/contract'
|
|
|
import { useQuery, useMutation } from '@tanstack/vue-query'
|
|
|
import { Contract } from '@/interface/contract'
|
|
|
-import { contractTypeFilter } from './common'
|
|
|
|
|
|
defineOptions({ name: 'XmhtComp' })
|
|
|
|
|
@@ -585,7 +386,6 @@ const editor = ref<Boolean>(false)
|
|
|
const mContractDetail = ref<Contract>({} as Contract)
|
|
|
const cContractDetail = ref<any>()
|
|
|
const mContractDetails = ref<any[]>([])
|
|
|
-const childrenContracts = ref<any[]>([])
|
|
|
|
|
|
/***
|
|
|
* 软件产品列表
|
|
@@ -609,22 +409,6 @@ const { refetch } = useQuery(
|
|
|
async () => await getContractsByProject(unref(_currentProjectId)),
|
|
|
{
|
|
|
onSuccess: (tData: Contract[]) => {
|
|
|
- for (const contract of tData) {
|
|
|
- if (contract.children && contract.children.length > 0) {
|
|
|
- childrenContracts.value = contract.children.filter((child) => {
|
|
|
- return child?.contractType !== 4
|
|
|
- })
|
|
|
- for (let i = 0; i < childrenContracts.value.length; i++) {
|
|
|
- const item = childrenContracts.value[i]
|
|
|
- if (item['id'] === contractId) {
|
|
|
- contractInfoIndex.value = i + 1
|
|
|
- cContractDetail.value = item
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
mContractDetails.value = tData
|
|
|
mContractDetail.value = tData[0] //初始化主合同
|
|
|
}
|
|
@@ -654,22 +438,13 @@ const { data: assigneeTree } = useQuery(['assigneeTree'], async () => await quer
|
|
|
staleTime: Infinity
|
|
|
})
|
|
|
/**
|
|
|
- * 切换子合同
|
|
|
+ * 切换主合同
|
|
|
* **/
|
|
|
-const mainContractIndex = ref<number>(0)
|
|
|
const contractInfoIndex = ref<number>(0)
|
|
|
-const switchContractInfo = (item: any, key: number, mKey?: number): void => {
|
|
|
+const switchContractInfo = (item: any, key: number): void => {
|
|
|
contractInfoIndex.value = key
|
|
|
- if (key === 0) {
|
|
|
- //主合同
|
|
|
- mContractDetail.value = item
|
|
|
- if (mKey) {
|
|
|
- mainContractIndex.value = mKey
|
|
|
- }
|
|
|
- } else {
|
|
|
- cContractDetail.value = item
|
|
|
- queryContractPaymentCalcMutate(item.id)
|
|
|
- }
|
|
|
+ mContractDetail.value = item
|
|
|
+ console.log(item)
|
|
|
}
|
|
|
|
|
|
const saveContractHandle = () => {
|
|
@@ -698,12 +473,6 @@ const { mutate: saveContract } = useMutation(putContract, {
|
|
|
const handleEditor = () => {
|
|
|
editor.value = !editor.value
|
|
|
}
|
|
|
-/***
|
|
|
- * 查看合同流程
|
|
|
- */
|
|
|
-const { mutate: startContractFlowMuate } = useMutation(startContractInvoice, {
|
|
|
- onSuccess: (data) => openFlow(router, data, '开票申请')
|
|
|
-})
|
|
|
|
|
|
/**
|
|
|
* 流程查看
|