update 法规合规评估流程
This commit is contained in:
+29
-2
@@ -3,7 +3,7 @@ import { getAction, postAction } from './manage.js'
|
|||||||
// 查询定义流程列表
|
// 查询定义流程列表
|
||||||
const getProcessNodeList = (params) => getAction('/activiti/getNodeList', params)
|
const getProcessNodeList = (params) => getAction('/activiti/getNodeList', params)
|
||||||
// 催办
|
// 催办
|
||||||
const urgeProcessNode = (params) =>postAction('/workCenter/urging', params)
|
const urgeProcessNode = (params) => postAction('/workCenter/urging', params)
|
||||||
|
|
||||||
// 流程配置-部署
|
// 流程配置-部署
|
||||||
const deployWorkFlow = (params) => getAction('/activitiModel/deploy', params)
|
const deployWorkFlow = (params) => getAction('/activitiModel/deploy', params)
|
||||||
@@ -403,6 +403,24 @@ const rejectNoMatchTrackingProcess = (params) => postAction('/process/projectNot
|
|||||||
// 保存
|
// 保存
|
||||||
const saveNoMatchTrackingProcess = (params) => postAction('/process/projectNotMet/saveToDraft', params)
|
const saveNoMatchTrackingProcess = (params) => postAction('/process/projectNotMet/saveToDraft', params)
|
||||||
|
|
||||||
|
/* 法规合规评估流程 */
|
||||||
|
// 获取标准列表(带分解单来源的信息)
|
||||||
|
const getStandardListCarryDecompositionSingleSource = (params) => getAction('/process/projectStandard/quaryStandard', params)
|
||||||
|
// 通过标准及分解单来源获取条款
|
||||||
|
const getClauseByStandard = (params) => postAction('/process/projectStandard/processProjectStandardGetList', params)
|
||||||
|
// 保存
|
||||||
|
const saveStandardCompliance = (params) => postAction('/process/projectStandard/saveToDraft', params)
|
||||||
|
// 发起
|
||||||
|
const initStandardCompliance = (params) => postAction('/process/projectStandard/startProcess', params)
|
||||||
|
// 提交
|
||||||
|
const submitStandardCompliance = (params) => postAction('/process/projectStandard/submit', params)
|
||||||
|
// 同意
|
||||||
|
const agreeStandardCompliance = (params) => postAction('/process/projectStandard/agree', params)
|
||||||
|
// 驳回
|
||||||
|
const rejectStandardCompliance = (params) => postAction('/process/projectStandard/reject', params)
|
||||||
|
// 查询流程信息
|
||||||
|
const queryStandardCompliance = (params) => getAction('/process/projectStandard/queryProcessInfoVO', params)
|
||||||
|
|
||||||
export {
|
export {
|
||||||
getProcessNodeList,
|
getProcessNodeList,
|
||||||
urgeProcessNode,
|
urgeProcessNode,
|
||||||
@@ -605,5 +623,14 @@ export {
|
|||||||
submitNoMatchTrackingProcess,
|
submitNoMatchTrackingProcess,
|
||||||
agreeNoMatchTrackingProcess,
|
agreeNoMatchTrackingProcess,
|
||||||
rejectNoMatchTrackingProcess,
|
rejectNoMatchTrackingProcess,
|
||||||
saveNoMatchTrackingProcess
|
saveNoMatchTrackingProcess,
|
||||||
|
|
||||||
|
getStandardListCarryDecompositionSingleSource,
|
||||||
|
getClauseByStandard,
|
||||||
|
saveStandardCompliance,
|
||||||
|
initStandardCompliance,
|
||||||
|
submitStandardCompliance,
|
||||||
|
agreeStandardCompliance,
|
||||||
|
rejectStandardCompliance,
|
||||||
|
queryStandardCompliance
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -409,27 +409,22 @@ module.exports = {
|
|||||||
// 未符合项跟踪流程
|
// 未符合项跟踪流程
|
||||||
noMatchTracking: {
|
noMatchTracking: {
|
||||||
queryByCondition: '按条件查询',
|
queryByCondition: '按条件查询',
|
||||||
problemTypes:
|
problemTypes: '问题类型'
|
||||||
'问题类型'
|
|
||||||
},
|
},
|
||||||
// 法规合规评估流程
|
// 法规合规评估流程
|
||||||
standardCompliance: {
|
standardCompliance: {
|
||||||
addStandard: '添加标准',
|
addStandard: '添加标准',
|
||||||
responsibleUnitContactPerson:
|
responsibleUnitContactPerson: '责任单位联络人',
|
||||||
'责任单位联络人',
|
pleaseSelectDeleteData: '请选择要删除的数据',
|
||||||
pleaseSelectDeleteData:
|
moduleOwner: '模块责任人',
|
||||||
'请选择要删除的数据',
|
projectAppraisal: '项目评估',
|
||||||
moduleOwner:
|
stronglyRelatedVehicleType: '是否与车型强关联',
|
||||||
'模块责任人',
|
doesNotFitModel: '不符合车型系列',
|
||||||
projectAppraisal:
|
projectApproval: '项目审批',
|
||||||
'项目评估',
|
projectFiling: '项目归档',
|
||||||
stronglyRelatedVehicleType:
|
pleaseAddStandard: '请添加标准',
|
||||||
'是否与车型强关联',
|
pleaseSelectResponsibleUnitContactPerson: '请选择责任单位联络人',
|
||||||
doesNotFitModel:
|
atLeastOneData:'至少需要保留一条数据',
|
||||||
'不符合车型系列',
|
pleaseSelectDesignEngineer: '请选择设计工程师',
|
||||||
projectApproval:
|
|
||||||
'项目审批',
|
|
||||||
projectFiling:
|
|
||||||
'项目归档'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ export const ProcessKey = {
|
|||||||
// 未符合项跟踪流程
|
// 未符合项跟踪流程
|
||||||
NO_MATCH_TRACKING: { text: 'project-not-met', value: 'project-not-met' },
|
NO_MATCH_TRACKING: { text: 'project-not-met', value: 'project-not-met' },
|
||||||
// 法规合规评估流程
|
// 法规合规评估流程
|
||||||
REGULATORY_COMPLIANCE_ASSESSMENT: { text: 'fb-standard-compliance-assessment', value: 'fb-standard-compliance-assessment' },
|
REGULATORY_COMPLIANCE_ASSESSMENT: { text: 'standard-assessment', value: 'standard-assessment' },
|
||||||
// 法规采购流程
|
// 法规采购流程
|
||||||
LEGAL_PROCUREMENT: { text: 'fb-standard-purchase', value: 'fb-standard-purchase' },
|
LEGAL_PROCUREMENT: { text: 'fb-standard-purchase', value: 'fb-standard-purchase' },
|
||||||
// 企标稽查计划
|
// 企标稽查计划
|
||||||
@@ -520,14 +520,14 @@ export const EsStartUseNodes = new EsEnums({
|
|||||||
|
|
||||||
// 法规合规流程节点
|
// 法规合规流程节点
|
||||||
export const StandardComplianceNodes = new EsEnums({
|
export const StandardComplianceNodes = new EsEnums({
|
||||||
initial: { text: '法规工程师发起', value: '1', btn: ['save', 'submit'] },
|
initial: { text: '法规工程师发起', value: 'fggcsfq', btn: ['save', 'submit'] },
|
||||||
departLeaderIssue: { text: '部所主管级领导下发', value: '2', btn: ['return', 'save', 'submit'] },
|
departLeaderIssue: { text: '部所主管级领导下发', value: 'bszgjldxf', btn: ['return', 'save', 'submit'] },
|
||||||
moduleOwnerIssue: { text: '模块责任人分发', value: '3', btn: ['return', 'save', 'submit'] },
|
moduleOwnerIssue: { text: '模块责任人分发', value: 'mkzrrff', btn: ['return', 'save', 'submit'] },
|
||||||
designEngineerAssess: { text: '设计工程师评估', value: '4', btn: ['return', 'save', 'submit'] },
|
designEngineerAssess: { text: '设计工程师评估', value: 'sjgcspg', btn: ['return', 'save', 'submit'] },
|
||||||
moduleOwnerReview: { text: '模块责任人审批', value: '5', btn: ['return', 'save', 'agree', 'reject'] },
|
moduleOwnerReview: { text: '模块责任人审批', value: 'mkzrrsp', btn: ['return', 'save', 'agree', 'reject'] },
|
||||||
departLeaderApprove: { text: '部所主管级领导审批', value: '6', btn: ['return', 'save', 'agree', 'reject'] },
|
departLeaderApprove: { text: '部所主管级领导审批', value: 'bszgjldsp', btn: ['return', 'save', 'agree', 'reject'] },
|
||||||
regulatoryEngineerApprove: { text: '法规工程师审批', value: '7', btn: ['return', 'save', 'agree', 'reject'] },
|
regulatoryEngineerApprove: { text: '法规工程师审批', value: 'fggcssp', btn: ['return', 'save', 'agree', 'reject'] },
|
||||||
designEngineerWriteProject: { text: '设计工程师补充立项项目号', value: '8', btn: ['submit'] }
|
designEngineerWriteProject: { text: '设计工程师补充立项项目号', value: 'sjgcsbcgzlbh', btn: ['submit'] }
|
||||||
})
|
})
|
||||||
|
|
||||||
// 项目合规评估流程状态
|
// 项目合规评估流程状态
|
||||||
|
|||||||
@@ -130,6 +130,10 @@ export default {
|
|||||||
case '4':
|
case '4':
|
||||||
path = '/workCenter/NoMatchTrackingProcess'
|
path = '/workCenter/NoMatchTrackingProcess'
|
||||||
break
|
break
|
||||||
|
// 法规合规评估流程
|
||||||
|
case '5':
|
||||||
|
path = '/workCenter/StandardComplianceProcess'
|
||||||
|
break
|
||||||
// 法规采购流程
|
// 法规采购流程
|
||||||
case '6':
|
case '6':
|
||||||
path = '/workCenter/StandardProcurementProcess'
|
path = '/workCenter/StandardProcurementProcess'
|
||||||
|
|||||||
@@ -85,7 +85,9 @@ import {
|
|||||||
transferInspectExtension,
|
transferInspectExtension,
|
||||||
transferInspectPlan,
|
transferInspectPlan,
|
||||||
transferInspectProcess,
|
transferInspectProcess,
|
||||||
transferInspectRectify, transferPermissionApply, transferPostMeetingManage,
|
transferInspectRectify,
|
||||||
|
transferPermissionApply,
|
||||||
|
transferPostMeetingManage,
|
||||||
transferProcurementProcess,
|
transferProcurementProcess,
|
||||||
turnToStandardECProcess
|
turnToStandardECProcess
|
||||||
} from '../../../../api/workCenter'
|
} from '../../../../api/workCenter'
|
||||||
@@ -108,7 +110,10 @@ import {
|
|||||||
FGEntryChangeProcessNode,
|
FGEntryChangeProcessNode,
|
||||||
ConsultationProcess,
|
ConsultationProcess,
|
||||||
ProjectComplianceEvaluationProcessNode,
|
ProjectComplianceEvaluationProcessNode,
|
||||||
ProcurementProcessNodes, StandardPromotion, NoMatchTrackingNodes
|
ProcurementProcessNodes,
|
||||||
|
StandardPromotion,
|
||||||
|
NoMatchTrackingNodes,
|
||||||
|
StandardComplianceNodes
|
||||||
} from '@/enums/commonEnums'
|
} from '@/enums/commonEnums'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -188,7 +193,9 @@ export default {
|
|||||||
// 未符合项跟踪流程
|
// 未符合项跟踪流程
|
||||||
[ProcessType.NO_MATCH_TRACKING.value]: [NoMatchTrackingNodes.initial.value],
|
[ProcessType.NO_MATCH_TRACKING.value]: [NoMatchTrackingNodes.initial.value],
|
||||||
// 法规合规评估流程
|
// 法规合规评估流程
|
||||||
[ProcessType.REGULATORY_COMPLIANCE_ASSESSMENT.value]: [],
|
[ProcessType.REGULATORY_COMPLIANCE_ASSESSMENT.value]: [
|
||||||
|
StandardComplianceNodes.initial.value, StandardComplianceNodes.designEngineerWriteProject.value
|
||||||
|
],
|
||||||
// 法规采购流程
|
// 法规采购流程
|
||||||
[ProcessType.LEGAL_PROCUREMENT.value]: [ProcurementProcessNodes.initiate.value, ProcurementProcessNodes.regulatoryEngineerConfirmation.value],
|
[ProcessType.LEGAL_PROCUREMENT.value]: [ProcurementProcessNodes.initiate.value, ProcurementProcessNodes.regulatoryEngineerConfirmation.value],
|
||||||
// 企标立项/变更计划
|
// 企标立项/变更计划
|
||||||
@@ -287,6 +294,10 @@ export default {
|
|||||||
case '4':
|
case '4':
|
||||||
path = '/workCenter/NoMatchTrackingProcess'
|
path = '/workCenter/NoMatchTrackingProcess'
|
||||||
break
|
break
|
||||||
|
// 法规合规评估流程
|
||||||
|
case '5':
|
||||||
|
path = '/workCenter/StandardComplianceProcess'
|
||||||
|
break
|
||||||
// 法规采购流程
|
// 法规采购流程
|
||||||
case '6':
|
case '6':
|
||||||
path = '/workCenter/StandardProcurementProcess'
|
path = '/workCenter/StandardProcurementProcess'
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
v-decorator="['processDueDate']"
|
v-decorator="['processDueDate']"
|
||||||
:disabled="disabled"
|
:disabled="!isInitial"
|
||||||
style="width: 100%" />
|
style="width: 100%" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -50,14 +50,15 @@
|
|||||||
@change="event => event.target.value = event.target.value.trim()"
|
@change="event => event.target.value = event.target.value.trim()"
|
||||||
:maxLength="500"
|
:maxLength="500"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:disabled="disabled"
|
:disabled="!isInitial"
|
||||||
v-decorator="['processDescription']" />
|
v-decorator="['processDescription']" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!--标准编号/标准名称-->
|
<!--标准编号/标准名称-->
|
||||||
<div class="standard-info" v-if="!isInitial">
|
<div class="standard-info" v-if="!isInitial">
|
||||||
<label class="standard-info-label">{{ $t('projectLibrary.vehicleItemLibrary.standardNumberStandardName') }}:</label>
|
<label class="standard-info-label">{{ $t('projectLibrary.vehicleItemLibrary.standardNumberStandardName') }}:</label>
|
||||||
<div class="standard-info-text">
|
<div class="standard-info-text" @click="toStandardDetail">{{ selectedStandard.standardNumber }} {{
|
||||||
|
selectedStandard.standardName
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -66,19 +67,25 @@
|
|||||||
<!--发起节点-->
|
<!--发起节点-->
|
||||||
<template v-if="isInitial">
|
<template v-if="isInitial">
|
||||||
<!--业务基本信息(选择标准)-->
|
<!--业务基本信息(选择标准)-->
|
||||||
<initial-basic-service-info @source:change="handleSourceChange" @standard:change="handleStandardChange" />
|
<initial-basic-service-info ref="standardList"
|
||||||
|
:selected-standard="selectedStandard"
|
||||||
|
@source:change="handleSourceChange"
|
||||||
|
@standard:change="handleStandardChange" />
|
||||||
<!--业务分派信息-->
|
<!--业务分派信息-->
|
||||||
<initial-assign-table :selected-source="selectedSource" :selected-standard="selectedStandard" />
|
<initial-assign-table ref="termList"
|
||||||
|
:selected-spilt-info-id="selectedSpiltInfoId"
|
||||||
|
:selected-standard="selectedStandard"
|
||||||
|
:display-data-source="dispathDataSource" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!--部所主管级领导下发-->
|
<!--部所主管级领导下发-->
|
||||||
<depart-leader-issue-table v-if="isDepartLeaderIssue" />
|
<depart-leader-issue-table v-if="isDepartLeaderIssue" ref="termList" :display-data-source="dispathDataSource" />
|
||||||
|
|
||||||
<!--模块责任人分发-->
|
<!--模块责任人分发-->
|
||||||
<module-owner-issue-table v-if="isModuleOwnerIssue" />
|
<module-owner-issue-table v-if="isModuleOwnerIssue" ref="termList" :display-data-source="dispathDataSource" />
|
||||||
|
|
||||||
<!--设计工程师评估-->
|
<!--设计工程师评估-->
|
||||||
<design-engineer-assess v-if="isDesignEngineerAssess" />
|
<design-engineer-assess v-if="isDesignEngineerAssess" ref="termList" :display-data-source="dispathDataSource"/>
|
||||||
|
|
||||||
<!--模块负责人评审-->
|
<!--模块负责人评审-->
|
||||||
<module-owner-approve-table v-if="isModuleOwnerApprove" />
|
<module-owner-approve-table v-if="isModuleOwnerApprove" />
|
||||||
@@ -112,9 +119,12 @@
|
|||||||
|
|
||||||
<!--人员信息-->
|
<!--人员信息-->
|
||||||
<div class="detail-page-scroll-content p-0" v-show="switchValue === 'user'">
|
<div class="detail-page-scroll-content p-0" v-show="switchValue === 'user'">
|
||||||
<process-detail-list>
|
<process-detail-list :process-key="ProcessKey.REGULATORY_COMPLIANCE_ASSESSMENT.value">
|
||||||
<template #personnelInfo>
|
<template #personnelInfo>
|
||||||
<personnel-info ref="personnelInfo" :data="personnelInfoData" />
|
<personnel-info ref="personnelInfo"
|
||||||
|
:data="personnelInfoData"
|
||||||
|
:current-node="currentNode"
|
||||||
|
:special-process-node-prefix="currentNodePrefix" />
|
||||||
</template>
|
</template>
|
||||||
</process-detail-list>
|
</process-detail-list>
|
||||||
</div>
|
</div>
|
||||||
@@ -142,6 +152,9 @@
|
|||||||
{{ $t('reject') }}
|
{{ $t('reject') }}
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!--选人-->
|
||||||
|
<user-select-modal type="radio" ref="userSelectModal" @change="continueTransfer" />
|
||||||
</internal-detail-page>
|
</internal-detail-page>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -150,7 +163,7 @@ import PersonnelInfo from '../../../components/PersonnelInfo'
|
|||||||
import InternalDetailPage from '../../../components/InternalDetailPage'
|
import InternalDetailPage from '../../../components/InternalDetailPage'
|
||||||
import ProcessDetailList from '../../../components/ProcessDetailList'
|
import ProcessDetailList from '../../../components/ProcessDetailList'
|
||||||
import { WorkCenterMixin } from '../../../mixins/WorkCenterMixin'
|
import { WorkCenterMixin } from '../../../mixins/WorkCenterMixin'
|
||||||
import { ProcessKey, StandardComplianceNodes } from '../../../enums/commonEnums'
|
import { ProcessKey, StandardComplianceNodes, StandardSource } from '../../../enums/commonEnums'
|
||||||
import InitialBasicServiceInfo from './components/InitialBasicServiceInfo'
|
import InitialBasicServiceInfo from './components/InitialBasicServiceInfo'
|
||||||
import InitialAssignTable from './components/InitialAssignTable'
|
import InitialAssignTable from './components/InitialAssignTable'
|
||||||
import DepartLeaderIssueTable from './components/DepartLeaderIssueTable'
|
import DepartLeaderIssueTable from './components/DepartLeaderIssueTable'
|
||||||
@@ -160,10 +173,19 @@ import ModuleOwnerApproveTable from './components/ModuleOwnerApproveTable'
|
|||||||
import DepartLeaderApproveTable from './components/DepartLeaderApproveTable'
|
import DepartLeaderApproveTable from './components/DepartLeaderApproveTable'
|
||||||
import RegulatoryEngineerApproval from './components/RegulatoryEngineerApproval'
|
import RegulatoryEngineerApproval from './components/RegulatoryEngineerApproval'
|
||||||
import DesignEngineerWriteProject from './components/DesignEngineerWriteProject'
|
import DesignEngineerWriteProject from './components/DesignEngineerWriteProject'
|
||||||
|
import {
|
||||||
|
saveStandardCompliance,
|
||||||
|
initStandardCompliance,
|
||||||
|
submitStandardCompliance,
|
||||||
|
queryStandardCompliance,
|
||||||
|
processTransfer
|
||||||
|
} from '../../../api/workCenter'
|
||||||
|
import UserSelectModal from '../../../components/selection/UserSelectModal'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'StandardComplianceProcess',
|
name: 'StandardComplianceProcess',
|
||||||
components: {
|
components: {
|
||||||
|
UserSelectModal,
|
||||||
ProcessDetailList,
|
ProcessDetailList,
|
||||||
InternalDetailPage,
|
InternalDetailPage,
|
||||||
PersonnelInfo,
|
PersonnelInfo,
|
||||||
@@ -180,9 +202,9 @@ export default {
|
|||||||
mixins: [WorkCenterMixin],
|
mixins: [WorkCenterMixin],
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
ProcessKey,
|
||||||
loading: false,
|
loading: false,
|
||||||
btnList: [],
|
btnList: [],
|
||||||
disabled: false,
|
|
||||||
// 流程信息表单
|
// 流程信息表单
|
||||||
processInfoForm: this.$form.createForm(this),
|
processInfoForm: this.$form.createForm(this),
|
||||||
processInfo: {},
|
processInfo: {},
|
||||||
@@ -214,64 +236,102 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
selectedStandard: {}, // 发起节点,选中的标准
|
selectedStandard: {}, // 发起节点,选中的标准
|
||||||
selectedSource: null // 发起节点,选中标准的分解单来源
|
selectedSpiltInfoId: null, // 发起节点,选中标准的分解单拆分id
|
||||||
|
businessId: null,
|
||||||
|
dispathDataSource: [], // 业务分派信息的数据
|
||||||
|
currentNodePrefix: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
pageTitle () {
|
pageTitle () {
|
||||||
return `${this.$t('flowCenter')}${this.$route.meta.title}`
|
const subTitle = this.$route.query.taskName || StandardComplianceNodes.initial.text
|
||||||
|
return `${this.$t('flowCenter')}${this.$route.meta.title}(${subTitle})`
|
||||||
},
|
},
|
||||||
// 是否发起节点,发起节点展示业务基本信息、业务分派信息
|
// 是否发起节点,发起节点展示业务基本信息、业务分派信息
|
||||||
isInitial () {
|
isInitial () {
|
||||||
return this.currentNode === StandardComplianceNodes.initial.value
|
return this.currentNode && this.currentNode.indexOf(StandardComplianceNodes.initial.value) === 0
|
||||||
},
|
},
|
||||||
// 是否部所主管级领导下发节点
|
// 是否部所主管级领导下发节点
|
||||||
isDepartLeaderIssue () {
|
isDepartLeaderIssue () {
|
||||||
return this.currentNode === StandardComplianceNodes.departLeaderIssue.value
|
return this.currentNode && this.currentNode.indexOf(StandardComplianceNodes.departLeaderIssue.value) === 0
|
||||||
},
|
},
|
||||||
// 是否模块负责人分发
|
// 是否模块负责人分发
|
||||||
isModuleOwnerIssue () {
|
isModuleOwnerIssue () {
|
||||||
return this.currentNode === StandardComplianceNodes.moduleOwnerIssue.value
|
return this.currentNode && this.currentNode.indexOf(StandardComplianceNodes.moduleOwnerIssue.value) === 0
|
||||||
},
|
},
|
||||||
// 是否设计工程师评估节点
|
// 是否设计工程师评估节点
|
||||||
isDesignEngineerAssess () {
|
isDesignEngineerAssess () {
|
||||||
return this.currentNode === StandardComplianceNodes.designEngineerAssess.value
|
return this.currentNode && this.currentNode.indexOf(StandardComplianceNodes.designEngineerAssess.value) === 0
|
||||||
},
|
},
|
||||||
// 是否模块责任人评审节点
|
// 是否模块责任人评审节点
|
||||||
isModuleOwnerApprove () {
|
isModuleOwnerApprove () {
|
||||||
return this.currentNode === StandardComplianceNodes.moduleOwnerReview.value
|
return this.currentNode && this.currentNode.indexOf(StandardComplianceNodes.moduleOwnerReview.value) === 0
|
||||||
},
|
},
|
||||||
// 是否部所主管级领导审批
|
// 是否部所主管级领导审批
|
||||||
isDepartLeaderApprove () {
|
isDepartLeaderApprove () {
|
||||||
return this.currentNode === StandardComplianceNodes.departLeaderApprove.value
|
return this.currentNode && this.currentNode.indexOf(StandardComplianceNodes.departLeaderApprove.value) === 0
|
||||||
},
|
},
|
||||||
// 是否法规工程师审批
|
// 是否法规工程师审批
|
||||||
isRegulatoryEngineerApproval () {
|
isRegulatoryEngineerApproval () {
|
||||||
return this.currentNode === StandardComplianceNodes.regulatoryEngineerApprove.value
|
return this.currentNode && this.currentNode.indexOf(StandardComplianceNodes.regulatoryEngineerApprove.value) === 0
|
||||||
},
|
},
|
||||||
// 是否设计工程师补充立项项目号
|
// 是否设计工程师补充立项项目号
|
||||||
isDesignEngineerWriteProject () {
|
isDesignEngineerWriteProject () {
|
||||||
return this.currentNode === StandardComplianceNodes.designEngineerWriteProject.value
|
return this.currentNode && this.currentNode.indexOf(StandardComplianceNodes.designEngineerWriteProject.value) === 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
if (this.$route.query.processInstanceId || this.$route.query.draftId) {
|
this.getPersonInfoStructure(ProcessKey.REGULATORY_COMPLIANCE_ASSESSMENT.value, () => {
|
||||||
this.currentNode = this.$route.query.nodeId
|
if (this.$route.query.processInstanceId || this.$route.query.draftId) {
|
||||||
} else {
|
this.currentNode = this.$route.query.nodeId || StandardComplianceNodes.initial.value
|
||||||
this.currentNode = StandardComplianceNodes.initial.value
|
this.initProcessData()
|
||||||
}
|
|
||||||
this.btnList = StandardComplianceNodes.propertyOfValue('btn', this.currentNode)
|
} else {
|
||||||
this.getPersonInfoStructure(ProcessKey.NO_MATCH_TRACKING.value, () => {
|
this.currentNode = StandardComplianceNodes.initial.value
|
||||||
|
}
|
||||||
|
const key = StandardComplianceNodes.keyOfValueByLike(this.currentNode)
|
||||||
|
this.btnList = StandardComplianceNodes[key].btn || []
|
||||||
|
this.currentNodePrefix = StandardComplianceNodes[key].value
|
||||||
this.initPersonInfoData()
|
this.initPersonInfoData()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
initProcessData () {
|
||||||
|
this.loading = true
|
||||||
|
const params = {
|
||||||
|
taskId: this.$route.query.taskId,
|
||||||
|
processInstanceId: this.$route.query.processInstanceId,
|
||||||
|
draftId: this.$route.query.draftId
|
||||||
|
}
|
||||||
|
queryStandardCompliance(params).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
let { result = {} } = res
|
||||||
|
if (result.infoJsonStr) {
|
||||||
|
result = JSON.parse(result.infoJsonStr)
|
||||||
|
}
|
||||||
|
this.businessId = result.businessId
|
||||||
|
this.processInfo = Object.assign({}, result.basicProcessInfoDTO || {})
|
||||||
|
this.approvalInfo = Object.assign({}, result.basicTaskInfoDTO || {}, { taskId: this.$route.query.taskId })
|
||||||
|
this.selectedStandard = Object.assign({}, result.businessInfoDTO.processProjectStandard || {})
|
||||||
|
console.log(this.selectedStandard)
|
||||||
|
this.dispathDataSource = result.businessInfoDTO.processProjectStandardTermList || []
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.processInfoForm.setFieldsValue(this.processInfo)
|
||||||
|
this.approvalInfoForm.setFieldsValue(this.approvalInfo)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 分解单来源变化
|
* 分解单来源变化
|
||||||
* @param source
|
* @param source
|
||||||
*/
|
*/
|
||||||
handleSourceChange (source) {
|
handleSourceChange (spiltInfoId) {
|
||||||
this.selectedSource = source
|
this.selectedSpiltInfoId = spiltInfoId
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 选择的标准变化
|
* 选择的标准变化
|
||||||
@@ -279,21 +339,208 @@ export default {
|
|||||||
*/
|
*/
|
||||||
handleStandardChange (standard) {
|
handleStandardChange (standard) {
|
||||||
this.selectedStandard = Object.assign({}, standard)
|
this.selectedStandard = Object.assign({}, standard)
|
||||||
|
this.generateProcessName()
|
||||||
},
|
},
|
||||||
|
generateProcessName () {
|
||||||
|
// 处理自动生成流程名称
|
||||||
|
let processName
|
||||||
|
if (this.selectedStandard.id) {
|
||||||
|
processName = `${this.selectedStandard.standardNumber}-${this.selectedStandard.standardName}-法规合规评估`
|
||||||
|
}
|
||||||
|
this.processInfoForm.setFieldsValue({ processName })
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 转办
|
||||||
|
*/
|
||||||
handleTurnTo () {
|
handleTurnTo () {
|
||||||
|
this.$refs.userSelectModal.open()
|
||||||
},
|
},
|
||||||
|
continueTransfer (userId) {
|
||||||
|
const params = {
|
||||||
|
taskId: this.$route.query.taskId,
|
||||||
|
userId
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
processTransfer(params).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(res.message)
|
||||||
|
this.goBack()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 处理保存的数据,保存不需要进行表单校验
|
||||||
|
*/
|
||||||
|
dealSaveFormData () {
|
||||||
|
// 流程信息
|
||||||
|
const basicProcessInfoDTO = Object.assign(this.processInfo, this.processInfoForm.getFieldsValue())
|
||||||
|
// 流程审批信息
|
||||||
|
const basicTaskInfoDTO = Object.assign(this.approvalInfo, this.approvalInfoForm.getFieldsValue())
|
||||||
|
// 业务基本信息(发起节点的标准列表)
|
||||||
|
let processProjectStandard = {}
|
||||||
|
if (this.$refs.standardList) {
|
||||||
|
processProjectStandard = this.$refs.standardList.submit(false)
|
||||||
|
} else {
|
||||||
|
processProjectStandard = { ...this.selectedStandard }
|
||||||
|
}
|
||||||
|
// 条款列表
|
||||||
|
let processProjectStandardTermList = []
|
||||||
|
if (this.$refs.termList) {
|
||||||
|
processProjectStandardTermList = this.$refs.termList.submit(false)
|
||||||
|
}
|
||||||
|
// 校验是否至少填了一项
|
||||||
|
const checkValueArr = Object.values({ ...basicProcessInfoDTO, ...basicTaskInfoDTO, ...processProjectStandard })
|
||||||
|
if (checkValueArr.every(tt => !tt) && (!processProjectStandardTermList || processProjectStandardTermList.length === 0)) {
|
||||||
|
this.$message.warning(this.$t('pleaseFillInAtLeastOneItem'))
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
basicProcessInfoDTO,
|
||||||
|
basicTaskInfoDTO,
|
||||||
|
businessId: this.businessId,
|
||||||
|
draftId: this.$route.query.draftId,
|
||||||
|
businessInfoDTO: {
|
||||||
|
processProjectStandard,
|
||||||
|
processProjectStandardTermList
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 处理提交表单数据
|
||||||
|
*/
|
||||||
|
dealSubmitFormData () {
|
||||||
|
let basicProcessInfoDTO = {}, basicTaskInfoDTO = {}, flag = true
|
||||||
|
this.processInfoForm.validateFields((errors, values) => {
|
||||||
|
if (!errors) {
|
||||||
|
basicProcessInfoDTO = Object.assign(this.processInfo, values)
|
||||||
|
} else {
|
||||||
|
flag = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.approvalInfoForm.validateFields((errors, values) => {
|
||||||
|
if (!errors) {
|
||||||
|
basicTaskInfoDTO = Object.assign(this.approvalInfo, values)
|
||||||
|
} else {
|
||||||
|
flag = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// 业务基本信息(发起节点的标准列表)
|
||||||
|
let processProjectStandard
|
||||||
|
if (this.$refs.standardList) {
|
||||||
|
processProjectStandard = this.$refs.standardList.submit(true, true)
|
||||||
|
} else {
|
||||||
|
processProjectStandard = { ...this.selectedStandard }
|
||||||
|
}
|
||||||
|
flag = !!processProjectStandard
|
||||||
|
// 条款列表
|
||||||
|
let processProjectStandardTermList
|
||||||
|
if (this.$refs.termList) {
|
||||||
|
const needRemind = this.$refs.standardList ? processProjectStandard && processProjectStandard.id : true
|
||||||
|
processProjectStandardTermList = this.$refs.termList.submit(true, needRemind)
|
||||||
|
}
|
||||||
|
flag = !!processProjectStandardTermList
|
||||||
|
if (!flag) {
|
||||||
|
this.switchValue = 'base'
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
basicProcessInfoDTO,
|
||||||
|
basicTaskInfoDTO,
|
||||||
|
businessId: this.businessId,
|
||||||
|
businessInfoDTO: {
|
||||||
|
processProjectStandard,
|
||||||
|
processProjectStandardTermList
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 保存
|
||||||
|
*/
|
||||||
handleSave () {
|
handleSave () {
|
||||||
|
const formData = this.dealSaveFormData()
|
||||||
|
if (!formData) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
formData.infoJsonStr = JSON.stringify(formData)
|
||||||
|
this.loading = true
|
||||||
|
saveStandardCompliance(formData).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(res.message)
|
||||||
|
this.goBack()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* 提交
|
||||||
|
*/
|
||||||
handleSubmit () {
|
handleSubmit () {
|
||||||
|
const formData = this.dealSubmitFormData()
|
||||||
|
if (!formData) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let submitFunc
|
||||||
|
if (this.currentNode.indexOf(StandardComplianceNodes.initial.value) === 0) {
|
||||||
|
submitFunc = initStandardCompliance
|
||||||
|
const saveFormData = this.dealSaveFormData()
|
||||||
|
if (saveFormData) {
|
||||||
|
formData.infoJsonStr = JSON.stringify(saveFormData)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
submitFunc = submitStandardCompliance
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
submitFunc(formData).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(res.message)
|
||||||
|
this.goBack()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
handleAgree () {
|
handleAgree () {
|
||||||
|
|
||||||
},
|
},
|
||||||
handleReject () {
|
handleReject () {
|
||||||
|
|
||||||
|
},
|
||||||
|
toStandardDetail () {
|
||||||
|
const { source, standardId } = this.selectedStandard
|
||||||
|
let path
|
||||||
|
// 根据来源跳转不同的详情页
|
||||||
|
switch (source) {
|
||||||
|
// 国内
|
||||||
|
case StandardSource.DOMESTIC.value:
|
||||||
|
path = '/standardRegulationLibrary/DomesticStandardDetail'
|
||||||
|
break
|
||||||
|
// 海外
|
||||||
|
case StandardSource.OVERSEAS.value:
|
||||||
|
path = '/standardRegulationLibrary/OverseasStandardDetail'
|
||||||
|
break
|
||||||
|
// 企标
|
||||||
|
case StandardSource.ENTERPRISE.value:
|
||||||
|
path = '/enterpriseStandardLibrary/enterpriseStandardDetail'
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (!path) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const query = { standardId }
|
||||||
|
this.$openPageNewSheet({
|
||||||
|
path, query
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+108
-27
@@ -13,25 +13,37 @@
|
|||||||
:columns="columns"
|
:columns="columns"
|
||||||
:data-source="dataSource"
|
:data-source="dataSource"
|
||||||
:scroll="{x: '100%'}"
|
:scroll="{x: '100%'}"
|
||||||
:pagination="false"
|
:pagination="ipagination"
|
||||||
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
|
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||||
|
@change="handleTableChange">
|
||||||
|
|
||||||
<!--选择模块负责人-->
|
<!--选择模块负责人-->
|
||||||
<template v-slot:moduleOwner="{text,record,index}">
|
<template v-slot:moduleOwner="{text,record,index}">
|
||||||
<user-selection :show-btn="false"
|
<user-selection :show-btn="false"
|
||||||
:value="record.contact"
|
:value="record.moduleOwner"
|
||||||
:name-str="record.contact_dictText"
|
:name-str="record.moduleOwner_dictText"
|
||||||
v-if="!record.uninvolved"
|
v-if="!record.notInvolved"
|
||||||
:placeholder="$t('pleaseSelect') + $t('workCenter.standardCompliance.moduleOwner')" />
|
:placeholder="$t('pleaseSelect') + $t('workCenter.standardCompliance.moduleOwner')"
|
||||||
|
@listChange="list => handleUserChange(list, index)" />
|
||||||
<div v-else>{{ global.emptyLine }}</div>
|
<div v-else>{{ global.emptyLine }}</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<!--条文内容-->
|
||||||
|
<template v-slot:clauseContent="{text}">
|
||||||
|
<div class="table-text" style="cursor: pointer" @click="showContent(text)" v-if="text">
|
||||||
|
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||||
|
</div>
|
||||||
|
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
<!--操作-->
|
<!--操作-->
|
||||||
<template v-slot:action="{text,record,index}">
|
<template v-slot:action="{text,record,index}">
|
||||||
<div class="action-span-cell">
|
<div class="action-span-cell">
|
||||||
<a @click="handleUninvolved(record, index)">{{
|
<a @click="handleUninvolved(record, index)">
|
||||||
!record.uninvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')
|
{{
|
||||||
}}</a>
|
!record.notInvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</j-table>
|
</j-table>
|
||||||
@@ -41,6 +53,8 @@
|
|||||||
<user-select-modal ref="userSelectModal" @listChange="handleBatchSelected" />
|
<user-select-modal ref="userSelectModal" @listChange="handleBatchSelected" />
|
||||||
<!--不涉及原因-->
|
<!--不涉及原因-->
|
||||||
<uninvolved-modal ref="uninvolvedModal" @ok="handleUninvolvedOk" />
|
<uninvolved-modal ref="uninvolvedModal" @ok="handleUninvolvedOk" />
|
||||||
|
<!--条文内容-->
|
||||||
|
<split-clause-detail ref="clauseDetail" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -49,48 +63,83 @@ import UserSelection from '../../../../components/selection/UserSelection'
|
|||||||
import JTable from '../../../../components/jero/JTable'
|
import JTable from '../../../../components/jero/JTable'
|
||||||
import UserSelectModal from '../../../../components/selection/UserSelectModal'
|
import UserSelectModal from '../../../../components/selection/UserSelectModal'
|
||||||
import UninvolvedModal from '../modules/UninvolvedModal'
|
import UninvolvedModal from '../modules/UninvolvedModal'
|
||||||
|
import SplitClauseDetail from '../../../documentTool/documentSplit/modules/SplitClauseDetail'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DepartLeaderIssueTable',
|
name: 'DepartLeaderIssueTable',
|
||||||
components: { JTable, UserSelection, UserSelectModal, UninvolvedModal },
|
components: { SplitClauseDetail, JTable, UserSelection, UserSelectModal, UninvolvedModal },
|
||||||
|
props: {
|
||||||
|
// 回显的数据
|
||||||
|
displayDataSource: {
|
||||||
|
type: Array,
|
||||||
|
required: false,
|
||||||
|
default: () => {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
columns: [
|
columns: [
|
||||||
// 标准编号/条款号
|
// 标准编号/条款号
|
||||||
{
|
{
|
||||||
dataIndex: 'workNumber',
|
dataIndex: 'termNumber',
|
||||||
title: this.$t('projectLibrary.vehicleItemLibrary.standardNumberClauseNumber'),
|
title: this.$t('projectLibrary.vehicleItemLibrary.standardNumberClauseNumber'),
|
||||||
width: 150
|
width: 150
|
||||||
},
|
},
|
||||||
// 标准名称/条款名称
|
// 标准名称/条款名称
|
||||||
{
|
{
|
||||||
dataIndex: 'projectName',
|
dataIndex: 'termName',
|
||||||
title: this.$t('workCenter.projectComplianceEvaluationProcess.standardNameClauseName'),
|
title: this.$t('workCenter.projectComplianceEvaluationProcess.standardNameClauseName'),
|
||||||
width: 160
|
|
||||||
},
|
|
||||||
// 标准状态
|
|
||||||
{
|
|
||||||
title: this.$t('standardSelect.textState'),
|
|
||||||
dataIndex: 'standardState_dictText',
|
|
||||||
width: 150
|
width: 150
|
||||||
},
|
},
|
||||||
|
// 条款内容
|
||||||
|
{
|
||||||
|
dataIndex: 'termText',
|
||||||
|
title: this.$t('workCenter.projectComplianceEvaluationProcess.terms'),
|
||||||
|
width: 250,
|
||||||
|
scopedSlots: { customRender: 'clauseContent' }
|
||||||
|
},
|
||||||
// 模块责任人
|
// 模块责任人
|
||||||
{
|
{
|
||||||
title: this.$t('workCenter.standardCompliance.moduleOwner'),
|
title: this.$t('workCenter.standardCompliance.moduleOwner'),
|
||||||
dataIndex: 'contact',
|
dataIndex: 'contact',
|
||||||
width: 150,
|
width: 250,
|
||||||
scopedSlots: { customRender: 'moduleOwner' }
|
scopedSlots: { customRender: 'moduleOwner' }
|
||||||
},
|
},
|
||||||
// 操作
|
// 操作
|
||||||
{
|
{
|
||||||
title: this.$t('operation'),
|
title: this.$t('operation'),
|
||||||
fixed: 'right',
|
|
||||||
width: 150,
|
width: 150,
|
||||||
scopedSlots: { customRender: 'action' }
|
scopedSlots: { customRender: 'action' }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
dataSource: [{ id: 1 }],
|
dataSource: [],
|
||||||
selectedRowKeys: []
|
selectedRowKeys: [],
|
||||||
|
/* 分页参数 */
|
||||||
|
ipagination: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' ' + this.$t('total') + total + this.$t('strip')
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
displayDataSource: {
|
||||||
|
handler (value) {
|
||||||
|
this.dataSource = []
|
||||||
|
if (value) {
|
||||||
|
this.dataSource = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -109,9 +158,9 @@ export default {
|
|||||||
const data = JSON.parse(JSON.stringify(this.dataSource))
|
const data = JSON.parse(JSON.stringify(this.dataSource))
|
||||||
this.dataSource = data.map(item => {
|
this.dataSource = data.map(item => {
|
||||||
// 选中且没有填写不涉及理由
|
// 选中且没有填写不涉及理由
|
||||||
if (this.selectedRowKeys.includes(item.id) && !item.uninvolved) {
|
if (this.selectedRowKeys.includes(item.id) && !item.notInvolved) {
|
||||||
item.contact = list.map(tt => tt.id).join(',')
|
item.moduleOwner = list.map(tt => tt.id).join(',')
|
||||||
item.contact_dictText = list.map(tt => tt.realname + '(' + tt.username + ')').join(',')
|
item.moduleOwner_dictText = list.map(tt => tt.realname + '(' + tt.username + ')').join(',')
|
||||||
}
|
}
|
||||||
return item
|
return item
|
||||||
})
|
})
|
||||||
@@ -125,11 +174,43 @@ export default {
|
|||||||
this.$refs.uninvolvedModal.open(record, index)
|
this.$refs.uninvolvedModal.open(record, index)
|
||||||
},
|
},
|
||||||
handleUninvolvedOk (record, index) {
|
handleUninvolvedOk (record, index) {
|
||||||
|
// 如果写了不涉及原因,就清除模块负责人信息
|
||||||
|
if (record.notInvolved) {
|
||||||
|
record.moduleOwner = null
|
||||||
|
record.moduleOwner_dictText = null
|
||||||
|
}
|
||||||
this.$set(this.dataSource, index, record)
|
this.$set(this.dataSource, index, record)
|
||||||
},
|
},
|
||||||
onSelectChange (selectedRowKeys) {
|
onSelectChange (selectedRowKeys) {
|
||||||
this.selectedRowKeys = selectedRowKeys
|
this.selectedRowKeys = selectedRowKeys
|
||||||
}
|
},
|
||||||
|
showContent (text) {
|
||||||
|
this.$refs.clauseDetail.open(text)
|
||||||
|
},
|
||||||
|
handleUserChange (list, index) {
|
||||||
|
this.dataSource[index].moduleOwner = list.map(item => item.id).join(',')
|
||||||
|
this.dataSource[index].moduleOwner_dictText = list.map(item => item.realname + '(' + item.username + ')').join(',')
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 提交数据
|
||||||
|
* @param needValidator
|
||||||
|
* @param needRemind
|
||||||
|
*/
|
||||||
|
submit (needValidator, needRemind) {
|
||||||
|
if (!needValidator) {
|
||||||
|
return this.dataSource
|
||||||
|
}
|
||||||
|
if (this.dataSource.length === 0 || this.dataSource.some(tt => !tt.moduleOwner && !tt.notInvolved)) {
|
||||||
|
if (needRemind) {
|
||||||
|
this.$message.warning(this.$t('workCenter.projectComplianceEvaluationProcess.pleaseSelectModuleOwner'))
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return this.dataSource
|
||||||
|
},
|
||||||
|
handleTableChange (pagination) {
|
||||||
|
this.ipagination = pagination
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -144,4 +225,4 @@ export default {
|
|||||||
/deep/ .user-input {
|
/deep/ .user-input {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
+63
-31
@@ -6,9 +6,7 @@
|
|||||||
<!--上一节点处理人-->
|
<!--上一节点处理人-->
|
||||||
<div class="info-form-item">
|
<div class="info-form-item">
|
||||||
<label class="info-form-item-label">{{ $t('workCenter.projectComplianceEvaluationProcess.preNodePeople') }}:</label>
|
<label class="info-form-item-label">{{ $t('workCenter.projectComplianceEvaluationProcess.preNodePeople') }}:</label>
|
||||||
<div class="info-form-item-text">
|
<div class="info-form-item-text"></div>
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
@@ -29,15 +27,23 @@
|
|||||||
<template v-slot:evaluationResult="text,record,index">
|
<template v-slot:evaluationResult="text,record,index">
|
||||||
<j-dict-select-tag dict-code="assess_results"
|
<j-dict-select-tag dict-code="assess_results"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:value="record.evaluationResult"
|
:value="record.assessResults"
|
||||||
@change="value => handleEvaluationResultChange(value, record, index)" />
|
@change="value => handleEvaluationResultChange(value, record, index)" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<!--条文内容-->
|
||||||
|
<template v-slot:clauseContent="{text}">
|
||||||
|
<div class="table-text" style="cursor: pointer" @click="showContent(text)" v-if="text">
|
||||||
|
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||||
|
</div>
|
||||||
|
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
<!--展开的部分-->
|
<!--展开的部分-->
|
||||||
<template v-slot:expandedRowRender="record,index">
|
<template v-slot:expandedRowRender="record,index">
|
||||||
<a-form-model :model="record" :rules="record.evaluationResult === inconformity ? rules : null" :ref="`ruleForm${index}`">
|
<a-form-model :model="record" :rules="record.assessResults === inconformity ? rules : null" :ref="`ruleForm${index}`">
|
||||||
<!--不符合-->
|
<!--不符合-->
|
||||||
<template v-if="record.evaluationResult === inconformity">
|
<template v-if="record.assessResults === inconformity">
|
||||||
<!--是否与车型强关联-->
|
<!--是否与车型强关联-->
|
||||||
<a-form-model-item :label="$t('workCenter.standardCompliance.stronglyRelatedVehicleType')"
|
<a-form-model-item :label="$t('workCenter.standardCompliance.stronglyRelatedVehicleType')"
|
||||||
:labelCol="{span: 4}"
|
:labelCol="{span: 4}"
|
||||||
@@ -48,13 +54,13 @@
|
|||||||
type="radio" />
|
type="radio" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<!--不符合车型系列-->
|
<!--不符合车型系列-->
|
||||||
<a-form-model-item :label="$t('workCenter.standardCompliance.doesNotFitModel')"
|
<a-form-model-item :label="$t('workCenter.standardCompliance.modelSeries')"
|
||||||
:labelCol="{span: 4}"
|
:labelCol="{span: 4}"
|
||||||
:wrapperCol="{span: 18}"
|
:wrapperCol="{span: 18}"
|
||||||
prop="doesNotFitModel"
|
prop="modelSeries"
|
||||||
v-if="record.stronglyRelatedVehicleType === yesValue">
|
v-if="record.modelSeries === yesValue">
|
||||||
<a-select :placeholder="$t('pleaseSelect') + $t('project')"
|
<a-select :placeholder="$t('pleaseSelect') + $t('project')"
|
||||||
v-model="record.doesNotFitModel"
|
v-model="record.modelSeries"
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
show-search
|
show-search
|
||||||
:filter-option="filterOption">
|
:filter-option="filterOption">
|
||||||
@@ -62,7 +68,7 @@
|
|||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="record.evaluationResult === inconformity || record.evaluationResult === accordWith">
|
<template v-if="record.assessResults === inconformity || record.assessResults === accordWith">
|
||||||
<!--依据描述-->
|
<!--依据描述-->
|
||||||
<a-form-model-item :label="$t('projectLibrary.specialProjectLibrary.basisDescription')"
|
<a-form-model-item :label="$t('projectLibrary.specialProjectLibrary.basisDescription')"
|
||||||
:labelCol="{span: 4}"
|
:labelCol="{span: 4}"
|
||||||
@@ -85,61 +91,72 @@
|
|||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a-button @click="handleCheck">校验</a-button>
|
<!--条文内容-->
|
||||||
|
<split-clause-detail ref="clauseDetail" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { EvaluationResultType, YesOrNoEnum } from '../../../../enums/commonEnums'
|
import { EvaluationResultType, YesOrNoEnum } from '../../../../enums/commonEnums'
|
||||||
import { getCarTypeProjectList } from '../../../../api/projectLibraryApi'
|
import { getCarTypeProjectList } from '../../../../api/projectLibraryApi'
|
||||||
|
import SplitClauseDetail from '../../../documentTool/documentSplit/modules/SplitClauseDetail'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DesignEngineerAssess',
|
name: 'DesignEngineerAssess',
|
||||||
|
components: { SplitClauseDetail },
|
||||||
|
props: {
|
||||||
|
// 回显的数据
|
||||||
|
displayDataSource: {
|
||||||
|
type: Array,
|
||||||
|
required: false,
|
||||||
|
default: () => {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
columns: [
|
columns: [
|
||||||
// 标准编号/条款号
|
// 标准编号/条款号
|
||||||
{
|
{
|
||||||
dataIndex: 'workNumber',
|
dataIndex: 'termNumber',
|
||||||
title: this.$t('projectLibrary.vehicleItemLibrary.standardNumberClauseNumber'),
|
title: this.$t('projectLibrary.vehicleItemLibrary.standardNumberClauseNumber'),
|
||||||
width: 150,
|
width: 150,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
scopedSlots: { customRender: 'text' }
|
|
||||||
},
|
},
|
||||||
// 标准名称/条款名称
|
// 标准名称/条款名称
|
||||||
{
|
{
|
||||||
dataIndex: 'projectName',
|
dataIndex: 'termName',
|
||||||
title: this.$t('workCenter.projectComplianceEvaluationProcess.standardNameClauseName'),
|
title: this.$t('workCenter.projectComplianceEvaluationProcess.standardNameClauseName'),
|
||||||
width: 160,
|
|
||||||
align: 'center',
|
|
||||||
scopedSlots: { customRender: 'text' }
|
|
||||||
},
|
|
||||||
// 标准状态
|
|
||||||
{
|
|
||||||
title: this.$t('standardSelect.textState'),
|
|
||||||
dataIndex: 'standardState_dictText',
|
|
||||||
width: 150,
|
width: 150,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
scopedSlots: { customRender: 'text' }
|
},
|
||||||
|
// 条款内容
|
||||||
|
{
|
||||||
|
dataIndex: 'termText',
|
||||||
|
title: this.$t('workCenter.projectComplianceEvaluationProcess.terms'),
|
||||||
|
width: 250,
|
||||||
|
align: 'center',
|
||||||
|
scopedSlots: { customRender: 'clauseContent' }
|
||||||
},
|
},
|
||||||
// 实施日期
|
// 实施日期
|
||||||
{
|
{
|
||||||
title: this.$t('dashboard.advancedSearch.materialDate'),
|
title: this.$t('dashboard.advancedSearch.materialDate'),
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 180,
|
width: 180,
|
||||||
dataIndex: 'implementation_date',
|
dataIndex: 'implementationDate',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: { customRender: 'text' }
|
||||||
},
|
},
|
||||||
// 评估结果
|
// 评估结果
|
||||||
{
|
{
|
||||||
dataIndex: 'evaluationResults_dictText',
|
dataIndex: 'assessResults_dictText',
|
||||||
title: this.$t('projectLibrary.vehicleItemLibrary.evaluationResult'),
|
title: this.$t('projectLibrary.vehicleItemLibrary.evaluationResult'),
|
||||||
width: 120,
|
width: 120,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
scopedSlots: { customRender: 'evaluationResult' }
|
scopedSlots: { customRender: 'evaluationResult' }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
dataSource: [{ id: '1' }],
|
dataSource: [],
|
||||||
form: {},
|
form: {},
|
||||||
rules: {
|
rules: {
|
||||||
// 依据描述
|
// 依据描述
|
||||||
@@ -155,15 +172,27 @@ export default {
|
|||||||
trigger: 'change'
|
trigger: 'change'
|
||||||
},
|
},
|
||||||
// 不符合车型系列
|
// 不符合车型系列
|
||||||
doesNotFitModel: {
|
modelSeries: {
|
||||||
required: true,
|
required: true,
|
||||||
message: this.$t('pleaseSelect') + this.$t('workCenter.standardCompliance.doesNotFitModel'),
|
message: this.$t('pleaseSelect') + this.$t('workCenter.standardCompliance.modelSeries'),
|
||||||
trigger: 'change'
|
trigger: 'change'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
carTypeList: [] // 车型下拉数据
|
carTypeList: [] // 车型下拉数据
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
displayDataSource: {
|
||||||
|
handler (value) {
|
||||||
|
this.dataSource = []
|
||||||
|
if (value) {
|
||||||
|
this.dataSource = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true
|
||||||
|
}
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
accordWith () {
|
accordWith () {
|
||||||
return EvaluationResultType.accordWith.value
|
return EvaluationResultType.accordWith.value
|
||||||
@@ -192,7 +221,7 @@ export default {
|
|||||||
},
|
},
|
||||||
handleEvaluationResultChange (value, record, index) {
|
handleEvaluationResultChange (value, record, index) {
|
||||||
const data = JSON.parse(JSON.stringify(this.dataSource))
|
const data = JSON.parse(JSON.stringify(this.dataSource))
|
||||||
data[index].evaluationResult = value
|
data[index].assessResults = value
|
||||||
this.dataSource.splice(0, this.dataSource.length, ...data)
|
this.dataSource.splice(0, this.dataSource.length, ...data)
|
||||||
},
|
},
|
||||||
handleCheck () {
|
handleCheck () {
|
||||||
@@ -203,7 +232,10 @@ export default {
|
|||||||
filterOption (input, option) {
|
filterOption (input, option) {
|
||||||
const text = option.componentOptions.children[0].text || option.componentOptions.children[0].data.attrs.title
|
const text = option.componentOptions.children[0].text || option.componentOptions.children[0].data.attrs.title
|
||||||
return text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
return text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
}
|
},
|
||||||
|
showContent (text) {
|
||||||
|
this.$refs.clauseDetail.open(text)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -13,32 +13,46 @@
|
|||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<j-table rowKey="id"
|
<j-table rowKey="rowKey"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:data-source="dataSource"
|
:data-source="dataSource"
|
||||||
:scroll="{x: '100%'}"
|
:scroll="{x: '100%'}"
|
||||||
:pagination="false"
|
:pagination="ipagination"
|
||||||
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
|
:loading="loading"
|
||||||
|
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||||
|
@change="handleTableChange">
|
||||||
|
|
||||||
<!--选择责任单位联络人-->
|
<!--选择责任单位联络人-->
|
||||||
<template v-slot:contact="{text,record,index}">
|
<template v-slot:contact="{text,record,index}">
|
||||||
<user-selection :show-btn="false"
|
<user-selection
|
||||||
:value="record.contact"
|
:show-btn="false"
|
||||||
:name-str="record.contact_dictText"
|
:value="record.responsibleUnitLeader"
|
||||||
type="checkbox"
|
:name-str="record.responsibleUnitLeader_dictText"
|
||||||
:placeholder="$t('pleaseSelect') + $t('workCenter.standardCompliance.responsibleUnitContactPerson')" />
|
type="checkbox"
|
||||||
|
:placeholder="$t('pleaseSelect') + $t('workCenter.standardCompliance.responsibleUnitContactPerson')"
|
||||||
|
@listChange="list => handleContactChange(list, index)" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!--条文内容-->
|
||||||
|
<template v-slot:clauseContent="{text}">
|
||||||
|
<div class="table-text" style="cursor: pointer" @click="showContent(text)" v-if="text">
|
||||||
|
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||||
|
</div>
|
||||||
|
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!--操作-->
|
<!--操作-->
|
||||||
<template v-slot:action="{text,record,index}">
|
<template v-slot:action="{text,record,index}">
|
||||||
<div class="action-span-cell">
|
<div class="action-span-cell">
|
||||||
<a :disabled="index === 0 && dataSource.length === 1" @click="handleDelete(record.id)">{{ $t('delete') }}</a>
|
<a :disabled="index === 0 && dataSource.length === 1" @click="handleDelete(record.rowKey)">{{ $t('delete') }}</a>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</j-table>
|
</j-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<user-select-modal ref="userSelectModal" type="checkbox" @listChange="handleBatchSelected" />
|
<user-select-modal ref="userSelectModal" type="checkbox" @listChange="handleBatchSelected" />
|
||||||
|
<!--条文内容-->
|
||||||
|
<split-clause-detail ref="clauseDetail" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -46,10 +60,13 @@
|
|||||||
import JTable from '../../../../components/jero/JTable'
|
import JTable from '../../../../components/jero/JTable'
|
||||||
import UserSelection from '../../../../components/selection/UserSelection'
|
import UserSelection from '../../../../components/selection/UserSelection'
|
||||||
import UserSelectModal from '../../../../components/selection/UserSelectModal'
|
import UserSelectModal from '../../../../components/selection/UserSelectModal'
|
||||||
|
import { getClauseByStandard } from '../../../../api/workCenter'
|
||||||
|
import SplitClauseDetail from '../../../documentTool/documentSplit/modules/SplitClauseDetail'
|
||||||
|
import { randomUUID } from '../../../../utils/util'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'InitialAssignTable',
|
name: 'InitialAssignTable',
|
||||||
components: { UserSelection, JTable, UserSelectModal },
|
components: { SplitClauseDetail, UserSelection, JTable, UserSelectModal },
|
||||||
props: {
|
props: {
|
||||||
// 选中的标准
|
// 选中的标准
|
||||||
selectedStandard: {
|
selectedStandard: {
|
||||||
@@ -60,29 +77,72 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 分解单来源
|
// 分解单来源
|
||||||
selectedSource: {
|
selectedSpiltInfoId: {
|
||||||
type: String,
|
type: String,
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
// 回显的数据
|
||||||
|
displayDataSource: {
|
||||||
|
type: Array,
|
||||||
|
required: false,
|
||||||
|
default: () => {
|
||||||
|
return []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
// 选中标准变化,清除表格数据
|
// 选中标准变化
|
||||||
selectedStandard: {
|
selectedStandard: {
|
||||||
handler () {
|
handler () {
|
||||||
this.dataSource = []
|
this.dataSource = []
|
||||||
|
// 如果没有选中分解单id,那么就直接将标准带入
|
||||||
|
if (this.selectedStandard.id && !this.selectedSpiltInfoId) {
|
||||||
|
this.dataSource = [{
|
||||||
|
...this.selectedStandard,
|
||||||
|
rowKey: randomUUID(),
|
||||||
|
standardId: this.selectedStandard.id,
|
||||||
|
termNumber: this.selectedStandard.standardNumber,
|
||||||
|
termName: this.selectedStandard.standardName
|
||||||
|
}]
|
||||||
|
} else if (!this.selectedStandard.id) {
|
||||||
|
this.dataSource = []
|
||||||
|
}
|
||||||
},
|
},
|
||||||
deep: true
|
deep: true
|
||||||
},
|
},
|
||||||
// 选中的分解单来源变化
|
// 选中的分解单来源变化
|
||||||
selectedSource (value) {
|
selectedSpiltInfoId (value) {
|
||||||
if (value && this.selectedStandard.id) {
|
console.log('分解单change')
|
||||||
// todo 获取条款号的数据
|
this.dataSource = []
|
||||||
|
if (value && value !== '0' && this.selectedStandard.id) {
|
||||||
|
this.initClauseList()
|
||||||
|
} else if (this.selectedStandard.id) {
|
||||||
|
// 不带入直接处理数据就好
|
||||||
|
this.dataSource = [{
|
||||||
|
...this.selectedStandard,
|
||||||
|
rowKey: randomUUID(),
|
||||||
|
standardId: this.selectedStandard.id,
|
||||||
|
termNumber: this.selectedStandard.standardNumber,
|
||||||
|
termName: this.selectedStandard.standardName
|
||||||
|
}]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
displayDataSource: {
|
||||||
|
handler (value) {
|
||||||
|
if (value && value.length > 0) {
|
||||||
|
this.dataSource = value
|
||||||
|
} else {
|
||||||
|
this.dataSource = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
loading: false,
|
||||||
columns: [
|
columns: [
|
||||||
// 序号
|
// 序号
|
||||||
{
|
{
|
||||||
@@ -96,32 +156,27 @@ export default {
|
|||||||
},
|
},
|
||||||
// 标准编号/条款号
|
// 标准编号/条款号
|
||||||
{
|
{
|
||||||
dataIndex: 'workNumber',
|
dataIndex: 'termNumber',
|
||||||
title: this.$t('projectLibrary.vehicleItemLibrary.standardNumberClauseNumber'),
|
title: this.$t('projectLibrary.vehicleItemLibrary.standardNumberClauseNumber'),
|
||||||
width: 150
|
width: 150
|
||||||
},
|
},
|
||||||
// 标准名称/条款名称
|
// 标准名称/条款名称
|
||||||
{
|
{
|
||||||
dataIndex: 'projectName',
|
dataIndex: 'termName',
|
||||||
title: this.$t('workCenter.projectComplianceEvaluationProcess.standardNameClauseName'),
|
title: this.$t('workCenter.projectComplianceEvaluationProcess.standardNameClauseName'),
|
||||||
width: 160
|
width: 160
|
||||||
},
|
},
|
||||||
// 条款内容
|
// 条款内容
|
||||||
{
|
{
|
||||||
dataIndex: 'projectSource_dictText',
|
dataIndex: 'termText',
|
||||||
title: this.$t('workCenter.projectComplianceEvaluationProcess.terms'),
|
title: this.$t('workCenter.projectComplianceEvaluationProcess.terms'),
|
||||||
width: 150
|
width: 150,
|
||||||
},
|
scopedSlots: { customRender: 'clauseContent' }
|
||||||
// 标准状态
|
|
||||||
{
|
|
||||||
title: this.$t('standardSelect.textState'),
|
|
||||||
dataIndex: 'standardState_dictText',
|
|
||||||
width: 150
|
|
||||||
},
|
},
|
||||||
// 责任单位联络人
|
// 责任单位联络人
|
||||||
{
|
{
|
||||||
title: this.$t('workCenter.standardCompliance.responsibleUnitContactPerson'),
|
title: this.$t('workCenter.standardCompliance.responsibleUnitContactPerson'),
|
||||||
dataIndex: 'contact',
|
dataIndex: 'responsibleUnitLeader_dictText',
|
||||||
width: 150,
|
width: 150,
|
||||||
scopedSlots: { customRender: 'contact' }
|
scopedSlots: { customRender: 'contact' }
|
||||||
},
|
},
|
||||||
@@ -134,7 +189,19 @@ export default {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
dataSource: [],
|
dataSource: [],
|
||||||
selectedRowKeys: []
|
selectedRowKeys: [],
|
||||||
|
/* 分页参数 */
|
||||||
|
ipagination: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' ' + this.$t('total') + total + this.$t('strip')
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -152,19 +219,19 @@ export default {
|
|||||||
handleBatchSelected (list) {
|
handleBatchSelected (list) {
|
||||||
const data = JSON.parse(JSON.stringify(this.dataSource))
|
const data = JSON.parse(JSON.stringify(this.dataSource))
|
||||||
this.dataSource = data.map(item => {
|
this.dataSource = data.map(item => {
|
||||||
if (this.selectedRowKeys.includes(item.id)) {
|
if (this.selectedRowKeys.includes(item.rowKey)) {
|
||||||
item.contact = list.map(tt => tt.id).join(',')
|
item.responsibleUnitLeader = list.map(tt => tt.id).join(',')
|
||||||
item.contact_dictText = list.map(tt => tt.realname + '(' + tt.username + ')').join(',')
|
item.responsibleUnitLeader_dictText = list.map(tt => tt.realname + '(' + tt.username + ')').join(',')
|
||||||
}
|
}
|
||||||
return item
|
return item
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleDelete (id) {
|
handleDelete (rowKey) {
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
title: this.$t('confirmDeletion'),
|
title: this.$t('confirmDeletion'),
|
||||||
content: this.$t('areYouSure'),
|
content: this.$t('areYouSure'),
|
||||||
onOk: () => {
|
onOk: () => {
|
||||||
const index = this.dataSource.findIndex(tt => tt.id === id)
|
const index = this.dataSource.findIndex(tt => tt.rowKey === rowKey)
|
||||||
this.dataSource[index] = null
|
this.dataSource[index] = null
|
||||||
this.dataSource = this.dataSource.filter(tt => !!tt)
|
this.dataSource = this.dataSource.filter(tt => !!tt)
|
||||||
this.selectedRowKeys = []
|
this.selectedRowKeys = []
|
||||||
@@ -172,16 +239,22 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
batchDelete () {
|
batchDelete () {
|
||||||
|
// 至少选择一条数据
|
||||||
if (!this.selectedRowKeys || this.selectedRowKeys.length === 0) {
|
if (!this.selectedRowKeys || this.selectedRowKeys.length === 0) {
|
||||||
this.$message.warning(this.$t('workCenter.standardCompliance.pleaseSelectDeleteData'))
|
this.$message.warning(this.$t('workCenter.standardCompliance.pleaseSelectDeleteData'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// 至少保留一条数据
|
||||||
|
if (this.selectedRowKeys.length === this.dataSource.length) {
|
||||||
|
this.$message.warning(this.$t('workCenter.standardCompliance.atLeastOneData'))
|
||||||
|
return
|
||||||
|
}
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
title: this.$t('confirmBatchDeletion'),
|
title: this.$t('confirmBatchDeletion'),
|
||||||
content: this.$t('deleteAData'),
|
content: this.$t('deleteAData'),
|
||||||
onOk: () => {
|
onOk: () => {
|
||||||
const data = this.dataSource.map(item => {
|
const data = this.dataSource.map(item => {
|
||||||
if (this.selectedRowKeys.includes(item.id)) {
|
if (this.selectedRowKeys.includes(item.rowKey)) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return item
|
return item
|
||||||
@@ -193,6 +266,55 @@ export default {
|
|||||||
},
|
},
|
||||||
onSelectChange (selectedRowKeys) {
|
onSelectChange (selectedRowKeys) {
|
||||||
this.selectedRowKeys = selectedRowKeys
|
this.selectedRowKeys = selectedRowKeys
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 获取条款列表
|
||||||
|
*/
|
||||||
|
initClauseList () {
|
||||||
|
this.loading = true
|
||||||
|
const params = {
|
||||||
|
sarFileSplitInfoId: this.selectedSpiltInfoId,
|
||||||
|
standardId: this.selectedStandard.id
|
||||||
|
}
|
||||||
|
getClauseByStandard(params).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
const data = res.result || []
|
||||||
|
this.dataSource = data.map(item => {
|
||||||
|
return { ...item, rowKey: randomUUID() }
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
showContent (text) {
|
||||||
|
this.$refs.clauseDetail.open(text)
|
||||||
|
},
|
||||||
|
handleTableChange (pagination) {
|
||||||
|
this.ipagination = pagination
|
||||||
|
},
|
||||||
|
handleContactChange (list, recordIndex) {
|
||||||
|
this.dataSource[recordIndex].responsibleUnitLeader = list.map(item => item.id).join(',')
|
||||||
|
this.dataSource[recordIndex].responsibleUnitLeader_dictText = list.map(item => item.realname + '(' + item.username + ')').join(',')
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 提交数据
|
||||||
|
* @param needValidator 是否需要校验
|
||||||
|
* @param needRemind 是否需要提醒
|
||||||
|
*/
|
||||||
|
submit (needValidator, needRemind) {
|
||||||
|
if (!needValidator) {
|
||||||
|
return this.dataSource
|
||||||
|
}
|
||||||
|
if (this.dataSource.length === 0 || this.dataSource.some(tt => !tt.responsibleUnitLeader)) {
|
||||||
|
if (needRemind) {
|
||||||
|
this.$message.warning(this.$t('workCenter.standardCompliance.pleaseSelectResponsibleUnitContactPerson'))
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return this.dataSource
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -208,4 +330,4 @@ export default {
|
|||||||
/deep/ .user-input {
|
/deep/ .user-input {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
+121
-14
@@ -14,26 +14,68 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<j-table :columns="columns" :data-source="dataSource" :pagination="false" :scroll="{x: '100%'}">
|
<j-table :columns="columns" :data-source="dataSource" :pagination="false" :scroll="{x: '100%'}">
|
||||||
|
|
||||||
|
<!--跳转标准详情-->
|
||||||
|
<template v-slot:detail="{text, record}">
|
||||||
|
<a-tooltip overlay-class-name="tooltip-style">
|
||||||
|
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||||
|
<div class="table-text can-click-table-text" v-if="text || text === 0" @click="toDetailPage(record)">{{ text }}</div>
|
||||||
|
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!--分解单来源-->
|
||||||
<template v-slot:salvageListSource="{text, record, index}">
|
<template v-slot:salvageListSource="{text, record, index}">
|
||||||
<j-dict-select-tag style="width: 100%"
|
<a-select :placeholder="$t('pleaseSelect') + $t('workCenter.projectComplianceEvaluationProcess.salvageListSource')"
|
||||||
:value="record.salvageSource"
|
:value="record.decompositionOrderSource"
|
||||||
dict-code="process_manuscript"
|
style="width: 100%"
|
||||||
@change="value => handleSourceChange(value, record, index)" />
|
@change="value => handleSourceChange(value, record, index)">
|
||||||
|
<a-select-option v-for="item in record.decompositionOrderSourceVOList"
|
||||||
|
:key="item.value"
|
||||||
|
:value="item.value"
|
||||||
|
:disabled="item.value !== '0' && !item.sarFileSplitInfoId">
|
||||||
|
{{ item.text }}
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
</template>
|
</template>
|
||||||
</j-table>
|
</j-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<standard-selection-modal ref="standardSelectModal" type="radio" @listChange="handleSelectedStandard" />
|
<select-standard-drawer ref="standardSelectModal" type="radio" @listChange="handleSelectedStandard" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import StandardSelectionModal from '../../../../components/selection/StandardSelectionModal'
|
|
||||||
import JTable from '../../../../components/jero/JTable'
|
import JTable from '../../../../components/jero/JTable'
|
||||||
|
import SelectStandardDrawer from '../modules/SelectStandardDrawer'
|
||||||
|
import { StandardSource } from '../../../../enums/commonEnums'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'InitialBasicServiceInfo',
|
name: 'InitialBasicServiceInfo',
|
||||||
components: { JTable, StandardSelectionModal },
|
components: { JTable, SelectStandardDrawer },
|
||||||
|
props: {
|
||||||
|
// 选中的标准
|
||||||
|
selectedStandard: {
|
||||||
|
type: Object,
|
||||||
|
required: false,
|
||||||
|
default: () => {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
selectedStandard: {
|
||||||
|
handler (val) {
|
||||||
|
if (val.id) {
|
||||||
|
this.dataSource = [{ ...val }]
|
||||||
|
} else {
|
||||||
|
this.dataSource = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true
|
||||||
|
}
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
columns: [
|
columns: [
|
||||||
@@ -47,7 +89,8 @@ export default {
|
|||||||
{
|
{
|
||||||
title: this.$t('standardName'),
|
title: this.$t('standardName'),
|
||||||
dataIndex: 'standardName',
|
dataIndex: 'standardName',
|
||||||
width: 150
|
width: 150,
|
||||||
|
scopedSlots: { customRender: 'detail' }
|
||||||
},
|
},
|
||||||
// 标准状态
|
// 标准状态
|
||||||
{
|
{
|
||||||
@@ -86,19 +129,83 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleDelete () {
|
handleDelete () {
|
||||||
|
this.$confirm({
|
||||||
|
title: this.$t('confirmDeletion'),
|
||||||
|
content: this.$t('areYouSure'),
|
||||||
|
onOk: () => {
|
||||||
|
this.dataSource = []
|
||||||
|
this.$emit('standard:change', this.dataSource[0])
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
handleAdd () {
|
handleAdd () {
|
||||||
this.$refs.standardSelectModal.open()
|
this.$refs.standardSelectModal.open()
|
||||||
},
|
},
|
||||||
handleSelectedStandard (list) {
|
handleSelectedStandard (list) {
|
||||||
this.dataSource = list
|
this.dataSource = []
|
||||||
this.$emit('standard:change', list[0])
|
if (list.length > 0) {
|
||||||
|
const data = {
|
||||||
|
...list[0],
|
||||||
|
standardId: list[0].id,
|
||||||
|
decompositionOrderSource: '0'
|
||||||
|
}
|
||||||
|
this.$set(this.dataSource, 0, data)
|
||||||
|
}
|
||||||
|
this.$emit('standard:change', this.dataSource[0])
|
||||||
},
|
},
|
||||||
handleSourceChange (value, record, index) {
|
handleSourceChange (value, record, index) {
|
||||||
record.salvageSource = value
|
record.decompositionOrderSource = value
|
||||||
this.$set(this.dataSource, index, record)
|
this.$set(this.dataSource, index, record)
|
||||||
this.$emit('source:change', value)
|
const splitInfoId = record.decompositionOrderSourceVOList.find(tt => tt.value === value).sarFileSplitInfoId
|
||||||
|
this.$emit('source:change', splitInfoId)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 返回数据
|
||||||
|
* @param needValidator 是否需要校验
|
||||||
|
* @param needRemind 是否需要提示
|
||||||
|
*/
|
||||||
|
submit (needValidator, needRemind) {
|
||||||
|
if (!needValidator) {
|
||||||
|
return this.dataSource[0] || {}
|
||||||
|
}
|
||||||
|
if (!this.dataSource || this.dataSource.length === 0) {
|
||||||
|
if (needRemind) {
|
||||||
|
this.$message.warning(this.$t('workCenter.standardCompliance.pleaseAddStandard'))
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return this.dataSource[0]
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 跳转标准详情
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
toDetailPage ({ id, source }) {
|
||||||
|
let path
|
||||||
|
// 根据来源跳转不同的详情页
|
||||||
|
switch (source) {
|
||||||
|
// 国内
|
||||||
|
case StandardSource.DOMESTIC.value:
|
||||||
|
path = '/standardRegulationLibrary/DomesticStandardDetail'
|
||||||
|
break
|
||||||
|
// 海外
|
||||||
|
case StandardSource.OVERSEAS.value:
|
||||||
|
path = '/standardRegulationLibrary/OverseasStandardDetail'
|
||||||
|
break
|
||||||
|
// 企标
|
||||||
|
case StandardSource.ENTERPRISE.value:
|
||||||
|
path = '/enterpriseStandardLibrary/enterpriseStandardDetail'
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (!path) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const query = { id }
|
||||||
|
this.$openPageNewSheet({
|
||||||
|
path, query
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -107,4 +214,4 @@ export default {
|
|||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
@import '~@assets/less/common.less';
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
+98
-24
@@ -13,25 +13,35 @@
|
|||||||
:columns="columns"
|
:columns="columns"
|
||||||
:data-source="dataSource"
|
:data-source="dataSource"
|
||||||
:scroll="{x: '100%'}"
|
:scroll="{x: '100%'}"
|
||||||
:pagination="false"
|
:pagination="ipagination"
|
||||||
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
|
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||||
|
@change="handleTableChange">
|
||||||
|
|
||||||
<!--选择责任单位联络人-->
|
<!--选择设计工程师-->
|
||||||
<template v-slot:moduleOwner="{text,record,index}">
|
<template v-slot:moduleOwner="{text,record,index}">
|
||||||
<user-selection :show-btn="false"
|
<user-selection :show-btn="false"
|
||||||
:value="record.contact"
|
:value="record.designEngineer"
|
||||||
:name-str="record.contact_dictText"
|
:name-str="record.designEngineer_dictText"
|
||||||
v-if="!record.uninvolved"
|
v-if="!record.notInvolved"
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')" />
|
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.designEngineer')"
|
||||||
|
@listChange="list => handleUserChange(list, index)" />
|
||||||
<div v-else>{{ global.emptyLine }}</div>
|
<div v-else>{{ global.emptyLine }}</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<!--条文内容-->
|
||||||
|
<template v-slot:clauseContent="{text}">
|
||||||
|
<div class="table-text" style="cursor: pointer" @click="showContent(text)" v-if="text">
|
||||||
|
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||||
|
</div>
|
||||||
|
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
<!--操作-->
|
<!--操作-->
|
||||||
<template v-slot:action="{text,record,index}">
|
<template v-slot:action="{text,record,index}">
|
||||||
<div class="action-span-cell">
|
<div class="action-span-cell">
|
||||||
<a @click="handleUninvolved(record, index)">{{
|
<a @click="handleUninvolved(record, index)">{{
|
||||||
!record.uninvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')
|
!record.notInvolved ? $t('projectLibrary.vehicleItemLibrary.uninvolved') : $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')
|
||||||
}}</a>
|
}}</a>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -42,6 +52,8 @@
|
|||||||
<user-select-modal ref="userSelectModal" type="checkbox" @listChange="handleBatchSelected" />
|
<user-select-modal ref="userSelectModal" type="checkbox" @listChange="handleBatchSelected" />
|
||||||
<!--不涉及原因-->
|
<!--不涉及原因-->
|
||||||
<uninvolved-modal ref="uninvolvedModal" @ok="handleUninvolvedOk" />
|
<uninvolved-modal ref="uninvolvedModal" @ok="handleUninvolvedOk" />
|
||||||
|
<!--条文内容-->
|
||||||
|
<split-clause-detail ref="clauseDetail" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -50,31 +62,43 @@ import UserSelection from '../../../../components/selection/UserSelection'
|
|||||||
import UserSelectModal from '../../../../components/selection/UserSelectModal'
|
import UserSelectModal from '../../../../components/selection/UserSelectModal'
|
||||||
import UninvolvedModal from '../modules/UninvolvedModal'
|
import UninvolvedModal from '../modules/UninvolvedModal'
|
||||||
import JTable from '../../../../components/jero/JTable'
|
import JTable from '../../../../components/jero/JTable'
|
||||||
|
import SplitClauseDetail from '../../../documentTool/documentSplit/modules/SplitClauseDetail'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ModuleOwnerIssueTable',
|
name: 'ModuleOwnerIssueTable',
|
||||||
components: { JTable, UninvolvedModal, UserSelectModal, UserSelection },
|
components: { SplitClauseDetail, JTable, UninvolvedModal, UserSelectModal, UserSelection },
|
||||||
|
props: {
|
||||||
|
// 回显的数据
|
||||||
|
displayDataSource: {
|
||||||
|
type: Array,
|
||||||
|
required: false,
|
||||||
|
default: () => {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
columns: [
|
columns: [
|
||||||
// 标准编号/条款号
|
// 标准编号/条款号
|
||||||
{
|
{
|
||||||
dataIndex: 'workNumber',
|
dataIndex: 'termNumber',
|
||||||
title: this.$t('projectLibrary.vehicleItemLibrary.standardNumberClauseNumber'),
|
title: this.$t('projectLibrary.vehicleItemLibrary.standardNumberClauseNumber'),
|
||||||
width: 150
|
width: 150
|
||||||
},
|
},
|
||||||
// 标准名称/条款名称
|
// 标准名称/条款名称
|
||||||
{
|
{
|
||||||
dataIndex: 'projectName',
|
dataIndex: 'termName',
|
||||||
title: this.$t('workCenter.projectComplianceEvaluationProcess.standardNameClauseName'),
|
title: this.$t('workCenter.projectComplianceEvaluationProcess.standardNameClauseName'),
|
||||||
width: 160
|
|
||||||
},
|
|
||||||
// 标准状态
|
|
||||||
{
|
|
||||||
title: this.$t('standardSelect.textState'),
|
|
||||||
dataIndex: 'standardState_dictText',
|
|
||||||
width: 150
|
width: 150
|
||||||
},
|
},
|
||||||
|
// 条款内容
|
||||||
|
{
|
||||||
|
dataIndex: 'termText',
|
||||||
|
title: this.$t('workCenter.projectComplianceEvaluationProcess.terms'),
|
||||||
|
width: 250,
|
||||||
|
scopedSlots: { customRender: 'clauseContent' }
|
||||||
|
},
|
||||||
// 设计工程师
|
// 设计工程师
|
||||||
{
|
{
|
||||||
title: this.$t('workCenter.standardConsultationProcess.designEngineer'),
|
title: this.$t('workCenter.standardConsultationProcess.designEngineer'),
|
||||||
@@ -85,13 +109,36 @@ export default {
|
|||||||
// 操作
|
// 操作
|
||||||
{
|
{
|
||||||
title: this.$t('operation'),
|
title: this.$t('operation'),
|
||||||
fixed: 'right',
|
|
||||||
width: 150,
|
width: 150,
|
||||||
scopedSlots: { customRender: 'action' }
|
scopedSlots: { customRender: 'action' }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
dataSource: [{ id: 1 }],
|
dataSource: [],
|
||||||
selectedRowKeys: []
|
selectedRowKeys: [],
|
||||||
|
/* 分页参数 */
|
||||||
|
ipagination: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' ' + this.$t('total') + total + this.$t('strip')
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
displayDataSource: {
|
||||||
|
handler (value) {
|
||||||
|
this.dataSource = []
|
||||||
|
if (value) {
|
||||||
|
this.dataSource = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -110,9 +157,9 @@ export default {
|
|||||||
const data = JSON.parse(JSON.stringify(this.dataSource))
|
const data = JSON.parse(JSON.stringify(this.dataSource))
|
||||||
this.dataSource = data.map(item => {
|
this.dataSource = data.map(item => {
|
||||||
// 选中且没有填写不涉及理由
|
// 选中且没有填写不涉及理由
|
||||||
if (this.selectedRowKeys.includes(item.id) && !item.uninvolved) {
|
if (this.selectedRowKeys.includes(item.id) && !item.notInvolved) {
|
||||||
item.contact = list.map(tt => tt.id).join(',')
|
item.designEngineer = list.map(tt => tt.id).join(',')
|
||||||
item.contact_dictText = list.map(tt => tt.realname + '(' + tt.username + ')').join(',')
|
item.designEngineer_dictText = list.map(tt => tt.realname + '(' + tt.username + ')').join(',')
|
||||||
}
|
}
|
||||||
return item
|
return item
|
||||||
})
|
})
|
||||||
@@ -130,6 +177,33 @@ export default {
|
|||||||
},
|
},
|
||||||
onSelectChange (selectedRowKeys) {
|
onSelectChange (selectedRowKeys) {
|
||||||
this.selectedRowKeys = selectedRowKeys
|
this.selectedRowKeys = selectedRowKeys
|
||||||
|
},
|
||||||
|
showContent (text) {
|
||||||
|
this.$refs.clauseDetail.open(text)
|
||||||
|
},
|
||||||
|
handleUserChange (list, index) {
|
||||||
|
this.dataSource[index].designEngineer = list.map(item => item.id).join(',')
|
||||||
|
this.dataSource[index].designEngineer_dictText = list.map(item => item.realname + '(' + item.username + ')').join(',')
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 提交数据
|
||||||
|
* @param needValidator
|
||||||
|
* @param needRemind
|
||||||
|
*/
|
||||||
|
submit (needValidator, needRemind) {
|
||||||
|
if (!needValidator) {
|
||||||
|
return this.dataSource
|
||||||
|
}
|
||||||
|
if (this.dataSource.length === 0 || this.dataSource.some(tt => !tt.designEngineer && !tt.notInvolved)) {
|
||||||
|
if (needRemind) {
|
||||||
|
this.$message.warning(this.$t('workCenter.standardCompliance.pleaseSelectDesignEngineer'))
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return this.dataSource
|
||||||
|
},
|
||||||
|
handleTableChange (pagination) {
|
||||||
|
this.ipagination = pagination
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,4 +219,4 @@ export default {
|
|||||||
/deep/ .user-input {
|
/deep/ .user-input {
|
||||||
width: 100% !important
|
width: 100% !important
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -0,0 +1,333 @@
|
|||||||
|
<template>
|
||||||
|
<a-drawer
|
||||||
|
:title="$t('standardSelect.standardSelection')"
|
||||||
|
:maskClosable="false"
|
||||||
|
:width="1000"
|
||||||
|
placement="right"
|
||||||
|
:closable="true"
|
||||||
|
@close="handleCancel"
|
||||||
|
:visible="visible"
|
||||||
|
class="custom-drawer-style">
|
||||||
|
<div class="custom-drawer-style-scroll">
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :sm="8">
|
||||||
|
<a-form-item :label="$t('standardSelect.source')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<j-dict-select-tag style="width: 100%" v-model="queryParam.source"
|
||||||
|
:disabled="disabledSourceSearch"
|
||||||
|
:placeholder="$t('pleaseSelect')+$t('standardSelect.source')"
|
||||||
|
:triggerChange="false"
|
||||||
|
:options="sourceOptions"
|
||||||
|
@change="handleTypeChange" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :sm="8">
|
||||||
|
<a-form-item :label="$t('standardSelect.standardNumOrName')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input :placeholder="$t('pleaseEnter')+$t('standardSelect.standardNumOrName')"
|
||||||
|
v-model="queryParam.standardNumberOrName"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<div style="float: right;overflow: hidden;margin-right: 41px;margin-bottom: 20px"
|
||||||
|
class="table-page-search-submitButtons">
|
||||||
|
<a-button style="margin-left: 8px" type="primary" icon="search" @click="searchQuery">{{ $t('query') }}</a-button>
|
||||||
|
<a-button style="margin-left: 8px" type="primary" ghost icon="reload" @click="searchReset">{{ $t('reset') }}</a-button>
|
||||||
|
</div>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<a-table
|
||||||
|
:columns="columns"
|
||||||
|
rowKey="standardNumber"
|
||||||
|
:scroll="{x: 900}"
|
||||||
|
:data-source="dataList"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:row-selection="{ type: type, selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||||
|
:loading="loading"
|
||||||
|
@change="handleTableChange">
|
||||||
|
<template slot="text" slot-scope="text">
|
||||||
|
<a-tooltip overlay-class-name="tooltip-style">
|
||||||
|
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||||
|
<div class="table-text">{{ text || text === 0 ? text : global.emptyLine }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 企标编号/企标名称 -->
|
||||||
|
<template v-slot:toDetail="text, record">
|
||||||
|
<a-tooltip overlay-class-name="tooltip-style">
|
||||||
|
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||||
|
<a v-if="text" class="link-a" @click="handleGoDetail(record)">{{ text }}</a>
|
||||||
|
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 标准状态 -->
|
||||||
|
<template slot="standardState" slot-scope="text, record">
|
||||||
|
<a-tooltip overlay-class-name="tooltip-style">
|
||||||
|
<template slot="title">{{
|
||||||
|
record.source === '3' ? (record.esStandardState_dictText || global.emptyLine) : (record.standardState_dictText || global.emptyLine)
|
||||||
|
}}
|
||||||
|
</template>
|
||||||
|
<div class="table-text">{{
|
||||||
|
record.source === '3' ? (record.esStandardState_dictText || global.emptyLine) : (record.standardState_dictText || global.emptyLine)
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="custom-drawer-style-bottom-btn">
|
||||||
|
<a-button @click="handleCancel">{{ $t('cancel') }}</a-button>
|
||||||
|
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{ $t('submit') }}</a-button>
|
||||||
|
</div>
|
||||||
|
</a-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import JDictSelectTag from '../../../../components/dict/JDictSelectTag'
|
||||||
|
import { StandardSource } from '../../../../enums/commonEnums'
|
||||||
|
import { ajaxGetDictItems } from '../../../../api/api'
|
||||||
|
import { getStandardListCarryDecompositionSingleSource } from '../../../../api/workCenter'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SelectStandardDrawer',
|
||||||
|
components: { JDictSelectTag },
|
||||||
|
props: {
|
||||||
|
source: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: '1'
|
||||||
|
},
|
||||||
|
// 查询条件可以选择的类型
|
||||||
|
canSelectedSource: {
|
||||||
|
type: [String, Array],
|
||||||
|
required: false,
|
||||||
|
default: () => {
|
||||||
|
return [StandardSource.DOMESTIC.value, StandardSource.OVERSEAS.value, StandardSource.ENTERPRISE.value]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
// 搜索条件中的来源是否不可更改
|
||||||
|
disabledSourceSearch: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: 'checkbox'
|
||||||
|
},
|
||||||
|
// 列表数据不包含的标准
|
||||||
|
excludeStandardNumbers: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
// 过滤条件
|
||||||
|
filters: {
|
||||||
|
type: Object,
|
||||||
|
required: false,
|
||||||
|
default: () => {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
labelCol: {
|
||||||
|
sm: 8
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
sm: 14
|
||||||
|
},
|
||||||
|
selectedRowKeys: [],
|
||||||
|
selectedRowList: [],
|
||||||
|
loading: false,
|
||||||
|
queryParam: {},
|
||||||
|
/* 分页参数 */
|
||||||
|
ipagination: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: this.$t('standardNumber'),
|
||||||
|
dataIndex: 'standardNumber',
|
||||||
|
ellipsis: true,
|
||||||
|
align: 'center',
|
||||||
|
width: 150,
|
||||||
|
scopedSlots: { customRender: 'toDetail' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('standardName'),
|
||||||
|
dataIndex: 'standardName',
|
||||||
|
ellipsis: true,
|
||||||
|
align: 'center',
|
||||||
|
width: 150,
|
||||||
|
scopedSlots: { customRender: 'toDetail' }
|
||||||
|
},
|
||||||
|
// 发布日期
|
||||||
|
{
|
||||||
|
title: this.$t('standardSelect.releaseDate'),
|
||||||
|
dataIndex: 'releaseDate',
|
||||||
|
align: 'center',
|
||||||
|
width: 120,
|
||||||
|
scopedSlots: { customRender: 'text' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('standardSelect.textState'),
|
||||||
|
dataIndex: 'standardState_dictText',
|
||||||
|
align: 'center',
|
||||||
|
width: 150,
|
||||||
|
scopedSlots: { customRender: 'standardState' }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
dataList: [],
|
||||||
|
sourceOptions: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open () {
|
||||||
|
this.visible = true
|
||||||
|
this.queryParam = {}
|
||||||
|
this.initDict()
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.source ? this.queryParam.source = this.source : this.queryParam = {}
|
||||||
|
this.replacePage()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
initDict () {
|
||||||
|
ajaxGetDictItems('standard_source').then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
const canSelectedArr = typeof this.canSelectedSource === 'string' ? this.canSelectedSource.split(',') : this.canSelectedSource
|
||||||
|
this.sourceOptions = res.result.filter(tt => canSelectedArr.includes(tt.value))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取表格数据
|
||||||
|
replacePage (arg) {
|
||||||
|
if (arg === 1) {
|
||||||
|
this.ipagination.current = 1
|
||||||
|
}
|
||||||
|
const query = {
|
||||||
|
...this.queryParam,
|
||||||
|
...this.filters,
|
||||||
|
pageNo: this.ipagination.current,
|
||||||
|
pageSize: this.ipagination.pageSize,
|
||||||
|
excludeStandardNumbers: this.excludeStandardNumbers
|
||||||
|
}
|
||||||
|
// 清空在可选范围内进行查询
|
||||||
|
if (!query.source && this.canSelectedSource.length < 3) {
|
||||||
|
query.source = this.canSelectedSource.join(',')
|
||||||
|
}
|
||||||
|
// this.selectedRowKeys = []
|
||||||
|
this.loading = true
|
||||||
|
getStandardListCarryDecompositionSingleSource(query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.dataList = res.result.records
|
||||||
|
this.ipagination.total = res.result.total
|
||||||
|
this.selectedRowKeys = this.value ? this.value.split(',') : []
|
||||||
|
} else {
|
||||||
|
this.dataList = []
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
searchQuery () {
|
||||||
|
this.replacePage(1)
|
||||||
|
},
|
||||||
|
searchReset () {
|
||||||
|
// 如果禁用来源,就不重置来源
|
||||||
|
if (this.disabledSourceSearch) {
|
||||||
|
this.queryParam = { source: this.source }
|
||||||
|
} else {
|
||||||
|
this.queryParam = {}
|
||||||
|
}
|
||||||
|
this.replacePage(1)
|
||||||
|
},
|
||||||
|
// 表格选择改变
|
||||||
|
onSelectChange (value, row) {
|
||||||
|
this.selectedRowKeys = value
|
||||||
|
this.selectedRowList = row
|
||||||
|
},
|
||||||
|
handleTableChange (pagination) {
|
||||||
|
// 分页、排序、筛选变化时触发
|
||||||
|
this.ipagination = pagination
|
||||||
|
this.replacePage()
|
||||||
|
},
|
||||||
|
handleCancel () {
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
handleSubmit () {
|
||||||
|
const serialNumber = []
|
||||||
|
const serialNameArr = []
|
||||||
|
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||||
|
this.selectedRowList.forEach(res => {
|
||||||
|
serialNumber.push(res.standardNumber)
|
||||||
|
serialNameArr.push(res.standardName)
|
||||||
|
})
|
||||||
|
this.$emit('change', serialNumber.join(','))
|
||||||
|
this.$emit('nameChange', serialNameArr.join(','))
|
||||||
|
this.$emit('listChange', this.selectedRowList)
|
||||||
|
this.close()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('selectLeastOne'))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
close () {
|
||||||
|
this.visible = false
|
||||||
|
this.ipagination = {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleTypeChange () {
|
||||||
|
this.$forceUpdate()
|
||||||
|
},
|
||||||
|
// 点击跳转标准详情
|
||||||
|
handleGoDetail (record) {
|
||||||
|
let path = ''
|
||||||
|
// 需要先判断是哪种标准
|
||||||
|
if (record.source === '1') {
|
||||||
|
path = '/standardRegulationLibrary/DomesticStandardDetail'
|
||||||
|
} else if (record.source === '2') {
|
||||||
|
path = '/standardRegulationLibrary/OverseasStandardDetail'
|
||||||
|
} else if (record.source === '3') {
|
||||||
|
path = '/enterpriseStandardLibrary/enterpriseStandardDetail'
|
||||||
|
}
|
||||||
|
this.$openPageNewSheet({
|
||||||
|
path: path,
|
||||||
|
query: {
|
||||||
|
id: record.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<a-input :placeholder="$t('pleaseEnter') + $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')"
|
<a-input :placeholder="$t('pleaseEnter') + $t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:maxLength="500"
|
:maxLength="500"
|
||||||
v-decorator="['uninvolved', validatorRules.uninvolved]" />
|
v-decorator="['notInvolved', validatorRules.notInvolved]" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ export default {
|
|||||||
},
|
},
|
||||||
validatorRules: {
|
validatorRules: {
|
||||||
// 不涉及原因
|
// 不涉及原因
|
||||||
uninvolved: {
|
notInvolved: {
|
||||||
rules: [{
|
rules: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: this.$t('pleaseEnter') + this.$t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')
|
message: this.$t('pleaseEnter') + this.$t('workCenter.projectComplianceEvaluationProcess.noCauseInvolved')
|
||||||
@@ -63,6 +63,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
open (record, index) {
|
open (record, index) {
|
||||||
|
this.validatorRules.notInvolved.rules[0].required = true
|
||||||
this.visible = true
|
this.visible = true
|
||||||
this.model = Object.assign({}, record)
|
this.model = Object.assign({}, record)
|
||||||
this.dataIndex = index
|
this.dataIndex = index
|
||||||
@@ -71,9 +72,9 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleOk (flag) {
|
handleOk (flag) {
|
||||||
this.validatorRules.uninvolved.rules[0].required = flag
|
this.validatorRules.notInvolved.rules[0].required = flag
|
||||||
if (!flag) {
|
if (!flag) {
|
||||||
this.form.setFieldsValue({ uninvolved: null })
|
this.form.setFieldsValue({ notInvolved: null })
|
||||||
}
|
}
|
||||||
this.form.validateFields((errors, values) => {
|
this.form.validateFields((errors, values) => {
|
||||||
if (!errors) {
|
if (!errors) {
|
||||||
@@ -97,4 +98,4 @@ export default {
|
|||||||
|
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user