damon227 před 3 roky
rodič
revize
a84b3e395c

+ 9 - 0
src/api/production.js

@@ -17,6 +17,15 @@ export function getInfo (id) {
   })
 }
 
+// 批量排产
+export function batchPlan (data) {
+  return request({
+    url: request.adornUrl(`/biz-service/ProdProduction/list/plan`),
+    method: 'post',
+    data
+  })
+}
+
 // 获取生产监控列表信息
 export function getMonitoringList (params) {
   return request({

+ 36 - 0
src/api/task.js

@@ -8,3 +8,39 @@ export function getTaskList (params) {
     params: params
   })
 }
+
+// 开始任务
+export function startTask (data) {
+  return request({
+    url: request.adornUrl(`/biz-service/WorkController/start`),
+    method: 'post',
+    data
+  })
+}
+
+// 移交任务
+export function transferTask (data) {
+  return request({
+    url: request.adornUrl(`/biz-service/WorkController/transfer`),
+    method: 'post',
+    data
+  })
+}
+
+// 完成任务
+export function completeTask (data) {
+  return request({
+    url: request.adornUrl(`/biz-service/WorkController/complete`),
+    method: 'post',
+    data
+  })
+}
+
+// 检验任务
+export function checkTask (data) {
+  return request({
+    url: request.adornUrl(`/biz-service/WorkController/check`),
+    method: 'post',
+    data
+  })
+}

+ 29 - 2
src/views/modules/production/scheduling.vue

@@ -10,13 +10,19 @@
       </el-form-item>
       <el-form-item>
         <el-button @click="queryPage()">查询</el-button>
+        <el-button @click="batchPlan()">批量排产</el-button>
       </el-form-item>
     </el-form>
     <el-table
       :data="dataList"
       border
       v-loading="dataListLoading"
+      @selection-change="handleSelectionChange"
       style="width: 100%;">
+       <el-table-column
+        type="selection"
+        width="50">
+      </el-table-column>
       <el-table-column
         label="序号"
         type="index"
@@ -98,7 +104,7 @@
 
 <script>
   import Detail from './scheduling-details'
-  import { getSchedulingList } from '@/api/production'
+  import { getSchedulingList, batchPlan } from '@/api/production'
   export default {
     name: 'scheduling',
     components: {Detail},
@@ -126,13 +132,34 @@
             code: '3',
             value: '生产完成'
           }
-        ]
+        ],
+        multipleSelection: []
       }
     },
     created () {
       this.getDataList()
     },
     methods: {
+      handleSelectionChange(val){
+        this.multipleSelection = val
+      },
+      // 批量排产
+      batchPlan() {
+        let ids = this.multipleSelection.map(item => item.id);
+        batchPlan({ productionIds: ids}).then(({data}) => {
+          if(data && data.code === '200'){
+            this.$message({
+              type: 'success',
+              message: '批量排产成功!'
+            })
+          } else {
+            this.$message({
+                type: 'error',
+                message: data.msg
+            })
+          }
+        })
+      },
       // 查询
       queryPage () {
         this.pageIndex = 1

+ 3 - 2
src/views/modules/tech/crafts-management.vue

@@ -118,7 +118,8 @@
         width="100"
         label="操作">
         <template slot-scope="scope">
-          <el-button v-if="isAuth('pro:technology:update')" type="text" size="small" @click="addOrUpdateHandle1(scope.row.techId, scope.row.techState)">{{ scope.row.techState == -1 ? '启用' : '停用' }}</el-button>
+          <el-button v-if="isAuth('pro:technology:update') && scope.row.techState == -1" type="text" size="small" @click="addOrUpdateHandle1(scope.row.techId, 0)">启用</el-button>
+          <el-button v-if="isAuth('pro:technology:update') && scope.row.techState == 0" type="text" size="small" @click="addOrUpdateHandle1(scope.row.techId, -1)">停用</el-button>
           <el-button v-if="isAuth('pro:technology:info')" type="text" size="small" @click="addOrUpdateHandle(scope.row.techId, true)">查看</el-button>
         </template>
       </el-table-column>
@@ -224,7 +225,7 @@
         })
       },
       addOrUpdateHandle1 (id, type) {
-        update({ techId: id, techState: type === 1 ? 0 : 1 }).then(({data}) => {
+        update({ techId: id, techState: type }).then(({data}) => {
           if (data && data.code === '200') {
             this.getTechnology()
           }

+ 6 - 6
src/views/modules/tech/ctafts-add-or-detail.vue

@@ -585,8 +585,8 @@
               'stepId': data.id,
               'stepName': data.meta.name,
               // eslint-disable-next-line no-undef
-              'workTypeId': v.meta.prop === 'end' ? '4' : (data.meta.workTypeId || null),
-              'type': data.meta.type || null,
+              'workTypeId': data.meta.workTypeId || null,
+              'type': data.meta.prop === 'end' ? '4' : (data.meta.type || null),
               'coordinate': data.coordinate.join(',')
             }])
           })
@@ -604,8 +604,8 @@
                 'sortNo': (sortNo + 1),
                 'stepId': v.id,
                 'stepName': v.meta.name,
-                'workTypeId': v.meta.prop === 'end' ? '4' : (v.meta.workTypeId || null),
-                'type': v.meta.type || null,
+                'workTypeId': v.meta.workTypeId || null,
+                'type': v.meta.prop === 'end' ? '4' : (v.meta.type || null),
                 'coordinate': v.coordinate.join(',')
               })
               this.getLineData(dataAll[_i], dList, lList, v.id, (sortNo + 1))
@@ -622,8 +622,8 @@
                   'sortNo': (sortNo + 1),
                   'stepId': v.id,
                   'stepName': v.meta.name,
-                  'workTypeId': v.meta.prop === 'end' ? 4 : (v.meta.workTypeId || ''),
-                  'type': v.meta.type || '',
+                  'workTypeId': v.meta.workTypeId || '',
+                  'type': v.meta.prop === 'end' ? 4 : (v.meta.type || ''),
                   'coordinate': v.coordinate.join(',')
                 })
               }

+ 177 - 8
src/views/modules/works/work.vue

@@ -67,8 +67,10 @@
         width="150"
         label="操作">
         <template slot-scope="scope">
-          <el-button v-if="isAuth('work:clt:start')" type="text" size="small" @click="startTask(scope.row.taskId)">开始</el-button>
-          <el-button v-if="isAuth('work:clt:complete')" type="text" size="small" @click="transferTask(scope.row.taskId)">移交</el-button>
+          <el-button v-if="isAuth('work:clt:start') && (scope.row.state == 0 || scope.row.state == 1)" :disabled="scope.row.state == 0" type="text" size="small" @click="startTask(scope.row.taskId)">开始</el-button>
+          <el-button v-if="isAuth('work:clt:complete') && scope.row.state != 3" type="text" size="small" @click="transferTask(scope.row.taskId, scope.row.workTypeId)">移交</el-button>
+          <el-button v-if="isAuth('work:clt:complete') && scope.row.state == 2 && (scope.row.type == null || scope.row.type == 1)" type="text" size="small" @click="completeTask(scope.row.taskId)">完成</el-button>
+          <el-button v-if="isAuth('work:clt:complete') && scope.row.state == 2 && (scope.row.type == 2 || scope.row.type == 3)" type="text" size="small" @click="checkTask(scope.row.taskId)">检验</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -81,17 +83,63 @@
       :total="totalPage"
       layout="total, sizes, prev, pager, next, jumper">
     </el-pagination>
+
+    <el-dialog title="移交任务" width="30%" :visible.sync="transferDialogFormVisible">
+      <el-form :model="transferDialogForm" :rules="transferDialogFormRules" ref="transferDialogForm">
+        <el-form-item label="检验类型" prop="checkType" label-width="120px">
+           <el-select v-model="transferDialogForm.checkType" placeholder="请选择检验类型">
+            <el-option label="通过" value="1"></el-option>
+            <el-option label="不通过" value="2"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="移交用户" prop="transferUserId" label-width="120px">
+          <el-select v-model="transferDialogForm.transferUserId" placeholder="请选择移交用户">
+           <el-option
+            v-for="item in transferUserList"
+            :key="item.userId"
+            :label="item.name"
+            :value="item.userId">
+          </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="transferDialogFormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="transferSubmit">确 定</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog title="检验任务" width="30%" :visible.sync="checkDialogFormVisible">
+      <el-form :model="checkDialogForm" :rules="checkDialogFormRules" ref="checkDialogForm">
+        <el-form-item label="检验类型" prop="checkType" label-width="80px">
+           <el-select v-model="checkDialogForm.checkType" placeholder="请选择检验类型" style="width:100%">
+            <el-option label="通过" value="1"></el-option>
+            <el-option label="不通过" value="2"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="notes" label-width="80px">
+          <el-input v-model="checkDialogForm.notes" type="textarea" :rows="2" placeholder="请输入备注"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="checkDialogFormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="checkSubmit">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-  import { getTaskList } from '@/api/task'
+  import { getTaskList, startTask, transferTask, completeTask, checkTask } from '@/api/task'
+  import { workTypeMasterList } from '@/api/worktype'
   export default {
     name: 'work',
     data () {
       return {
         addOrUpdateVisible: false,
-        dataForm: {},
+        dataForm: {
+          state: '1'
+        },
         dataList: [],
         pageIndex: 1,
         pageSize: 10,
@@ -108,7 +156,19 @@
           {
             code: '3', value: '已完成'
           }
-        ]
+        ],
+        transferDialogFormVisible: false,
+        transferDialogForm: {},
+        transferUserList: [],
+        transferDialogFormRules: {
+          checkType: [{required: true, message: '请选择检验类型', trigger: 'blur'}],
+          transferUserId: [{required: true, message: '请选择移交用户', trigger: 'blur'}]
+        },
+        checkDialogFormVisible: false,
+        checkDialogForm: {},
+        checkDialogFormRules: {
+          checkType: [{required: true, message: '请选择检验类型', trigger: 'blur'}],
+        }
       }
     },
     created () {
@@ -156,11 +216,120 @@
       },
       // 开始
       startTask (taskId) {
-        // todo
+        this.$confirm('是否开始任务?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          startTask({taskId}).then(({data}) => {
+            if(data && data.code === '200'){
+              this.$message({
+                type: 'success',
+                message: '操作成功!'
+              })
+              this.getDataList()
+            } else {
+              this.$message({
+                type: 'error',
+                message: data.msg
+              })
+            }
+          })
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消'
+          });         
+        })
       },
       // 移交
-      transferTask (taskId) {
-        // todo
+      transferTask (taskId, workTypeId) {
+        this.transferDialogFormVisible = true
+        this.transferDialogForm.taskId = taskId
+
+        workTypeMasterList(workTypeId).then(({data}) => {
+          if(data && data.code === '200') {
+            this.transferUserList = data.data
+          }
+        })
+      },
+      // 确认移交
+      transferSubmit() {
+        this.$refs['transferDialogForm'].validate((valid) => {
+          if(valid){
+            transferTask(this.transferDialogForm).then(({data}) => {
+              if(data && data.code === '200'){
+                this.$message({
+                  type: 'success',
+                  message: '移交成功!'
+                })
+                this.transferDialogFormVisible = false
+                this.getDataList()
+              } else {
+                  this.$message({
+                  type: 'error',
+                  message: data.msg
+                })
+              }
+            })
+          }
+        })
+      },
+      // 完成
+      completeTask(taskId){
+        this.$confirm('是否完成任务?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          completeTask({taskId}).then(({data}) => {
+            if(data && data.code === '200'){
+              this.$message({
+                type: 'success',
+                message: '操作成功!'
+              })
+              this.getDataList()
+            } else {
+               this.$message({
+                type: 'error',
+                message: data.msg
+              })
+            }
+          })
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消'
+          })         
+        })
+      },
+      // 检验
+      checkTask(taskId){
+        this.checkDialogFormVisible = true
+        this.checkDialogForm.taskId = taskId
+      },
+      // 确认检验
+      checkSubmit(){
+        this.$refs['checkDialogForm'].validate((valid) => {
+          if(valid) {
+            let submitData = this.checkDialogForm;
+            checkTask(submitData).then(({data}) => {
+              if(data && data.code === '200') {
+                this.$message({
+                  type: 'success',
+                  message: '移交成功!'
+                })
+                this.checkDialogFormVisible = false
+                this.getDataList()
+              } else {
+                  this.$message({
+                  type: 'error',
+                  message: data.msg
+                })
+              }
+            })
+          }
+        })
       }
     }
   }