Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -964,6 +964,10 @@
|
||||
}
|
||||
|
||||
// 解决表头错位问题
|
||||
/deep/ .ant-table-fixed-header .ant-table-scroll .ant-table-header {
|
||||
margin-bottom: -8px !important;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-hide-scrollbar {
|
||||
margin-right: -9px;
|
||||
scrollbar-color: unset;
|
||||
}
|
||||
@@ -199,7 +199,11 @@ module.exports = {
|
||||
newCertifiedVehicleImplementationDate: 'New certified vehicle implementation date',
|
||||
generate: 'Generate',
|
||||
vehicleType: 'Vehicle type',
|
||||
modelStatus: 'Model status',
|
||||
clickToUpload: 'Click to upload',
|
||||
designEngineer: 'Design engineer',
|
||||
pleaseUpload: 'Please upload',
|
||||
supportingMaterial: 'Supporting material',
|
||||
// 树右键
|
||||
treeRight: {
|
||||
addFolder: 'Create New Folder',
|
||||
|
||||
@@ -32,7 +32,21 @@ module.exports = {
|
||||
decompositionSingleSource: 'Decomposition single source',
|
||||
pleaseAddStandard: 'Please add a new criterion first',
|
||||
modelStatus: 'Model status',
|
||||
primaryInvestigator: 'Primary investigator'
|
||||
primaryInvestigator: 'Primary investigator',
|
||||
checkWhetherTheTaskIsDelivered: 'Check whether the task is delivered',
|
||||
batchSelector: 'Batch selector',
|
||||
mainFinderImportTemplate: 'Compliance check process Import template',
|
||||
countersigningOfficer: 'Countersigning officer',
|
||||
auditor: 'Auditor',
|
||||
approvingOfficer: 'Approving officer',
|
||||
evaluationResult: 'Evaluation result',
|
||||
theStatusNotMeetRequirements: 'The status quo that does not meet the requirements',
|
||||
rectificationPlan: 'Rectification plan',
|
||||
rectificationCycle: 'Rectification cycle',
|
||||
rectificationCost: 'Rectification cost',
|
||||
sharedWithOtherProjects: 'Shared with other projects',
|
||||
costOfThisItemAfterSharing: 'Cost of this item after sharing',
|
||||
appraiser: 'Appraiser'
|
||||
},
|
||||
// 市场清单发布流程
|
||||
marketListReleaseProcess: {
|
||||
|
||||
@@ -32,7 +32,21 @@ module.exports = {
|
||||
decompositionSingleSource: '分解单来源',
|
||||
pleaseAddStandard: '请先新增一条标准',
|
||||
modelStatus: '车型状态',
|
||||
primaryInvestigator: '主排查人'
|
||||
primaryInvestigator: '主排查人',
|
||||
checkWhetherTheTaskIsDelivered: '排查任务是否下发',
|
||||
batchSelector: '批量选择人员',
|
||||
mainFinderImportTemplate: '法规符合性排查流程导入模板',
|
||||
countersigningOfficer: '会签人员',
|
||||
auditor: '审核人员',
|
||||
approvingOfficer: '批准人员',
|
||||
evaluationResult: '评估结果',
|
||||
theStatusNotMeetRequirements: '不满足要求的现状',
|
||||
rectificationPlan: '整改方案',
|
||||
rectificationCycle: '整改周期',
|
||||
rectificationCost: '整改费用',
|
||||
sharedWithOtherProjects: '与其他项目共用性',
|
||||
costOfThisItemAfterSharing: '共用后本项目所需费用',
|
||||
appraiser: '评估人'
|
||||
},
|
||||
// 市场清单发布流程
|
||||
marketListReleaseProcess: {
|
||||
|
||||
@@ -216,7 +216,11 @@ module.exports = {
|
||||
newCertifiedVehicleImplementationDate: '新认证车实施日期',
|
||||
generate: '生成',
|
||||
vehicleType: '车型',
|
||||
modelStatus: '车型状态',
|
||||
clickToUpload: '点击上传',
|
||||
designEngineer: '设计工程师',
|
||||
pleaseUpload: '请上传',
|
||||
supportingMaterial: '佐证材料',
|
||||
// 标准字段
|
||||
standardField: {
|
||||
standardEnglishName: '标准英文名称',
|
||||
|
||||
@@ -216,3 +216,11 @@ export const RectificationState = {
|
||||
TO_BE_RECTIFIED: { text: '待整改', value: '1' },
|
||||
TARGET_IS_CLOSED: { text: '已关闭', value: '2' }
|
||||
}
|
||||
|
||||
// 法规符合性排查流程-评估结果
|
||||
export const EvaluationResult = {
|
||||
CONFORM_TO: { text: '符合', value: '1' },
|
||||
INCONFORMITY: { text: '不符合', value: '2' },
|
||||
NOT_INVOLVE: { text: '不涉及', value: '3' },
|
||||
TO_BE_VERIFIED: { text: '待验证', value: '4' }
|
||||
}
|
||||
|
||||
@@ -262,6 +262,7 @@ export default {
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import '~@assets/less/common.less';
|
||||
.ant-card-body .table-operator {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
+19
-4
@@ -58,7 +58,7 @@
|
||||
v-decorator="['prcMes']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col v-if="[2].includes(currentNode)" :span="24">
|
||||
<a-col v-if="[2, 3, 4, 5, 6, 7, 8, 9].includes(currentNode)" :span="24">
|
||||
<!-- 标准编号/标准名称 -->
|
||||
<a-form-item
|
||||
:labelCol="$i18n.locale === EN ? longLabelColEn : longLabelCol"
|
||||
@@ -70,7 +70,7 @@
|
||||
v-decorator="['standardNumberName']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col v-if="[2].includes(currentNode)" :span="24">
|
||||
<a-col v-if="[2, 3, 4, 6, 7, 8, 9].includes(currentNode)" :span="24">
|
||||
<!-- 适用市场 -->
|
||||
<a-form-item
|
||||
:labelCol="$i18n.locale === EN ? longLabelColEn : longLabelCol"
|
||||
@@ -91,12 +91,17 @@
|
||||
<!-- 节点2、各部门接口人分发 -->
|
||||
<interface-person-delivery-base-info v-if="currentNode === 2" ref="baseInfoRef"></interface-person-delivery-base-info>
|
||||
<!-- 节点3、主排查人分发 -->
|
||||
<main-finder-distributes-base-info v-if="currentNode === 3" ref="baseInfoRef"></main-finder-distributes-base-info>
|
||||
<!-- 节点4、设计工程师评估 -->
|
||||
<design-engineer-evaluation v-if="currentNode === 4" ref="baseInfoRef"></design-engineer-evaluation>
|
||||
<!-- 节点5、主排查人单线审核 -->
|
||||
<!-- 节点6、只排查人汇总 -->
|
||||
<main-finder-single-audit-base-info v-if="currentNode === 5" ref="baseInfoRef"></main-finder-single-audit-base-info>
|
||||
<!-- 节点6、主排查人汇总 -->
|
||||
<main-finder-collect-base-info v-if="currentNode === 6" ref="baseInfoRef"></main-finder-collect-base-info>
|
||||
<!-- 节点7、会签 -->
|
||||
<!-- 节点8、设计工程师科室经理审核 -->
|
||||
<!-- 节点9、高级经理/技术官批准 -->
|
||||
<finish-audit-base-info v-if="[7,8,9].includes(currentNode)" ref="baseInfoRef"></finish-audit-base-info>
|
||||
|
||||
<!-- 流程审批信息 -->
|
||||
<div class="process-part-title">{{ $t('processApprovalInformation') }}</div>
|
||||
@@ -182,10 +187,20 @@ import {
|
||||
import pick from 'lodash.pick'
|
||||
import EngineerInitBaseInfo from './modules/EngineerInitBaseInfo'
|
||||
import InterfacePersonDeliveryBaseInfo from './modules/InterfacePersonDeliveryBaseInfo'
|
||||
import MainFinderDistributesBaseInfo from './modules/MainFinderDistributesBaseInfo'
|
||||
import DesignEngineerEvaluation from './modules/DesignEngineerEvaluation'
|
||||
import MainFinderSingleAuditBaseInfo from './modules/MainFinderSingleAuditBaseInfo'
|
||||
import MainFinderCollectBaseInfo from './modules/MainFinderCollectBaseInfo'
|
||||
import FinishAuditBaseInfo from './modules/FinishAuditBaseInfo'
|
||||
|
||||
export default {
|
||||
name: 'RegulatoryComplianceCheckProcess',
|
||||
components: {
|
||||
FinishAuditBaseInfo,
|
||||
MainFinderCollectBaseInfo,
|
||||
MainFinderSingleAuditBaseInfo,
|
||||
DesignEngineerEvaluation,
|
||||
MainFinderDistributesBaseInfo,
|
||||
InterfacePersonDeliveryBaseInfo,
|
||||
EngineerInitBaseInfo,
|
||||
InternalDetailPage,
|
||||
@@ -271,7 +286,7 @@ export default {
|
||||
loading: false,
|
||||
switchValue: 'base', // 头部tab选中值
|
||||
disabled: false,
|
||||
currentNode: 2, // 当前节点
|
||||
currentNode: 1, // 当前节点
|
||||
currentNodeName: '',
|
||||
currentNodeId: RegulatoryComplianceCheckNodes.initiated.value, // 当前节点id
|
||||
model: {},
|
||||
|
||||
+275
@@ -0,0 +1,275 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="process-part-title">{{ $t('dispatchInformation') }}</div>
|
||||
<div>
|
||||
<j-expand-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
ref="table"
|
||||
rowKey="standardNumber"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
formIsDepend="evaluationResult"
|
||||
:extraForm="extraForm"
|
||||
:loading="loading">
|
||||
|
||||
<template slot="evaluationResult" slot-scope="{text, record}">
|
||||
<j-dict-select-tag
|
||||
style="width: 100%"
|
||||
:placeholder="$t('pleaseSelect')"
|
||||
dict-code="evaluation_result"
|
||||
v-model="record.evaluationResult">
|
||||
</j-dict-select-tag>
|
||||
</template>
|
||||
|
||||
</j-expand-table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import JExpandTable from '@/components/JExpandTable'
|
||||
|
||||
export default {
|
||||
name: 'DesignEngineerEvaluation',
|
||||
components: { JExpandTable },
|
||||
props: {
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
columns: [
|
||||
{ // 条款号
|
||||
title: this.$t('clauseNo'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款标题
|
||||
title: this.$t('clauseTitle'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseTitle',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款内容
|
||||
title: this.$t('clauseContent'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型
|
||||
title: this.$t('vehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'vehicleType',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型状态
|
||||
title: this.$t('modelStatus'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 评价结果
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.evaluationResult'),
|
||||
align: 'center',
|
||||
width: 300,
|
||||
dataIndex: 'evaluationResult',
|
||||
scopedSlots: { customRender: 'evaluationResult' }
|
||||
}
|
||||
],
|
||||
dataSource: [],
|
||||
extraForm: {
|
||||
1: { // 符合
|
||||
rules: {
|
||||
// 备注
|
||||
remark: { required: false, message: this.$t('pleaseEnter') + this.$t('remarks'), trigger: 'blur' },
|
||||
// 佐证材料
|
||||
file: { required: false, message: this.$t('pleaseUpload') + this.$t('supportingMaterial'), trigger: 'change' }
|
||||
},
|
||||
formArr: [
|
||||
{
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('remarks'),
|
||||
dbFieldName: 'remark'
|
||||
},
|
||||
{
|
||||
fieldShowType: 2,
|
||||
dbFieldTxt: this.$t('supportingMaterial'),
|
||||
dbFieldName: 'file'
|
||||
}
|
||||
]
|
||||
},
|
||||
2: { // 不符合
|
||||
rules: {
|
||||
// 整改周期
|
||||
rectificationCycle: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'), trigger: 'blur' },
|
||||
// 整改费用
|
||||
rectificationCost: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'), trigger: 'blur' },
|
||||
// 共用后本项目所需费用
|
||||
costOfThisItemAfterSharing: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'), trigger: 'blur' },
|
||||
// 不满足要求的现状
|
||||
theStatusNotMeetRequirements: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'), trigger: 'blur' },
|
||||
// 整改方案
|
||||
rectificationPlan: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'), trigger: 'blur' },
|
||||
// 与其他项目共用性
|
||||
sharedWithOtherProjects: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'), trigger: 'blur' }
|
||||
},
|
||||
formArr: [
|
||||
{ // 整改周期
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationCycle'
|
||||
},
|
||||
{ // 整改费用
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationCost'
|
||||
},
|
||||
{ // 共用后本项目所需费用
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'costOfThisItemAfterSharing'
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'theStatusNotMeetRequirements'
|
||||
},
|
||||
{ // 整改方案
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationPlan'
|
||||
},
|
||||
{ // 与其他项目共用性
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'sharedWithOtherProjects'
|
||||
}
|
||||
]
|
||||
},
|
||||
3: { // 不涉及
|
||||
rules: {
|
||||
// 备注
|
||||
remark: { required: false, message: this.$t('pleaseEnter') + this.$t('remarks'), trigger: 'blur' },
|
||||
// 佐证材料
|
||||
file: { required: false, message: this.$t('pleaseUpload') + this.$t('supportingMaterial'), trigger: 'change' }
|
||||
},
|
||||
formArr: [
|
||||
{
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('remarks'),
|
||||
dbFieldName: 'remark'
|
||||
},
|
||||
{
|
||||
fieldShowType: 2,
|
||||
dbFieldTxt: this.$t('supportingMaterial'),
|
||||
dbFieldName: 'file'
|
||||
}
|
||||
]
|
||||
},
|
||||
4: { // 待验证
|
||||
rules: {
|
||||
// 整改周期
|
||||
rectificationCycle: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'), trigger: 'blur' },
|
||||
// 整改费用
|
||||
rectificationCost: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'), trigger: 'blur' },
|
||||
// 共用后本项目所需费用
|
||||
costOfThisItemAfterSharing: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'), trigger: 'blur' },
|
||||
// 不满足要求的现状
|
||||
theStatusNotMeetRequirements: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'), trigger: 'blur' },
|
||||
// 整改方案
|
||||
rectificationPlan: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'), trigger: 'blur' },
|
||||
// 与其他项目共用性
|
||||
sharedWithOtherProjects: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'), trigger: 'blur' }
|
||||
},
|
||||
formArr: [
|
||||
{ // 整改周期
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationCycle'
|
||||
},
|
||||
{ // 整改费用
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationCost'
|
||||
},
|
||||
{ // 共用后本项目所需费用
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'costOfThisItemAfterSharing'
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'theStatusNotMeetRequirements'
|
||||
},
|
||||
{ // 整改方案
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationPlan'
|
||||
},
|
||||
{ // 与其他项目共用性
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'sharedWithOtherProjects'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 拿到外面传进来的数据初始化,因为套了几层就不在外层初始化数据了
|
||||
initData (data) {
|
||||
// 给表单赋值
|
||||
this.formInline = Object.assign({}, data)
|
||||
this.isGetDataAfter = true
|
||||
},
|
||||
// 外层要获取数据
|
||||
getData () {
|
||||
// 把数据抛出,在线编辑不知道要不要抛
|
||||
const data = {}
|
||||
data.formInline = this.formInline
|
||||
return data
|
||||
},
|
||||
// 外层获取数据要过校验,返回false表示没有通过校验
|
||||
async getDataValidate () {
|
||||
let data = {}
|
||||
await this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
data.formInline = this.formInline
|
||||
} else {
|
||||
data = false
|
||||
}
|
||||
})
|
||||
return data
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
+191
@@ -0,0 +1,191 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="process-part-title">{{ $t('dispatchInformation') }}</div>
|
||||
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
ref="table"
|
||||
rowKey="standardNumber"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="false"
|
||||
:loading="loading">
|
||||
|
||||
<!-- 佐证材料 -->
|
||||
<template v-slot:material="{text, record}">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? record.material_dictText : global.emptyLine }}</template>
|
||||
<a v-if="text" class="link-a" @click="previewFile(record)">{{ record.material_dictText }}</a>
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
</j-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import JTable from '@/components/jero/JTable'
|
||||
|
||||
export default {
|
||||
name: 'FinishAuditBaseInfo',
|
||||
components: {
|
||||
JTable
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('serialNumber'),
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{ // 条款号
|
||||
title: this.$t('clauseNo'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款内容
|
||||
title: this.$t('clauseContent'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型
|
||||
title: this.$t('vehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'vehicleType',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型状态
|
||||
title: this.$t('modelStatus'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('responsibleDepartment'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'authDept',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 评估人
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.appraiser'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'appraiser',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 评估结果
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.evaluationResult'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'evaluationResult',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'theStatusNotMeetRequirements',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 整改方案
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectificationPlan',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 整改周期
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectificationCycle',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 整改费用
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectificationCost',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 与其他项目共用性
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'sharedWithOtherProjects',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 共用后本项目所需费用
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'costOfThisItemAfterSharing',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 备注
|
||||
title: this.$t('remarks'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'remark',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 佐证材料
|
||||
title: this.$t('supportingMaterial'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'material',
|
||||
scopedSlots: { customRender: 'material' }
|
||||
}
|
||||
],
|
||||
dataSource: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 拿到外面传进来的数据初始化,因为套了几层就不在外层初始化数据了
|
||||
initData (data) {
|
||||
// 给表单赋值
|
||||
this.formInline = Object.assign({}, data)
|
||||
this.isGetDataAfter = true
|
||||
},
|
||||
// 外层要获取数据
|
||||
getData () {
|
||||
// 把数据抛出,在线编辑不知道要不要抛
|
||||
const data = {}
|
||||
data.formInline = this.formInline
|
||||
return data
|
||||
},
|
||||
// 外层获取数据要过校验,返回false表示没有通过校验
|
||||
async getDataValidate () {
|
||||
let data = {}
|
||||
await this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
data.formInline = this.formInline
|
||||
} else {
|
||||
data = false
|
||||
}
|
||||
})
|
||||
return data
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
+365
@@ -0,0 +1,365 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="process-part-title">{{ $t('dispatchInformation') }}</div>
|
||||
|
||||
<div v-if="!disabled" class="table-operator">
|
||||
<!-- 导出, 文件名称:标准编号+标准名称+符合性排查?? -->
|
||||
<a-button icon="upload" type="primary" ghost @click="handleExportXls()">
|
||||
{{ $t('export') }}
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
ref="table"
|
||||
rowKey="standardNumber"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="false"
|
||||
:loading="loading">
|
||||
|
||||
<!-- 佐证材料 -->
|
||||
<template v-slot:material="{text, record}">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? record.material_dictText : global.emptyLine }}</template>
|
||||
<a v-if="text" class="link-a" @click="previewFile(record)">{{ record.material_dictText }}</a>
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- 操作栏 -->
|
||||
<div slot="action" slot-scope="{record}" class="action-span-cell">
|
||||
<a @click="handleEdit(record)" class="table-ope-btn" :disabled="disabled">{{ $t('edit') }}</a>
|
||||
</div>
|
||||
|
||||
</j-table>
|
||||
|
||||
<a-form-model :model="formInline" class="form-add" :rules="rules" ref="ruleForm">
|
||||
<div class="form-flex-box">
|
||||
<!-- 会签人员 自动带出法规工程师。可多选其他人?? -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.regulatoryComplianceCheckProcess.countersigningOfficer')">
|
||||
{{ $t('workCenter.regulatoryComplianceCheckProcess.countersigningOfficer') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="countersigningOfficer">
|
||||
<user-selection v-model="formInline.countersigningOfficer"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.regulatoryComplianceCheckProcess.countersigningOfficer')"
|
||||
:disabled="disabled"
|
||||
filedName="countersigningOfficer"
|
||||
@nameChange="userSelectNameChange"
|
||||
:nameStr="formInline.countersigningOfficer_dictText"
|
||||
type="checkbox"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 审核人员 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.regulatoryComplianceCheckProcess.auditor')">
|
||||
{{ $t('workCenter.regulatoryComplianceCheckProcess.auditor') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="auditor">
|
||||
<user-selection v-model="formInline.auditor"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.regulatoryComplianceCheckProcess.auditor')"
|
||||
:disabled="disabled"
|
||||
filedName="auditor"
|
||||
@nameChange="userSelectNameChange"
|
||||
:nameStr="formInline.auditor_dictText"
|
||||
type="radio"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 批准人员 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.regulatoryComplianceCheckProcess.approvingOfficer')">
|
||||
{{ $t('workCenter.regulatoryComplianceCheckProcess.approvingOfficer') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="approvingOfficer">
|
||||
<user-selection v-model="formInline.approvingOfficer"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.regulatoryComplianceCheckProcess.approvingOfficer')"
|
||||
:disabled="disabled"
|
||||
filedName="approvingOfficer"
|
||||
@nameChange="userSelectNameChange"
|
||||
:nameStr="formInline.approvingOfficer_dictText"
|
||||
type="radio"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-model>
|
||||
<!-- 编辑弹框 -->
|
||||
<main-finder-collect-edit-modal ref="editRef" @ok="editOk"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import JTable from '@/components/jero/JTable'
|
||||
import UserSelection from '@/components/selection/UserSelection'
|
||||
import { downFile } from '../../../../api/manage'
|
||||
import MainFinderCollectEditModal from './MainFinderCollectEditModal'
|
||||
|
||||
export default {
|
||||
name: 'MainFinderCollectBaseInfo',
|
||||
components: { JTable, UserSelection, MainFinderCollectEditModal },
|
||||
props: {
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('serialNumber'),
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{ // 条款号
|
||||
title: this.$t('clauseNo'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款内容
|
||||
title: this.$t('clauseContent'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型
|
||||
title: this.$t('vehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'vehicleType',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型状态
|
||||
title: this.$t('modelStatus'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('responsibleDepartment'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'authDept',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 评估人
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.appraiser'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'appraiser',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 评估结果
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.evaluationResult'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'evaluationResult',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'theStatusNotMeetRequirements',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 整改方案
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectificationPlan',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 整改周期
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectificationCycle',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 整改费用
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectificationCost',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 与其他项目共用性
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'sharedWithOtherProjects',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 共用后本项目所需费用
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'costOfThisItemAfterSharing',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 备注
|
||||
title: this.$t('remarks'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'remark',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 佐证材料
|
||||
title: this.$t('supportingMaterial'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'material',
|
||||
scopedSlots: { customRender: 'material' }
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
scopedSlots: { customRender: 'action' },
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 170
|
||||
}
|
||||
],
|
||||
dataSource: [],
|
||||
formInline: {},
|
||||
rules: {
|
||||
// 会签人员
|
||||
countersigningOfficer: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.regulatoryComplianceCheckProcess.countersigningOfficer') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
// 审核人员
|
||||
auditor: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.regulatoryComplianceCheckProcess.auditor') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
// 批准人员
|
||||
approvingOfficer: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.regulatoryComplianceCheckProcess.approvingOfficer') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
},
|
||||
url: {
|
||||
exportXlsUrl: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 拿到外面传进来的数据初始化,因为套了几层就不在外层初始化数据了
|
||||
initData (data) {
|
||||
// 给表单赋值
|
||||
this.formInline = Object.assign({}, data)
|
||||
this.isGetDataAfter = true
|
||||
},
|
||||
// 外层要获取数据
|
||||
getData () {
|
||||
// 把数据抛出,在线编辑不知道要不要抛
|
||||
const data = {}
|
||||
data.formInline = this.formInline
|
||||
return data
|
||||
},
|
||||
// 外层获取数据要过校验,返回false表示没有通过校验
|
||||
async getDataValidate () {
|
||||
let data = {}
|
||||
await this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
data.formInline = this.formInline
|
||||
} else {
|
||||
data = false
|
||||
}
|
||||
})
|
||||
return data
|
||||
},
|
||||
handleExportXls (fileName, fileSuffix = '.xls') {
|
||||
if (!fileName || typeof fileName !== 'string') {
|
||||
fileName = '导出文件'
|
||||
}
|
||||
const param = this.getQueryParams()
|
||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||
param.selections = this.selectedRowKeys.join(',')
|
||||
}
|
||||
console.log('导出参数', param)
|
||||
// 加一个大的提示
|
||||
const modalLoading = this.$info({
|
||||
title: '提示',
|
||||
content: <span>正在导出,请稍候 <a-spin size="small" /></span>,
|
||||
keyboard: false
|
||||
})
|
||||
// 把知道了这个按钮去掉
|
||||
this.$nextTick(() => {
|
||||
document.getElementsByClassName('ant-modal-confirm-btns')[0].style = 'display:none'
|
||||
})
|
||||
downFile(this.url.exportXlsUrl, param).then((data) => {
|
||||
if (!data) {
|
||||
this.$message.warning('文件下载失败')
|
||||
return
|
||||
}
|
||||
if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
||||
window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), fileName + fileSuffix)
|
||||
} else {
|
||||
const url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
|
||||
const link = document.createElement('a')
|
||||
link.style.display = 'none'
|
||||
link.href = url
|
||||
link.setAttribute('download', fileName + fileSuffix)
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link) // 下载完成移除元素
|
||||
window.URL.revokeObjectURL(url) // 释放掉blob对象
|
||||
}
|
||||
}).finally(() => {
|
||||
// 销毁这个提示
|
||||
modalLoading.destroy()
|
||||
})
|
||||
},
|
||||
userSelectNameChange (value, fieldName) {
|
||||
this.formInline[fieldName + '_dictText'] = value
|
||||
},
|
||||
// 编辑
|
||||
handleEdit (record) {
|
||||
this.$refs.editRef.edit(record)
|
||||
},
|
||||
// 编辑完成
|
||||
editOk (result) {
|
||||
const index = this.dataSource.findIndex(item => item.id === result.id)
|
||||
this.dataSource[index] = Object.assign({}, this.dataSource[index], result)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.form-add {
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
+194
@@ -0,0 +1,194 @@
|
||||
<template>
|
||||
<j-modal
|
||||
:title="title"
|
||||
:maskClosable="false"
|
||||
:width="width"
|
||||
:visible="visible"
|
||||
:confirm-loading="confirmLoading"
|
||||
switchFullscreen
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel">
|
||||
|
||||
<a-form :form="form">
|
||||
<!-- 评估人 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.regulatoryComplianceCheckProcess.appraiser')">
|
||||
<user-selection :placeholder="$t('pleaseSelect') + $t('workCenter.regulatoryComplianceCheckProcess.appraiser')"
|
||||
type="radio"
|
||||
:name-str="model.appraiser_dictText"
|
||||
filed-name="appraiser"
|
||||
@nameChange="handleNameChange"
|
||||
@listChange="handleUserChange"
|
||||
v-decorator="['appraiser', validatorRules.appraiser]" />
|
||||
</a-form-item>
|
||||
<!-- 评估结果 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.regulatoryComplianceCheckProcess.evaluationResult')">
|
||||
<j-dict-select-tag :placeholder="$t('pleaseSelect') + $t('workCenter.regulatoryComplianceCheckProcess.evaluationResult')"
|
||||
dict-code="evaluation_result"
|
||||
v-decorator="['evaluationResult', validatorRules.evaluationResult]" />
|
||||
</a-form-item>
|
||||
<!-- 不满足要求的现状 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements')">
|
||||
<a-textarea :placeholder="$t('pleaseEnter') + $t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements')"
|
||||
:maxLength="500"
|
||||
:autoSize="{minRows: 4, maxRows: 6}"
|
||||
v-decorator="['theStatusNotMeetRequirements', validatorRules.theStatusNotMeetRequirements]" />
|
||||
</a-form-item>
|
||||
<!-- 整改方案 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan')">
|
||||
<a-textarea :placeholder="$t('pleaseEnter') + $t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan')"
|
||||
:maxLength="500"
|
||||
:autoSize="{minRows: 4, maxRows: 6}"
|
||||
v-decorator="['rectificationPlan', validatorRules.rectificationPlan]" />
|
||||
</a-form-item>
|
||||
<!-- 整改周期 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle')"
|
||||
:maxLength="50"
|
||||
v-decorator="['rectificationCycle', validatorRules.rectificationCycle]" />
|
||||
</a-form-item>
|
||||
<!-- 整改费用 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('workCenter.regulatoryComplianceCheckProcess.rectificationCost')"
|
||||
:maxLength="50"
|
||||
v-decorator="['rectificationCost', validatorRules.rectificationCost]" />
|
||||
</a-form-item>
|
||||
<!-- 与其他项目共用性 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects')">
|
||||
<a-textarea :placeholder="$t('pleaseEnter') + $t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects')"
|
||||
:maxLength="500"
|
||||
:autoSize="{minRows: 4, maxRows: 6}"
|
||||
v-decorator="['sharedWithOtherProjects', validatorRules.sharedWithOtherProjects]" />
|
||||
</a-form-item>
|
||||
<!-- 共用后本项目所需费用 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing')"
|
||||
:maxLength="50"
|
||||
v-decorator="['costOfThisItemAfterSharing', validatorRules.costOfThisItemAfterSharing]" />
|
||||
</a-form-item>
|
||||
<!-- 备注 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('remarks')">
|
||||
<a-textarea :placeholder="$t('pleaseEnter') + $t('remarks')"
|
||||
:maxLength="500"
|
||||
:autoSize="{minRows: 4, maxRows: 6}"
|
||||
v-decorator="['remark', validatorRules.remark]" />
|
||||
</a-form-item>
|
||||
<!-- 佐证材料 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('supportingMaterial')">
|
||||
<j-upload return-id
|
||||
v-decorator="['supportingMaterial', validatorRules.supportingMaterial]" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UserSelection from '../../../../components/selection/UserSelection'
|
||||
export default {
|
||||
name: 'MainFinderCollectEditModal',
|
||||
components: { UserSelection },
|
||||
data () {
|
||||
return {
|
||||
title: this.$t('edit'),
|
||||
width: 800,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
form: this.$form.createForm(this),
|
||||
model: {},
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 4 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 20 }
|
||||
},
|
||||
validatorRules: {
|
||||
// 评估人
|
||||
appraiser: {
|
||||
rules: [{ required: true, message: this.$t('pleaseSelect') + this.$t('workCenter.regulatoryComplianceCheckProcess.appraiser') }],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
// 评估结果
|
||||
evaluationResult: {
|
||||
rules: [{ required: true, message: this.$t('pleaseSelect') + this.$t('workCenter.regulatoryComplianceCheckProcess.evaluationResult') }],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
// 不满足要求的现状
|
||||
newProductImplDate: {
|
||||
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements') }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
// 整改方案
|
||||
rectificationPlan: {
|
||||
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan') }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
// 整改周期
|
||||
rectificationCycle: {
|
||||
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle') }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
// 整改费用
|
||||
rectificationCost: {
|
||||
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost') }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
// 与其他项目共用性
|
||||
sharedWithOtherProjects: {
|
||||
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects') }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
// 共用后本项目所需费用
|
||||
costOfThisItemAfterSharing: {
|
||||
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing') }],
|
||||
validateTrigger: 'blur'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
edit (record) {
|
||||
this.form.resetFields()
|
||||
this.model = Object.assign({}, record)
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(this.model)
|
||||
})
|
||||
},
|
||||
// 选择评估人变化,更新责任部门为评估人的部门
|
||||
handleUserChange (list) {
|
||||
const data = list[0] || {}
|
||||
const obj = {
|
||||
authDept: data.orgCodeTxt // 部门
|
||||
}
|
||||
this.model = Object.assign(this.model, obj)
|
||||
this.form.setFieldsValue(obj)
|
||||
},
|
||||
handleNameChange (value, fieldName) {
|
||||
this.model[fieldName + '_dictText'] = value
|
||||
},
|
||||
close () {
|
||||
this.visible = false
|
||||
},
|
||||
handleOk () {
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.confirmLoading = true
|
||||
const formData = Object.assign(this.model, values)
|
||||
this.$emit('ok', formData)
|
||||
this.confirmLoading = false
|
||||
this.close()
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel () {
|
||||
this.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
+721
@@ -0,0 +1,721 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 业务分派信息部分 -->
|
||||
<div class="process-part-title">{{ $t('dispatchInformation') }}</div>
|
||||
|
||||
<a-form-model :model="formInline" class="form-add" :rules="rules" ref="ruleForm">
|
||||
<div class="form-flex-box">
|
||||
<!-- 排查任务是否下发 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.regulatoryComplianceCheckProcess.checkWhetherTheTaskIsDelivered')">
|
||||
{{ $t('workCenter.regulatoryComplianceCheckProcess.checkWhetherTheTaskIsDelivered') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="checkWhetherTheTaskIsDelivered">
|
||||
<j-dict-select-tag
|
||||
:placeholder="$t('pleaseSelect') + this.$t('workCenter.regulatoryComplianceCheckProcess.checkWhetherTheTaskIsDelivered')"
|
||||
dict-code="yn"
|
||||
v-model="formInline.checkWhetherTheTaskIsDelivered">
|
||||
</j-dict-select-tag>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-model>
|
||||
|
||||
<div class="center-operate-box">
|
||||
<!-- 下一步 -->
|
||||
<a-button type="primary" ghost :loading="loading" @click="handleNext">{{ $t('next') }}</a-button>
|
||||
</div>
|
||||
|
||||
<!-- 排查任务是否下发选择是的情况 -->
|
||||
<template v-if="clickNextAfter && formInline.checkWhetherTheTaskIsDelivered === YesOrNoEnum.YES.value">
|
||||
<!-- 操作区域 -->
|
||||
<div v-if="!disabled" class="table-operator">
|
||||
<!-- 批量选择人员 -->
|
||||
<a-button icon="setting" type="primary" ghost @click="batchCheckPerson">
|
||||
{{ $t('workCenter.regulatoryComplianceCheckProcess.batchSelector') }}
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
ref="table"
|
||||
rowKey="standardNumber"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="false"
|
||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||
:loading="loading">
|
||||
</j-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- 排查任务是否下发选择否的情况 -->
|
||||
<template v-else-if="clickNextAfter && formInline.checkWhetherTheTaskIsDelivered === YesOrNoEnum.NO.value">
|
||||
<!-- 操作区域 -->
|
||||
<div v-if="!disabled" class="table-operator">
|
||||
<!-- 导入 -->
|
||||
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
|
||||
<a-button icon="download" type="primary" ghost>{{ $t('import') }}</a-button>
|
||||
</a-upload>
|
||||
<!-- 模板下载 -->
|
||||
<a-button icon="download" type="primary" ghost @click="downTemplate($t('workCenter.regulatoryComplianceCheckProcess.mainFinderImportTemplate'))">
|
||||
{{ $t('templateDownload') }}
|
||||
</a-button>
|
||||
<!-- 导出, 文件名称:标准编号+标准名称+符合性排查?? -->
|
||||
<a-button icon="upload" type="primary" ghost @click="handleExportXls()">
|
||||
{{ $t('export') }}
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<j-expand-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
ref="table"
|
||||
rowKey="standardNumber"
|
||||
:columns="columnsEvaluate"
|
||||
:dataSource="dataSourceEvaluate"
|
||||
formIsDepend="evaluationResult"
|
||||
:extraForm="extraForm"
|
||||
:loading="loading">
|
||||
|
||||
<template slot="evaluationResult" slot-scope="{text, record}">
|
||||
<j-dict-select-tag
|
||||
style="width: 100%"
|
||||
:placeholder="$t('pleaseSelect')"
|
||||
dict-code="evaluation_result"
|
||||
v-model="record.evaluationResult">
|
||||
</j-dict-select-tag>
|
||||
</template>
|
||||
|
||||
</j-expand-table>
|
||||
</div>
|
||||
|
||||
<a-form-model :model="personFormInline" class="form-add" :rules="rules" ref="ruleForm">
|
||||
<div class="form-flex-box">
|
||||
<!-- 会签人员 自动带出法规工程师。可多选其他人?? -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.regulatoryComplianceCheckProcess.countersigningOfficer')">
|
||||
{{ $t('workCenter.regulatoryComplianceCheckProcess.countersigningOfficer') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="countersigningOfficer">
|
||||
<user-selection v-model="personFormInline.countersigningOfficer"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.regulatoryComplianceCheckProcess.countersigningOfficer')"
|
||||
:disabled="disabled"
|
||||
filedName="countersigningOfficer"
|
||||
@nameChange="userSelectNameChangeForm"
|
||||
:nameStr="personFormInline.countersigningOfficer_dictText"
|
||||
type="checkbox"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 审核人员 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.regulatoryComplianceCheckProcess.auditor')">
|
||||
{{ $t('workCenter.regulatoryComplianceCheckProcess.auditor') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="auditor">
|
||||
<user-selection v-model="personFormInline.auditor"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.regulatoryComplianceCheckProcess.auditor')"
|
||||
:disabled="disabled"
|
||||
filedName="auditor"
|
||||
@nameChange="userSelectNameChangeForm"
|
||||
:nameStr="personFormInline.auditor_dictText"
|
||||
type="radio"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 批准人员 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.regulatoryComplianceCheckProcess.approvingOfficer')">
|
||||
{{ $t('workCenter.regulatoryComplianceCheckProcess.approvingOfficer') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="approvingOfficer">
|
||||
<user-selection v-model="personFormInline.approvingOfficer"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.regulatoryComplianceCheckProcess.approvingOfficer')"
|
||||
:disabled="disabled"
|
||||
filedName="approvingOfficer"
|
||||
@nameChange="userSelectNameChangeForm"
|
||||
:nameStr="personFormInline.approvingOfficer_dictText"
|
||||
type="radio"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-model>
|
||||
</template>
|
||||
|
||||
<!-- 选用户弹框 -->
|
||||
<user-select-modal ref="userSelectModal" type="checkbox" @change="userSelectModalChange" @nameChange="userSelectNameChange"/>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { YesOrNoEnum } from '@/enums/commonEnums'
|
||||
import JExpandTable from '@/components/JExpandTable'
|
||||
import JTable from '@/components/jero/JTable'
|
||||
import UserSelection from '@/components/selection/UserSelection'
|
||||
import UserSelectModal from '@/components/selection/UserSelectModal'
|
||||
import Vue from 'vue'
|
||||
import { ACCESS_TOKEN, TENANT_ID } from '@/store/mutation-types'
|
||||
import store from '@/store'
|
||||
import { downFile, downloadFile } from '../../../../api/manage'
|
||||
|
||||
// 导入的加载提示
|
||||
let importModalLoading
|
||||
|
||||
export default {
|
||||
name: 'MainFinderDistributesBaseInfo',
|
||||
components: { JExpandTable, JTable, UserSelection, UserSelectModal },
|
||||
props: {
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
tokenHeader () {
|
||||
const head = { 'X-Access-Token': Vue.ls.get(ACCESS_TOKEN) }
|
||||
const tenantid = Vue.ls.get(TENANT_ID)
|
||||
if (tenantid) {
|
||||
head['tenant-id'] = tenantid
|
||||
}
|
||||
return head
|
||||
},
|
||||
importExcelUrl: function () {
|
||||
return `${window._CONFIG.domianURL}/${this.url.importExcelUrl}`
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
YesOrNoEnum,
|
||||
loading: false,
|
||||
formInline: {},
|
||||
rules: {
|
||||
// 排查任务是否下发
|
||||
checkWhetherTheTaskIsDelivered: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.regulatoryComplianceCheckProcess.checkWhetherTheTaskIsDelivered') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
// 会签人员
|
||||
countersigningOfficer: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.regulatoryComplianceCheckProcess.countersigningOfficer') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
// 审核人员
|
||||
auditor: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.regulatoryComplianceCheckProcess.auditor') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
// 批准人员
|
||||
approvingOfficer: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.regulatoryComplianceCheckProcess.approvingOfficer') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
},
|
||||
clickNextAfter: false,
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('serialNumber'),
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{ // 条款号
|
||||
title: this.$t('clauseNo'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款标题
|
||||
title: this.$t('clauseTitle'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseTitle',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款内容
|
||||
title: this.$t('clauseContent'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型
|
||||
title: this.$t('vehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'vehicleType',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型状态
|
||||
title: this.$t('modelStatus'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 设计工程师
|
||||
title: this.$t('designEngineer'),
|
||||
align: 'center',
|
||||
width: 300,
|
||||
dataIndex: 'designEngineer',
|
||||
customRender: (value, row, index) => {
|
||||
return <user-selection
|
||||
v-model={row.designEngineer}
|
||||
filedName={row.id} onNameChange={this.userNameChange}
|
||||
nameStr={row.designEngineer_dictText} showBtn={false}
|
||||
disabled={this.disabled} type={'checkbox'} placeholder={this.$t('pleaseSelect')} />
|
||||
}
|
||||
}
|
||||
],
|
||||
dataSource: [],
|
||||
selectedRowKeys: [],
|
||||
selectionRows: [],
|
||||
selectNames: '', // 选完人的名字,批量设置人需要用
|
||||
columnsEvaluate: [
|
||||
{ // 条款号
|
||||
title: this.$t('clauseNo'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款标题
|
||||
title: this.$t('clauseTitle'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseTitle',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款内容
|
||||
title: this.$t('clauseContent'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型
|
||||
title: this.$t('vehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'vehicleType',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型状态
|
||||
title: this.$t('modelStatus'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 评价结果
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.evaluationResult'),
|
||||
align: 'center',
|
||||
width: 300,
|
||||
dataIndex: 'evaluationResult',
|
||||
scopedSlots: { customRender: 'evaluationResult' }
|
||||
}
|
||||
],
|
||||
dataSourceEvaluate: [],
|
||||
extraForm: {
|
||||
1: { // 符合
|
||||
rules: {
|
||||
// 备注
|
||||
remark: { required: false, message: this.$t('pleaseEnter') + this.$t('remarks'), trigger: 'blur' },
|
||||
// 佐证材料
|
||||
file: { required: false, message: this.$t('pleaseUpload') + this.$t('supportingMaterial'), trigger: 'change' }
|
||||
},
|
||||
formArr: [
|
||||
{
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('remarks'),
|
||||
dbFieldName: 'remark'
|
||||
},
|
||||
{
|
||||
fieldShowType: 2,
|
||||
dbFieldTxt: this.$t('supportingMaterial'),
|
||||
dbFieldName: 'file'
|
||||
}
|
||||
]
|
||||
},
|
||||
2: { // 不符合
|
||||
rules: {
|
||||
// 整改周期
|
||||
rectificationCycle: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'), trigger: 'blur' },
|
||||
// 整改费用
|
||||
rectificationCost: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'), trigger: 'blur' },
|
||||
// 共用后本项目所需费用
|
||||
costOfThisItemAfterSharing: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'), trigger: 'blur' },
|
||||
// 不满足要求的现状
|
||||
theStatusNotMeetRequirements: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'), trigger: 'blur' },
|
||||
// 整改方案
|
||||
rectificationPlan: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'), trigger: 'blur' },
|
||||
// 与其他项目共用性
|
||||
sharedWithOtherProjects: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'), trigger: 'blur' }
|
||||
},
|
||||
formArr: [
|
||||
{ // 整改周期
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationCycle'
|
||||
},
|
||||
{ // 整改费用
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationCost'
|
||||
},
|
||||
{ // 共用后本项目所需费用
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'costOfThisItemAfterSharing'
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'theStatusNotMeetRequirements'
|
||||
},
|
||||
{ // 整改方案
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationPlan'
|
||||
},
|
||||
{ // 与其他项目共用性
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'sharedWithOtherProjects'
|
||||
}
|
||||
]
|
||||
},
|
||||
3: { // 不涉及
|
||||
rules: {
|
||||
// 备注
|
||||
remark: { required: false, message: this.$t('pleaseEnter') + this.$t('remarks'), trigger: 'blur' },
|
||||
// 佐证材料
|
||||
file: { required: false, message: this.$t('pleaseUpload') + this.$t('supportingMaterial'), trigger: 'change' }
|
||||
},
|
||||
formArr: [
|
||||
{
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('remarks'),
|
||||
dbFieldName: 'remark'
|
||||
},
|
||||
{
|
||||
fieldShowType: 2,
|
||||
dbFieldTxt: this.$t('supportingMaterial'),
|
||||
dbFieldName: 'file'
|
||||
}
|
||||
]
|
||||
},
|
||||
4: { // 待验证
|
||||
rules: {
|
||||
// 整改周期
|
||||
rectificationCycle: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'), trigger: 'blur' },
|
||||
// 整改费用
|
||||
rectificationCost: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'), trigger: 'blur' },
|
||||
// 共用后本项目所需费用
|
||||
costOfThisItemAfterSharing: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'), trigger: 'blur' },
|
||||
// 不满足要求的现状
|
||||
theStatusNotMeetRequirements: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'), trigger: 'blur' },
|
||||
// 整改方案
|
||||
rectificationPlan: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'), trigger: 'blur' },
|
||||
// 与其他项目共用性
|
||||
sharedWithOtherProjects: { required: true, message: this.$t('pleaseEnter') + this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'), trigger: 'blur' }
|
||||
},
|
||||
formArr: [
|
||||
{ // 整改周期
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationCycle'
|
||||
},
|
||||
{ // 整改费用
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationCost'
|
||||
},
|
||||
{ // 共用后本项目所需费用
|
||||
fieldShowType: 4,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'costOfThisItemAfterSharing'
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'theStatusNotMeetRequirements'
|
||||
},
|
||||
{ // 整改方案
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'rectificationPlan'
|
||||
},
|
||||
{ // 与其他项目共用性
|
||||
fieldShowType: 1,
|
||||
dbFieldTxt: this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'),
|
||||
fieldMustInput: true,
|
||||
dbFieldName: 'sharedWithOtherProjects'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
personFormInline: {},
|
||||
url: {
|
||||
downTemplateUrl: '',
|
||||
importExcelUrl: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 拿到外面传进来的数据初始化,因为套了几层就不在外层初始化数据了
|
||||
initData (data) {
|
||||
// 给表单赋值
|
||||
this.formInline = Object.assign({}, data)
|
||||
this.isGetDataAfter = true
|
||||
},
|
||||
// 外层要获取数据
|
||||
getData () {
|
||||
// 把数据抛出,在线编辑不知道要不要抛
|
||||
const data = {}
|
||||
data.formInline = this.formInline
|
||||
return data
|
||||
},
|
||||
// 外层获取数据要过校验,返回false表示没有通过校验
|
||||
async getDataValidate () {
|
||||
let data = {}
|
||||
await this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
data.formInline = this.formInline
|
||||
} else {
|
||||
data = false
|
||||
}
|
||||
})
|
||||
return data
|
||||
},
|
||||
// 下一步
|
||||
handleNext () {
|
||||
this.clickNextAfter = true
|
||||
},
|
||||
// 表格选中
|
||||
onSelectChange (selectedRowKeys, selectionRows) {
|
||||
this.selectedRowKeys = selectedRowKeys
|
||||
this.selectionRows = selectionRows
|
||||
},
|
||||
// 批量选择人员
|
||||
batchCheckPerson () {
|
||||
if (this.selectedRowKeys.length <= 0) {
|
||||
// 请选择要分发的数据
|
||||
this.$message.warning(this.$t('pleaseSelectDistributeData'))
|
||||
return
|
||||
}
|
||||
this.$refs.userSelectModal.open()
|
||||
},
|
||||
// 批量设置审批人选择人后的回调
|
||||
userSelectModalChange (value) {
|
||||
for (const item of this.selectedRowKeys) {
|
||||
const curr = this.dataSource.find(i => i.id === item)
|
||||
curr.designEngineer = value
|
||||
curr.designEngineer_dictText = this.selectNames
|
||||
}
|
||||
this.dataSource = JSON.parse(JSON.stringify(this.dataSource))
|
||||
this.selectedRowKeys = []
|
||||
},
|
||||
// 选人的名字获取
|
||||
userSelectNameChange (value) {
|
||||
this.selectNames = value
|
||||
},
|
||||
userNameChange (value, fieldName) {
|
||||
const dataIndex = this.dataSource.findIndex(item => item.id === fieldName)
|
||||
this.dataSource[dataIndex].designEngineer_dictText = value
|
||||
},
|
||||
// 导入
|
||||
handleImportExcel (info) {
|
||||
// 限制导入大于500MB
|
||||
if (info.file.size > 1024 * 1024 * 500) {
|
||||
this.$message.error('导入文件最大500MB!')
|
||||
info.fileList.pop()
|
||||
return
|
||||
}
|
||||
// 加一个大的提示
|
||||
if (!this.loading) {
|
||||
importModalLoading = this.$info({
|
||||
title: '提示',
|
||||
content: <span>正在导入,请稍候 <a-spin size="small" /></span>,
|
||||
keyboard: false
|
||||
})
|
||||
}
|
||||
this.loading = true
|
||||
// 把知道了这个按钮去掉
|
||||
this.$nextTick(() => {
|
||||
document.getElementsByClassName('ant-modal-confirm-btns')[0].style = 'display:none'
|
||||
})
|
||||
if (info.file.status !== 'uploading') {
|
||||
console.log(info.file, info.fileList)
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
// 销毁这个提示
|
||||
importModalLoading && importModalLoading.destroy()
|
||||
this.loading = false
|
||||
if (info.file.response.success) {
|
||||
// this.$message.success(`${info.file.name} 文件上传成功`);
|
||||
if (info.file.response.code === 201) {
|
||||
const { message, result: { msg, fileUrl, fileName } } = info.file.response
|
||||
const href = window._CONFIG.domianURL + fileUrl
|
||||
this.$warning({
|
||||
title: message,
|
||||
content: (<div>
|
||||
<span>{msg}</span><br />
|
||||
<span>具体详情请 <a href={href} target="_blank" download={fileName}>点击下载</a> </span>
|
||||
</div>
|
||||
)
|
||||
})
|
||||
} else {
|
||||
this.$message.success(info.file.response.message || `${info.file.name} 文件上传成功`)
|
||||
}
|
||||
// 推入表格中
|
||||
this.dataSourceEvaluate = info.file.response.result.map(item => {
|
||||
const uidGenerator = () => {
|
||||
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
||||
}
|
||||
return {
|
||||
uid: uidGenerator(),
|
||||
...item
|
||||
}
|
||||
})
|
||||
} else {
|
||||
if (Array.isArray(info.file.response.result) && info.file.response.result.length > 0) {
|
||||
this.messageLineFeed(this.$t('fileImportError'), info.file.response.result)
|
||||
} else {
|
||||
this.$message.warning(`${info.file.name} ${info.file.response.message}`)
|
||||
}
|
||||
}
|
||||
} else if (info.file.status === 'error') {
|
||||
// 销毁这个提示
|
||||
importModalLoading && importModalLoading.destroy()
|
||||
this.loading = false
|
||||
if (info.file.response.status === 500) {
|
||||
const data = info.file.response
|
||||
const token = Vue.ls.get(ACCESS_TOKEN)
|
||||
if (token && data.message.includes('Token失效')) {
|
||||
this.error({
|
||||
title: '登录已过期',
|
||||
content: '很抱歉,登录已过期,请重新登录',
|
||||
okText: '重新登录',
|
||||
mask: false,
|
||||
onOk: () => {
|
||||
store.dispatch('Logout').then(() => {
|
||||
Vue.ls.remove(ACCESS_TOKEN)
|
||||
window.location.reload()
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$message.warning(`文件上传失败: ${info.file.msg} `)
|
||||
}
|
||||
}
|
||||
},
|
||||
// 下载导入模板
|
||||
downTemplate (fileName) {
|
||||
if (!fileName || typeof fileName !== 'string') {
|
||||
fileName = '模板文件'
|
||||
}
|
||||
downloadFile(this.url.downTemplateUrl, fileName + '.xls')
|
||||
},
|
||||
handleExportXls (fileName, fileSuffix = '.xls') {
|
||||
if (!fileName || typeof fileName !== 'string') {
|
||||
fileName = '导出文件'
|
||||
}
|
||||
const param = this.getQueryParams()
|
||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||
param.selections = this.selectedRowKeys.join(',')
|
||||
}
|
||||
console.log('导出参数', param)
|
||||
// 加一个大的提示
|
||||
const modalLoading = this.$info({
|
||||
title: '提示',
|
||||
content: <span>正在导出,请稍候 <a-spin size="small" /></span>,
|
||||
keyboard: false
|
||||
})
|
||||
// 把知道了这个按钮去掉
|
||||
this.$nextTick(() => {
|
||||
document.getElementsByClassName('ant-modal-confirm-btns')[0].style = 'display:none'
|
||||
})
|
||||
downFile(this.url.exportXlsUrl, param).then((data) => {
|
||||
if (!data) {
|
||||
this.$message.warning('文件下载失败')
|
||||
return
|
||||
}
|
||||
if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
||||
window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), fileName + fileSuffix)
|
||||
} else {
|
||||
const url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
|
||||
const link = document.createElement('a')
|
||||
link.style.display = 'none'
|
||||
link.href = url
|
||||
link.setAttribute('download', fileName + fileSuffix)
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link) // 下载完成移除元素
|
||||
window.URL.revokeObjectURL(url) // 释放掉blob对象
|
||||
}
|
||||
}).finally(() => {
|
||||
// 销毁这个提示
|
||||
modalLoading.destroy()
|
||||
})
|
||||
},
|
||||
userSelectNameChangeForm (value, fieldName) {
|
||||
this.personFormInline[fieldName + '_dictText'] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.form-add {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.center-operate-box {
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
+251
@@ -0,0 +1,251 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="process-part-title">{{ $t('dispatchInformation') }}</div>
|
||||
|
||||
<div v-if="!disabled" class="table-operator">
|
||||
<!-- 导出, 文件名称:标准编号+标准名称+符合性排查?? -->
|
||||
<a-button icon="upload" type="primary" ghost @click="handleExportXls()">
|
||||
{{ $t('export') }}
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
ref="table"
|
||||
rowKey="standardNumber"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="false"
|
||||
:loading="loading">
|
||||
|
||||
<!-- 佐证材料 -->
|
||||
<template v-slot:material="{text, record}">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? record.material_dictText : global.emptyLine }}</template>
|
||||
<a v-if="text" class="link-a" @click="previewFile(record)">{{ record.material_dictText }}</a>
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
</j-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import JTable from '@/components/jero/JTable'
|
||||
import { downFile } from '../../../../api/manage'
|
||||
|
||||
export default {
|
||||
name: 'MainFinderSingleAuditBaseInfo',
|
||||
components: {
|
||||
JTable
|
||||
},
|
||||
props: {
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('serialNumber'),
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{ // 条款号
|
||||
title: this.$t('clauseNo'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseNo',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款内容
|
||||
title: this.$t('clauseContent'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型
|
||||
title: this.$t('vehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'vehicleType',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 车型状态
|
||||
title: this.$t('modelStatus'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('responsibleDepartment'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'authDept',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 评估人
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.appraiser'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'appraiser',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 评估结果
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.evaluationResult'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'evaluationResult',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'theStatusNotMeetRequirements',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 整改方案
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationPlan'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectificationPlan',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 整改周期
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCycle'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectificationCycle',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 整改费用
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.rectificationCost'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectificationCost',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 与其他项目共用性
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.sharedWithOtherProjects'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'sharedWithOtherProjects',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 共用后本项目所需费用
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.costOfThisItemAfterSharing'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'costOfThisItemAfterSharing',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 备注
|
||||
title: this.$t('remarks'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'remark',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 佐证材料
|
||||
title: this.$t('supportingMaterial'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'material',
|
||||
scopedSlots: { customRender: 'material' }
|
||||
}
|
||||
],
|
||||
dataSource: [],
|
||||
url: {
|
||||
exportXlsUrl: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 拿到外面传进来的数据初始化,因为套了几层就不在外层初始化数据了
|
||||
initData (data) {
|
||||
// 给表单赋值
|
||||
this.formInline = Object.assign({}, data)
|
||||
this.isGetDataAfter = true
|
||||
},
|
||||
// 外层要获取数据
|
||||
getData () {
|
||||
// 把数据抛出,在线编辑不知道要不要抛
|
||||
const data = {}
|
||||
data.formInline = this.formInline
|
||||
return data
|
||||
},
|
||||
// 外层获取数据要过校验,返回false表示没有通过校验
|
||||
async getDataValidate () {
|
||||
let data = {}
|
||||
await this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
data.formInline = this.formInline
|
||||
} else {
|
||||
data = false
|
||||
}
|
||||
})
|
||||
return data
|
||||
},
|
||||
handleExportXls (fileName, fileSuffix = '.xls') {
|
||||
if (!fileName || typeof fileName !== 'string') {
|
||||
fileName = '导出文件'
|
||||
}
|
||||
const param = this.getQueryParams()
|
||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||
param.selections = this.selectedRowKeys.join(',')
|
||||
}
|
||||
console.log('导出参数', param)
|
||||
// 加一个大的提示
|
||||
const modalLoading = this.$info({
|
||||
title: '提示',
|
||||
content: <span>正在导出,请稍候 <a-spin size="small" /></span>,
|
||||
keyboard: false
|
||||
})
|
||||
// 把知道了这个按钮去掉
|
||||
this.$nextTick(() => {
|
||||
document.getElementsByClassName('ant-modal-confirm-btns')[0].style = 'display:none'
|
||||
})
|
||||
downFile(this.url.exportXlsUrl, param).then((data) => {
|
||||
if (!data) {
|
||||
this.$message.warning('文件下载失败')
|
||||
return
|
||||
}
|
||||
if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
||||
window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), fileName + fileSuffix)
|
||||
} else {
|
||||
const url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
|
||||
const link = document.createElement('a')
|
||||
link.style.display = 'none'
|
||||
link.href = url
|
||||
link.setAttribute('download', fileName + fileSuffix)
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link) // 下载完成移除元素
|
||||
window.URL.revokeObjectURL(url) // 释放掉blob对象
|
||||
}
|
||||
}).finally(() => {
|
||||
// 销毁这个提示
|
||||
modalLoading.destroy()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -11,35 +11,49 @@
|
||||
|
||||
<a-form :form="form">
|
||||
<!-- 标准编号 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardNumber')">
|
||||
<a-form-item :labelCol="$i18n.locale === EN ? labelColEn : labelCol"
|
||||
:wrapperCol="$i18n.locale === EN ? wrapperColEn : wrapperCol"
|
||||
:label="$t('standardNumber')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('standardNumber')"
|
||||
:maxLength="50"
|
||||
v-decorator="['standardNumber', validatorRules.standardNumber]" />
|
||||
</a-form-item>
|
||||
<!-- 标准名称 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardNumber')">
|
||||
<a-form-item :labelCol="$i18n.locale === EN ? labelColEn : labelCol"
|
||||
:wrapperCol="$i18n.locale === EN ? wrapperColEn : wrapperCol"
|
||||
:label="$t('standardNumber')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('standardName')"
|
||||
:maxLength="50"
|
||||
v-decorator="['standardName', validatorRules.standardName]" />
|
||||
</a-form-item>
|
||||
<!-- 标准状态 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardState')">
|
||||
<j-dict-select-tag :placeholder="$t('pleaseEnter') + $t('standardState')"
|
||||
<a-form-item :labelCol="$i18n.locale === EN ? labelColEn : labelCol"
|
||||
:wrapperCol="$i18n.locale === EN ? wrapperColEn : wrapperCol"
|
||||
:label="$t('standardState')">
|
||||
<j-dict-select-tag :placeholder="$t('pleaseSelect') + $t('standardState')"
|
||||
dict-code="standard_state"
|
||||
v-decorator="['standardState', validatorRules.standardState]" />
|
||||
</a-form-item>
|
||||
<!-- 新生产车实施日期 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('newProductionVehicleImplementationDate')">
|
||||
<a-form-item :labelCol="$i18n.locale === EN ? labelColEn : labelCol"
|
||||
:wrapperCol="$i18n.locale === EN ? wrapperColEn : wrapperCol"
|
||||
:label="$t('newProductionVehicleImplementationDate')">
|
||||
<j-multiple-date-picker :placeholder="$t('pleaseSelect') + $t('newProductionVehicleImplementationDate')"
|
||||
fieldName="newProductImplDate"
|
||||
v-decorator="['newProductImplDate', validatorRules.newProductImplDate]" />
|
||||
</a-form-item>
|
||||
<!-- 新认证车实施日期 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('newCertifiedVehicleImplementationDate')">
|
||||
<a-form-item :labelCol="$i18n.locale === EN ? labelColEn : labelCol"
|
||||
:wrapperCol="$i18n.locale === EN ? wrapperColEn : wrapperCol"
|
||||
:label="$t('newCertifiedVehicleImplementationDate')">
|
||||
<j-multiple-date-picker :placeholder="$t('pleaseSelect') + $t('newCertifiedVehicleImplementationDate')"
|
||||
fieldName="newAuthImplDate"
|
||||
v-decorator="['newAuthImplDate', validatorRules.newAuthImplDate]" />
|
||||
</a-form-item>
|
||||
<!-- 分解单附件 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.regulatoryComplianceCheckProcess.resolutionAttachment')">
|
||||
<a-form-item :labelCol="$i18n.locale === EN ? labelColEn : labelCol"
|
||||
:wrapperCol="$i18n.locale === EN ? wrapperColEn : wrapperCol"
|
||||
:label="$t('workCenter.regulatoryComplianceCheckProcess.resolutionAttachment')">
|
||||
<j-upload return-id
|
||||
v-decorator="['resolutionAttachment', validatorRules.resolutionAttachment]" />
|
||||
</a-form-item>
|
||||
@@ -50,12 +64,13 @@
|
||||
|
||||
<script>
|
||||
import JMultipleDatePicker from '../../../../components/JMultipleDatePicker'
|
||||
import { addForeignSystemTree, editForeignSystemTree } from '../../../../api/standardRegulationLibraryApi'
|
||||
|
||||
export default {
|
||||
name: 'ManualAddModal',
|
||||
components: { JMultipleDatePicker },
|
||||
data () {
|
||||
return {
|
||||
EN: 'en-us',
|
||||
title: this.$t('operation'),
|
||||
width: 800,
|
||||
visible: false,
|
||||
@@ -64,11 +79,19 @@ export default {
|
||||
model: {},
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 4 }
|
||||
sm: { span: 6 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 20 }
|
||||
sm: { span: 18 }
|
||||
},
|
||||
labelColEn: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 10 }
|
||||
},
|
||||
wrapperColEn: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 14 }
|
||||
},
|
||||
validatorRules: {
|
||||
// 标准编号
|
||||
|
||||
Reference in New Issue
Block a user