长城汽车软件包管理平台
whychdw
2025-05-06 4a867727d81b9513e675ad396903368c6a293dca
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
<script setup lang="ts">
import type { FormInstance } from "element-plus";
import downloadFile from "@/utils/downloadFile";
const props = defineProps(["data"]);
const emit = defineEmits(["update:close", "success"]);
const formRef = ref();
const paramsRef = ref({
  snCode: "",
  serialNumber: "",
  materialCode: "",
});
const rulesRef = ref({
  snCode: [
    { required: true, message: "请输入SN码", trigger: "blur" },
    {
      validator: (rule: any, value: any, callback: Function) => {
        if (value !== props.data.snCode) {
          callback(new Error("SN码与当前包SN码不匹配!!!"));
        } else {
          callback();
        }
      },
      trigger: "blur",
    },
  ],
  serialNumber: [
    { required: true, message: "请输入序列号", trigger: "blur" },
    {
      validator: (rule: any, value: any, callback: Function) => {
        if (value !== props.data.serialNumber) {
          callback(new Error("序列号与当前包序列号不匹配!!!"));
        } else {
          callback();
        }
      },
      trigger: "blur",
    },
  ],
  materialCode: [
    { required: true, message: "请输入物料编码", trigger: "blur" },
    {
      validator: (rule: any, value: any, callback: Function) => {
        if (value !== props.data.materialCode) {
          callback(new Error("物料编码与当前包物料编码不匹配!!!"));
        } else {
          callback();
        }
      },
      trigger: "blur",
    },
  ],
});
const layout = reactive({
  gutter: 16,
  span: 24,
});
 
// 提交表单
function submitForm(formEl: FormInstance) {
  if (!formEl) return;
  formEl.validate((valid, fields) => {
    if (valid) {
      downloadFile(props.data.fileUrl, props.data.fileName)
        .then(() => {
          ElMessage({
            message: "下载成功!!!",
            type: "success",
          });
          close();
        })
        .catch(() => {
          ElMessage({
            message: "下载失败, 请检查网络!!!",
            type: "error",
          });
        });
    } else {
      ElMessage({
        message: "存在不合法数据,请修改!!!",
        type: "warning",
      });
      console.log("error submit!", fields);
    }
  });
}
 
function close() {
  emit("update:close", false);
}
</script>
 
<template>
  <div class="dialog-wrapper">
    <el-form
      ref="formRef"
      label-position="top"
      :model="paramsRef"
      :rules="rulesRef"
      label-width="auto"
    >
      <el-row :gutter="layout.gutter">
        <el-col :span="layout.span">
          <el-form-item label="SN码" prop="snCode">
            <el-input v-model="paramsRef.snCode"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="物料编码" prop="materialCode">
            <el-input v-model="paramsRef.materialCode"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="序列号" prop="serialNumber">
            <el-input v-model="paramsRef.serialNumber"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <div class="from-footer">
        <el-button type="primary" @click="submitForm(formRef)">确定</el-button>
        <el-button type="danger" @click="close">取消</el-button>
      </div>
    </el-form>
  </div>
</template>
 
<style scoped lang="scss">
.dialog-wrapper {
  width: 580px;
  .from-footer {
    text-align: right;
  }
}
</style>