heshaofeng
7 天以前 461524a7a1def4532b9af4ab40733f899f360db7
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
<template>
  <vol-box v-model="show" title="跨区域移库" :width="800" :height="1200">
    <template #content>
      <el-form ref="form" :model="form" label-width="100px">
        <el-form-item label="目标货位类型:">
          <el-select v-model="targetLocationType" 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>
    </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 {
      show: false,
      locationTypes: [],
      targetLocationType: "",
      isSubmitting: false,
      form:{}
    }
  },
  methods: {
    open() {
      this.show = true
      this.getData();
    },
    submit() {
      // 1. 验证必填项
      if (!this.targetLocationType) {
        this.$message.warning('请选择目标货位类型');
        return;
      }
 
      // 2. 禁用按钮
      this.isSubmitting = true;
 
      this.$emit('parentCall', ($vue) => {
        // 选中的表格数据
        let stockViews = $vue.$refs.table.getSelected();
        
        this.http.post(
          `/api/Task/CrossAreaOutbound?targetLocationType=${this.targetLocationType}`,
          stockViews,
          '跨区域移库处理中...'
        )
        .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;
        })
    },
  }
}
</script>