|
@@ -39,13 +39,14 @@
|
|
|
label="任务名称">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
+ v-if="showProgress"
|
|
|
prop="completeNum"
|
|
|
header-align="center"
|
|
|
align="center"
|
|
|
min-width="160"
|
|
|
label="任务进度">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-progress :percentage="scope.row.completeNum?Number(scope.row.completeNum):0"></el-progress>
|
|
|
+ <el-progress :percentage="getPercentage(scope.row.completeNum, scope.row.totalNum)"></el-progress>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
@@ -56,24 +57,52 @@
|
|
|
label="规定完成时间">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="stepName"
|
|
|
+ prop="nodeName"
|
|
|
header-align="center"
|
|
|
align="center"
|
|
|
min-width="160"
|
|
|
:show-tooltip-when-overflow="true"
|
|
|
label="工序内容">
|
|
|
</el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="require"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="工序要求">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="explain"
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="工序说明">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ header-align="center"
|
|
|
+ align="center"
|
|
|
+ min-width="160"
|
|
|
+ :show-tooltip-when-overflow="true"
|
|
|
+ label="工序附件">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <li v-for="(item, index) in scope.row.attachList" :key="index"><a @click="previewFile(item.url)">{{item.fileName}}</a></li>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column
|
|
|
fixed="right"
|
|
|
header-align="center"
|
|
|
align="center"
|
|
|
- width="150"
|
|
|
+ width="180"
|
|
|
label="操作">
|
|
|
<template slot-scope="scope">
|
|
|
<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>
|
|
|
+ <el-button v-if="isAuth('work:clt:complete') && scope.row.state == 2 && (scope.row.nodeType == null || scope.row.nodeType == 'start' || scope.row.nodeType == 'produce')" 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.nodeType == 'check' || scope.row.nodeType == 't-check')" type="text" size="small" @click="checkTask(scope.row.taskId, 1)">通过</el-button>
|
|
|
+ <el-button v-if="isAuth('work:clt:complete') && scope.row.state == 2 && (scope.row.nodeType == 'check' || scope.row.nodeType == 't-check')" type="text" size="small" @click="checkTask(scope.row.taskId, 2)">不通过</el-button>
|
|
|
+ <el-button v-if="isAuth('work:clt:complete') && scope.row.state == 2 && (scope.row.nodeType == null || scope.row.nodeType == 'produce')" type="text" size="small" @click="damageTask(scope.row.taskId)">操作损坏</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -89,11 +118,16 @@
|
|
|
|
|
|
<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-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="transferType" label-width="120px">
|
|
|
+ <el-select v-model="transferDialogForm.transferType" placeholder="请选择移交类型">
|
|
|
+ <el-option label="工作移交" value="1"></el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="移交用户" prop="transferUserId" label-width="120px">
|
|
|
<el-select v-model="transferDialogForm.transferUserId" placeholder="请选择移交用户">
|
|
@@ -105,6 +139,9 @@
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="移交说明" prop="transferExplain" label-width="120px">
|
|
|
+ <el-input v-model="transferDialogForm.transferExplain" placeholder="请输入"></el-input>
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button @click="transferDialogFormVisible = false">取 消</el-button>
|
|
@@ -116,8 +153,8 @@
|
|
|
<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-option label="返回上一级" value="2"></el-option>
|
|
|
+ <el-option label="报损" value="3"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="备注" prop="notes" label-width="80px">
|
|
@@ -129,13 +166,28 @@
|
|
|
<el-button type="primary" @click="checkSubmit">确 定</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <el-dialog title="操作损坏" width="30%" :visible.sync="damageDialogFormVisible">
|
|
|
+ <el-form :model="damageDialogForm" :rules="damageDialogFormRules" ref="checkDialogForm">
|
|
|
+ <el-form-item label="损坏原因" prop="damageReason" label-width="80px">
|
|
|
+ <el-input v-model="damageDialogForm.damageReason" type="textarea" :rows="2" placeholder="请输入"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="damageDialogFormVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="damageSubmit">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import { getTaskList, startTask, transferTask, completeTask, checkTask } from '@/api/task'
|
|
|
- import { workTypeMasterList } from '@/api/worktype'
|
|
|
+import { getTaskList, startTask, transferTask, completeTask, checkTask, damageTask } from '@/api/task'
|
|
|
+import { workTypeMasterList } from '@/api/worktype'
|
|
|
+import template from '../warehouse/template.vue'
|
|
|
+import { downloadUrl } from '@/api/file'
|
|
|
export default {
|
|
|
+ components: { template },
|
|
|
name: 'work',
|
|
|
data () {
|
|
|
return {
|
|
@@ -164,14 +216,21 @@
|
|
|
transferDialogForm: {},
|
|
|
transferUserList: [],
|
|
|
transferDialogFormRules: {
|
|
|
- checkType: [{required: true, message: '请选择检验类型', trigger: 'blur'}],
|
|
|
+ transferType: [{required: true, message: '请选择移交类型', trigger: 'blur'}],
|
|
|
transferUserId: [{required: true, message: '请选择移交用户', trigger: 'blur'}]
|
|
|
},
|
|
|
checkDialogFormVisible: false,
|
|
|
checkDialogForm: {},
|
|
|
checkDialogFormRules: {
|
|
|
- checkType: [{required: true, message: '请选择检验类型', trigger: 'blur'}]
|
|
|
- }
|
|
|
+ checkType: [{required: true, message: '请选择', trigger: 'blur'}]
|
|
|
+ },
|
|
|
+ damageDialogFormVisible: false,
|
|
|
+ damageDialogForm: {},
|
|
|
+ damageDialogFormRules: {
|
|
|
+ damageReason: [{required: true, message: '请输入', trigger: 'blur'}]
|
|
|
+ },
|
|
|
+ // 是否显示进度条列
|
|
|
+ showProgress: true
|
|
|
}
|
|
|
},
|
|
|
created () {
|
|
@@ -181,6 +240,11 @@
|
|
|
// 查询
|
|
|
queryData () {
|
|
|
this.pageIndex = 1
|
|
|
+ if(this.dataForm.state === '2'){
|
|
|
+ this.showProgress = false
|
|
|
+ } else {
|
|
|
+ this.showProgress = true
|
|
|
+ }
|
|
|
this.getDataList()
|
|
|
},
|
|
|
// 获取数据列表
|
|
@@ -307,10 +371,50 @@
|
|
|
})
|
|
|
},
|
|
|
// 检验
|
|
|
- checkTask (taskId) {
|
|
|
- this.checkDialogFormVisible = true
|
|
|
+ checkTask (taskId, checkType) {
|
|
|
this.checkDialogForm.taskId = taskId
|
|
|
+ if(checkType === 1){
|
|
|
+ this.checkDialogForm.checkType = checkType
|
|
|
+ this.passTask()
|
|
|
+ } else {
|
|
|
+ this.checkDialogForm.checkType = null
|
|
|
+ this.refuseTask()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 通过
|
|
|
+ passTask(){
|
|
|
+ this.$confirm('是否完成任务?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ 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
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }).catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '已取消'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ refuseTask(){
|
|
|
+ this.checkDialogFormVisible = true
|
|
|
},
|
|
|
+ // 不通过
|
|
|
// 确认检验
|
|
|
checkSubmit () {
|
|
|
this.$refs['checkDialogForm'].validate((valid) => {
|
|
@@ -333,11 +437,55 @@
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
+ },
|
|
|
+ // 操作损坏
|
|
|
+ damageTask(taskId, productionId){
|
|
|
+ this.damageDialogFormVisible = true
|
|
|
+ this.damageDialogForm.taskId = taskId
|
|
|
+ this.damageDialogForm.productionId = productionId
|
|
|
+ },
|
|
|
+ // 确认操作损坏
|
|
|
+ damageSubmit(){
|
|
|
+ this.$refs['damageDialogForm'].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ let submitData = this.checkDialogForm
|
|
|
+ damageTask(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
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 预览
|
|
|
+ previewFile (url) {
|
|
|
+ // 弹出新页面显示下载文件
|
|
|
+ window.open(downloadUrl + url, '_blank')
|
|
|
+ },
|
|
|
+ // 计算进度百分比,返回0到100的整数
|
|
|
+ getPercentage(completeNum, totalNum){
|
|
|
+ completeNum = completeNum == null ? 0 : parseInt(completeNum)
|
|
|
+ totalNum = totalNum == null ? 100 : parseInt(totalNum)
|
|
|
+ if(totalNum === 0){
|
|
|
+ return 100
|
|
|
+ }
|
|
|
+
|
|
|
+ return (completeNum/totalNum).toFixed(2) * 100
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
-
|
|
|
+li {list-style-type:none;}
|
|
|
</style>
|