hdy
2 天以前 1c50cb5546715fa21496fbdf2bdacb7ae8836b8a
提交 | 用户 | 时间
dea0a3 1 <template>
A 2   <div class="app-container">
3     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4       <el-form-item label="物料编号" prop="materialCode">
5         <el-input
6           v-model="queryParams.materialCode"
7           placeholder="请输入物料编号"
8           clearable
9           @keyup.enter.native="handleQuery"
10         />
11       </el-form-item>
12       <el-form-item label="物料名称" prop="materialName">
13         <el-input
14           v-model="queryParams.materialName"
15           placeholder="请输入物料名称"
16           clearable
17           @keyup.enter.native="handleQuery"
18         />
19       </el-form-item>
20       <el-form-item style="float: right">
21         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
22         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
23         <el-button icon="el-icon-setting" size="mini" @click="toggleAdvancedSearch">高级查询</el-button>
24       </el-form-item>
25       <transition name="fade">
26         <div v-if="advancedSearchVisible" class="advanced-search">
27           <el-form-item label="视图" prop="materialView">
28             <el-input
29               v-model="queryParams.materialView"
30               placeholder="请输入视图"
31               clearable
32               @keyup.enter.native="handleQuery"
33             />
34           </el-form-item>
35           <el-form-item label="种类" prop="typeZ">
36             <el-select v-model="queryParams.typeZ" placeholder="请选择种类" clearable>
37               <el-option
38                 v-for="dict in dict.type.type_z"
39                 :key="dict.value"
40                 :label="dict.label"
41                 :value="dict.value"
42               />
43             </el-select>
44           </el-form-item>
45           <el-form-item label="类型" prop="typeL">
46             <el-select v-model="queryParams.typeL" placeholder="请选择类型" clearable>
47               <el-option
48                 v-for="dict in dict.type.type_l"
49                 :key="dict.value"
50                 :label="dict.label"
51                 :value="dict.value"
52               />
53             </el-select>
54           </el-form-item>
55           <el-form-item label="单位" prop="unit">
56             <el-select v-model="queryParams.unit" placeholder="请选择单位" clearable>
57               <el-option
58                 v-for="dict in dict.type.unit"
59                 :key="dict.value"
60                 :label="dict.label"
61                 :value="dict.value"
62               />
63             </el-select>
64           </el-form-item>
65           <el-form-item label="状态" prop="status">
66             <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
67               <el-option
68                 v-for="dict in dict.type.sys_normal_disable"
69                 :key="dict.value"
70                 :label="dict.label"
71                 :value="dict.value"
72               />
73             </el-select>
74           </el-form-item>
75         </div>
76       </transition>
77     </el-form>
78
79     <el-row :gutter="10" class="mb8">
80       <el-col :span="1.5">
81         <el-button
82           type="primary"
83           plain
84           icon="el-icon-plus"
85           size="mini"
86           @click="handleAdd"
87           v-hasPermi="['bs:materialInfo:add']"
88         >新增</el-button>
89       </el-col>
90       <el-col :span="1.5">
91         <el-button
92           type="success"
93           plain
94           icon="el-icon-edit"
95           size="mini"
96           :disabled="single"
97           @click="handleUpdate"
98           v-hasPermi="['bs:materialInfo:edit']"
99         >修改</el-button>
100       </el-col>
101       <el-col :span="1.5">
102         <el-button
103           type="danger"
104           plain
105           icon="el-icon-delete"
106           size="mini"
107           :disabled="multiple"
108           @click="handleDelete"
109           v-hasPermi="['bs:materialInfo:remove']"
110         >删除</el-button>
111       </el-col>
112       <el-col :span="1.5">
113         <el-button
114           type="warning"
115           plain
116           icon="el-icon-download"
117           size="mini"
118           @click="handleExport"
119           v-hasPermi="['bs:materialInfo:export']"
120         >导出</el-button>
121       </el-col>
122     </el-row>
123
124     <el-table border v-loading="loading" :data="materialInfoList" @selection-change="handleSelectionChange">
125       <el-table-column type="selection" width="55" align="center" />
126       <el-table-column :show-overflow-tooltip="true" label="物料编号" align="center" prop="materialCode" />
127       <el-table-column :show-overflow-tooltip="true" label="物料名称" align="center" prop="materialName" />
128       <el-table-column :show-overflow-tooltip="true" label="视图" align="center" prop="materialView" />
129       <el-table-column label="种类" align="center" prop="typeZ">
130         <template slot-scope="scope">
131           <dict-tag :options="dict.type.type_z" :value="scope.row.typeZ"/>
132         </template>
133       </el-table-column>
134       <el-table-column label="类型" align="center" prop="typeL">
135         <template slot-scope="scope">
136           <dict-tag :options="dict.type.type_l" :value="scope.row.typeL"/>
137         </template>
138       </el-table-column>
139       <el-table-column label="单位" align="center" prop="unit">
140         <template slot-scope="scope">
141           <dict-tag :options="dict.type.unit" :value="scope.row.unit"/>
142         </template>
143       </el-table-column>
144       <el-table-column :show-overflow-tooltip="true" label="版本" align="center" prop="version" />
145       <el-table-column label="状态" align="center" prop="status">
146         <template slot-scope="scope">
147           <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
148         </template>
149       </el-table-column>
150       <el-table-column :show-overflow-tooltip="true" label="厂商" align="center" prop="supplier" />
151       <el-table-column :show-overflow-tooltip="true" label="备注" align="center" prop="remark" />
152       <el-table-column :show-overflow-tooltip="true" label="数据来源" align="center" prop="dataSource" />
153       <el-table-column :show-overflow-tooltip="true" label="创建用户" align="center" prop="createBy" />
154       <el-table-column label="创建时间" align="center" prop="createTime" width="180">
155       </el-table-column>
156       <el-table-column :show-overflow-tooltip="true" label="更改用户" align="center" prop="updateBy" />
157       <el-table-column label="更改时间" align="center" prop="updateTime" width="180">
158       </el-table-column>
159     </el-table>
160
161     <pagination
162       v-show="total>0"
163       :total="total"
164       :page.sync="queryParams.pageNum"
165       :limit.sync="queryParams.pageSize"
166       @pagination="getList"
167     />
168
169     <!-- 添加或修改物料信息对话框 -->
f6290c 170     <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
A 171       <el-form :inline="true" ref="form" :model="form" :rules="rules" label-width="80px">
d6049c 172         <el-row :gutter="10">
A 173           <el-col span="8">
174             <el-form-item label="物料编号" prop="materialCode">
175               <el-input v-model="form.materialCode" placeholder="请输入物料编号" />
176             </el-form-item>
177           </el-col>
178           <el-col span="8">
179             <el-form-item label="物料名称" prop="materialName">
180               <el-input v-model="form.materialName" placeholder="请输入物料名称" />
181             </el-form-item>
182           </el-col>
183           <el-col span="8">
184             <el-form-item label="视图" prop="materialView">
185               <el-input v-model="form.materialView" placeholder="请输入视图" />
186             </el-form-item>
187           </el-col>
188         </el-row>
189         <el-row :gutter="10">
190           <el-col span="8">
191             <el-form-item label="种类" prop="typeZ">
192               <el-select style="width: 93%" v-model="form.typeZ" placeholder="请选择种类">
193                 <el-option
194                   v-for="dict in dict.type.type_z"
195                   :key="dict.value"
196                   :label="dict.label"
197                   :value="dict.value"
198                 ></el-option>
199               </el-select>
200             </el-form-item>
201           </el-col>
202           <el-col span="8">
203             <el-form-item label="类型" prop="typeL">
204               <el-select style="width: 93%" v-model="form.typeL" placeholder="请选择类型">
205                 <el-option
206                   v-for="dict in dict.type.type_l"
207                   :key="dict.value"
208                   :label="dict.label"
209                   :value="dict.value"
210                 ></el-option>
211               </el-select>
212             </el-form-item>
213           </el-col>
214           <el-col span="8">
215             <el-form-item label="单位" prop="unit">
216               <el-select style="width: 93%" v-model="form.unit" placeholder="请选择单位">
217                 <el-option
218                   v-for="dict in dict.type.unit"
219                   :key="dict.value"
220                   :label="dict.label"
221                   :value="dict.value"
222                 ></el-option>
223               </el-select>
224             </el-form-item>
225           </el-col>
226         </el-row>
227         <el-row :gutter="10">
228           <el-col span="8">
229             <el-form-item label="版本" prop="version">
230               <el-input v-model="form.version" placeholder="请输入版本" />
231             </el-form-item>
232           </el-col>
233           <el-col span="8">
234             <el-form-item label="数据来源" prop="dataSource">
235               <el-input v-model="form.dataSource" placeholder="请输入数据来源" />
236             </el-form-item>
237           </el-col>
238           <el-col span="8">
239             <el-form-item label="厂商" prop="supplier">
240               <el-input v-model="form.supplier" placeholder="请输入厂商" />
241             </el-form-item>
242           </el-col>
243         </el-row>
244         <el-row :gutter="10">
245           <el-col span="8">
246             <el-form-item label="备注" prop="remark">
247               <el-input v-model="form.remark" placeholder="请输入内容" />
248             </el-form-item>
249           </el-col>
250           <el-col span="8">
251             <el-form-item label="状态" prop="status">
252               <el-radio-group v-model="form.status">
253                 <el-radio
254                   v-for="dict in dict.type.sys_normal_disable"
255                   :key="dict.value"
256                   :label="dict.value"
257                 >{{dict.label}}</el-radio>
258               </el-radio-group>
259             </el-form-item>
260           </el-col>
261         </el-row>
dea0a3 262       </el-form>
A 263       <div slot="footer" class="dialog-footer">
264         <el-button type="primary" @click="submitForm">确 定</el-button>
265         <el-button @click="cancel">取 消</el-button>
266       </div>
267     </el-dialog>
268   </div>
269 </template>
270
271 <script>
272 import { listMaterialInfo, getMaterialInfo, delMaterialInfo, addMaterialInfo, updateMaterialInfo } from "@/api/main/bs/materialInfo";
273
274 export default {
275   name: "MaterialInfo",
276   dicts: ['sys_normal_disable', 'type_l', 'unit', 'type_z'],
277   data() {
278     return {
279       // 遮罩层
280       loading: true,
281       // 选中数组
282       ids: [],
283       // 非单个禁用
284       single: true,
285       // 非多个禁用
286       multiple: true,
287       // 显示搜索条件
288       showSearch: true,
289       // 总条数
290       total: 0,
291       advancedSearchVisible: false,
292       // 物料信息表格数据
293       materialInfoList: [],
294       // 弹出层标题
295       title: "",
296       // 是否显示弹出层
297       open: false,
298       // 查询参数
299       queryParams: {
300         pageNum: 1,
301         pageSize: 10,
302         materialCode: null,
303         materialName: null,
304         materialView: null,
305         typeZ: null,
306         typeL: null,
307         unit: null,
308         status: null,
309       },
310       // 表单参数
311       form: {},
312       // 表单校验
313       rules: {
314         id: [
315           { required: true, message: "主键id不能为空", trigger: "blur" }
316         ],
317         materialCode: [
318           { required: true, message: "物料编号不能为空", trigger: "blur" }
319         ],
320         materialName: [
321           { required: true, message: "物料名称不能为空", trigger: "blur" }
322         ],
323       }
324     };
325   },
326   created() {
327     this.getList();
328   },
329   methods: {
330     toggleAdvancedSearch() {
331       this.advancedSearchVisible = !this.advancedSearchVisible;
332     },
333     /** 查询物料信息列表 */
334     getList() {
335       this.loading = true;
336       listMaterialInfo(this.queryParams).then(response => {
337         this.materialInfoList = response.rows;
338         this.total = response.total;
339         this.loading = false;
340       });
341     },
342     // 取消按钮
343     cancel() {
344       this.open = false;
345       this.reset();
346     },
347     // 表单重置
348     reset() {
349       this.form = {
350         id: null,
351         materialCode: null,
352         materialName: null,
353         materialView: null,
354         typeZ: null,
355         typeL: null,
356         unit: null,
357         version: null,
358         status: "0",
359         supplier: null,
360         remark: null,
361         dataSource: null,
362         createBy: null,
363         createTime: null,
364         updateBy: null,
365         updateTime: null,
366         delFlag: null
367       };
368       this.resetForm("form");
369     },
370     /** 搜索按钮操作 */
371     handleQuery() {
372       this.queryParams.pageNum = 1;
373       this.getList();
374     },
375     /** 重置按钮操作 */
376     resetQuery() {
377       this.resetForm("queryForm");
378       this.handleQuery();
379     },
380     // 多选框选中数据
381     handleSelectionChange(selection) {
382       this.ids = selection.map(item => item.id)
383       this.single = selection.length!==1
384       this.multiple = !selection.length
385     },
386     /** 新增按钮操作 */
387     handleAdd() {
388       this.reset();
389       this.open = true;
390       this.title = "添加物料信息";
391     },
392     /** 修改按钮操作 */
393     handleUpdate(row) {
394       this.reset();
395       const id = row.id || this.ids
396       getMaterialInfo(id).then(response => {
397         this.form = response.data;
398         this.open = true;
399         this.title = "修改物料信息";
400       });
401     },
402     /** 提交按钮 */
403     submitForm() {
404       this.$refs["form"].validate(valid => {
405         if (valid) {
406           if (this.form.id != null) {
407             updateMaterialInfo(this.form).then(response => {
408               this.$modal.msgSuccess("修改成功");
409               this.open = false;
410               this.getList();
411             });
412           } else {
413             addMaterialInfo(this.form).then(response => {
414               this.$modal.msgSuccess("新增成功");
415               this.open = false;
416               this.getList();
417             });
418           }
419         }
420       });
421     },
422     /** 删除按钮操作 */
423     handleDelete(row) {
424       const ids = row.id || this.ids;
425       this.$modal.confirm('是否确认删除').then(function() {
426         return delMaterialInfo(ids);
427       }).then(() => {
428         this.getList();
429         this.$modal.msgSuccess("删除成功");
430       }).catch(() => {});
431     },
432     /** 导出按钮操作 */
433     handleExport() {
434       this.download('bs/materialInfo/export', {
435         ...this.queryParams
436       }, `materialInfo_${new Date().getTime()}.xlsx`)
437     }
438   }
439 };
440 </script>