Commit e73aa61f authored by 15008242619's avatar 15008242619

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

parents 8447edec 8b20cd71
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -7,8 +7,9 @@
<div class="AddExtRetentionDetailDialog-dialog">
<dee-as-com
ref="tableCom"
:basic-data="{...basicData,dictOptions}"
class="list-table"
:lay-config="{ typeName: 'ExtProcessPlan', layKey: 'addExtRetentionLists'}"
:lay-config="layConfig"
@selectionChange="selectionChange"
/>
<div slot="footer" class="foot-btn-box">
......@@ -28,7 +29,7 @@ export default {
type: Object,
default: () => {}
},
parentTableData: {
componentProp: {
type: Object,
default: () => {}
}
......@@ -36,13 +37,36 @@ export default {
data() {
return {
selection: [],
defaultData: {}
dictOptions: [],
layConfig: { typeName: 'ExtProcessPlan', layKey: 'addExtRetentionLists' }
}
},
computed: {},
watch: {},
computed: {
isAddAO() {
return this.componentProp.name === '添加AO保留'
}
},
watch: {
isAddAO: {
immediate: true,
handler(val) {
if (val) {
this.layConfig = { typeName: 'ExtProcessPlan', layKey: 'addExtRetentionLists' }
} else {
this.layConfig = { typeName: 'ExtProcessPlan', layKey: 'addOtherExtRetentionLists' }
}
}
}
},
created() {
this.getDictData()
},
mounted() {},
methods: {
// 加载字典数据
async getDictData() {
this.dictOptions = await this.$utils.getDicListByCode('PlanState')
},
findByNameVnode(obj, targetName) {
if (obj && obj.$vnode && obj.$vnode.tag && obj.$vnode.tag.includes(targetName)) {
return obj
......@@ -50,6 +74,13 @@ export default {
return this.findByNameVnode(obj.$parent, targetName)
}
},
getCaNo(data) {
if (data.subTypeName === 'ExtProcessPlanAssemblyUnit') {
return data.serialNumber
} else {
return this.getCaNo(data.targetExtProcessUsageLink && data.targetExtProcessUsageLink[0] && data.targetExtProcessUsageLink[0].source)
}
},
selectionChange(val) {
this.selection = val
},
......@@ -57,12 +88,28 @@ export default {
if (this.selection.length) {
const showData = this.findByNameVnode(this, 'DeeAsTable').showData
if (showData.length) {
this.selection = this.selection.filter(item => !showData.some(x => x.lifecycleTemplateId === item.lifecycleTemplateId))
const validId = this.isAddAO ? 'id' : 'targetId'
this.selection = this.selection.filter(item => !showData.some(x => x.targetId === item[validId]))
}
const data = this.selection.map(row => {
let item = ''
let assemblyUnit = ''
if (this.isAddAO) {
item = row
assemblyUnit = this.getCaNo(item.targetExtProcessUsageLink && item.targetExtProcessUsageLink[0] && item.targetExtProcessUsageLink[0].source)
} else {
item = row.target
assemblyUnit = row.assemblyUnit
}
return {
operator: 'ADD',
dictOptions: this.dictOptions,
assemblyUnit: assemblyUnit,
target: item,
targetId: item.id,
targetIdType: 'ExtProcessPlan',
planStateLabel: this.$utils.getParamsFromLists(this.dictOptions, 'value', item.joExecutePlan[0].planState, 'label')
}
const data = this.selection.map(item => {
item.operator = 'ADD'
item.id = null
return item
})
this.$emit('submitEvent', { formData: data })
}
......
......@@ -18,7 +18,17 @@
</el-select>
</div>
<dee-as-com
v-if="typeName"
v-if="typeName==='replaceUse'"
ref="basicInfoTable"
:form="bindForm"
style="border:none;"
model-name="OutStorageUse"
:lay-config="cmpOptions"
:basic-data="{...basicData,useRequestType:basicData.typeName||typeName}"
/>
<dee-as-com
v-else-if="typeName"
ref="basicInfoTable"
style="border:none;"
model-name="OutStorageUse"
:lay-config="cmpOptions"
......@@ -29,7 +39,7 @@
</template>
<script>
// import { post } from '@/utils/http'
import { post } from '@/utils/http'
export default {
componentName: '领用出库申请新建',
name: 'AddOutStorageUseCom',
......@@ -59,6 +69,7 @@ export default {
typeName: 'OutStorageUse',
layKey: 'outStorageUseApplyAdd_useAO'
},
bindForm: {},
outStorageUseId: ''//
}
},
......@@ -67,12 +78,19 @@ export default {
typeName: {
immediate: true,
handler(val) {
this.bindForm = {}
if (!this.basicData.id) {
this.$set(this.cmpOptions, 'layKey', `outStorageUseApplyAdd_${val}`)
} else {
this.$set(this.cmpOptions, 'layKey', `outStorageUseApplyEdit_${val}`)
}
}
},
'bindForm.replaceDocNo': {
immediate: true,
handler(val) {
val && typeof (val) === 'number' && this.getReplaceOutInfo(val)
}
}
},
created() {
......@@ -89,13 +107,29 @@ export default {
// 组件方法
methods: {
async getUseRequestTypes() {
this.options = await this.$utils.getDicListByCode('UseRequestType')
const user = localStorage.getItem('user')
const dicData = await this.$utils.getDicListByCode('UseRequestType')
// 当前登陆人为孙瑶雪 和dexadmin的时候下拉可以看到试验领用,其他人看不到
if (user === '孙瑶雪' || user === 'dexadmin') {
this.options = dicData.filter(item => item.label !== '无指令领用')
} else {
this.options = dicData.filter(item => item.label !== '试验领用' && item.label !== '无指令领用')
}
},
dataChangeHandler(val) {
if (val) {
this.formData = Object.assign({}, val)
this.formData.typeName = this.typeName
}
},
getReplaceOutInfo(id) {
this.bindForm = { replaceDocNo: this.bindForm.replaceDocNo }
post(`OutStorageRequest/createReplaceOutInfo?replaceDocId=${id}`).then(res => {
if (!res.items) return
this.bindForm = res.items
}).catch(err => {
console.log(err)
}).finally(() => {})
}
// cancelHandler(val) {
// this.$confirm('此操作将解除已占用的操作, 是否继续?', '提示', {
......
......@@ -126,6 +126,14 @@ export default {
}
}
}
},
'form.replaceDocNo': {
immediate: true,
handler(val) {
if (val && this.form.inStorageRequestItems) {
this.tableData = this.form.inStorageRequestItems
}
}
}
},
mounted() {
......
......@@ -1825,6 +1825,14 @@ export default {
},
// 默认带出接收仓库
defaultStorage() {
let extDxProductAreaItem = []
if (this.basicData.extDxProductAreaId) {
extDxProductAreaItem = [{
'fieldName': 'source.extDxProductAreaId',
'operator': 'EQ',
'value': this.basicData.extDxProductAreaId || ''
}]
}
const params = {
'pageFrom': 1,
'pageSize': 9999,
......@@ -1835,12 +1843,13 @@ export default {
'fieldName': 'targetId',
'operator': 'EQ',
'value': this.basicData.materialTypeId || ''
}
},
// {
// 'fieldName': 'source.extDxProductAreaId',
// 'operator': 'EQ',
// 'value': this.basicData.extDxProductAreaId || ''
// }
...extDxProductAreaItem
],
'operator': 'AND'
}
......@@ -1856,7 +1865,9 @@ export default {
const STORAGE = this.formFileds[0].data.find(
(item) => item.key === 'storageZone'
)
if (!this.basicData.extDxProductAreaId) {
res.items.content = res.items.content.filter(item => { return item.source })
}
STORAGE.component.options = res.items.content.map((item) => {
return {
label: item.source && item.source.extname,
......
......@@ -871,7 +871,10 @@ export default {
'extDxProductAreaId': this.form.extDxProductAreaId,
'extDxSipplierId': this.form.extDxSipplierId,
'materialTypeId': this.form.materialTypeId,
'inStorageRequestItems': tableData
'inStorageRequestItems': tableData && tableData.map(r => {
delete r.objOrg
return r
}) || []
}
if (paramOperator === 'MODIFY') {
param.id = this.newDataImportResId || this.form.id
......
<template>
<div>
<el-select
v-model="selVal"
filterable
:disabled="disabled"
remote
placeholder="请输入"
:remote-method="remoteMethod"
:loading="loading"
@change="changeEvent"
>
<el-option
v-for="(item,i) in requestOp"
:key="i"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</template>
<script>
import { post } from '@/utils/http'
export default {
componentName: '产品件号/型号选择',
name: 'ProductModelSelect',
components: {},
props: {
value: {
type: Object,
default: null
},
basicData: {
type: Object,
default: null
},
form: {
type: Object,
default: null
},
itemObj: {
type: Object,
default: null
}
},
data() {
return {
selVal: '',
linkageValue: '',
requestOp: [],
loading: false,
com: null
}
},
computed: {
disabled() {
let disabled = false
this.$utils.findByNameVnode(this, 'DeeAsForm').formData.forEach(item => {
item.data && item.data.forEach(x => {
if (x.key === this.itemObj.key) {
disabled = x.component.disabled
}
})
})
return disabled
}
},
watch: {
value: {
handler: function() {
if (Object.keys(this.basicData).length) {
this.setData(this.value)
}
},
deep: true
}
},
// 生命周期 - 创建完成(可以访问当前this 实例)
created() {
},
// 生命周期 - 挂载之前
beforeMount() {
},
// 生命周期 - 挂载完成(可以访问 DOM 元素)
mounted() {
// 流程里使用
if (Object.keys(this.basicData).length) {
this.setData(this.form.extMaterial)
}
},
methods: {
async setData(value) {
if (value) {
await this.getModelNo(value.modelNo)
this.selVal = JSON.stringify(value)
}
},
async getModelNo(query) {
const params = {
'pageFrom': 1,
'pageSize': 200,
'searchItems': {
'operator': 'AND',
'items': [{
'fieldName': 'modelNo',
'operator': 'LIKE',
'value': query
}]
},
'openProps': [
{
'name': 'extUnit'
}
]
}
await post(`/ExtDxProcessMaterial/search`, params)
.then(res => {
this.loading = false
if (res.code === 0) {
this.requestOp = res.items.content.map(item => {
return {
label: item.modelNo,
value: JSON.stringify(item)
}
})
}
})
},
changeEvent(value) {
const obj = JSON.parse(value)
this.$set(this.form, 'extMaterial', obj)
},
remoteMethod(query) {
if (query && query.length >= 2) {
if (this.time) {
this.time = null
}
this.time = setTimeout(() => {
this.loading = true
this.getModelNo(query)
}, 500)
}
}
}
}
</script>
<style lang='scss' scoped>
</style>
......@@ -951,7 +951,10 @@ export default {
'extDxProductAreaId': this.form.extDxProductAreaId,
'extDxSipplierId': this.form.extDxSipplierId,
'materialTypeId': this.form.materialTypeId,
'inStorageRequestItems': tableData
'inStorageRequestItems': tableData && tableData.map(r => {
delete r.objOrg
return r
}) || []
}
if (paramOperator === 'MODIFY') {
param.id = this.newDataImportResId || this.form.id
......
export default {
props: {},
layoutConfigData: [
{
title: '高级组件配置',
data: [
{
title: 'attrKey',
key: 'attrKey',
component: {
name: 'el-input',
placeholder: ''
}
},
{
title: '是否禁用',
key: 'disabled',
component: {
name: 'el-select',
options: [{
label: '是',
value: true
}, {
label: '否',
value: false
}]
}
}
]
}
],
data() {
return {
}
},
created() {
},
computed: {
},
methods: {
}
}
<template>
<div>
<el-select
v-model="selVal"
filterable
remote
:disabled="disabled"
placeholder="请输入"
:remote-method="remoteMethod"
:loading="loading"
@change="changeEvent"
>
<el-option
v-for="(item,i) in requestOp"
:key="i"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</template>
<script>
import { post } from '@/utils/http'
import config from './config'
export default {
componentName: '装机指令号选择器',
name: 'SerialNumberSelect',
components: {},
mixins: [config],
props: {
basicData: {
type: Object,
default: null
},
value: {
type: Object,
default: null
},
form: {
type: Object,
default: null
},
itemObj: {
type: Object,
default: null
}
},
data() {
return {
selVal: '',
linkageValue: '',
requestOp: [],
loading: false
}
},
computed: {
disabled() {
return this.itemObj.disabled
}
},
watch: {
value() {
if (typeof this.value !== 'string') {
if (Object.keys(this.basicData).length) {
this.setData(this.value)
}
}
}
},
// 生命周期 - 创建完成(可以访问当前this 实例)
created() {
},
// 生命周期 - 挂载之前
beforeMount() {
},
// 生命周期 - 挂载完成(可以访问 DOM 元素)
mounted() {
this.com = this.$utils.findByNameVnode(this, 'DeeAsForm')
if (Object.keys(this.basicData).length) {
this.setData(this.form.sourceAo)
}
},
methods: {
async setData(value) {
let data = value
// 处理串件单类型等于库房串件时 source1(source必填,source1非必填)的回显问题
if (this.itemObj.attrKey.includes('targetAo') && this.form.replaceDocType === '库房串件') {
data = this.form.targetAo
}
if (data) {
await this.getModelNo(data.serialNumber)
this.selVal = JSON.stringify(data)
}
},
async getModelNo(query) {
const params = {
'pageFrom': 1,
'pageSize': 200,
'searchItems': {
'operator': 'AND',
'items': [{
'fieldName': 'serialNumber',
'operator': 'LIKE',
'value': query
}]
},
'openProps': [
{
'name': 'extUnit'
}
]
}
await post(`/ExtProcessPlan/search`, params)
.then(res => {
this.loading = false
if (res.code === 0) {
this.requestOp = res.items.content.map(item => {
return {
label: item.serialNumber,
value: JSON.stringify(item)
}
})
}
})
},
changeEvent(value) {
this.$set(this.form, this.itemObj.key, value)
},
remoteMethod(query) {
if (query && query.length >= 2) {
if (this.time) {
this.time = null
}
this.time = setTimeout(() => {
this.loading = true
this.getModelNo(query)
}, 500)
}
}
}
}
</script>
<style lang='scss' scoped>
</style>
export default {
props: {},
layoutConfigData: [
{
title: '高级组件配置',
data: [
{
title: 'attrKey',
key: 'attrKey',
component: {
name: 'el-input',
placeholder: ''
}
}
]
}
],
data() {
return {
}
},
created() {
},
computed: {
},
methods: {
}
}
<template>
<div>
<el-select
v-model="selVal"
:disabled="disabled"
placeholder="请选择"
>
<el-option
v-for="(item,i) in requestOp"
:key="i"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</template>
<script>
import { get, post } from '@/utils/http'
import config from './config'
export default {
componentName: '串件架次选择',
name: 'SerialPieceSorties',
components: {},
mixins: [config],
props: {
value: {
type: String,
default: ''
},
basicData: {
type: Object,
default: null
},
form: {
type: Object,
default: null
},
itemObj: {
type: Object,
default: null
},
componentProp: {
type: Object,
default: () => { return {} }
}
},
data() {
return {
selVal: '',
linkageValue: '',
requestOp: [],
loading: false,
com: null
}
},
computed: {
disabled() {
let disabled = false
this.$utils.findByNameVnode(this, 'DeeAsForm').formData.forEach(item => {
item.data && item.data.forEach(x => {
if (x.key === this.itemObj.attrKey) {
disabled = x.component.disabled
}
})
})
return disabled
}
},
watch: {
'form.aircraftType': function(val) {
this.getSortiesByCode(val)
},
'form.extMaterial': function(val) {
this.findCanReplaceSerno(val.id, this.selVal)
},
selVal(val) {
this.$set(this.form, this.itemObj.key, val)
let obj = this.form
const keyList = this.itemObj.key.split('.')
keyList.forEach((item, i) => {
if (i < keyList.length - 1) {
if (!obj[item]) {
obj[item] = {}
this.$set(obj, item, {})
obj = obj[item]
}
} else {
this.$set(obj, item, val)
}
})
if (this.form.extMaterial) {
this.findCanReplaceSerno(this.form.extMaterial.id, val)
}
}
},
// 生命周期 - 创建完成(可以访问当前this 实例)
created() {
},
// 生命周期 - 挂载之前
beforeMount() {
},
// 生命周期 - 挂载完成(可以访问 DOM 元素)
mounted() {
this.com = this.$utils.findByNameVnode(this, 'DeeAsForm')
if (Object.keys(this.basicData).length) {
this.setData(this.form.aircraftType)
}
},
methods: {
async setData(value) {
await this.getSortiesByCode(value)
if (this.itemObj.key.includes('source')) {
this.selVal = this.basicData.sourceSorties
} else {
this.selVal = this.basicData.targetSorties
}
},
async getSortiesByCode(val) {
await get(`/AircraftSorties/getSortiesByCode?aircraftType=${val}&aircraftTypeId=${val}`)
.then(res => {
this.loading = false
if (res.code === 0) {
this.requestOp = res.items.map(item => {
return {
label: item.defName,
value: item.defCode
}
})
}
})
},
findCanReplaceSerno(materialId, sorties) {
if (materialId && sorties) {
post(`/Inventory/findCanReplaceSerno?materialId=${materialId}&sorties=${sorties}`)
.then(res => {
this.loading = false
if (res.code === 0) {
const keyList = Object.keys(res.items)
let attrKey = 'sourceSerno'
if (this.itemObj.key.includes('source')) {
this.form.sourceInventoryMap = res.items
} else {
this.form.targetInventoryMap = res.items
attrKey = 'targetSerno'
}
let options = []
if (keyList.length) {
options = keyList.map(key => {
return {
label: key,
value: key
}
})
} else {
if (this.itemObj.key.includes('source')) {
this.$set(this.form, 'sourceSerno', '')
this.$set(this.form, 'sourceApprovalCert', '')
this.$set(this.form, 'sourceProductDrawver', '')
this.$set(this.form, 'sourceElecHardwareNo', '')
this.$set(this.form, 'sourceSoftConfPieceNo', '')
} else {
this.$set(this.form, 'targetSerno', '')
this.$set(this.form, 'targetApprovalCert', '')
this.$set(this.form, 'targetProductDrawver', '')
this.$set(this.form, 'targetElecHardwareNo', '')
this.$set(this.form, 'targetSoftConfPieceNo', '')
}
}
this.com.formData.forEach(item => {
item.data && item.data.forEach(x => {
if (x.key === attrKey) {
this.$set(x.component, 'options', options)
}
})
})
}
})
}
}
}
}
</script>
<style lang='scss' scoped>
</style>
<template>
<div>
<dee-as-com
:lay-config="layConfig"
@searchEvent="search"
/>
<dee-as-com
ref="table"
:lay-config="{
typeName: 'JoExecutePlan',
layKey: 'SubstituteMaintenanceEquipmentTable'
}"
dis-business
:result-data="tableData"
@row-click="onRowClick"
/>
<div class="foot-btn-box">
<el-button type="primary" @click="submitEvent">确认</el-button>
<el-button @click="cancelEvent">取消</el-button>
</div>
</div>
</template>
<script>
import { post } from '@/utils/http'
export default {
componentName: '器材代用维护',
name: 'SubstituteMaintenanceEquipment',
components: {},
props: {},
data() {
return {
tableData: [],
substituteRowData: {},
rowData: null
}
},
computed: {
layConfig() {
return {
typeName: 'JoExecutePlan',
layKey: 'SubstituteMaintenanceEquipmentSearch'
}
}
},
watch: {},
// 生命周期 - 创建完成(可以访问当前this 实例)
created() {
},
// 生命周期 - 挂载之前
beforeMount() {
},
// 生命周期 - 挂载完成(可以访问 DOM 元素)
mounted() {
},
methods: {
search(data) {
this.substituteRowData = this.$utils.findByNameVnode(this, 'DeeAsPage').rowData
const aoInfo = data.items.length ? data.items[0].value : ''
const params = {
aoInfo,
airModel: this.substituteRowData.airModel,
sorties: this.substituteRowData.serialNo,
itemResCode: this.substituteRowData.itemCode
}
post(`/JoExecutePlan/getCanSubstituteAo`, params).then(res => {
if (res.code === 0) {
this.tableData = res.items
}
})
},
getQueryValue(data, key) {
return data.items.find(item => item.fieldName === key) ? data.items.find(item => item.fieldName === key).value : ''
},
onRowClick(data) {
this.rowData = data.row
},
submitEvent() {
if (!this.rowData) {
this.$utils.showMessageWarning('请点击列表中的其中一行!')
return false
}
const params = {
source: this.substituteRowData,
target: this.rowData
}
post(`/Substitutelink/createSubstituteLink`, params).then(res => {
if (res.code === 0) {
this.$utils.showMessageSuccess('创建成功!')
const obj = [{
'fieldName': 'sourceId',
'operator': 'EQ',
'value': this.substituteRowData.id
}]
this.$utils.findByNameVnode(this, 'DeeAsTable').getData(obj)
this.cancelEvent()
}
})
},
cancelEvent() {
this.$emit('cancel')
}
}
}
</script>
<style lang='scss' scoped>
.foot-btn-box{
display: flex;
justify-content: center;
padding: 20px
}
</style>
......@@ -358,6 +358,7 @@ export default {
{ label: '批号', value: responseInventory.lotNo },
{ label: '系列号/序列号', value: responseInventory.serno },
{ label: '机型', value: row.airModel },
{ label: '出库数量', value: row.allocatedAmount || '' },
{ label: '验收单号', value: responseInventory.testNo },
{ label: '库位号', value: responseInventory.workunit || '' },
{ label: '备注', value: row.remark || '' }
......
......@@ -58,8 +58,9 @@
<img v-else-if="data.workingStatus === 'Run'" class="img-container" title="已开工" :src="wordImgUrl2" @click="startWorking(data)">
<img v-else class="img-container" title="已完工" :src="wordImgUrl2" @click="startWorking(data)">
</span>
<span v-if="node.level === 3 && data.type !=='cooperate'" :class="[data.isOk ?'Delivery':'Finish']">{{ data.serialNumber + ',' + data.name }}</span>
<span v-if="node.level === 3 && data.type ==='cooperate'">{{ data.name }}</span>
<span v-if="node.level === 3 && data.type !=='cooperate'&& data.type !=='transfer'" :class="[data.isOk ?'Delivery':'Finish']">{{ data.serialNumber + ',' + data.name }}</span>
<span v-if="node.level === 3 && (data.type ==='cooperate'||data.type ==='transfer')" :class="[data.type ==='transfer' ?'Reserved':'']">{{ data.name }}</span>
<span v-if="node.level === 4" class="change-text" :class="[data.isOk ?'Delivery':'Finish']">{{ data.serialNumber + ',' + data.name }}</span>
</span>
</span>
</el-tree>
......@@ -72,6 +73,7 @@
v-show="!isCooperate"
ref="detailCom"
:key="layConfig.layKey"
:basic-data="{requestUrl}"
table-height="calc(100vh - 100px)"
:lay-config="layConfig"
:form="searchFormData"
......@@ -130,7 +132,8 @@ export default {
skillType: '',
isCooperate: false,
currentNodekey: '',
filterText: ''
filterText: '',
requestUrl: ''
}
},
watch: {
......@@ -373,6 +376,7 @@ export default {
}
},
loadNode(node, resolve) {
this.requestUrl = ''
if (node.level === 1) {
return resolve(node.data.children)
} else if (node.level === 2) {
......@@ -428,6 +432,14 @@ export default {
element.level = 3
element.leaf = true
})
res.items.push({
positionId: node.data.id,
type: 'transfer',
serialNumber: node.data.serialNumber,
name: '转移工作包',
id: 'transfer_' + parseInt(Math.random() * 100000000000000, 10),
leaf: false
})
return resolve(res.items)
})
.catch((err) => {
......@@ -436,6 +448,8 @@ export default {
})
.finally(() => {})
}
} else if (node.level === 3 && node.data && node.data.type === 'transfer') {
this.getQueryRetention(node, resolve)
} else if (node.level === 3) {
if (node.type === 'cooperate') {
this.isCooperate = true
......@@ -460,7 +474,69 @@ export default {
const pNode = this.$refs.tree.getNode(node).parent.data
this.$bus.$emit('getMissData', pNode)
})
} else if (node.level === 4) {
this.requestUrl = `/JoExecutePlan/issuedSearch?sorties=${this.form.sortiesName}&position=${node.parentPosition}&assemblyUnit=${node.serialNumber}`
this.$nextTick(() => {
if (this.$refs.detailCom.$refs.asCom && this.$refs.detailCom.$refs.asCom.getData) {
this.$refs.detailCom.$refs.asCom.getData()
}
const pNode = this.$refs.tree.getNode(node).parent.data
this.$bus.$emit('getMissData', pNode)
})
}
},
getQueryRetention(node, resolve) {
const params = {
'searchItems': {
'children': [
{
'items': [
{
'fieldName': 'state',
'operator': 'EQ',
'value': 'Approved'
},
{
'fieldName': 'enterPosition',
'operator': 'EQ',
'value': node.data.serialNumber || ''
},
{
'fieldName': 'sorties',
'operator': 'EQ',
'value': this.form.sortiesName || ''
}
],
'operator': 'AND'
}
],
'items': [],
'operator': 'AND'
},
'openProps': [
{
'name': 'extRetentionPlanLinks'
}
],
'sortItem': [
{
'fieldName': 'createTime',
'sortOrder': 'desc'
}
]
}
post(`/ExtRetention/queryRetention`, params)
.then((res) => {
const newChildren = res.items && res.items.map(item => {
item.leaf = true
item.level = 4
item.parentPosition = node.data.serialNumber || ''
return item
})
return resolve(newChildren)
}).catch(() => {
return resolve([])
})
},
formatTime() {
const d = new Date()
......@@ -661,6 +737,9 @@ export default {
.Delivery {
color: #0000ff;
}
.Reserved {
color: #ff0000;
}
.Finish {
color: #008000;
}
......
......@@ -51,7 +51,9 @@
<i :class="'tree' + node.level" />
<span v-if="node.level === 1" class="label change-text" :title="data.serialNumber">{{ data.serialNumber }}</span>
<span v-if="node.level === 2" class="change-text">{{ data.serialNumber + ',' + data.name }}</span>
<span v-if="node.level === 3" class="change-text" :class="[data.target.isOk ?'Delivery':'Finish']">{{ data.target.serialNumber + ',' + data.target.name }}</span>
<span v-if="node.level === 3&& data.target" class="change-text" :class="[data.target.isOk ?'Delivery':'Finish']">{{ data.target.serialNumber + ',' + data.target.name }}</span>
<span v-if="data.name==='转移工作包'" class="change-text Reserved">{{ data.name }}</span>
<span v-if="node.level === 4" class="change-text" :class="[data.isOk ?'Delivery':'Finish']">{{ data.serialNumber + ',' + data.name }}</span>
</span>
</span>
</el-tree>
......@@ -65,6 +67,7 @@
<dee-as-com
ref="detailCom"
:key="layConfig.typeName"
:basic-data="{activeNodeData,requestParams}"
:lay-config="layConfig"
table-height="calc(100vh - 200px)"
@row-click="rowClick"
......@@ -74,6 +77,7 @@
<dee-as-com
ref="detailCom2"
:key="layConfig.typeName"
:basic-data="{activeNodeData,requestParams}"
:lay-config="layConfig1"
table-height="calc(100vh - 200px)"
@row-click="rowClick"
......@@ -186,7 +190,8 @@ export default {
activeTab: '0',
activeNodeData: {},
currentNodekey: '',
areaUpdatingLists: {}
areaUpdatingLists: {},
requestParams: []
}
},
watch: {
......@@ -497,7 +502,7 @@ export default {
item.extPositionLinks.forEach(element => {
element.leaf = true
})
item.children = item.extPositionLinks
item.children = [...item.extPositionLinks, { name: '转移工作包', children: [], id: parseInt(Math.random() * 100000000000000, 10) }]
}
})
this.treeData = [
......@@ -571,12 +576,12 @@ export default {
this.$nextTick(() => {
if (this.activeTab === '0') {
if (this.$refs.detailCom.$refs.asCom && this.$refs.detailCom.$refs.asCom.getData) {
this.$refs.detailCom.$refs.asCom.getData(this.activeNodeData)
this.$refs.detailCom.$refs.asCom.getData(this.activeNodeData.level !== 4 ? this.activeNodeData : null)
this.$emit('getMissData', null)
}
} else if (this.activeTab === '1') {
if (this.$refs.detailCom2.$refs.asCom && this.$refs.detailCom2.$refs.asCom.getData) {
this.$refs.detailCom2.$refs.asCom.getData(this.activeNodeData)
this.$refs.detailCom2.$refs.asCom.getData(this.activeNodeData.level !== 4 ? this.activeNodeData : null)
this.$emit('getMissData', null)
}
} else if (this.activeTab === '2') {
......@@ -588,11 +593,15 @@ export default {
})
},
handleNodeClick(data, node) {
if (node.level === 2 || node.level === 3) {
this.requestParams = []
if (data.name === '转移工作包') {
this.getQueryRetention(data, node)
} else {
data.activeTab = this.activeTab
data.level = node.level
data.searchStories = this.form.sortiesName
this.activeNodeData = data
if (node.level === 2 || node.level === 3) {
this.$nextTick(() => {
if (this.activeTab === '0') {
if (this.$refs.detailCom.$refs.asCom && this.$refs.detailCom.$refs.asCom.getData) {
......@@ -612,6 +621,88 @@ export default {
}
})
}
if (node.level === 4) {
this.requestParams = [
`sorties=${this.form.sortiesName}`,
`position=${data.parentPosition}`,
`assemblyUnit=${data.serialNumber}`
]
this.$nextTick(() => {
let tableRefName = ''
switch (this.activeTab) {
case '0':
tableRefName = 'detailCom'
break
case '1':
tableRefName = 'detailCom2'
break
default:
break
}
if (this.$refs[tableRefName] && this.$refs[tableRefName].$refs.asCom && this.$refs[tableRefName].$refs.asCom.getData) {
this.$refs[tableRefName].$refs.asCom.getData()
this.$emit('getMissData', null)
}
})
}
}
},
getQueryRetention(data, node) {
const params = {
'searchItems': {
'children': [
{
'items': [
{
'fieldName': 'state',
'operator': 'EQ',
'value': 'Approved'
},
{
'fieldName': 'enterPosition',
'operator': 'EQ',
'value': node.parent.data && node.parent.data.serialNumber || ''
},
{
'fieldName': 'sorties',
'operator': 'EQ',
'value': this.form.sortiesName || ''
}
],
'operator': 'AND'
}
],
'items': [],
'operator': 'AND'
},
'openProps': [
{
'name': 'extRetentionPlanLinks'
}
],
'sortItem': [
{
'fieldName': 'createTime',
'sortOrder': 'desc'
}
]
}
post(`/ExtRetention/queryRetention`, params)
.then((res) => {
const newChildren = res.items && res.items.map(item => {
item.leaf = true
item.parentPosition = node.parent.data && node.parent.data.serialNumber || ''
return item
})
if (newChildren) {
this.$refs.tree.updateKeyChildren(node.key, newChildren)
this.defaultExpandedKeys = [node.key]
}
}).catch(err => {
console.log(err)
}).finally(() => {
})
},
getCurrentData(data) {
if (data.level === 2 || data.level === 3) {
......
......@@ -12,7 +12,7 @@
ref="form"
class="AlodinDeploysCard-form"
:model="form"
label-width="100px"
label-width="110px"
:rules="rules"
>
<el-row style="margin-bottom: 10px">
......@@ -181,6 +181,9 @@ export default {
sptype: [
{ required: true, message: '请选择问题类型', trigger: 'change' }
],
tfpause: [
{ required: true, message: '请选择是否加工暂停', trigger: 'change' }
],
receiver: [
{ required: true, message: '请选择站位长/站位计划员/站位工程师', trigger: 'change' }
]
......
......@@ -342,11 +342,11 @@ export default {
item.inspectPerson = []
item.prodTask.forEach(element => {
if (element.subTypeName === 'CheckOut') {
if (element.extProcessSkillUser) {
if (element.extProcessSkillUser && element.extProcessSkillUser.dxUserInfo) {
item.inspectPerson.push(element.extProcessSkillUser.dxUserInfo.name)
}
} else if (element.subTypeName === 'FitOut') {
if (element.extProcessSkillUser) {
if (element.extProcessSkillUser && element.extProcessSkillUser.dxUserInfo) {
item.operatPerson.push(element.extProcessSkillUser.dxUserInfo.name)
}
}
......
......@@ -256,7 +256,7 @@ export default {
vice: (p.prodTask &&
p.prodTask.filter(t => t.subTypeName === 'FitOut')
.map((q) => {
return q.extProcessSkillUser ? q.extProcessSkillUser.dxUserInfo.name : ''
return q.extProcessSkillUser && q.extProcessSkillUser.dxUserInfo ? q.extProcessSkillUser.dxUserInfo.name : ''
})
.join(' '))
},
......@@ -264,7 +264,7 @@ export default {
(p.prodTask &&
p.prodTask.filter(t => t.subTypeName === 'CheckOut')
.map((q) => {
return q.extProcessSkillUser ? q.extProcessSkillUser.dxUserInfo.name : ''
return q.extProcessSkillUser && q.extProcessSkillUser.dxUserInfo ? q.extProcessSkillUser.dxUserInfo.name : ''
})
.join(' ')),
planStateCode:
......
......@@ -43,14 +43,34 @@ export default {
getDetail() {
msgDetail(this.id).then(res => {
this.message = res.items
res.items.templateId && this.getTemplate(res.items.templateId)
if (res.items.templateId) {
this.getTemplate(res.items.templateId)
} else {
this.showObjFlag = true
}
})
},
getTemplate(id) {
getTemplateDetail(id).then(res => {
this.showObjFlag = res.items.showObjFlag
this.showObjFlag = res.items ? res.items.showObjFlag : true
const businessObject = JSON.parse(this.message.businessObject)
this.taskTitle = `${businessObject.subTypeDisplayName}-${businessObject.number} ${businessObject.name} ${businessObject.displayVersion}`
const taskTitle = []
this.taskTitle = ''
if (businessObject.number) {
taskTitle.push(businessObject.number)
}
if (businessObject.name) {
taskTitle.push(businessObject.name)
}
if (businessObject.displayVersion) {
taskTitle.push(businessObject.displayVersion)
}
if (businessObject.subTypeDisplayName) {
this.taskTitle = `${businessObject.subTypeDisplayName}-`
}
if (taskTitle.length > 0) {
this.taskTitle += taskTitle.join(' ')
}
})
},
goDetail() {
......
......@@ -7,16 +7,13 @@
<div v-dee-loading="loading" class="task-detail-process-common-com">
<div class="name">
<div class="message-popper-flow">
<div>
<div v-if="processInstanceId">
<div
v-for="(pitem, id) in historyInfo"
:key="id"
class="program-item"
>
<div class="program-left">
<!-- <div class="program-left-content">
<div>{{ pitem.completed?'已完成':'待完成' }}</div>
</div> -->
<div v-show="pitem.endTime" class="program-circle-finished" />
<div v-show="!pitem.endTime" class="program-circle-unfinished" />
</div>
......@@ -37,7 +34,7 @@
</div>
</div>
</div>
<!-- <div v-else style="line-height: 88px;text-align: center">暂无数据</div> -->
<div v-else style="line-height: 88px;text-align: center">暂无审签历史记录</div>
</div>
</div>
</div>
......@@ -57,7 +54,7 @@ export default {
},
data() {
return {
loading: true,
loading: false,
item: {},
historyInfo: [],
businessObject: {}
......@@ -78,14 +75,13 @@ export default {
processInstanceId: {
handler: function(val) {
this.$nextTick(function() {
this.getDetail(val)
val && this.getDetail(val)
})
},
immediate: true
}
},
created() {
// this.getDetail('678df986-9c26-11eb-9fc3-fa163ee7db6d')
},
methods: {
handleClose() {
......
......@@ -117,8 +117,8 @@ export default {
computed: {
tabs() {
return this.activeTitle === '我的待办' ? [
{ id: '批量签审', name: '批量签审' },
{ id: this.activeTitle, name: '单个签审' }
{ id: this.activeTitle, name: '单个签审' },
{ id: '批量签审', name: '批量签审' }
] : [{ id: this.activeTitle, name: this.activeTitle }]
}
},
......@@ -128,6 +128,7 @@ export default {
this.getMessageInfo()
},
mounted() {
this.tabClick({ label: '单个签审' })
},
methods: {
tabClick(val) {
......@@ -158,6 +159,8 @@ export default {
path: '/dee-message/message/home'
}
})
} else {
this.tabClick({ label: '单个签审' })
}
})
},
......
......@@ -37,7 +37,7 @@ export default {
immediate: true,
deep: true,
handler(val) {
if (val === 'InStorageMoveAuditing') {
if (val === 'InStorageMoveAuditing' || val === 'OutStorageMoveConfirm') {
this.layKey = 'batchSign_InStorageMoveAuditing'
} else {
this.layKey = 'batchSign_inStorageMoveExamine'
......
......@@ -436,6 +436,7 @@ export default {
.then((res) => {
if (res.message.includes('成功')) {
this.$bus.$emit('getPositionData')
this.getTableData()
// this.$parent.$refs.left.$refs.tree.getTreeData()
this.$message({
showClose: true,
......@@ -473,6 +474,7 @@ export default {
.then((res) => {
if (res.message.includes('成功')) {
this.$bus.$emit('getPositionData')
this.getTableData()
this.$message({
showClose: true,
message: res.message,
......@@ -509,6 +511,7 @@ export default {
.then((res) => {
if (res.message.includes('成功')) {
this.$bus.$emit('getPositionData')
this.getTableData()
this.$message({
showClose: true,
message: res.message,
......
......@@ -45,6 +45,7 @@ export default {
InstructionIdentificationBatchInfo: () => import('./instructionIdentificationBatch'), // 指令标识不编辑
ReturnToFactoryBatch: () => import('./returnToFactoryBatch'), // 返厂处理
InStorageMoveAuditing: () => import('./inStorageMoveExamine'), // 移库入库库房审核
OutStorageMoveConfirm: () => import('./inStorageMoveExamine'), // 移库出库确认
InStorageMoveExamine: () => import('./inStorageMoveExamine'), // 移库入库库房确认
InStorageTkdBackCraftsmenExamin: () => import('./inStorageTkdBackCraftsmenExamin'), // 退库单退库工艺审核
InStorageTkdBackDesignerExamin: () => import('./inStorageTkdBackDesignerExamin'), // 退库单退库设计审核
......
......@@ -123,7 +123,7 @@ export default {
class: 'link-style',
on: {
click: () => {
getInstancePbo(params.processInstanceId).then(res => {
getInstancePbo(params.id).then(res => {
const pbo = res.items
if (pbo) {
let modelName = pbo.dxClassname.split('.').splice(-1)[0]
......
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