sendGoods.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <template>
  2. <div v-loading="loading">
  3. <div class="form-box">
  4. <el-form
  5. label-position="top"
  6. :model="form"
  7. ref="form"
  8. :rules="formRules"
  9. label-width="100px"
  10. >
  11. <el-row :gutter="10">
  12. <el-col :span="4">
  13. <el-form-item label="采购单号" prop="puCode">
  14. <el-input
  15. v-model="form.puCode"
  16. placeholder="请输入"
  17. disabled
  18. ></el-input>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="8">
  22. <el-form-item label="供应商" prop="supplierName">
  23. <el-input
  24. v-model="form.supplierName"
  25. placeholder="请输入"
  26. disabled
  27. ></el-input>
  28. </el-form-item>
  29. </el-col>
  30. </el-row>
  31. <el-row :gutter="10">
  32. <el-col :span="6">
  33. <el-form-item label="物流信息" prop="logisticsCompanyCode">
  34. <el-select
  35. v-model="form.logisticsCompanyCode"
  36. placeholder="请选择"
  37. style="width: 100%"
  38. >
  39. <el-option
  40. v-for="item in logisticsData"
  41. :key="item.code"
  42. :label="item.name"
  43. :value="item.code"
  44. >
  45. </el-option>
  46. </el-select>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="6">
  50. <el-form-item label=" " prop="code">
  51. <el-input
  52. v-model="form.code"
  53. placeholder="物流/快递单号"
  54. ></el-input>
  55. </el-form-item>
  56. </el-col>
  57. </el-row>
  58. <div style="margin-bottom: 20px">
  59. <labelTitle content="发货明细"></labelTitle>
  60. </div>
  61. <!-- <el-form-item label="上传附件">
  62. <el-upload
  63. class="upload-demo"
  64. action="http://36.134.91.96:10001/api/service-file/uploadFile"
  65. :headers="uploadHeader"
  66. :on-preview="handlePreview"
  67. :on-remove="handleRemove"
  68. :on-success="handleSuccess"
  69. multiple
  70. :file-list="fileList"
  71. >
  72. <el-button size="small" type="primary">点击上传</el-button>
  73. </el-upload>
  74. </el-form-item> -->
  75. <el-form-item>
  76. <el-table :data="form.details">
  77. <el-table-column label="物品编码" prop="goodsCode">
  78. </el-table-column>
  79. <el-table-column label="物品名称" prop="goodsName">
  80. </el-table-column>
  81. <el-table-column label="采购数量" prop="quantity">
  82. </el-table-column>
  83. <el-table-column label="发货数量" prop="shipmentQuantity">
  84. <template slot-scope="scope">
  85. <el-form-item
  86. :prop="'details.' + scope.$index + '.shipmentQuantity'"
  87. :rules="formRules.shipmentQuantity"
  88. :inline-message="true"
  89. label-width="0"
  90. >
  91. <el-input
  92. v-model="scope.row.shipmentQuantity"
  93. placeholder="请输入"
  94. size="mini"
  95. >
  96. </el-input>
  97. </el-form-item>
  98. </template>
  99. </el-table-column>
  100. </el-table>
  101. </el-form-item>
  102. </el-form>
  103. </div>
  104. <div style="text-align: center; margin-top: 15px">
  105. <el-button size="small" @click="handleCancel">取消 </el-button>
  106. <el-button type="primary" size="small" @click="handleSubmit">
  107. 确定</el-button
  108. >
  109. </div>
  110. </div>
  111. </template>
  112. <script>
  113. import labelTitle from "@/components/label-title/index.vue";
  114. import { getToken } from "@/util/auth";
  115. import { getLogisticsData } from "@/api/system/common.js";
  116. export default {
  117. name: "addPurchase",
  118. components: { labelTitle },
  119. props: {
  120. form: {
  121. type: Object,
  122. default: () => {},
  123. },
  124. },
  125. data() {
  126. return {
  127. uploadHeader: {
  128. Authorization: "Basic c2FiZXI6c2FiZXJfc2VjcmV0",
  129. "Blade-Auth": "bearer " + getToken(),
  130. },
  131. fileList: [],
  132. loading: false,
  133. formRules: {
  134. code: [
  135. {
  136. required: true,
  137. message: "请输入物流单号",
  138. trigger: "blur",
  139. },
  140. ],
  141. logisticsCompanyCode: [
  142. {
  143. required: true,
  144. message: "请选择物流信息",
  145. trigger: "change",
  146. },
  147. ],
  148. shipmentQuantity: [
  149. {
  150. required: true,
  151. message: "请输入发货数量",
  152. trigger: "blur",
  153. },
  154. ],
  155. },
  156. logisticsData: [],
  157. };
  158. },
  159. created() {
  160. getLogisticsData({ keyword: "" }).then((res) => {
  161. this.logisticsData = res.data.data;
  162. });
  163. },
  164. methods: {
  165. handleSubmit() {
  166. this.$refs.form.validate((valid) => {
  167. if (valid) {
  168. this.loading = true;
  169. this.$emit("submit");
  170. }
  171. });
  172. },
  173. handleCancel() {
  174. this.$emit("cancel");
  175. },
  176. handleSuccess(response, file, fileList) {
  177. this.form.fileInfoList = fileList;
  178. },
  179. handleRemove(response, file, fileList) {
  180. this.form.fileInfoList = fileList;
  181. },
  182. handlePreview() {},
  183. },
  184. };
  185. </script>
  186. <style lang="scss" scoped>
  187. .form-box {
  188. height: calc(100vh - 280px);
  189. overflow: auto;
  190. box-sizing: border-box;
  191. padding: 10px;
  192. }
  193. ::v-deep {
  194. .el-form-item {
  195. margin-bottom: 3px;
  196. }
  197. .el-form--label-top .el-form-item__label {
  198. padding: 8px 0 0 0;
  199. }
  200. }
  201. </style>