admin
2024-11-22 dc1b0345226e03c425737c2bc31a14ef65eb55d8
提交 | 用户 | 时间
9f7aa7 1 <template>
2   <div class="app-container">
3     <div>
4       <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
5         <el-form-item label="工单编号" prop="workOrderNo">
6           <el-input
7             v-model="queryParams.workOrderNo"
8             placeholder="请输入工单编号"
9             clearable
10             @keyup.enter.native="handleQuery"
11           />
12         </el-form-item>
13         <el-form-item label="订单编号" prop="salesOrderCode">
14           <el-input
15             v-model="queryParams.salesOrderCode"
16             placeholder="请输入订单编号"
17             clearable
18             @keyup.enter.native="handleQuery"
19           />
20         </el-form-item>
21         <el-form-item label="产品编号" prop="productCode">
22           <el-input
23             v-model="queryParams.productCode"
24             placeholder="请输入产品编号"
25             clearable
26             @keyup.enter.native="handleQuery"
27           />
28         </el-form-item>
29         <el-form-item label="工单状态" prop="orderStatus">
30           <el-select v-model="queryParams.orderStatus" placeholder="请选择工单状态" clearable>
31             <el-option
32               v-for="dict in dict.type.order_status"
33               :key="dict.value"
34               :label="dict.label"
35               :value="dict.value"
36             />
37           </el-select>
38         </el-form-item>
39         <el-form-item style="float: right; margin-right: 90px">
40           <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
41           <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
42         </el-form-item>
43       </el-form>
44     </div>
45
46
47     <div style="width: 600px">
48       <el-row :gutter="10" class="mb8" >
49         <el-col :span="1.5">
50           <el-button
51             type="primary"
52             plain
53             icon="el-icon-plus"
54             size="mini"
55             @click="handleAdd"
56             v-hasPermi="['main:info:add']"
57           >新增</el-button>
58         </el-col>
59         <el-col :span="1.5">
60           <el-button
61             type="success"
62             plain
63             icon="el-icon-edit"
64             size="mini"
65             :disabled="single"
66             @click="handleUpdate"
67             v-hasPermi="['main:info:edit']"
68           >修改</el-button>
69         </el-col>
70         <el-col :span="1.5">
71           <el-button
72             type="danger"
73             plain
74             icon="el-icon-delete"
75             size="mini"
76             :disabled="multiple"
77             @click="handleDelete"
78             v-hasPermi="['main:info:remove']"
79           >删除</el-button>
80         </el-col>
81         <el-col :span="1.5">
82           <el-button
83             type="warning"
84             plain
85             icon="el-icon-download"
86             size="mini"
87             @click="handleExport"
88             v-hasPermi="['main:info:export']"
89           >导出</el-button>
90         </el-col>
91         <el-col :span="1.5">
92           <el-button
93             type="primary"
94             plain
95             icon="el-icon-receiving"
96             size="mini"
97             @click="handleReceive"
98           >接收工单</el-button>
99         </el-col>
100         <el-col :span="1.5">
101           <el-button
102             type="primary"
103             plain
104             :disabled="multiple"
105             icon="el-icon-magic-stick"
106             size="mini"
107             @click="handleCreate"
108           >生成</el-button>
109         </el-col>
110         <!--      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
111       </el-row>
112     </div>
113
114
115     <el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
116       <el-table-column type="selection" width="55" align="center" />
226f41 117       <el-table-column label="工单编号" align="center" prop="workOrderNo" width="120">
9f7aa7 118         <template slot-scope="scope">
119           <a style="color: #7099F9"  @click="orderDetail(scope.row.workOrderNo)" >{{scope.row.workOrderNo}}
120           </a>
121 <!--          <div @click="orderDetail(scope.row.workOrderNo)">{{scope.row.workOrderNo}}</div>-->
122         </template>
123       </el-table-column>
226f41 124       <el-table-column label="订单编号" align="center" prop="salesOrderCode" width="120"/>
125       <el-table-column label="产品编号" align="center" prop="productCode" width="180"/>
9f7aa7 126       <el-table-column label="产线编号" align="center" prop="lineCode" />
127       <el-table-column label="计划数量" align="center" prop="planQty" />
128       <el-table-column label="计划开始时间" align="center" prop="planStartTime" width="120">
129         <template slot-scope="scope">
130           <span>{{ parseTime(scope.row.planStartTime, '{y}-{m}-{d}') }}</span>
131         </template>
132       </el-table-column>
133       <el-table-column label="计划结束时间" align="center" prop="planEndTime" width="120">
134         <template slot-scope="scope">
135           <span>{{ parseTime(scope.row.planEndTime, '{y}-{m}-{d}') }}</span>
136         </template>
137       </el-table-column>
138       <el-table-column label="工单状态" align="center" prop="orderStatus">
139         <template slot-scope="scope">
140           <dict-tag :options="dict.type.order_status" :value="scope.row.orderStatus"/>
141         </template>
142       </el-table-column>
143       <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
144         <template slot-scope="scope">
145           <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
146         </template>
147       </el-table-column>
148       <el-table-column label="更新用户" align="center" prop="updateBy" />
149       <el-table-column label="备注" width="180px" show-overflow-tooltip align="center" prop="remarks" />
150 <!--      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
151 <!--        <template slot-scope="scope">-->
152 <!--          <el-button-->
153 <!--            size="mini"-->
154 <!--            type="text"-->
155 <!--            icon="el-icon-edit"-->
156 <!--            @click="handleUpdate(scope.row)"-->
157 <!--            v-hasPermi="['main:info:edit']"-->
158 <!--          >修改</el-button>-->
159 <!--          <el-button-->
160 <!--            size="mini"-->
161 <!--            type="text"-->
162 <!--            icon="el-icon-delete"-->
163 <!--            @click="handleDelete(scope.row)"-->
164 <!--            v-hasPermi="['main:info:remove']"-->
165 <!--          >删除</el-button>-->
166 <!--        </template>-->
167 <!--      </el-table-column>-->
168     </el-table>
169
170     <pagination
171       v-show="total>0"
172       :total="total"
173       :page.sync="queryParams.pageNum"
174       :limit.sync="queryParams.pageSize"
175       @pagination="getList"
176     />
177
178     <!-- 添加或修改生产工单对话框 -->
179     <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
180       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
181         <el-form-item label="工单编号" prop="workOrderNo">
182           <el-input v-model="form.workOrderNo" placeholder="请输入工单编号" />
183         </el-form-item>
184         <el-form-item label="订单编号" prop="salesOrderCode">
185           <el-input v-model="form.salesOrderCode" placeholder="请输入订单编号" />
186         </el-form-item>
187         <el-form-item label="产品编号" prop="productCode">
188           <el-input v-model="form.productCode" placeholder="请输入产品编号" />
189         </el-form-item>
190         <el-form-item label="产线编号" prop="lineCode">
191           <el-input v-model="form.lineCode" placeholder="请输入产线编号" />
192         </el-form-item>
193         <el-form-item label="计划数量" prop="planQty">
194           <el-input v-model="form.planQty" placeholder="请输入计划数量" />
195         </el-form-item>
196         <el-form-item label="计划开始时间" prop="planStartTime">
197           <el-date-picker clearable
198             v-model="form.planStartTime"
199             type="date"
200             value-format="yyyy-MM-dd"
201             placeholder="请选择计划开始时间">
202           </el-date-picker>
203         </el-form-item>
204         <el-form-item label="计划结束时间" prop="planEndTime">
205           <el-date-picker clearable
206             v-model="form.planEndTime"
207             type="date"
208             value-format="yyyy-MM-dd"
209             placeholder="请选择计划结束时间">
210           </el-date-picker>
211         </el-form-item>
212         <el-form-item label="工单状态" prop="orderStatus" v-if = updateFlag>
213           <el-radio-group v-model="form.orderStatus">
214             <el-radio
215               v-for="dict in dict.type.order_status"
216               :key="dict.value"
217               :label="dict.value"
218             >{{dict.label}}</el-radio>
219           </el-radio-group>
220         </el-form-item>
221         <el-form-item label="备注" prop="remarks">
222           <el-input
223             type="textarea"
224             placeholder="请输入备注"
225             v-model="form.remarks"
226             maxlength="30"
227             show-word-limit
228           >
229           </el-input>
230         </el-form-item>
231       </el-form>
232       <div slot="footer" class="dialog-footer">
233         <el-button type="primary" @click="submitForm">确 定</el-button>
234         <el-button @click="cancel">取 消</el-button>
235       </div>
236     </el-dialog>
237     <el-dialog
238       title="工单详情"
239       :visible.sync="detailVisible"
240       width="80%"
241       center>
242       <el-table v-loading="detailLoading" :data="schedulingList">
243         <el-table-column label="工单编号" align="center" prop="workOrderNo" />
244         <el-table-column label="总成序列号" width="180px" align="center" prop="sfcCode" />
245         <el-table-column label="产品编码" align="center" prop="productCode" />
246         <el-table-column label="上线时间" align="center" prop="onlineTime" width="180">
247           <template slot-scope="scope">
248             <span>{{ parseTime(scope.row.onlineTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
249           </template>
250         </el-table-column>
251         <el-table-column label="下线时间" align="center" prop="offlineTime" width="180">
252           <template slot-scope="scope">
253             <span>{{ parseTime(scope.row.offlineTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
254           </template>
255         </el-table-column>
256         <el-table-column label="质量状态" align="center" prop="qualityStatus">
257           <template slot-scope="scope">
258             <dict-tag :options="dict.type.product_status" :value="scope.row.qualityStatus"/>
259           </template>
260         </el-table-column>
261         <el-table-column label="状态" align="center" prop="status">
262           <template slot-scope="scope">
263             <dict-tag :options="dict.type.status" :value="scope.row.status"/>
264           </template>
265         </el-table-column>
266         <el-table-column label="更新用户" align="center" prop="updateBy" />
267         <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
268           <template slot-scope="scope">
269             <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
270           </template>
271         </el-table-column>
272         <el-table-column label="备注" width="180px" show-overflow-tooltip align="center" prop="remarks" />
273       </el-table>
274
275       <pagination
276         v-show="detailTotal>0"
277         :total="detailTotal"
278         :page.sync="queryDetailParams.pageNum"
279         :limit.sync="queryDetailParams.pageSize"
280         @pagination="getDetail"
281       />
282     <span slot="footer" class="dialog-footer">
283 <!--    <el-button @click="detailVisible = false">取 消</el-button>-->
284 <!--    <el-button type="primary" @click="detailVisible = false">确 定</el-button>-->
285   </span>
286     </el-dialog>
287   </div>
288
289 </template>
290
291 <script>
292 import { listInfo, getInfo, delInfo, addInfo, updateInfo } from "@/api/main/om/info";
293 import {listScheduling} from "@/api/main/om/scheduling";
294
295 export default {
296   name: "Info",
297   dicts: ['order_status','product_status', 'status'],
298   data() {
299     return {
300       schedulingList: [],
301       detailVisible : false,
302       addFlag : false,
303       updateFlag : false,
304       // 遮罩层
305       loading: true,
306       detailLoading: true,
307       // 选中数组
308       ids: [],
309       // 非单个禁用
310       single: true,
311       // 非多个禁用
312       multiple: true,
313       // 显示搜索条件
314       showSearch: true,
315       // 总条数
316       total: 0,
317       // 生产工单表格数据
318       infoList: [],
319       // 弹出层标题
320       title: "",
321       // 是否显示弹出层
322       open: false,
323       // 查询参数
324       queryParams: {
325         pageNum: 1,
326         pageSize: 10,
327         workOrderNo: null,
328         salesOrderCode: null,
329         productCode: null,
330         orderStatus: null,
331       },
332       queryDetailParams: {
333         pageNum: 1,
334         pageSize: 10,
335         workOrderNo: null,
336       },
337       detailTotal: 0,
338       // 表单参数
339       form: {},
340       // 表单校验
341       rules: {
342         workOrderNo: [
343           { required: true, message: "工单编号不能为空", trigger: "blur" }
344         ],
345         salesOrderCode: [
346           { required: true, message: "订单编号不能为空", trigger: "blur" }
347         ],
348         productCode: [
349           { required: true, message: "产品编号不能为空", trigger: "blur" }
350         ],
351         lineCode: [
352           { required: true, message: "产线编号不能为空", trigger: "blur" }
353         ],
354         planQty: [
355           { required: true, message: "计划数量不能为空", trigger: "blur" }
356         ],
357         planStartTime: [
358           { required: true, message: "计划开始时间不能为空", trigger: "blur" }
359         ],
360         planEndTime: [
361           { required: true, message: "计划结束时间不能为空", trigger: "blur" }
362         ],
363       }
364     };
365   },
366   created() {
367     this.getList();
368   },
369   methods: {
370     orderDetail(workOrderNo){
371       console.log('000',workOrderNo)
372       this.detailVisible = true
373       this.queryDetailParams.params = {}
374       this.queryDetailParams.workOrderNo = workOrderNo
375       this.getDetail()
376     },
377     getDetail(){
378       listScheduling(this.queryDetailParams).then(response => {
379         this.schedulingList = response.rows;
380         this.detailTotal = response.total;
381         this.detailLoading = false;
382       });
383     },
384     handleReceive(){
385       this.$message({
386         message: "配置接收方法",
387         type: "info"
388       })
389     },
390     handleCreate(){
391       this.$message({
392         message: "配置生成方法",
393         type: "info"
394       })
395     },
396     /** 查询生产工单列表 */
397     getList() {
398       this.loading = true;
399       listInfo(this.queryParams).then(response => {
400         this.infoList = response.rows;
226f41 401         this.total = response.total;
9f7aa7 402         this.loading = false;
403       });
404     },
405     // 取消按钮
406     cancel() {
407       this.open = false;
408       this.reset();
409     },
410     // 表单重置
411     reset() {
412       this.form = {
413         id: null,
414         workOrderNo: null,
415         salesOrderCode: null,
416         productCode: null,
417         lineCode: null,
418         planQty: null,
419         planStartTime: null,
420         planEndTime: null,
421         orderStatus: null,
422         createTime: null,
423         updateTime: null,
424         createBy: null,
425         updateBy: null,
426         remarks: null,
427         delFlag: null,
428       };
429       this.resetForm("form");
430       this.addFlag = false
431       this.updateFlag = false
432     },
433     /** 搜索按钮操作 */
434     handleQuery() {
435       console.log('111')
436       this.queryParams.pageNum = 1;
437       this.getList();
438     },
439     /** 重置按钮操作 */
440     resetQuery() {
441       this.resetForm("queryForm");
442       this.handleQuery();
443     },
444     // 多选框选中数据
445     handleSelectionChange(selection) {
446       this.ids = selection.map(item => item.id)
447       this.single = selection.length!==1
448       this.multiple = !selection.length
449     },
450     /** 新增按钮操作 */
451     handleAdd() {
452       this.reset();
453       this.addFlag = true
454       this.open = true;
455       this.title = "添加生产工单";
456     },
457     /** 修改按钮操作 */
458     handleUpdate(row) {
459       this.reset();
460       this.updateFlag = true
461       const id = row.id || this.ids
462       getInfo(id).then(response => {
463         this.form = response.data;
464         this.open = true;
465         this.title = "修改生产工单";
466       });
467     },
468     /** 提交按钮 */
469     submitForm() {
470       this.$refs["form"].validate(valid => {
471         if (valid) {
472           if (this.form.id != null) {
473             updateInfo(this.form).then(response => {
474               this.$modal.msgSuccess("修改成功");
475               this.open = false;
476               this.getList();
477             });
478           } else {
479             addInfo(this.form).then(response => {
480               this.$modal.msgSuccess("新增成功");
481               this.open = false;
482               this.getList();
483             });
484           }
485         }
486       });
487     },
488     /** 删除按钮操作 */
489     handleDelete(row) {
490       const ids = row.id || this.ids;
491       this.$modal.confirm('是否确认删除?').then(function() {
492         return delInfo(ids);
493       }).then(() => {
494         this.getList();
495         this.$modal.msgSuccess("删除成功");
496       }).catch(() => {});
497     },
498     /** 导出按钮操作 */
499     handleExport() {
500       this.download('main/info/export', {
501         ...this.queryParams
502       }, `info_${new Date().getTime()}.xlsx`)
503     }
504   }
505 };
506 </script>
226f41 507 <style>
508 .table-wrapper {
509   width: 100%;
510 }
511 </style>