瀏覽代碼

物料页面

FEI 3 週之前
父節點
當前提交
a6ea21176f
共有 1 個檔案被更改,包括 349 行新增0 行删除
  1. 349
    0
      src/views/sto/main/material.vue

+ 349
- 0
src/views/sto/main/material.vue 查看文件

@@ -0,0 +1,349 @@
1
+<template>
2
+  <div>
3
+    <el-card :body-style="cardBodyStyle">
4
+      <el-form :inline="true" label-position="right" label-width="100px">
5
+        <el-form-item label="" class="no-show-error-message">
6
+          <el-input v-model="queryParams.material" size="small" placeholder="请输入物料名称或编码" style="width:300px;float: left;margin-right: 10px;"></el-input>
7
+          <el-input v-model="queryParams.standard" size="small" placeholder="请输入钢种" style="width:300px;float: left;margin-right: 10px;"></el-input>
8
+          <el-button v-prevent-re-click type="primary" plain @click="handleSearch">查询</el-button>
9
+          <el-button v-prevent-re-click type="primary" @click="handleAdd">新增</el-button>
10
+        </el-form-item>
11
+      </el-form>
12
+    </el-card>
13
+
14
+    <el-card :body-style="cardBodyStyle">
15
+      <el-table :data="tableData" border v-loading="loading" style="width: 100%">
16
+        <el-table-column prop="materialName" label="物料名称" width="150" header-align="center" align="center" show-overflow-tooltip>
17
+        </el-table-column>
18
+        <el-table-column prop="materialCode" label="物料编码" width="120" header-align="center" align="center" show-overflow-tooltip>
19
+        </el-table-column>
20
+        <el-table-column prop="materialStandard" label="钢种" width="150" header-align="center" align="center" show-overflow-tooltip>
21
+        </el-table-column>
22
+        <el-table-column prop="materialModel" label="尺寸" width="120" header-align="center" align="center" show-overflow-tooltip>
23
+        </el-table-column>
24
+        <el-table-column prop="materialAttr1" label="属性1" width="120" header-align="center" align="center" show-overflow-tooltip>
25
+        </el-table-column>
26
+        <el-table-column prop="materialAttr2" label="属性2" width="120" header-align="center" align="center" show-overflow-tooltip>
27
+        </el-table-column>
28
+        <el-table-column prop="materialAttr3" label="属性3" width="120" header-align="center" align="center" show-overflow-tooltip>
29
+        </el-table-column>
30
+        <el-table-column prop="materialAttr4" label="属性4" width="120" header-align="center" align="center" show-overflow-tooltip>
31
+        </el-table-column>
32
+        <el-table-column prop="materialAttr5" label="属性5" width="120" header-align="center" align="center" show-overflow-tooltip>
33
+        </el-table-column>
34
+        <el-table-column label="操作" width="200" header-align="center" align="center" fixed="right">
35
+          <template #default="scope">
36
+            <el-button plain type="warning" size="mini" @click="handleEdit(scope.row)">编辑</el-button>
37
+            <el-button plain type="danger" size="mini" @click="handleDelete(scope.row)">删除</el-button>
38
+          </template>
39
+        </el-table-column>
40
+      </el-table>
41
+
42
+      <el-pagination
43
+          @size-change="handleSizeChange"
44
+          @current-change="handleCurrentChange"
45
+          :current-page="pagination.currentPage"
46
+          :page-sizes="pagination.pageSizes"
47
+          :page-size="pagination.pageSize"
48
+          layout="total, sizes, prev, pager, next, jumper"
49
+          :total="pagination.totalRows">
50
+      </el-pagination>
51
+    </el-card>
52
+
53
+    <!-- 新增/编辑对话框 -->
54
+    <el-dialog
55
+        :close-on-click-modal="false"
56
+        :title="form.id ? '编辑物料' : '新增物料'"
57
+        v-model="dialogVisible"
58
+        width="600px">
59
+      <el-form :model="form" label-width="100px" :rules="rules" ref="formRef">
60
+        <el-form-item label="物料名称" prop="materialName">
61
+          <el-input v-model="form.materialName" style="width: 400px;" placeholder="请输入物料名称"></el-input>
62
+        </el-form-item>
63
+        <el-form-item label="物料编码" prop="materialCode">
64
+          <el-input v-model="form.materialCode" style="width: 400px;" placeholder="请输入物料编码"></el-input>
65
+        </el-form-item>
66
+        <el-form-item label="钢种" prop="materialStandard">
67
+          <el-input v-model="form.materialStandard" style="width: 400px;" placeholder="请输入钢种"></el-input>
68
+        </el-form-item>
69
+        <el-form-item label="尺寸">
70
+          <el-input v-model="form.materialModel" style="width: 400px;" placeholder="请输入尺寸"></el-input>
71
+        </el-form-item>
72
+        <el-form-item label="属性1">
73
+          <el-input v-model="form.materialAttr1" style="width: 400px;" placeholder="请输入属性1"></el-input>
74
+        </el-form-item>
75
+        <el-form-item label="属性2">
76
+          <el-input v-model="form.materialAttr2" style="width: 400px;" placeholder="请输入属性2"></el-input>
77
+        </el-form-item>
78
+        <el-form-item label="属性3">
79
+          <el-input v-model="form.materialAttr3" style="width: 400px;" placeholder="请输入属性3"></el-input>
80
+        </el-form-item>
81
+        <el-form-item label="属性4">
82
+          <el-input v-model="form.materialAttr4" style="width: 400px;" placeholder="请输入属性4"></el-input>
83
+        </el-form-item>
84
+        <el-form-item label="属性5">
85
+          <el-input v-model="form.materialAttr5" style="width: 400px;" placeholder="请输入属性5"></el-input>
86
+        </el-form-item>
87
+      </el-form>
88
+      <template #footer>
89
+        <div class="dialog-footer">
90
+          <el-button type="success" @click="handleSave">保存</el-button>
91
+          <el-button type="danger" @click="handleCancelSave">取消</el-button>
92
+        </div>
93
+      </template>
94
+    </el-dialog>
95
+  </div>
96
+</template>
97
+
98
+<script>
99
+import axios from '@/axios'
100
+export default {
101
+  name: 'MaterialManagement',
102
+  data() {
103
+    return {
104
+      // 表格数据
105
+      tableData: [],
106
+      loading: false,
107
+
108
+      // 分页参数
109
+      pagination: {
110
+        currentPage: 1,
111
+        totalRows: 0,
112
+        pageSizes: [50, 100, 200, 500],
113
+        pageSize: 50
114
+      },
115
+
116
+      // 查询条件
117
+      queryParams: {
118
+        material: '',
119
+        standard: ''
120
+      },
121
+
122
+      // 对话框控制
123
+      dialogVisible: false,
124
+
125
+      // 表单数据
126
+      form: {
127
+        id: '',
128
+        materialName: '',
129
+        materialCode: '',
130
+        materialStandard: '',
131
+        materialModel: '',
132
+        materialAttr1: '',
133
+        materialAttr2: '',
134
+        materialAttr3: '',
135
+        materialAttr4: '',
136
+        materialAttr5: ''
137
+      },
138
+
139
+      // 表单验证规则
140
+      rules: {
141
+        materialName: [
142
+          { required: true, message: '物料名称不能为空', trigger: 'blur' }
143
+        ],
144
+        materialCode: [
145
+          { required: true, message: '物料编码不能为空', trigger: 'blur' }
146
+        ],
147
+        materialStandard: [
148
+          { required: true, message: '钢种不能为空', trigger: 'blur' }
149
+        ]
150
+      },
151
+
152
+      // 样式
153
+      cardBodyStyle: {
154
+        padding: '10px'
155
+      }
156
+    }
157
+  },
158
+
159
+  // 界面渲染完毕调用 - 初始化表格数据
160
+  mounted() {
161
+    this.getTableData()
162
+  },
163
+
164
+  methods: {
165
+    /**
166
+     * 获取表格数据
167
+     */
168
+    getTableData() {
169
+      this.loading = true
170
+      const url = 'sto/Material/query'
171
+      const params = {
172
+        page: this.pagination.currentPage,
173
+        rows: this.pagination.pageSize,
174
+        material: this.queryParams.material,
175
+        standard: this.queryParams.standard
176
+      }
177
+
178
+      axios.get(url, { params })
179
+          .then(response => {
180
+            this.loading = false
181
+            if (response.data.code === '0') {
182
+              this.tableData = response.data.data.records
183
+              this.pagination.totalRows = response.data.data.total
184
+            } else {
185
+              this.$message.error('查询失败!' + response.data.msg)
186
+            }
187
+          })
188
+          .catch(error => {
189
+            this.loading = false
190
+            this.$message.error('查询失败!' + error.message)
191
+          })
192
+    },
193
+
194
+    /**
195
+     * 修改每页条数
196
+     */
197
+    handleSizeChange(val) {
198
+      this.pagination.pageSize = val
199
+      this.pagination.currentPage = 1
200
+      this.getTableData()
201
+    },
202
+
203
+    /**
204
+     * 修改当前页
205
+     */
206
+    handleCurrentChange(val) {
207
+      this.pagination.currentPage = val
208
+      this.getTableData()
209
+    },
210
+
211
+    /**
212
+     * 查询
213
+     */
214
+    handleSearch() {
215
+      this.pagination.currentPage = 1
216
+      this.getTableData()
217
+    },
218
+
219
+    /**
220
+     * 新增
221
+     */
222
+    handleAdd() {
223
+      this.dialogVisible = true
224
+      this.resetForm()
225
+    },
226
+
227
+    /**
228
+     * 编辑
229
+     */
230
+    handleEdit(row) {
231
+      this.dialogVisible = true
232
+      this.$nextTick(() => {
233
+        this.form = { ...row }
234
+      })
235
+    },
236
+
237
+    /**
238
+     * 保存(新增和编辑)
239
+     */
240
+    handleSave() {
241
+      this.$refs.formRef.validate((valid) => {
242
+        if (!valid) {
243
+          this.$message.warning('请完善表单信息')
244
+          return
245
+        }
246
+
247
+        const url = 'sto/Material/save'
248
+        const params = {
249
+          json: JSON.stringify(this.form)
250
+        }
251
+
252
+        axios.post(url, params)
253
+            .then(response => {
254
+              if (response.data.code === '0') {
255
+                this.$message.success(this.form.id ? '更新成功' : '新增成功')
256
+                this.dialogVisible = false
257
+                this.getTableData()
258
+              } else {
259
+                this.$message.error('操作失败!' + response.data.msg)
260
+              }
261
+            })
262
+            .catch(error => {
263
+              this.$message.error('操作失败!' + error.message)
264
+            })
265
+      })
266
+    },
267
+
268
+    /**
269
+     * 取消保存
270
+     */
271
+    handleCancelSave() {
272
+      this.dialogVisible = false
273
+      this.resetForm()
274
+    },
275
+
276
+    /**
277
+     * 删除
278
+     */
279
+    handleDelete(row) {
280
+      this.$confirm(
281
+          `确定删除物料 "${row.materialName}" 吗?`,
282
+          '提示',
283
+          {
284
+            confirmButtonText: '确认',
285
+            cancelButtonText: '取消',
286
+            type: 'warning',
287
+            draggable: true,
288
+          }
289
+      )
290
+          .then(() => {
291
+            const url = 'sto/Material/remove'
292
+            const params = {
293
+              id: row.id,
294
+            }
295
+
296
+            axios.post(url, params)
297
+                .then(response => {
298
+                  if (response.data.code === '0') {
299
+                    this.$message.success('删除成功!')
300
+                    this.getTableData()
301
+                  } else {
302
+                    this.$message.error('删除失败!' + response.data.msg)
303
+                  }
304
+                })
305
+                .catch(error => {
306
+                  this.$message.error('删除失败!' + error.message)
307
+                })
308
+          })
309
+          .catch(() => {
310
+            this.$message.info('已取消删除')
311
+          })
312
+    },
313
+
314
+
315
+    /**
316
+     * 重置表单
317
+     */
318
+    resetForm() {
319
+      this.$nextTick(() => {
320
+        if (this.$refs.formRef) {
321
+          this.$refs.formRef.resetFields()
322
+        }
323
+        this.form = {
324
+          id: '',
325
+          materialName: '',
326
+          materialCode: '',
327
+          materialStandard: '',
328
+          materialModel: '',
329
+          materialAttr1: '',
330
+          materialAttr2: '',
331
+          materialAttr3: '',
332
+          materialAttr4: '',
333
+          materialAttr5: ''
334
+        }
335
+      })
336
+    }
337
+  }
338
+}
339
+</script>
340
+
341
+<style scoped>
342
+.no-show-error-message {
343
+  margin-bottom: 0;
344
+}
345
+
346
+.dialog-footer {
347
+  text-align: center;
348
+}
349
+</style>

Loading…
取消
儲存