ContractInfo.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <div class="contract-info">
  3. <InfoCard title="协议签订信息">
  4. <div class="contract-info-card">
  5. <div class="contract-info-card-item">
  6. 协议签订状态:{{contractRes?.contract_status === 1 ? '签协议' : '不签协议'}}
  7. </div>
  8. <div class="contract-info-card-item">
  9. 签约主体:{{ setSigningSubject || '-' }}
  10. </div>
  11. <div class="contract-info-card-item" v-if="contractResStatus">
  12. 协议签订时间:{{ contractRes?.contract_time || '-' }}
  13. </div>
  14. <div class="contract-info-card-item" v-if="contractResStatus">
  15. 协议编号:{{ contractRes?.contract_code || '-' }}
  16. </div>
  17. </div>
  18. </InfoCard>
  19. <InfoCard v-if="contractResStatus">
  20. <template #title>
  21. <div class="contract-info-card-title">
  22. <span>协议归档信息</span>
  23. <button @click="editContractArchive('1')" v-if="contractRes?.contract_archive_status !== 1" class="edit-btn">编辑</button>
  24. </div>
  25. </template>
  26. <div class="contract-info-card">
  27. <div class="contract-info-card-item">
  28. 协议归档状态:{{contractRes?.contract_archive_status === 1 ? '已归档' : '未归档' }}
  29. </div>
  30. <div class="contract-info-card-item" v-if="contractRes?.contract_archive_status === 1">
  31. 归档时间:{{ contractRes?.contract_archive_time || '-' }}
  32. </div>
  33. <div class="contract-info-card-item" v-if="contractRes?.contract_archive_status === 1">
  34. 归档份数:{{ contractRes?.contract_archive_num || '-' }}
  35. </div>
  36. <div class="contract-info-card-item" v-if="contractRes?.contract_archive_status === 1">
  37. 归档协议:{{ contractRes?.contract_file_url || '-' }}
  38. </div>
  39. </div>
  40. </InfoCard>
  41. <InfoCard v-if="contractResStatus">
  42. <template #title>
  43. <div class="contract-info-card-title">
  44. <span>电子归档信息</span>
  45. <button @click="editContractArchive('2')" class="edit-btn">编辑</button>
  46. </div>
  47. </template>
  48. <div class="contract-info-card card-noflex">
  49. <div class="contract-info-card-item">
  50. 电子协议备注:{{ contractRes?.remark || '-' }}
  51. </div>
  52. <div class="arow">
  53. <div class="contract-info-card-item">
  54. 电子协议类型:{{ contractRes?.seal_type === 1 ? '有电子章' : '无电子章'}}
  55. </div>
  56. <div class="contract-info-card-item">
  57. 协议甲方类型:{{ contractRes?.partyA_type === 2 ? '企业' : '个人' }}
  58. </div>
  59. </div>
  60. <div class="contract-info-card-item">
  61. 协议甲方:{{ contractRes?.partyA_name || '-' }}
  62. </div>
  63. <div class="arow">
  64. <div class="contract-info-card-item">
  65. 协议甲方联系人:{{ contractRes?.partyA_person || '-'}}
  66. </div>
  67. <div class="contract-info-card-item">
  68. 协议乙方联系人:{{ contractRes?.partyB_person || '-'}}
  69. </div>
  70. </div>
  71. <div class="contract-info-card-item">
  72. 协议甲方地址:{{ contractRes?.partyA_address || '-' }}
  73. </div>
  74. </div>
  75. </InfoCard>
  76. <Dialog
  77. ref="editContractArchiveDialog"
  78. :visible="editContractArchiveDialogVisible"
  79. title="编辑电子协议信息"
  80. width="90%"
  81. >
  82. <contractInfoModule></contractInfoModule>
  83. </Dialog>
  84. </div>
  85. </template>
  86. <script>
  87. import InfoCard from '../../ui/InfoCard.vue';
  88. import { signUnitOptions } from '@/views/create-order/data/index.js'
  89. import contractInfoModule from '../contractInfoModule.vue';
  90. import Dialog from '@/components/Dialog.vue';
  91. export default {
  92. name: 'ContractInfo',
  93. components: {
  94. InfoCard,
  95. contractInfoModule,
  96. Dialog
  97. },
  98. props: {
  99. orderDetail: {
  100. type: Object,
  101. default: () => {
  102. return {}
  103. }
  104. }
  105. },
  106. computed: {
  107. setSigningSubject() {
  108. return signUnitOptions.find(item => item.value === this.orderDetail?.orderData?.signing_subject)?.label || '-';
  109. },
  110. contractResStatus() {
  111. return this.contractRes?.contract_status === 1
  112. }
  113. },
  114. data() {
  115. return {
  116. editContractArchiveDialogVisible: false,
  117. contractRes: this.orderDetail?.contractRes || {}
  118. }
  119. },
  120. methods: {
  121. editContractArchive(type) {
  122. const userAdmin = this.orderDetail?.userIdentity === 1 || this.orderDetail?.userIdentity === 2;
  123. if(!userAdmin) {
  124. if(type === '1') {
  125. // 协议归档信息
  126. } else if(type === '2') {
  127. // 电子归档信息
  128. this.editContractArchiveDialogVisible = true;
  129. }
  130. } else {
  131. this.$message.error('暂无权限')
  132. }
  133. }
  134. }
  135. }
  136. </script>
  137. <style lang="scss" scoped>
  138. .contract-info {
  139. background: #F2F2F4;
  140. ::v-deep {
  141. .info-card {
  142. margin-bottom: 16px;
  143. }
  144. }
  145. }
  146. .contract-info-card-title {
  147. display: flex;
  148. justify-content: space-between;
  149. align-items: center;
  150. .edit-btn {
  151. padding: 4px 31px;
  152. background: $color_main;
  153. color: $white;
  154. border-radius: 4px;
  155. font-size: 14px;
  156. line-height: 22px;
  157. border: none;
  158. cursor: pointer;
  159. }
  160. }
  161. .contract-info-card {
  162. display: flex;
  163. align-items: center;
  164. flex-wrap: wrap;
  165. &.card-noflex {
  166. display: block;
  167. }
  168. &-item {
  169. display: flex;
  170. align-items: center;
  171. margin-right: 32px;
  172. min-width: 255px;
  173. font-size: 14px;
  174. line-height: 22px;
  175. color: $gray_10;
  176. }
  177. .arow {
  178. display: flex;
  179. align-items: center;
  180. margin: 10px 0;
  181. }
  182. }
  183. </style>