detailDialog.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. <template>
  2. <ele-modal
  3. custom-class="ele-dialog-form long-dialog-form"
  4. :centered="true"
  5. v-if="visible"
  6. :visible.sync="visible"
  7. :title="title"
  8. :close-on-click-modal="false"
  9. :append-to-body="true"
  10. width="70%"
  11. @close="cancel"
  12. :maxable="true"
  13. :resizable="true"
  14. >
  15. <!-- <div class="switch">
  16. <div class="switch_left">
  17. <ul>
  18. <li
  19. v-for="item in tabOptions"
  20. :key="item.key"
  21. :class="{ active: activeComp == item.key }"
  22. @click="changeK(item.key)"
  23. >
  24. {{ item.name }}
  25. </li>
  26. </ul>
  27. </div>
  28. </div> -->
  29. <div v-if="activeComp === 'main'">
  30. <el-form ref="form" :model="form" :rules="rules" label-width="120px">
  31. <headerTitle title="基本信息"></headerTitle>
  32. <el-row>
  33. <el-col :span="8">
  34. <el-form-item :label="menu === 'purchase' ? '付款计划编码:' : '收款计划编码:'" prop="orderNo">
  35. <el-input v-model="form.orderNo" disabled></el-input>
  36. </el-form-item>
  37. <el-form-item label="合同编码:" prop="contractNo">
  38. <el-input v-model="form.contractNo" disabled></el-input>
  39. </el-form-item>
  40. <el-form-item label="客户编码:" prop="customerCode">
  41. <el-input v-model="form.customerCode" disabled></el-input>
  42. </el-form-item>
  43. <el-form-item label="交易方式:" prop="transactionMode">
  44. <el-input v-model="form.transactionMode" disabled></el-input>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="8">
  48. <el-form-item label="订单编码:" prop="sourceOrderNo">
  49. <el-input v-model="form.sourceOrderNo" disabled></el-input>
  50. </el-form-item>
  51. <el-form-item label="合同编号:" prop="contractCode">
  52. <el-input v-model="form.contractCode" disabled></el-input>
  53. </el-form-item>
  54. <el-form-item label="客户名称:" prop="customerName">
  55. <el-input v-model="form.customerName" disabled></el-input>
  56. </el-form-item>
  57. <el-form-item label="发货模式:" prop="deliveryMode">
  58. <el-input v-model="form.deliveryMode" disabled></el-input>
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="8">
  62. <el-form-item prop="sourceOrderType" label="订单类型:">
  63. <el-input v-model="form.sourceOrderType" disabled></el-input>
  64. </el-form-item>
  65. <el-form-item prop="contractName" label="合同名称:">
  66. <el-input v-model="form.contractName" disabled></el-input>
  67. </el-form-item>
  68. <el-form-item label="结算方式:" prop="settlementMode">
  69. <el-input v-model="form.settlementMode" disabled></el-input>
  70. </el-form-item>
  71. <el-form-item prop="attachments" label="附件:">
  72. <fileMain v-model="form.attachments" type="view"></fileMain>
  73. </el-form-item>
  74. </el-col>
  75. </el-row>
  76. </el-form>
  77. <headerTitle
  78. :title="menu === 'purchase' ? '付款计划' : '收款计划'"
  79. style="margin-top: 30px"
  80. ></headerTitle>
  81. <paymentCollectionPlanDetail
  82. ref="paymentCollectionPlanDetailRef"
  83. :menu="menu"
  84. type="view"
  85. ></paymentCollectionPlanDetail>
  86. </div>
  87. <bpmDetail
  88. v-if="activeComp === 'bpm' && form.processInstanceId"
  89. :id="form.processInstanceId"
  90. ></bpmDetail>
  91. <div slot="footer" class="footer">
  92. <el-button @click="cancel">返回</el-button>
  93. </div>
  94. </ele-modal>
  95. </template>
  96. <script>
  97. import { getDetail, getExport } from '@/api/contractManage/contractBook';
  98. import { getFile } from '@/api/system/file';
  99. import dictMixins from '@/mixins/dictMixins';
  100. import { copyObj } from '@/utils/util';
  101. import bpmDetail from '@/views/bpm/processInstance/detail.vue';
  102. import inventoryTabledetail from '@/BIZComponents/inventoryTableDetails.vue';
  103. import paymentCollectionPlanDetail from '@/BIZComponents/paymentCollectionPlan/Detail.vue';
  104. import { receiptPaymentPlanById } from '@/api/financialManage/payAndCollectPlan';
  105. export default {
  106. mixins: [dictMixins],
  107. props: {
  108. menu: {
  109. type: String,
  110. default: 'sale'
  111. }
  112. },
  113. components: {
  114. inventoryTabledetail,
  115. bpmDetail,
  116. paymentCollectionPlanDetail
  117. },
  118. data() {
  119. return {
  120. fullscreen: false,
  121. cacheKeyUrl: 'eos-financialManage-collectionPlan-detailDialog',
  122. activeName: '1',
  123. activeComp: 'main',
  124. tabOptions: [
  125. { key: 'main', name: '收款计划详情' },
  126. { key: 'bpm', name: '流程详情' },
  127. ],
  128. visible: false,
  129. detailId: '',
  130. title: '详情',
  131. row: {},
  132. form: {},
  133. rules: {},
  134. detailData: {},
  135. sourceTypeList: [
  136. {
  137. code: 1,
  138. name: '报价单',
  139. parentId: '1'
  140. },
  141. {
  142. code: 2,
  143. name: '核价单',
  144. parentId: '2'
  145. },
  146. {
  147. code: 3,
  148. name: '采购计划',
  149. parentId: '2'
  150. },
  151. {
  152. code: 4,
  153. name: '商机',
  154. parentId: '1'
  155. },
  156. {
  157. code: 5,
  158. name: '退货单',
  159. parentId: '1'
  160. },
  161. {
  162. code: 6,
  163. name: '客户',
  164. parentId: '1'
  165. },
  166. {
  167. code: 7,
  168. name: '销售订单',
  169. parentId: '1'
  170. }
  171. ]
  172. };
  173. },
  174. methods: {
  175. //导出
  176. async exportTable() {
  177. this.loading = true;
  178. const response = await getExport(this.detailId);
  179. },
  180. async open(row) {
  181. console.log(row);
  182. this.form = row;
  183. this.activeComp = 'main';
  184. this.visible = true;
  185. this.activeName = '1';
  186. this.getDetailData(row.orderId);
  187. this.detailId = row.id;
  188. },
  189. changeK(key) {
  190. this.activeComp = key;
  191. if (key == 'main') {
  192. this.$nextTick(() => {
  193. this.$refs.inventoryTabledetailRef &&
  194. this.$refs.inventoryTabledetailRef.putTableValue({
  195. ...this.detailData,
  196. ...this.detailData.contractVO
  197. });
  198. this.$refs.rawDetailListRef &&
  199. this.$refs.rawDetailListRef.putTableValueNew(this.form.rawList); //原料
  200. this.$refs.outputDetailListRef &&
  201. this.$refs.outputDetailListRef.putTableValueNew(
  202. this.form.outputList
  203. );
  204. });
  205. }
  206. if (key == 'changeList') {
  207. this.$nextTick(() => {
  208. this.$refs.changeList.init(this.form.id);
  209. });
  210. }
  211. },
  212. cancel() {
  213. this.$nextTick(() => {
  214. // 关闭后,销毁所有的表单数据
  215. (this.form = copyObj(this.formDef)),
  216. (this.otherForm = copyObj(this.otherFormDef)),
  217. (this.tableBankData = []);
  218. this.tableLinkData = [];
  219. this.visible = false;
  220. });
  221. },
  222. downloadFile(file) {
  223. getFile({ objectName: file.storePath }, file.name);
  224. },
  225. async getDetailData(id) {
  226. this.loading = true;
  227. const data = await receiptPaymentPlanById(id);
  228. console.log('收款计划详情', data);
  229. this.loading = false;
  230. if (data) {
  231. // data.productList.forEach((item) => {
  232. // item['pricingWay'] = item.pricingWay || data.contractVO?.pricingWay;
  233. // });
  234. // this.detailData = data;
  235. this.form = data;
  236. this.$nextTick(() => {
  237. this.$refs.paymentCollectionPlanDetailRef &&
  238. this.$refs.paymentCollectionPlanDetailRef.putTableValue(data.details);
  239. // this.$refs.inventoryTabledetailRef &&
  240. // this.$refs.inventoryTabledetailRef.putTableValue({
  241. // ...data,
  242. // ...data.contractVO
  243. // });
  244. // this.$refs.rawDetailListRef &&
  245. // this.$refs.rawDetailListRef.putTableValueNew(this.form.rawList); //原料
  246. // this.$refs.outputDetailListRef &&
  247. // this.$refs.outputDetailListRef.putTableValueNew(
  248. // this.form.outputList
  249. // );
  250. });
  251. }
  252. }
  253. }
  254. };
  255. </script>
  256. <style scoped lang="scss">
  257. .ele-dialog-form {
  258. .el-form-item {
  259. margin-bottom: 10px;
  260. }
  261. }
  262. .headbox {
  263. display: flex;
  264. justify-content: flex-start;
  265. align-items: center;
  266. .amount {
  267. font-size: 14px;
  268. font-weight: bold;
  269. margin-right: 20px;
  270. }
  271. }
  272. </style>