WarehouseForm.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <template>
  2. <div>
  3. <el-page-header @back="$parent.pageType = 0" content="新增" style="padding: 20px 20px 0 20px"></el-page-header>
  4. <warehousing-header ref="header" />
  5. <sales-table :dataList="dataList" :column="column" isOperation isSelection @handleSelection="handleSelection">
  6. <template #bts>
  7. <div>
  8. <el-button type="primary" size="mini" @click="dialogVisible = true">添加</el-button>
  9. <el-button type="danger" size="mini" @click="delChange">删除</el-button>
  10. </div>
  11. </template>
  12. <template #events>
  13. <div>
  14. <el-button type="primary" size="mini" @click="handelSubmit">提交</el-button>
  15. <el-button size="mini" @click="onReset">重置</el-button>
  16. </div>
  17. </template>
  18. <template v-slot:custom="{ item: { row, $index } }">
  19. <el-radio :label="1" v-model="row.flag">增加</el-radio>
  20. <el-radio :label="0" v-model="row.flag">减少</el-radio>
  21. </template>
  22. <template v-slot:operation="{ item: { row, $index } }">
  23. <el-popconfirm style="margin-left: 10px" title="删除?" @onConfirm="handleDel(row, $index)">
  24. <el-button slot="reference" type="text" size="mini">删除</el-button>
  25. </el-popconfirm>
  26. </template>
  27. </sales-table>
  28. <sales-dialog
  29. ref="dia"
  30. :dialogVisible="dialogVisible"
  31. :customerNumber="customerNumber"
  32. :func="getDialogList"
  33. @confirm="confirm"
  34. />
  35. </div>
  36. </template>
  37. <script>
  38. import SalesDialog from '@/components/SalesDialog/SalesDialog'
  39. import WarehousingHeader from '@/components/WarehousingHeader/WarehousingHeader'
  40. import SalesTable from '@/components/SalesTable/SalesTable'
  41. import { getcustomerFrontList, addCustomerStockOrder } from '@/api/stock'
  42. import { addFrontOrder } from '@/api/sales'
  43. export default {
  44. name: 'WarehouseForm',
  45. components: {
  46. WarehousingHeader,
  47. SalesTable,
  48. SalesDialog
  49. },
  50. data() {
  51. return {
  52. dialogVisible: false,
  53. customerNumber: '',
  54. dataList: [],
  55. selection: [],
  56. flag: 1,
  57. column: [
  58. {
  59. prop: 'materialName',
  60. label: '产品名称',
  61. width: '180'
  62. },
  63. {
  64. prop: 'materialOldNumber',
  65. label: '物料编码',
  66. width: '180'
  67. },
  68. {
  69. prop: 'specification',
  70. label: '规格型号',
  71. width: '300'
  72. },
  73. {
  74. prop: 'stockQty',
  75. label: '库存',
  76. width: '180'
  77. },
  78. {
  79. prop: 'directFlag',
  80. label: '发生方向',
  81. width: '180',
  82. isCustom: true
  83. },
  84. {
  85. prop: 'stockChangeQty',
  86. label: '数量',
  87. width: '180',
  88. isInput: true
  89. },
  90. {
  91. prop: 'notes',
  92. label: '备注',
  93. width: '180',
  94. isInput: true,
  95. type: 'text'
  96. }
  97. ]
  98. }
  99. },
  100. methods: {
  101. onReset() {
  102. Object.assign(this.$data, this.$options.data())
  103. Object.assign(this.$refs.header.$data, this.$refs.header.$options.data())
  104. },
  105. getDialogList(p) {
  106. return getcustomerFrontList(...p)
  107. },
  108. confirm(selected) {
  109. // console.log(selected)
  110. this.dataList = [...this.dataList, ...JSON.parse(JSON.stringify(selected))]
  111. for (let i = 0; i < this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.length; i++) {
  112. for (let j = 0; j < this.dataList.length; j++) {
  113. if (
  114. this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].id == this.dataList[j].id ||
  115. this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled === false
  116. ) {
  117. this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i], 'disabled', false)
  118. } else {
  119. this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i], 'disabled', true)
  120. }
  121. }
  122. }
  123. this.$refs.header.screenForm.customerName = this.dataList[0].customerName
  124. this.$refs.header.screenForm.customerNumber = this.dataList[0].customerNumber
  125. this.customerNumber = this.dataList[0].customerNumber
  126. this.dialogVisible = false
  127. this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.$refs.tableView.clearSelection()
  128. },
  129. handleDel(item, index) {
  130. this.dataList.splice(index, 1)
  131. this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.find(k => {
  132. if (k.id == item.id) {
  133. this.$set(k, 'disabled', true)
  134. return
  135. }
  136. })
  137. if (!this.dataList.length) {
  138. this.customerNumber = ''
  139. }
  140. },
  141. //去掉相同数据
  142. resArr(arr1, arr2) {
  143. return arr1.filter(v => arr2.every(val => val.id != v.id))
  144. },
  145. delChange() {
  146. if (this.dataList.length) {
  147. for (let i = 0; i < this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.length; i++) {
  148. for (let j = 0; j < this.selection.length; j++) {
  149. if (
  150. this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].id == this.selection[j].id ||
  151. this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled === true
  152. ) {
  153. // k.disabled = true
  154. console.log(111)
  155. this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i], 'disabled', true)
  156. }
  157. }
  158. }
  159. this.dataList = this.resArr(this.dataList, this.selection)
  160. }
  161. if (!this.dataList.length) {
  162. this.customerNumber = ''
  163. }
  164. },
  165. handleSelection(data) {
  166. this.selection = data
  167. },
  168. handelSubmit() {
  169. for (let i = 0; i < this.dataList.length; i++) {
  170. this.dataList[i].id = ''
  171. this.dataList[i].directFlag = this.dataList[i].flag
  172. if (Number(this.dataList[i].stockChangeQty) < 0) {
  173. this.$errorMsg(`第${i + 1}产品数量有误`)
  174. return
  175. }
  176. if (Number(this.dataList[i].stockChangeQty) == 0 && this.dataList[i].directFlag == 0) {
  177. this.$errorMsg(`第${i + 1}产品数量为0时发生方向只能做增加`)
  178. return
  179. }
  180. }
  181. const params = {
  182. ...this.$refs.header.screenForm,
  183. orders: this.dataList
  184. }
  185. addCustomerStockOrder(params).then(res => {
  186. this.$successMsg('新增成功')
  187. this.$parent.pageType = 0
  188. this.$forceUpdate()
  189. })
  190. }
  191. }
  192. }
  193. </script>
  194. <style scoped></style>