heshaofeng
15 小时以前 673b5a596f611099eaacc310f6e7def0e022daca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<template>
  <vol-box v-model="show" title="空托出库" :width="800" :height="1200">
    <template #content>
      <el-form ref="form" :model="form" label-width="90px">
        <el-form-item label="出库区域:">
          <el-select v-model="locationType" placeholder="请选择出库区域">
            <el-option 
              v-for="item in locationTypes" 
              :key="item.locationType" 
              :label="item.locationTypeDesc.toString()"
              :value="item.locationType">
            </el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <el-form ref="form" :model="form" label-width="90px">
        <el-form-item label="出库数量:">
          <el-input-number 
            v-model="num" 
            :min="1" 
            :max="999" 
            :controls="true" 
            placeholder="请选择出库数量"
            style="width: 100%;">
          </el-input-number>
        </el-form-item>
      </el-form>
 
      <!-- ===================== 新增:供应商编码(实时搜索下拉) ===================== -->
      <el-form ref="form" :model="form" label-width="90px">
        <el-form-item label="供应商编码:">
          <el-select
            v-model="supplierCode"
            filterable
            remote
            reserve-keyword
            placeholder="请输入/选择供应商编码"
            :remote-method="remoteSearchSupplier"
            style="width: 100%"
          >
            <el-option
              v-for="item in supplierList"
              :key="item"
              :label="item"
              :value="item"
            />
          </el-select>
        </el-form-item>
      </el-form>
      <!-- ======================================================================== -->
 
    </template>
    <template #footer>
      <div>
        <el-button 
          type="danger" 
          size="small" 
          plain 
          @click="submit"
          :loading="isSubmitting"
          :disabled="isSubmitting">
          <i class="el-icon-check">确认</i>
        </el-button>
        <el-button 
          size="small" 
          type="primary" 
          plain 
          @click="() => { this.show = false }">
          <i class="el-icon-close">关闭</i>
        </el-button>
      </div>
    </template>
  </vol-box>
</template>
 
<script>
import VolBox from '@/components/basic/VolBox.vue'
export default {
  components: {
    'vol-box': VolBox
  },
  data() {
    return {
      num: 1,
      show: false,
      locationTypes: [],
      locationType: "",
      isSubmitting: false,
      // ================= 新增 =================
      supplierCode: '',       // 供应商编码绑定
      supplierList: []        // 下拉列表
      // =======================================
    }
  },
  methods: {
    open() {
      this.show = true
      this.getData();
    },
    submit() {
      if (!this.locationType) {
        this.$message.warning('请选择出库区域');
        return;
      }
      
      this.isSubmitting = true;
      
      this.$emit('parentCall', ($vue) => {
        // ===================== 改造接口:带上 supplierCode =====================
        this.http.post(
          `/api/Task/PalletOutboundTask?num=${this.num}&locationType=${this.locationType}&SupplierCode=${this.supplierCode || ''}`, 
          {}, '数据处理中...')
        // ====================================================================
          .then((x) => {
            if (!x.status) {
              this.$message.error(x.message)
            } else {
              this.show = false
              this.$Message.success(x.message)
              $vue.refresh();
            }
          })
          .catch((error) => {
            this.$message.error('请求失败,请稍后重试');
            console.error('提交失败:', error);
          })
          .finally(() => {
            this.isSubmitting = false;
          });
      })
    },
    getData() {
      this.http.post("api/LocationInfo/GetLocationTypes", null, "查询中")
        .then((x) => {
          this.locationTypes = x.data;
        })
    },
 
    remoteSearchSupplier(keyword) {
      if (!keyword) {
        this.supplierList = [];
        return;
      }
      // 调用后端实时搜索接口
      this.http.get(`/api/Task/SearchSupplierCode?keyword=${keyword}`)
        .then(res => {
          if (res.status) {
            this.supplierList = res.data || [];
          }
        })
    }
 
  }
}
</script>