Commit 5974eae0 authored by qhr's avatar qhr

Merge branch 'dev' of http://94.191.100.41/tfmom/tf-mom-web into dev

parents 7d3b3ae1 3bad6b84
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<template> <template>
<section class="app-main"> <section class="app-main">
<transition name="fade-transform" mode="out-in"> <transition name="fade-transform" mode="out-in">
<keep-alive :include="cachedViews"> <keep-alive :include="cachedViews" :max="10">
<router-view v-if="$route.meta&&$route.meta.keepAlive" :key="key" :path="key" class="router-view" /> <router-view v-if="$route.meta&&$route.meta.keepAlive" :key="key" :path="key" class="router-view" />
</keep-alive> </keep-alive>
</transition> </transition>
...@@ -20,8 +20,16 @@ export default { ...@@ -20,8 +20,16 @@ export default {
return this.$store.state.tagsView.cachedViews return this.$store.state.tagsView.cachedViews
}, },
key() { key() {
// return this.$route.fullPath return this.$route.fullPath
return this.$route.path }
},
watch: {
'$route'(route) {
// 缓存任务接收页面
if (route.name === 'DeeMesTaskReception') {
console.log(454554)
this.$store.dispatch('tagsView/addView', route)
}
} }
}, },
methods: { methods: {
......
...@@ -142,19 +142,19 @@ router.beforeEach(async(to, from, next) => { ...@@ -142,19 +142,19 @@ router.beforeEach(async(to, from, next) => {
]) ])
next({ ...to }) next({ ...to })
} else { } else {
if (to.meta.keepAlive && store.getters.visitedViews) { // if (to.meta.keepAlive && store.getters.visitedViews) {
for (const key in store.getters.visitedViews) { // for (const key in store.getters.visitedViews) {
const findHasRoute = store.getters.visitedViews[key].find(el => { // const findHasRoute = store.getters.visitedViews[key].find(el => {
return el.path === to.path // return el.path === to.path
}) // })
if (findHasRoute) { // if (findHasRoute) {
if (findHasRoute.fullPath !== to.fullPath) { // if (findHasRoute.fullPath !== to.fullPath) {
store.dispatch('tagsView/delCachedView', to) // store.dispatch('tagsView/delCachedView', to)
} // }
break // break
} // }
} // }
} // }
next() next()
} }
} }
...@@ -162,7 +162,7 @@ router.beforeEach(async(to, from, next) => { ...@@ -162,7 +162,7 @@ router.beforeEach(async(to, from, next) => {
}) })
function findModuleRoute(path, query) { function findModuleRoute(path, query) {
if (path === '/' || path === '/home') return null if (path === '/') return null
let result = null let result = null
const module = path.split('/')[1] const module = path.split('/')[1]
......
...@@ -118,7 +118,10 @@ export default { ...@@ -118,7 +118,10 @@ export default {
// 'stockUnitPrice': r.jobResponse.jobOrder.stockUnitPrice, // 'stockUnitPrice': r.jobResponse.jobOrder.stockUnitPrice,
// 'purchaseOrderNo': r.jobResponse.jobOrder.purchaseOrderNo, // 'purchaseOrderNo': r.jobResponse.jobOrder.purchaseOrderNo,
'operator': 'ADD', 'operator': 'ADD',
id: null id: null,
storageZone: r.extProductUnit.extCenter,
storageZoneId: r.extProductUnit.extCenterId,
storageZoneIdType: r.extProductUnit.extCenterIdType
// 'remark': r.jobResponse.jobOrder.remark, // 'remark': r.jobResponse.jobOrder.remark,
// 'isRoot': r.jobResponse.jobOrder.isRoot // 'isRoot': r.jobResponse.jobOrder.isRoot
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="5">
<el-form-item label="抽查期" label-width="60px"> <el-form-item label="抽查期" label-width="60px">
<el-input <el-input
v-model="form.spotCheckPeriod" v-model="form.spotCheckPeriod"
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="3"> <el-col :span="4">
<el-form-item label="性能复验" label-width="80px"> <el-form-item label="性能复验" label-width="80px">
<el-select v-model="form.isPerformRetest" clearable placeholder="请选择" disabled> <el-select v-model="form.isPerformRetest" clearable placeholder="请选择" disabled>
<el-option label="是" :value="true" /> <el-option label="是" :value="true" />
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="5">
<el-form-item label="外观质量检查" label-width="120px"> <el-form-item label="外观质量检查" label-width="120px">
<el-select v-model="form.performCheck" :disabled="allDisabled" clearable placeholder="请选择"> <el-select v-model="form.performCheck" :disabled="allDisabled" clearable placeholder="请选择">
<el-option label="合格" value="Y" /> <el-option label="合格" value="Y" />
...@@ -155,13 +155,18 @@ ...@@ -155,13 +155,18 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col v-if="form.isSizeCheck" :span="4"> <el-col v-if="form.isSizeCheck" :span="5">
<div class="radio-input"> <div class="radio-input">
<el-form-item label="抽样数" label-width="60px"> <el-form-item label="抽样数" label-width="60px">
<el-input-number v-model="form.sampleAmount" :disabled="allDisabled" clearable :min="0" placeholder="抽样数量" /> <el-input-number v-model="form.sampleAmount" :disabled="allDisabled" clearable :min="0" placeholder="抽样数量" />
</el-form-item> </el-form-item>
</div> </div>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="检验依据" label-width="90px">
<el-input v-model="form.checkBill" :disabled="allDisabled" clearable placeholder="请输入检验依据" />
</el-form-item>
</el-col>
<el-col :span="5"> <el-col :span="5">
<div class="radio-input"> <div class="radio-input">
<el-form-item label="不合格数" label-width="80px" prop="noPassAmount"> <el-form-item label="不合格数" label-width="80px" prop="noPassAmount">
...@@ -176,12 +181,7 @@ ...@@ -176,12 +181,7 @@
</el-form-item> </el-form-item>
</div> </div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="17">
<el-form-item label="检验依据" label-width="70px">
<el-input v-model="form.checkBill" :disabled="allDisabled" clearable placeholder="请输入检验依据" />
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="备注" label-width="70px"> <el-form-item label="备注" label-width="70px">
<el-input v-model="form.remark" :disabled="allDisabled" clearable placeholder="备注" /> <el-input v-model="form.remark" :disabled="allDisabled" clearable placeholder="备注" />
</el-form-item> </el-form-item>
...@@ -579,7 +579,7 @@ export default { ...@@ -579,7 +579,7 @@ export default {
// note: '' // note: ''
// }, // },
remark: '', remark: '',
isSizeCheck: '', isSizeCheck: true,
sampleAmount: '', sampleAmount: '',
noPassAmount: '', noPassAmount: '',
// 入场验收问题描述 // 入场验收问题描述
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<span v-else>{{ scope.row.dxUserInfo.name }}</span> <span v-else>{{ scope.row.dxUserInfo.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="workHour" label="工时分配(min)"> <el-table-column prop="workHour" label="工时分配(h)">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.workHour }} <span>{{ scope.row.workHour }}
</span> </span>
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
size="small" size="small"
filterable filterable
remote remote
:remote-method="getUserData"
:loading="loading" :loading="loading"
@change="saveDxUserInfo" @change="saveDxUserInfo"
> >
...@@ -157,7 +158,7 @@ export default { ...@@ -157,7 +158,7 @@ export default {
created() { created() {
}, },
mounted() { mounted() {
this.getUserData() // this.getUserData()
}, },
methods: { methods: {
getTableData() { getTableData() {
...@@ -286,19 +287,14 @@ export default { ...@@ -286,19 +287,14 @@ export default {
return true return true
} }
}, },
getUserData() { getUserData(query) {
const params = { const params = {
'pageFrom': 1, 'pageFrom': 1,
'pageSize': 9999, 'pageSize': 100,
'searchItems': { 'searchItems': {
'children': [ 'children': [
{ {
'items': [ 'items': [
{
'fieldName': 'extProcessSkillId',
'operator': 'EQ',
'value': this.basicData.joExecutePlan && this.basicData.joExecutePlan.extProcessSkillId || this.basicData.extProcessSkillId || ''
}
], ],
'operator': 'AND' 'operator': 'AND'
} }
...@@ -307,6 +303,7 @@ export default { ...@@ -307,6 +303,7 @@ export default {
'operator': 'AND' 'operator': 'AND'
}, },
'openProps': [ 'openProps': [
{ 'name': 'extProcessSkill' },
{ 'name': 'dxUserInfo' { 'name': 'dxUserInfo'
}, },
{ 'name': 'dxPost' } { 'name': 'dxPost' }
...@@ -320,18 +317,21 @@ export default { ...@@ -320,18 +317,21 @@ export default {
} }
this.loading = true this.loading = true
this.userData = [] this.userData = []
post(`/ExtProcessSkillUser/search`, params).then(res => { post(`/ExtProcessSkillUser/queryAll?user=${query}`, params).then(res => {
res.items && res.items.content.map(item => { res.items && res.items.content.map(item => {
this.userData.push( if (item.dxUserInfo && item.extProcessSkill) {
{ this.userData.push(
label: `${item.dxUserInfo.name}(${item.dxUserInfo.number})`, {
value: item.id label: `${item.dxUserInfo.name}(${item.dxUserInfo.number})(${item.extProcessSkill.resCode}_${item.extProcessSkill.resName})`,
} value: item.id
) }
)
}
}) })
}).catch(err => { }).catch(err => {
console.log(err) console.log(err)
}).finally(() => { }).finally(() => {
this.loading = false
}) })
}, },
handleAdd() { handleAdd() {
......
...@@ -304,7 +304,8 @@ export default { ...@@ -304,7 +304,8 @@ export default {
stateOption: [], stateOption: [],
nodeData: {}, nodeData: {},
level: null, level: null,
loginUser: localStorage.getItem('userId') loginUser: localStorage.getItem('userId'),
loginUserName: localStorage.getItem('user')
} }
}, },
created() { created() {
...@@ -763,7 +764,8 @@ export default { ...@@ -763,7 +764,8 @@ export default {
}) })
} }
} }
if (this.loginUser !== '1') return if (column.property === 'firstCheckFlag' && this.loginUser !== '1') return
if (column.property === 'countWorkHour' && this.loginUserName !== row.userName && this.loginUser !== '1') return
var that = this var that = this
if (column.property === 'firstCheckFlag') { if (column.property === 'firstCheckFlag') {
row.firstCheckFlagSelect = true row.firstCheckFlagSelect = true
......
...@@ -10,7 +10,7 @@ import TaskReceiveCard from './components/taskReceiveCard/index' ...@@ -10,7 +10,7 @@ import TaskReceiveCard from './components/taskReceiveCard/index'
import TaskReceiveTable from './components/taskReceiveTable/index' import TaskReceiveTable from './components/taskReceiveTable/index'
export default { export default {
name: 'TaskReceive', name: 'DeeMesTaskReception',
components: { components: {
TaskReceiveCard, TaskReceiveCard,
TaskReceiveTable TaskReceiveTable
......
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
<script> <script>
import TaskDetail from '@/business-components/tabCom/task-detail' import TaskDetail from '@/business-components/tabCom/task-detail'
import { getInstancePbo, getTemplateList } from '@/api/workflow/userSettings.js'
import { getTaskList, getUnclaimedTask, getUnfinishedTask, getFinishedTask, getUnreadTask, getReadTask, receiveTask, completeTask, batOperationCheck } from '@/api/workflow/taskCenter.js' import { getTaskList, getUnclaimedTask, getUnfinishedTask, getFinishedTask, getUnreadTask, getReadTask, receiveTask, completeTask, batOperationCheck } from '@/api/workflow/taskCenter.js'
import { getAllApp } from '@/api/workflow/config' import { getAllApp } from '@/api/workflow/config'
import HandleTasks from './handleTasks' import HandleTasks from './handleTasks'
...@@ -164,6 +165,28 @@ export default { ...@@ -164,6 +165,28 @@ export default {
]) ])
} }
}, minWidth: 180 }, }, minWidth: 180 },
{ title: '业务对象', key: 'taskTitle', align: 'left', minWidth: 200,
component: {
render: (h, params) => {
return h('span', {
class: 'link-style',
on: {
click: () => {
getInstancePbo(params.processInstanceId).then(res => {
const pbo = res.items
if (pbo) {
let modelName = pbo.dxClassname.split('.').splice(-1)[0]
modelName = this.$utils.getModelName4dxClassName(modelName)
const title = `${pbo.subTypeDisplayName}_ ${pbo.number}_${pbo.name}`
this.$utils.toObjectDetail(pbo.id, pbo.subTypeName, title, modelName)
}
})
}
}
}, params.taskTitle || '/')
}
}
},
{ title: '流程模板', key: 'procDefName', align: 'center' }, { title: '流程模板', key: 'procDefName', align: 'center' },
{ title: '任务状态', key: 'state', align: 'center', formatter(row, column) { { title: '任务状态', key: 'state', align: 'center', formatter(row, column) {
return row.endTime ? '已完成' : '进行中' return row.endTime ? '已完成' : '进行中'
...@@ -244,7 +267,9 @@ export default { ...@@ -244,7 +267,9 @@ export default {
this.handleTasks() this.handleTasks()
} }
} }
}] }],
// 流程模板下拉列表数据
workflowTemplateOpts: []
} }
}, },
computed: { computed: {
...@@ -254,11 +279,12 @@ export default { ...@@ -254,11 +279,12 @@ export default {
propFormData: [{ propFormData: [{
data: [ data: [
{ {
key: 'processInstName', key: 'processDefKey',
title: '流程名称', title: '流程模板',
component: { component: {
name: 'el-input', name: 'el-select',
clearable: true clearable: true,
options: this.workflowTemplateOpts
} }
}, },
{ {
...@@ -269,6 +295,14 @@ export default { ...@@ -269,6 +295,14 @@ export default {
clearable: true clearable: true
} }
}, },
{
key: 'businessTitle',
title: '业务对象',
component: {
name: 'el-input',
clearable: true
}
},
{ {
key: 'assignee', key: 'assignee',
title: '活动执行人', title: '活动执行人',
...@@ -399,6 +433,15 @@ export default { ...@@ -399,6 +433,15 @@ export default {
this.getTasks(getUnreadTask, 3) this.getTasks(getUnreadTask, 3)
this.getTasks(getReadTask, 4) this.getTasks(getReadTask, 4)
this.getList() this.getList()
getTemplateList({ page: 1, size: 9999 }).then(res => {
const content = this.$utils._get(res, 'items.content') || []
this.workflowTemplateOpts = content.map(m => {
return {
label: m.name,
value: m.procDefKey
}
})
})
}, },
handleSearch(obj) { handleSearch(obj) {
this.searchObj = {} this.searchObj = {}
...@@ -417,6 +460,12 @@ export default { ...@@ -417,6 +460,12 @@ export default {
if (obj.taskName) { if (obj.taskName) {
this.searchObj.taskName = obj.taskName this.searchObj.taskName = obj.taskName
} }
if (obj.processDefKey) {
this.searchObj.processDefKey = obj.processDefKey
}
if (obj.businessTitle) {
this.searchObj.businessTitle = obj.businessTitle
}
if (obj.assignee) { if (obj.assignee) {
this.searchObj.assignee = !isNaN(obj.assignee) ? obj.assignee : localStorage.getItem('userId') this.searchObj.assignee = !isNaN(obj.assignee) ? obj.assignee : localStorage.getItem('userId')
} }
......
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
<script> <script>
import { getInsts, getOwnerSignAddActivityList } from '@/api/workflow/process.js' import { getInsts, getOwnerSignAddActivityList } from '@/api/workflow/process.js'
import { completeTask } from '@/api/workflow/taskCenter' import { completeTask } from '@/api/workflow/taskCenter'
import { getInstancePbo, getTemplateList } from '@/api/workflow/userSettings.js'
import addExaminationUserSelect from './addExaminationUserSelect' import addExaminationUserSelect from './addExaminationUserSelect'
import processInfo from './components/processInfo' import processInfo from './components/processInfo'
export default { export default {
...@@ -99,7 +100,7 @@ export default { ...@@ -99,7 +100,7 @@ export default {
] ]
} }
}}, }},
{ title: '实例名称', key: 'name', align: 'center', minWidth: 180, component: { { title: '流程名称', key: 'name', align: 'center', minWidth: 180, component: {
render: (h, params) => { render: (h, params) => {
return h('div', [ return h('div', [
h('span', { h('span', {
...@@ -114,6 +115,29 @@ export default { ...@@ -114,6 +115,29 @@ export default {
]) ])
} }
}}, }},
{ title: '流程模板', key: 'procDefName', align: 'center', minWidth: 120 },
{ title: '业务对象', key: 'businessName', align: 'left', minWidth: 200,
component: {
render: (h, params) => {
return h('span', {
class: 'link-style',
on: {
click: () => {
getInstancePbo(params.processInstanceId).then(res => {
const pbo = res.items
if (pbo) {
let modelName = pbo.dxClassname.split('.').splice(-1)[0]
modelName = this.$utils.getModelName4dxClassName(modelName)
const title = `${pbo.subTypeDisplayName}_ ${pbo.number}_${pbo.name}`
this.$utils.toObjectDetail(pbo.id, pbo.subTypeName, title, modelName)
}
})
}
}
}, params.businessName || '/')
}
}
},
{ title: '状态', key: 'status', align: 'center', minWidth: 100 }, { title: '状态', key: 'status', align: 'center', minWidth: 100 },
{ title: '当前任务', key: 'taskName', align: 'center', minWidth: 100 }, { title: '当前任务', key: 'taskName', align: 'center', minWidth: 100 },
{ title: '处理人', key: 'assignName', align: 'center', minWidth: 100 }, { title: '处理人', key: 'assignName', align: 'center', minWidth: 100 },
...@@ -158,7 +182,9 @@ export default { ...@@ -158,7 +182,9 @@ export default {
} }
} }
}], }],
addExaminationTableData: [] addExaminationTableData: [],
// 流程模板下拉列表数据
workflowTemplateOpts: []
} }
}, },
computed: { computed: {
...@@ -168,8 +194,17 @@ export default { ...@@ -168,8 +194,17 @@ export default {
propFormData: [{ propFormData: [{
data: [ data: [
{ {
key: 'name', key: 'processDefKey',
title: '流程名称', title: '流程模板',
component: {
name: 'el-select',
clearable: true,
options: this.workflowTemplateOpts
}
},
{
key: 'businessTitle',
title: '业务对象',
component: { component: {
name: 'el-input', name: 'el-input',
clearable: true clearable: true
...@@ -220,6 +255,15 @@ export default { ...@@ -220,6 +255,15 @@ export default {
}, },
initData() { initData() {
this.getList() this.getList()
getTemplateList({ page: 1, size: 9999 }).then(res => {
const content = this.$utils._get(res, 'items.content') || []
this.workflowTemplateOpts = content.map(m => {
return {
label: m.name,
value: m.procDefKey
}
})
})
}, },
handleSearch(obj) { handleSearch(obj) {
this.searchObj = {} this.searchObj = {}
...@@ -227,8 +271,11 @@ export default { ...@@ -227,8 +271,11 @@ export default {
this.searchObj.gmtCreateStart = obj.receiveTimeRange[0] + ' 00:00:00' this.searchObj.gmtCreateStart = obj.receiveTimeRange[0] + ' 00:00:00'
this.searchObj.gmtCreateEnd = obj.receiveTimeRange[1] + ' 23:59:59' this.searchObj.gmtCreateEnd = obj.receiveTimeRange[1] + ' 23:59:59'
} }
if (obj && obj.name) { if (obj && obj.processDefKey) {
this.searchObj.name = obj.name this.searchObj.processDefKey = obj.processDefKey
}
if (obj.businessTitle) {
this.searchObj.businessTitle = obj.businessTitle
} }
if (obj && obj.startedUserId) { if (obj && obj.startedUserId) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment