details.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <div>
  3. <el-form :model="form" label-position="left" v-loading="loading">
  4. <div style="margin-bottom: 20px">
  5. <labelTitle content="基本信息"></labelTitle>
  6. </div>
  7. <div style="padding: 0px 20px">
  8. <el-row :gutter="10">
  9. <el-col :span="12">
  10. <el-form-item label="供应商:" prop="supplierName">
  11. <span>{{ form.supplierName }}</span>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="12">
  15. <el-form-item label="采购单号:" prop="code">
  16. <span>
  17. {{ form.code }}
  18. </span>
  19. </el-form-item>
  20. </el-col>
  21. </el-row>
  22. </div>
  23. <div style="margin-bottom: 20px">
  24. <labelTitle content="采购明细"></labelTitle>
  25. </div>
  26. <div style="padding: 0px 20px">
  27. <el-table :data="form.goodsList">
  28. <el-table-column label="申购单号" prop="code" />
  29. <el-table-column
  30. label="要求到货时间"
  31. prop="planArrivalTime"
  32. width="150"
  33. />
  34. <el-table-column label="物品类型" prop="goodsType" :formatter="(row)
  35. => dictDataEcho(row.goodsType, productTypeList)" / >
  36. <el-table-column label="物品编码" prop="goodsCode" />
  37. <el-table-column label="物品名称" prop="goodsName" />
  38. <el-table-column label="物品单位" prop="goodsUnit" width="80" />
  39. <el-table-column label="单价" prop="unitPrice" width="100" />
  40. <el-table-column
  41. label="采购数量"
  42. prop="purchaseQuantity"
  43. width="120"
  44. />
  45. </el-table>
  46. </div>
  47. <div style="margin: 20px 0">
  48. <labelTitle content="审批记录"></labelTitle>
  49. </div>
  50. <div style="padding: 0px 20px">
  51. <el-table :data="recordsList">
  52. <el-table-column label="节点名称" prop="nodeName" />
  53. <el-table-column label="节点状态" prop="typeName" />
  54. <el-table-column label="发起/审批人" prop="userName" />
  55. <el-table-column label="审批说明" prop="remarks" />
  56. </el-table>
  57. </div>
  58. </el-form>
  59. </div>
  60. </template>
  61. <script>
  62. import labelTitle from "@/components/label-title/index.vue";
  63. import { purchaseDetails } from "@/api/purchase-management/purchase/index.js";
  64. import { supplySelect } from "@/api/product-material/supply/index.js";
  65. import { exampleInfo, exampleInfoShowFlow } from "@/api/process";
  66. export default {
  67. props: {
  68. rowData: {
  69. type: Object,
  70. },
  71. },
  72. components: {
  73. labelTitle,
  74. },
  75. data() {
  76. return {
  77. loading: true,
  78. form: {},
  79. supplySelectList: [],
  80. productTypeList: [],
  81. recordsList: [],
  82. };
  83. },
  84. created() {
  85. const businessDictData = JSON.parse(
  86. window.localStorage.getItem("businessDict")
  87. );
  88. this.productTypeList = businessDictData.find(
  89. (item) => item.code === "productType"
  90. ).children;
  91. },
  92. mounted() {
  93. if (this.rowData.id) {
  94. this.getDetails();
  95. this.getRecordsList();
  96. }
  97. },
  98. methods: {
  99. getRecordsList() {
  100. if (this.rowData.flowId) {
  101. exampleInfo({ flowLinkNo: this.rowData.id }).then((res) => {
  102. this.recordsList = res.data.data;
  103. });
  104. } else {
  105. exampleInfoShowFlow({ code: "PURCHASE" }).then((res) => {
  106. this.recordsList = res.data.data;
  107. });
  108. }
  109. },
  110. async getDetails() {
  111. this.loading = true;
  112. const { data } = await supplySelect({ name: "", code: "", type: "" });
  113. this.supplySelectList = data.data;
  114. purchaseDetails({ id: this.rowData.id }).then((res) => {
  115. this.getSupplierName(res.data.data.supplierId, res.data.data);
  116. });
  117. },
  118. getSupplierName(id, data) {
  119. const current = this.supplySelectList.find((x) => x.id === id);
  120. if (current) {
  121. this.form = {
  122. ...data,
  123. supplierName: current.name,
  124. };
  125. this.loading = false;
  126. }
  127. },
  128. },
  129. };
  130. </script>
  131. <style lang="scss" scoped>
  132. ::v-deep {
  133. .el-form-item {
  134. margin-bottom: 5px;
  135. }
  136. }
  137. </style>