update 会后管理流程
This commit is contained in:
+46
-1
@@ -310,6 +310,36 @@ const savePermissionApply = (params) => postAction('/process/esPermissionApplyFl
|
||||
// 权限申请流程业务数据
|
||||
const getPermissionApplyDataById = (params) => getAction('/espermissionapply/processEsPermissionApply/queryByProjectId', params)
|
||||
|
||||
/* 标准宣贯流程 */
|
||||
// 生成项目id
|
||||
const getStandardPromotionProjectId = (params) => getAction('/esinspect/esDeclareFlowController/getProjectId', params)
|
||||
// 详情信息
|
||||
const getStandardPromotionDetail = (params) => getAction('/esinspect/esDeclareFlowController/queryDetailByProjectId', params)
|
||||
// 发起
|
||||
const startStandardPromotion = (params) => postAction('/esinspect/esDeclareFlowController/flowStart', params)
|
||||
// 保存
|
||||
const saveStandardPromotion = (params) => postAction('/esinspect/esDeclareFlowController/flowSave', params)
|
||||
// 权限申请流程业务数据
|
||||
const getStandardPromotionDataById = (params) => getAction('/esdeclare/processEsDeclare/queryByProjectId', params)
|
||||
// 联络人管理-根据部门ids获取联络人
|
||||
const getLiaisonList = (params) => getAction('/laws/system/lawsContactManage/queryByDepartIds', params)
|
||||
|
||||
/* 会后管理流程 */
|
||||
// 生成项目id
|
||||
const getPostMeetingManageProjectId = (params) => getAction('/process/meetingManageFlow/getProjectId', params)
|
||||
// 详情信息
|
||||
const getPostMeetingManageDetail = (params) => getAction('/process/meetingManageFlow/queryDetailByProjectId', params)
|
||||
// 发起
|
||||
const startPostMeetingManage = (params) => postAction('/process/meetingManageFlow/flowStart', params)
|
||||
// 审批
|
||||
const approvalPostMeetingManage = (params) => postAction('/process/meetingManageFlow/flowApproval', params)
|
||||
// 转办
|
||||
const transferPostMeetingManage = (params) => getAction('/process/meetingManageFlow/flowTransfer', params)
|
||||
// 保存
|
||||
const savePostMeetingManage = (params) => postAction('/process/meetingManageFlow/flowSave', params)
|
||||
// 权限申请流程业务数据
|
||||
const getPostMeetingManageDataById = (params) => getAction('/meetingmanage/processMeetingManage/queryByProjectId', params)
|
||||
|
||||
export {
|
||||
getProcessNodeList,
|
||||
|
||||
@@ -465,5 +495,20 @@ export {
|
||||
approvalPermissionApply,
|
||||
transferPermissionApply,
|
||||
savePermissionApply,
|
||||
getPermissionApplyDataById
|
||||
getPermissionApplyDataById,
|
||||
|
||||
getStandardPromotionProjectId,
|
||||
getStandardPromotionDetail,
|
||||
startStandardPromotion,
|
||||
saveStandardPromotion,
|
||||
getStandardPromotionDataById,
|
||||
getLiaisonList,
|
||||
|
||||
getPostMeetingManageProjectId,
|
||||
getPostMeetingManageDetail,
|
||||
startPostMeetingManage,
|
||||
approvalPostMeetingManage,
|
||||
transferPostMeetingManage,
|
||||
savePostMeetingManage,
|
||||
getPostMeetingManageDataById
|
||||
}
|
||||
|
||||
@@ -204,7 +204,7 @@ export const ProcessKey = {
|
||||
// 标准宣贯流程
|
||||
STANDARD_PROMOTION: { text: 'standard_declare', value: 'standard_declare' },
|
||||
// 会后管理流程
|
||||
POST_MEETING_MANAGE: { text: 'permission_apply_process', value: 'permission_apply_process' }
|
||||
POST_MEETING_MANAGE: { text: 'meeting_manage', value: 'meeting_manage' }
|
||||
}
|
||||
|
||||
// 标准性质
|
||||
@@ -305,13 +305,13 @@ export const PermissionApply = new EsEnums({
|
||||
|
||||
// 标准宣贯流程
|
||||
export const StandardPromotion = new EsEnums({
|
||||
initiate: { text: '发起并归档', value: 'initiator_start', btn: 6 }
|
||||
initiate: { text: '发起并归档', value: 'initiator_start', btn: 7 }
|
||||
})
|
||||
|
||||
// 会后管理流程
|
||||
export const PostMeetingManage = new EsEnums({
|
||||
initiate: { text: '法规工程师发起', value: 'initiator_start', btn: 6 },
|
||||
leaderApproval: { text: '参会人员上传材料', value: 'leader_approval', btn: 7 }
|
||||
initiate: { text: '法规工程师发起', value: 'engineer_start', btn: 12 },
|
||||
attendeesUploadMaterials: { text: '参会人员上传材料', value: 'meeting_upload', btn: 15 }
|
||||
})
|
||||
|
||||
// 项目评估结果类型
|
||||
|
||||
+3
-1
@@ -207,7 +207,9 @@ export default {
|
||||
if (res.success) {
|
||||
const data = res.result || {}
|
||||
this.formInfo = data
|
||||
this.$refs.baseInfoForm.initData(data)
|
||||
this.$nextTick(() => {
|
||||
this.$refs.baseInfoForm.initData(data)
|
||||
})
|
||||
}
|
||||
})
|
||||
// 如果是待办进来,就获取详情数据
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
v-decorator="['userIdDictText', validatorRules.applicant]" />
|
||||
v-decorator="['userDictText', validatorRules.applicant]" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="8">
|
||||
@@ -316,7 +316,7 @@ export default {
|
||||
this.formInfo = data
|
||||
this.baseInfoForm.setFieldsValue({
|
||||
expirationDate: data.expirationDate,
|
||||
userIdDictText: data.userIdDictText,
|
||||
userDictText: data.userDictText,
|
||||
standardNumbers: data.standardNumbers,
|
||||
applyDetail: data.applyDetail
|
||||
})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<internal-detail-page :title="pageTitle" :content-padding="0">
|
||||
<internal-detail-page :title="pageTitle" :content-padding="0" :loading="loading">
|
||||
<!-- 标题右侧tab -->
|
||||
<template v-slot:titleRightCustom>
|
||||
<div class="table-operator-tab">
|
||||
@@ -27,7 +27,7 @@
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:maxLength="50"
|
||||
:disabled="disabled || processDisabled"
|
||||
v-decorator="['processName', validatorRules.processName]" />
|
||||
v-decorator="['prcName', validatorRules.processName]" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
@@ -36,8 +36,8 @@
|
||||
<a-date-picker :placeholder="$t('pleaseSelect') + $t('expirationDate')"
|
||||
style="width: 100%"
|
||||
:disabled="disabled || processDisabled"
|
||||
value-format="YYYY-MM-DD"
|
||||
v-decorator="['expirationDate']" />
|
||||
value-format="YYYY-MM-DD hh:mm:ss"
|
||||
v-decorator="['dueTime']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
@@ -47,7 +47,7 @@
|
||||
:maxLength="500"
|
||||
:rows="4"
|
||||
:disabled="disabled || processDisabled"
|
||||
v-decorator="['processExplain']" />
|
||||
v-decorator="['prcMes']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@@ -56,7 +56,7 @@
|
||||
<!-- 业务基本信息 -->
|
||||
<div class="process-part-title">{{ $t('basicServiceInformation') }}</div>
|
||||
|
||||
<base-info-form :disabled="currentNode > 1" :current-node="currentNode"/>
|
||||
<base-info-form ref="baseInfoForm" :disabled="currentNode !== PostMeetingManage.initiate.value" :current-node="currentNode"/>
|
||||
|
||||
<!-- 流程审批信息 -->
|
||||
<div class="process-part-title">{{ $t('processApprovalInformation') }}</div>
|
||||
@@ -66,38 +66,58 @@
|
||||
<a-textarea :placeholder="$t('pleaseEnter') + $t('remarks')"
|
||||
:maxLength="500"
|
||||
:rows="4"
|
||||
v-decorator="['remarks', validatorRules.remarks]" />
|
||||
v-decorator="['commitText', validatorRules.remarks]" />
|
||||
</a-form-item>
|
||||
<!--附件-->
|
||||
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')">
|
||||
<j-upload v-decorator="['file']" return-id />
|
||||
<j-upload v-decorator="['commitFile']" return-id />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
<!-- 人员信息 -->
|
||||
<div v-if="switchValue === 'user'" class="detail-page-scroll-content p-0">
|
||||
<process-detail-list :url="url">
|
||||
<personnel-info slot="personnelInfo" :data="personnelInfoData" :currentNode="currentNode"></personnel-info>
|
||||
<div v-show="switchValue === 'user'" class="detail-page-scroll-content p-0">
|
||||
<process-detail-list :process-key="processKey">
|
||||
<template #personnelInfo>
|
||||
<personnel-info ref="personnelInfo" :data="personnelInfoData" :current-node="currentNodeName" />
|
||||
</template>
|
||||
</process-detail-list>
|
||||
</div>
|
||||
|
||||
<div class="detail-page-bottom-operate-box">
|
||||
<a-button type="primary" :loading="loading" @click="handleSave" ghost><i class="iconfont icon-save" />{{ $t('preservation') }}</a-button>
|
||||
<a-button type="primary" :loading="loading" @click="handleSubmit" icon="upload">{{ $t('submit') }}</a-button>
|
||||
<a-button type="primary" :loading="loading" @click="handleAgree" icon="check-circle">{{ $t('agree') }}</a-button>
|
||||
<!--未参加-->
|
||||
<a-button v-if="1 & btn" type="primary" :loading="loading" @click="handleUncommitted" ghost icon="arrow-up">{{ $t('turnTo') }}</a-button>
|
||||
<!--转办-->
|
||||
<a-button v-if="2 & btn" type="primary" :loading="loading" @click="handleTurnTo" ghost icon="arrow-up">{{ $t('turnTo') }}</a-button>
|
||||
<!--保存-->
|
||||
<a-button v-if="4 & btn" type="primary" :loading="loading" @click="handleSave" ghost><i class="iconfont icon-save" />{{ $t('preservation') }}</a-button>
|
||||
<!--提交-->
|
||||
<a-button v-if="8 & btn" type="primary" :loading="loading" @click="handleSubmit" icon="upload">{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
<!--转办选人-->
|
||||
<user-select-modal ref="userSelectModal" check-required @change="continueTurnTo" />
|
||||
</internal-detail-page>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import '@assets/less/common.less'
|
||||
import PersonnelInfo from '@comp/PersonnelInfo'
|
||||
import ProcessDetailList from '@comp/ProcessDetailList'
|
||||
import InternalDetailPage from '@comp/InternalDetailPage'
|
||||
import BaseInfoForm from '@views/workCenter/postMeetingManageProcess/modules/BaseInfoForm'
|
||||
import { WorkCenterMixin } from '@/mixins/WorkCenterMixin'
|
||||
import UserSelectModal from '@comp/selection/UserSelectModal'
|
||||
import { PostMeetingManage, ProcessKey } from '@/enums/commonEnums'
|
||||
import {
|
||||
approvalPostMeetingManage,
|
||||
getPostMeetingManageDataById,
|
||||
getPostMeetingManageDetail,
|
||||
getPostMeetingManageProjectId, savePostMeetingManage, startPostMeetingManage, transferPostMeetingManage
|
||||
} from '@api/workCenter'
|
||||
|
||||
export default {
|
||||
name: 'PostMeetingManageProcess',
|
||||
components: { BaseInfoForm, PersonnelInfo, ProcessDetailList, InternalDetailPage },
|
||||
components: { UserSelectModal, BaseInfoForm, PersonnelInfo, ProcessDetailList, InternalDetailPage },
|
||||
mixins: [WorkCenterMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
@@ -119,8 +139,17 @@ export default {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 22 }
|
||||
},
|
||||
currentNode: '1',
|
||||
personnelInfoData: [], // 人员信息数据
|
||||
// 流程key
|
||||
processKey: ProcessKey.POST_MEETING_MANAGE.value,
|
||||
// 当前流程信息
|
||||
PostMeetingManage,
|
||||
info: {},
|
||||
formInfo: {},
|
||||
currentNode: '',
|
||||
currentNodeName: '',
|
||||
// 项目id
|
||||
projectId: '',
|
||||
btn: 0,
|
||||
validatorRules: {
|
||||
// 流程名称
|
||||
processName: {
|
||||
@@ -144,8 +173,9 @@ export default {
|
||||
validateTrigger: 'blur'
|
||||
}
|
||||
},
|
||||
// 流程表单
|
||||
processInfoForm: this.$form.createForm(this),
|
||||
baseInfoForm: this.$form.createForm(this),
|
||||
// 流程审批信息表单
|
||||
approvalInfoForm: this.$form.createForm(this),
|
||||
url: {
|
||||
list: '' // 人员信息右侧表的分页查询接口
|
||||
@@ -154,27 +184,280 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
pageTitle () {
|
||||
return this.$t('flowCenter') + this.$route.meta.title
|
||||
return this.$t('flowCenter') + this.$route.meta.title + '(' + this.nodeTitle + ')'
|
||||
},
|
||||
// 节点标题
|
||||
nodeTitle () {
|
||||
return this.$route.query.taskName || PostMeetingManage.initiate.text
|
||||
},
|
||||
processDisabled () {
|
||||
return +this.currentNode > 1
|
||||
return this.currentNode !== PostMeetingManage.initiate.value
|
||||
}
|
||||
},
|
||||
created () {
|
||||
const { projectId, nodeId, taskName } = this.$route.query
|
||||
// 发起、草稿进来没有nodeId,就默认发起节点
|
||||
this.currentNode = nodeId || PostMeetingManage.initiate.value
|
||||
this.currentNodeName = taskName || PostMeetingManage.initiate.text
|
||||
this.projectId = projectId
|
||||
this.btn = PostMeetingManage.propertyOfValue('btn', this.currentNode) || 0
|
||||
// 如果有nodeId,但是匹配不到任何节点,就是是增加的审批节点
|
||||
if (nodeId && !PostMeetingManage.keyOfValue(nodeId)) {
|
||||
// 审批和同意按钮
|
||||
this.btn = 8
|
||||
}
|
||||
// 查询人员信息
|
||||
this.getPersonInfoStructure(this.processKey, () => {
|
||||
this.initPersonInfoData(this.currentNode === PostMeetingManage.initiate.value)
|
||||
})
|
||||
// 如果是待办进来,就获取详情数据
|
||||
if (this.$route.query.projectId) {
|
||||
this.loadPage()
|
||||
return
|
||||
}
|
||||
// 如果是新建进来,就获取项目id
|
||||
this.getProjectId()
|
||||
},
|
||||
methods: {
|
||||
switchChange (value) {
|
||||
this.switchValue = value
|
||||
/**
|
||||
* 获取项目id
|
||||
*/
|
||||
getProjectId () {
|
||||
this.loading = true
|
||||
// 否则就是创建一个新的流程
|
||||
getPostMeetingManageProjectId().then(res => {
|
||||
if (res) {
|
||||
this.projectId = res + ''
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
handleSave () {
|
||||
// if (this.loading) return
|
||||
/**
|
||||
* 获取页面详情
|
||||
*/
|
||||
loadPage () {
|
||||
const { projectId, taskId } = this.$route.query
|
||||
this.loading = true
|
||||
// 获取业务数据
|
||||
getPostMeetingManageDataById({ projectId: this.projectId }).then(res => {
|
||||
if (res.success) {
|
||||
const data = res.result || {}
|
||||
// 保存并回显表单信息
|
||||
this.formInfo = data
|
||||
this.$nextTick(() => {
|
||||
this.$refs.baseInfoForm.initData(data)
|
||||
})
|
||||
}
|
||||
})
|
||||
getPostMeetingManageDetail({
|
||||
projectId,
|
||||
taskId
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
const data = res.result || {}
|
||||
const processAll = data.processAll || {}
|
||||
const processApprovalRecord = data.processApprovalRecord || {}
|
||||
this.info = data
|
||||
// 页面回显
|
||||
this.processInfoForm && this.processInfoForm.setFieldsValue({
|
||||
prcName: processAll.prcName,
|
||||
dueTime: processAll.dueTime,
|
||||
prcMes: processAll.prcMes
|
||||
})
|
||||
this.approvalInfoForm && this.approvalInfoForm.setFieldsValue({
|
||||
commitText: processApprovalRecord.commitText,
|
||||
commitFile: processApprovalRecord.commitFile
|
||||
})
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 获取人员信息
|
||||
getPersonInfo (isValidate = true) {
|
||||
let personnelObj = {}
|
||||
const funName = isValidate ? 'getDataObjVerify' : 'getDataObj'
|
||||
// 节点1:所有的人员信息
|
||||
if (this.currentNode === PostMeetingManage.initiate.value) {
|
||||
// 人员信息的数据, 处理成对象
|
||||
personnelObj = this.$refs.personnelInfo[funName]()
|
||||
if (!personnelObj) {
|
||||
return false
|
||||
}
|
||||
// List拆成数组
|
||||
for (const key in personnelObj) {
|
||||
if (personnelObj[key] && key.includes('List')) {
|
||||
personnelObj[key] = personnelObj[key].split(',')
|
||||
}
|
||||
}
|
||||
}
|
||||
return personnelObj
|
||||
},
|
||||
// 获取页面参数
|
||||
async getPageParams (isValidate = true) {
|
||||
const params = {}
|
||||
// 收集所有表单信息
|
||||
let formDataList = []
|
||||
if (isValidate) {
|
||||
formDataList = await this.validateFormList(this.processInfoForm, this.approvalInfoForm)
|
||||
formDataList[2] = await this.$refs.baseInfoForm.getDataValidate()
|
||||
} else {
|
||||
formDataList = [
|
||||
this.processInfoForm.getFieldsValue(),
|
||||
this.approvalInfoForm.getFieldsValue(),
|
||||
this.$refs.baseInfoForm.getData()
|
||||
]
|
||||
}
|
||||
// 收集人员信息
|
||||
const getPersonInfo = this.getPersonInfo(isValidate)
|
||||
if (!getPersonInfo) {
|
||||
throw new Error('user')
|
||||
}
|
||||
|
||||
// 开始处理信息
|
||||
// 流程信息
|
||||
params.processAll = Object.assign({}, this.info.processAll, formDataList[0], {
|
||||
projectId: this.projectId,
|
||||
taskId: this.$route.query.taskId
|
||||
})
|
||||
|
||||
// 处理其他参数
|
||||
params.map = Object.assign({}, getPersonInfo)
|
||||
|
||||
// 流程审批信息
|
||||
params.processApprovalRecord = Object.assign({}, this.info.processApprovalRecord, formDataList[1], {
|
||||
projectId: this.projectId
|
||||
})
|
||||
|
||||
// 流程业务信息
|
||||
params.processMeetingManage = Object.assign({}, formDataList[2], {
|
||||
projectId: this.projectId,
|
||||
id: this.formInfo.id
|
||||
})
|
||||
|
||||
return params
|
||||
},
|
||||
/**
|
||||
* 转办弹框
|
||||
*/
|
||||
handleTurnTo () {
|
||||
this.$refs.userSelectModal.open()
|
||||
},
|
||||
/**
|
||||
* 转办
|
||||
*/
|
||||
continueTurnTo (userId) {
|
||||
if (this.loading) return
|
||||
this.loading = true
|
||||
const params = {
|
||||
taskId: this.$route.query.taskId,
|
||||
userId
|
||||
}
|
||||
transferPostMeetingManage(params).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 保存
|
||||
*/
|
||||
handleSave () {
|
||||
if (this.loading) return
|
||||
this.loading = true
|
||||
this.getPageParams(false).then(res => {
|
||||
console.log(res)
|
||||
return savePostMeetingManage(res)
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).catch((err) => {
|
||||
console.log(err)
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 提交
|
||||
*/
|
||||
handleSubmit () {
|
||||
if (this.loading) return
|
||||
this.currentNode = +this.currentNode + 1 + ''
|
||||
// 发起流程并且没有被驳回,调发起接口,否则调审批接口
|
||||
if (!(this.currentNode === PostMeetingManage.initiate.value && this.$route.query.taskId)) {
|
||||
this.handleAgree()
|
||||
return
|
||||
}
|
||||
this.loading = true
|
||||
this.getPageParams().then(res => {
|
||||
console.log(res)
|
||||
return startPostMeetingManage(res)
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).catch((err) => {
|
||||
this.switchChange(err.message)
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 同意
|
||||
*/
|
||||
handleAgree () {
|
||||
if (this.loading) return
|
||||
this.currentNode = +this.currentNode + 1 + ''
|
||||
this.loading = true
|
||||
this.getPageParams().then(res => {
|
||||
res.map.pass = true
|
||||
return approvalPostMeetingManage(res)
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).catch((err) => {
|
||||
this.switchChange(err.message)
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 验证所有表单
|
||||
* @param formList - 多个需要校验的表单实例
|
||||
*/
|
||||
validateFormList (...formList) {
|
||||
const promiseList = []
|
||||
for (const form of formList) {
|
||||
promiseList.push(
|
||||
new Promise((resolve, reject) => {
|
||||
form.validateFields((err, val) => {
|
||||
if (!err) {
|
||||
resolve(val)
|
||||
} else {
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
)
|
||||
}
|
||||
return Promise.all(promiseList).catch(() => {
|
||||
throw new Error('base')
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<a-form-model :model="formInline" class="form-add" :rules="rules" ref="ruleForm">
|
||||
<div class="collapsible-panel-form">
|
||||
<div class="form-flex-box collapsible-panel-form-content collapsible-content-no-head">
|
||||
<div class="form-flex-box">
|
||||
<!-- 分标委名称 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
@@ -10,9 +10,10 @@
|
||||
{{ $t('workCenter.postMeetingManageProcess.subStandardizationCommitteeName') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="subStandardizationCommitteeName">
|
||||
<a-select v-model="formInline.subStandardizationCommitteeName"
|
||||
<a-form-model-item class="item-model" prop="standardizationFirstId">
|
||||
<a-select v-model="formInline.standardizationFirstId"
|
||||
:disabled="disabled"
|
||||
@change="changeSubStandardizationCommitteeList"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.postMeetingManageProcess.subStandardizationCommitteeName')">
|
||||
<a-select-option v-for="item in subStandardizationCommitteeList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
|
||||
</a-select>
|
||||
@@ -25,8 +26,8 @@
|
||||
{{ $t('workCenter.postMeetingManageProcess.workGroupName') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="workGroupName">
|
||||
<a-select v-model="formInline.workGroupName"
|
||||
<a-form-model-item class="item-model" prop="standardizationSecondId">
|
||||
<a-select v-model="formInline.standardizationSecondId"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.postMeetingManageProcess.workGroupName')">
|
||||
<a-select-option v-for="item in workGroupList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
|
||||
@@ -40,13 +41,13 @@
|
||||
{{ $t('workCenter.postMeetingManageProcess.standardNumber') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="standardNumber">
|
||||
<a-form-model-item class="item-model" prop="standardNo">
|
||||
<standard-selection source="1"
|
||||
:disabledSourceSearch="true"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.postMeetingManageProcess.standardNumber')"
|
||||
@nameChange="changeStandardName"
|
||||
v-model="formInline.standardNumber" />
|
||||
v-model="formInline.standardNo" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 标准名称 -->
|
||||
@@ -71,9 +72,10 @@
|
||||
{{ $t('workCenter.postMeetingManageProcess.meetingName') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="meetingName">
|
||||
<a-input v-model="formInline.meetingName"
|
||||
<a-form-model-item class="item-model" prop="name">
|
||||
<a-input v-model="formInline.name"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.postMeetingManageProcess.meetingName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -85,23 +87,23 @@
|
||||
{{ $t('workCenter.postMeetingManageProcess.attendanceDate') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="attendanceDate">
|
||||
<a-form-model-item class="item-model" prop="participationTime">
|
||||
<j-date date-format="YYYY-MM-DD" style="width: 100%" showType="day" :disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect') + $t('workCenter.postMeetingManageProcess.attendanceDate')"
|
||||
v-model="formInline.attendanceDate" />
|
||||
v-model="formInline.participationTime" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 相关材料 -->
|
||||
<div class="box-title-text form-flex-item" v-if="currentNode === '2'">
|
||||
<div class="box-title-text form-flex-item" v-if="isAttendeesUploadMaterials">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('workCenter.postMeetingManageProcess.relevantData')">
|
||||
{{ $t('workCenter.postMeetingManageProcess.relevantData') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="relevantData">
|
||||
<a-button type="primary" class="button-text" @click="clickButtonToUpload" :disabled="disabled">
|
||||
<a-button type="primary" class="button-text" @click="clickButtonToUpload">
|
||||
{{
|
||||
(formInline.relevantData === 'null' || formInline.relevantData === '' || formInline.relevantData === null || formInline.relevantData === undefined)
|
||||
(formInline.fileIds === 'null' || formInline.fileIds === '' || formInline.fileIds === null || formInline.fileIds === undefined)
|
||||
? $t('uploadFile.clickUpload')
|
||||
: $t('uploadFile.viewUploadedFiles')
|
||||
}}
|
||||
@@ -111,7 +113,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- 上传 -->
|
||||
<upload-file ref="uploadFile" @change="uploadFileChange" :return-url="false"></upload-file>
|
||||
<upload-file ref="uploadFile" @change="uploadFileChange" :return-url="false" :disabled="disabled"></upload-file>
|
||||
</a-form-model>
|
||||
</template>
|
||||
|
||||
@@ -119,6 +121,7 @@
|
||||
import UploadFile from '@comp/UploadFile'
|
||||
import StandardSelection from '@comp/selection/StandardSelection'
|
||||
import { queryTreeList } from '@api/businessSupport'
|
||||
import { PostMeetingManage } from '@/enums/commonEnums'
|
||||
|
||||
export default {
|
||||
name: 'BaseInfoForm',
|
||||
@@ -139,13 +142,15 @@ export default {
|
||||
formInline: {},
|
||||
// 操作类型
|
||||
operationType: null,
|
||||
// 分标委-工作组树结构
|
||||
treeData: [],
|
||||
// 分标委
|
||||
subStandardizationCommitteeList: [],
|
||||
// 工作组
|
||||
workGroupList: [],
|
||||
rules: {
|
||||
// 分标委名称
|
||||
subStandardizationCommitteeName: [
|
||||
standardizationFirstId: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.postMeetingManageProcess.subStandardizationCommitteeName') + this.$t('cannotEmpty'),
|
||||
@@ -153,7 +158,7 @@ export default {
|
||||
}
|
||||
],
|
||||
// 会议名称
|
||||
meetingName: [
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.postMeetingManageProcess.meetingName') + this.$t('cannotEmpty'),
|
||||
@@ -161,7 +166,7 @@ export default {
|
||||
}
|
||||
],
|
||||
// 参会日期
|
||||
attendanceDate: [
|
||||
participationTime: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.postMeetingManageProcess.attendanceDate') + this.$t('cannotEmpty'),
|
||||
@@ -171,6 +176,16 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 是否第一个节点
|
||||
isBaseInfo () {
|
||||
return this.currentNode === PostMeetingManage.initiate.value
|
||||
},
|
||||
// 是否第二个节点
|
||||
isAttendeesUploadMaterials () {
|
||||
return this.currentNode === PostMeetingManage.attendeesUploadMaterials.value
|
||||
}
|
||||
},
|
||||
created () {
|
||||
// 分标委、工作组下拉
|
||||
this.initWorkList()
|
||||
@@ -183,45 +198,49 @@ export default {
|
||||
queryTreeList().then(res => {
|
||||
if (res.success) {
|
||||
console.log(res)
|
||||
for (const item of res.result.children) {
|
||||
this.subStandardizationCommitteeList.push(item)
|
||||
if (item.children && item.children.length) {
|
||||
this.workGroupList.push(...item.children)
|
||||
}
|
||||
}
|
||||
this.treeData = res.result.children || []
|
||||
this.subStandardizationCommitteeList.push(...this.treeData)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 联动二级
|
||||
changeSubStandardizationCommitteeList (id) {
|
||||
this.$set(this.formInline, 'standardizationSecondId', undefined)
|
||||
const findNode = this.treeData.find(item => item.id === id)
|
||||
this.workGroupList = findNode.children
|
||||
},
|
||||
// 拿到外面传进来的数据初始化,因为套了几层就不在外层初始化数据了
|
||||
initData (data) {
|
||||
this.data = data
|
||||
this.model = Object.assign({}, data)
|
||||
// 给表单赋值
|
||||
// this.formInline =
|
||||
this.formInline = {
|
||||
...data
|
||||
}
|
||||
},
|
||||
// 外层要获取数据
|
||||
getData () {
|
||||
// 把数据抛出,在线编辑不知道要不要抛
|
||||
const data = {}
|
||||
data.formInline = this.formInline
|
||||
return data
|
||||
return { ...this.formInline }
|
||||
},
|
||||
// 外层获取数据要过校验,返回false表示没有通过校验
|
||||
getDataValidate (callback) {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
const data = {}
|
||||
data.formInline = this.formInline
|
||||
callback(data)
|
||||
}
|
||||
// 获取数据并验证
|
||||
getDataValidate () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
const data = { ...this.formInline }
|
||||
resolve(data)
|
||||
} else {
|
||||
reject(new Error('base'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 选择标准带出名称
|
||||
changeStandardName (val) {
|
||||
this.formInline.esName = val
|
||||
this.formInline.standardName = val
|
||||
},
|
||||
// 点击点击上传按钮
|
||||
clickButtonToUpload (item) {
|
||||
this.$refs.uploadFile.open(item.fileId)
|
||||
clickButtonToUpload () {
|
||||
this.$refs.uploadFile.open(this.formInline.fileIds)
|
||||
// this.uploadName = item.dbFieldName
|
||||
},
|
||||
// 文件上传改变后的回调
|
||||
@@ -233,7 +252,8 @@ export default {
|
||||
})
|
||||
}
|
||||
/** 赋值给当前对应的表单文件 */
|
||||
this.form.file = attIdList.join(',')
|
||||
this.$set(this.formInline, 'fileIds', attIdList.join(','))
|
||||
// this.formInline.attachment = attIdList.join(',')
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -241,8 +261,5 @@ export default {
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
.collapsible-content-no-head {
|
||||
border-top: 1px solid #E5E6EB;
|
||||
border-radius: 8px 8px 8px 8px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<internal-detail-page :title="pageTitle" :content-padding="0">
|
||||
<internal-detail-page :title="pageTitle" :content-padding="0" :loading="loading">
|
||||
<!--基本信息-->
|
||||
<div class="detail-page-scroll-content" v-show="switchValue === 'base'">
|
||||
<!-- 流程信息 -->
|
||||
@@ -13,7 +13,7 @@
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:maxLength="50"
|
||||
:disabled="disabled || processDisabled"
|
||||
v-decorator="['processName', validatorRules.processName]" />
|
||||
v-decorator="['prcName', validatorRules.processName]" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
@@ -22,8 +22,8 @@
|
||||
<a-date-picker :placeholder="$t('pleaseSelect') + $t('expirationDate')"
|
||||
style="width: 100%"
|
||||
:disabled="disabled || processDisabled"
|
||||
value-format="YYYY-MM-DD"
|
||||
v-decorator="['expirationDate']" />
|
||||
value-format="YYYY-MM-DD hh:mm:ss"
|
||||
v-decorator="['dueTime']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
@@ -33,7 +33,7 @@
|
||||
:maxLength="500"
|
||||
:rows="4"
|
||||
:disabled="disabled || processDisabled"
|
||||
v-decorator="['processExplain']" />
|
||||
v-decorator="['prcMes']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@@ -41,8 +41,7 @@
|
||||
|
||||
<!-- 业务基本信息 -->
|
||||
<div class="process-part-title">{{ $t('basicServiceInformation') }}</div>
|
||||
|
||||
<base-info-form/>
|
||||
<base-info-form :disabled="disabled" ref="baseInfoForm"/>
|
||||
|
||||
<!-- 流程审批信息 -->
|
||||
<div class="process-part-title">{{ $t('processApprovalInformation') }}</div>
|
||||
@@ -52,26 +51,37 @@
|
||||
<a-textarea :placeholder="$t('pleaseEnter') + $t('remarks')"
|
||||
:maxLength="500"
|
||||
:rows="4"
|
||||
v-decorator="['remarks', validatorRules.remarks]" />
|
||||
v-decorator="['commitText', validatorRules.remarks]" />
|
||||
</a-form-item>
|
||||
<!--附件-->
|
||||
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')">
|
||||
<j-upload v-decorator="['file']" return-id />
|
||||
<j-upload v-decorator="['commitFile']" return-id />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
|
||||
<div class="detail-page-bottom-operate-box">
|
||||
<a-button type="primary" :loading="loading" @click="handleSave" ghost><i class="iconfont icon-save" />{{ $t('preservation') }}</a-button>
|
||||
<a-button type="primary" :loading="loading" @click="handleSubmit" icon="upload">{{ $t('submit') }}</a-button>
|
||||
<a-button type="primary" :loading="loading" @click="handleAgree" icon="check-circle">{{ $t('agree') }}</a-button>
|
||||
<!--取消-->
|
||||
<a-button v-if="1 & btn" type="primary" :loading="loading" ghost @click="handleCancel">{{ $t('cancel') }}</a-button>
|
||||
<!--保存-->
|
||||
<a-button v-if="2 & btn" type="primary" :loading="loading" @click="handleSave" ghost><i class="iconfont icon-save" />{{ $t('preservation') }}</a-button>
|
||||
<!--提交-->
|
||||
<a-button v-if="4 & btn" type="primary" :loading="loading" @click="handleSubmit" icon="upload">{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
</internal-detail-page>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import '@assets/less/common.less'
|
||||
import InternalDetailPage from '@comp/InternalDetailPage'
|
||||
import BaseInfoForm from '@views/workCenter/standardPromotionProcess/modules/BaseInfoForm'
|
||||
import { ProcessKey, StandardPromotion } from '@/enums/commonEnums'
|
||||
import {
|
||||
getStandardPromotionDataById, getStandardPromotionDetail,
|
||||
getStandardPromotionProjectId,
|
||||
saveStandardPromotion,
|
||||
startStandardPromotion
|
||||
} from '@api/workCenter'
|
||||
|
||||
export default {
|
||||
name: 'StandardPromotionProcess',
|
||||
@@ -80,7 +90,6 @@ export default {
|
||||
return {
|
||||
loading: false,
|
||||
switchValue: 'base',
|
||||
disabled: false,
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 4 }
|
||||
@@ -97,8 +106,17 @@ export default {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 22 }
|
||||
},
|
||||
currentNode: '1',
|
||||
personnelInfoData: [], // 人员信息数据
|
||||
// 流程key
|
||||
processKey: ProcessKey.STANDARD_PROMOTION.value,
|
||||
// 当前流程信息
|
||||
StandardPromotion,
|
||||
info: {},
|
||||
formInfo: {},
|
||||
currentNode: '',
|
||||
currentNodeName: '',
|
||||
// 项目id
|
||||
projectId: '',
|
||||
btn: 0,
|
||||
validatorRules: {
|
||||
// 流程名称
|
||||
processName: {
|
||||
@@ -122,37 +140,222 @@ export default {
|
||||
validateTrigger: 'blur'
|
||||
}
|
||||
},
|
||||
// 流程表单
|
||||
processInfoForm: this.$form.createForm(this),
|
||||
baseInfoForm: this.$form.createForm(this),
|
||||
approvalInfoForm: this.$form.createForm(this),
|
||||
url: {
|
||||
list: '' // 人员信息右侧表的分页查询接口
|
||||
}
|
||||
// 流程审批信息表单
|
||||
approvalInfoForm: this.$form.createForm(this)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
pageTitle () {
|
||||
return this.$t('flowCenter') + this.$route.meta.title
|
||||
return this.$t('flowCenter') + this.$route.meta.title + '(' + this.nodeTitle + ')'
|
||||
},
|
||||
// 节点标题
|
||||
nodeTitle () {
|
||||
return this.$route.query.taskName || StandardPromotion.initiate.text
|
||||
},
|
||||
// 禁用业务表单
|
||||
disabled () {
|
||||
return !this.isInitiate
|
||||
},
|
||||
// 流程信息禁用
|
||||
processDisabled () {
|
||||
return +this.currentNode > 1
|
||||
return this.currentNode !== StandardPromotion.initiate.value
|
||||
},
|
||||
// 是否发起节点(节点1)
|
||||
isInitiate () {
|
||||
return this.currentNode === StandardPromotion.initiate.value
|
||||
}
|
||||
// leaderApproval
|
||||
// standardApproval
|
||||
},
|
||||
created () {
|
||||
const { projectId, nodeId, taskName } = this.$route.query
|
||||
// 发起、草稿进来没有nodeId,就默认发起节点
|
||||
this.currentNode = nodeId || StandardPromotion.initiate.value
|
||||
this.currentNodeName = taskName || StandardPromotion.initiate.text
|
||||
this.projectId = projectId
|
||||
this.btn = StandardPromotion.propertyOfValue('btn', this.currentNode) || 0
|
||||
// 如果有nodeId,但是匹配不到任何节点,就是是增加的审批节点
|
||||
if (nodeId && !StandardPromotion.keyOfValue(nodeId)) {
|
||||
// 提交按钮
|
||||
this.btn = 4
|
||||
}
|
||||
// 如果是待办进来,就获取详情数据
|
||||
if (this.$route.query.projectId) {
|
||||
this.loadPage()
|
||||
return
|
||||
}
|
||||
// 如果是新建进来,就获取项目id
|
||||
this.getProjectId()
|
||||
},
|
||||
methods: {
|
||||
switchChange (value) {
|
||||
this.switchValue = value
|
||||
/**
|
||||
* 获取项目id
|
||||
*/
|
||||
getProjectId () {
|
||||
this.loading = true
|
||||
// 否则就是创建一个新的流程
|
||||
getStandardPromotionProjectId().then(res => {
|
||||
if (res) {
|
||||
this.projectId = res + ''
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
handleSave () {
|
||||
// if (this.loading) return
|
||||
/**
|
||||
* 获取页面详情
|
||||
*/
|
||||
loadPage () {
|
||||
const { projectId, taskId } = this.$route.query
|
||||
this.loading = true
|
||||
// 获取业务数据
|
||||
getStandardPromotionDataById({ projectId: this.projectId }).then(res => {
|
||||
if (res.success) {
|
||||
const data = res.result || {}
|
||||
// 保存并回显表单信息
|
||||
this.formInfo = data
|
||||
this.$nextTick(() => {
|
||||
this.$refs.baseInfoForm.initData(data)
|
||||
})
|
||||
}
|
||||
})
|
||||
// 获取流程数据
|
||||
getStandardPromotionDetail({
|
||||
projectId,
|
||||
taskId
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
const data = res.result || {}
|
||||
const processAll = data.processAll || {}
|
||||
const processApprovalRecord = data.processApprovalRecord || {}
|
||||
this.info = data
|
||||
// 页面回显
|
||||
this.processInfoForm && this.processInfoForm.setFieldsValue({
|
||||
prcName: processAll.prcName,
|
||||
dueTime: processAll.dueTime,
|
||||
prcMes: processAll.prcMes
|
||||
})
|
||||
this.approvalInfoForm && this.approvalInfoForm.setFieldsValue({
|
||||
commitText: processApprovalRecord.commitText,
|
||||
commitFile: processApprovalRecord.commitFile
|
||||
})
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 获取页面参数
|
||||
async getPageParams (isValidate = true) {
|
||||
const params = {}
|
||||
// 收集所有表单信息
|
||||
let formDataList = []
|
||||
if (isValidate) {
|
||||
formDataList = await this.validateFormList(this.processInfoForm, this.approvalInfoForm)
|
||||
formDataList[2] = await this.$refs.baseInfoForm.getDataValidate()
|
||||
} else {
|
||||
formDataList = [
|
||||
this.processInfoForm.getFieldsValue(),
|
||||
this.approvalInfoForm.getFieldsValue(),
|
||||
this.$refs.baseInfoForm.getData()
|
||||
]
|
||||
}
|
||||
|
||||
// 开始处理信息
|
||||
// 流程信息
|
||||
params.processAll = Object.assign({}, this.info.processAll, formDataList[0], {
|
||||
projectId: this.projectId,
|
||||
taskId: this.$route.query.taskId
|
||||
})
|
||||
|
||||
// 处理其他参数
|
||||
params.map = Object.assign({}, {
|
||||
initiator: this.$store.getters.userInfo.id
|
||||
})
|
||||
|
||||
// 流程审批信息
|
||||
params.processApprovalRecord = Object.assign({}, this.info.processApprovalRecord, formDataList[1], {
|
||||
projectId: this.projectId
|
||||
})
|
||||
|
||||
// 业务信息
|
||||
params.processEsDeclare = Object.assign({}, formDataList[2], {
|
||||
projectId: this.projectId,
|
||||
id: this.formInfo.id
|
||||
})
|
||||
|
||||
return params
|
||||
},
|
||||
/**
|
||||
* 保存
|
||||
*/
|
||||
handleSave () {
|
||||
if (this.loading) return
|
||||
this.loading = true
|
||||
this.getPageParams(false).then(res => {
|
||||
console.log(res)
|
||||
return saveStandardPromotion(res)
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).catch((err) => {
|
||||
console.log(err)
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 提交
|
||||
*/
|
||||
handleSubmit () {
|
||||
if (this.loading) return
|
||||
this.currentNode = +this.currentNode + 1 + ''
|
||||
this.loading = true
|
||||
this.getPageParams().then(res => {
|
||||
console.log(res)
|
||||
return startStandardPromotion(res)
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).catch((err) => {
|
||||
console.log(err)
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
handleAgree () {
|
||||
if (this.loading) return
|
||||
this.currentNode = +this.currentNode + 1 + ''
|
||||
/**
|
||||
* 验证所有表单
|
||||
* @param formList - 多个需要校验的表单实例
|
||||
*/
|
||||
validateFormList (...formList) {
|
||||
const promiseList = []
|
||||
for (const form of formList) {
|
||||
promiseList.push(
|
||||
new Promise((resolve, reject) => {
|
||||
form.validateFields((err, val) => {
|
||||
if (!err) {
|
||||
resolve(val)
|
||||
} else {
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
)
|
||||
}
|
||||
return Promise.all(promiseList).catch(() => {
|
||||
throw new Error('base')
|
||||
})
|
||||
},
|
||||
handleCancel () {
|
||||
this.goBack()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<a-form-model :model="formInline" class="form-add" :rules="rules" ref="ruleForm">
|
||||
<div class="collapsible-panel-form">
|
||||
<div class="form-flex-box collapsible-panel-form-content collapsible-content-no-head">
|
||||
<div class="form-flex-box">
|
||||
<!-- 紧急程度 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
@@ -10,13 +10,13 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.urgency') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="urgency">
|
||||
<a-form-model-item class="item-model" prop="emergencyDegree">
|
||||
<j-dict-select-tag :disabled="disabled"
|
||||
v-model="formInline.urgency"
|
||||
v-model="formInline.emergencyDegree"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardPromotionProcess.urgency')"
|
||||
:triggerChange="false"
|
||||
type="radio"
|
||||
dictCode="yn" />
|
||||
dictCode="emergency_degree" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 企标编号 -->
|
||||
@@ -27,13 +27,13 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.esNumber') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="esNumber">
|
||||
<standard-selection source="3"
|
||||
<a-form-model-item class="item-model" prop="standardNo">
|
||||
<standard-selection source="3" type="radio"
|
||||
:disabledSourceSearch="true"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardPromotionProcess.esNumber')"
|
||||
@nameChange="changeStandardName"
|
||||
v-model="formInline.esNumber" />
|
||||
v-model="formInline.standardNo" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 企标名称 -->
|
||||
@@ -43,9 +43,9 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.esName') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="esName">
|
||||
<a-form-model-item class="item-model" prop="standardName">
|
||||
<a-input disabled
|
||||
v-model="formInline.esName"
|
||||
v-model="formInline.standardName"
|
||||
:maxLength="50"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.standardPromotionProcess.esName')" />
|
||||
</a-form-model-item>
|
||||
@@ -58,9 +58,10 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.promoter') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="promoter">
|
||||
<a-form-model-item class="item-model" prop="declareUser">
|
||||
<user-selection :placeholder="$t('pleaseSelect')+$t('workCenter.standardPromotionProcess.promoter')"
|
||||
v-model="formInline.promoter"
|
||||
v-model="formInline.declareUser"
|
||||
:name-str="formInline.declareUserDictText"
|
||||
:disabled="disabled"
|
||||
type="radio" />
|
||||
</a-form-model-item>
|
||||
@@ -73,8 +74,8 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.mainDeliveryDepart') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="mainDeliveryDepart">
|
||||
<a-input v-model="formInline.mainDeliveryDepart"
|
||||
<a-form-model-item class="item-model" prop="mainDepart">
|
||||
<a-input v-model="formInline.mainDepart"
|
||||
:maxLength="50"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.standardPromotionProcess.mainDeliveryDepart')" />
|
||||
</a-form-model-item>
|
||||
@@ -87,8 +88,8 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.subject') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="subject">
|
||||
<a-input v-model="formInline.subject"
|
||||
<a-form-model-item class="item-model" prop="declareTopic">
|
||||
<a-input v-model="formInline.declareTopic"
|
||||
:maxLength="50"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.standardPromotionProcess.subject')" />
|
||||
</a-form-model-item>
|
||||
@@ -101,10 +102,10 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.promotionDate') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="promotionDate">
|
||||
<a-form-model-item class="item-model" prop="declareDate">
|
||||
<j-date date-format="YYYY-MM-DD" style="width: 100%" showType="day" :disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect') + $t('workCenter.standardPromotionProcess.promotionDate')"
|
||||
v-model="formInline.promotionDate" />
|
||||
v-model="formInline.declareDate" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 参宣单位 -->
|
||||
@@ -115,13 +116,14 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.participatingUnits') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="participatingUnits">
|
||||
<a-form-model-item class="item-model" prop="attendUnit">
|
||||
<j-select-depart
|
||||
:disabled="disabled"
|
||||
v-model="formInline.participatingUnits"
|
||||
v-model="formInline.attendUnit"
|
||||
:multi="true"
|
||||
:placeholder="$t('pleaseSelect') + $t('workCenter.standardPromotionProcess.participatingUnits')"
|
||||
:backDepart="true"
|
||||
@change="changeParticipatingUnits"
|
||||
:treeOpera="true">>
|
||||
</j-select-depart>
|
||||
</a-form-model-item>
|
||||
@@ -134,9 +136,9 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.contactPerson') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="contactPerson">
|
||||
<a-form-model-item class="item-model" prop="initiator">
|
||||
<a-input disabled
|
||||
v-model="formInline.contactPerson"
|
||||
v-model="formInline.initiator"
|
||||
:maxLength="50"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.standardPromotionProcess.contactPerson')" />
|
||||
</a-form-model-item>
|
||||
@@ -149,24 +151,24 @@
|
||||
{{ $t('workCenter.standardPromotionProcess.content') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="content">
|
||||
<a-form-model-item class="item-model" prop="declareContent">
|
||||
<a-textarea :maxLength="500"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardPromotionProcess.content')"
|
||||
:rows="4"
|
||||
v-model="formInline.content" />
|
||||
v-model="formInline.declareContent" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 附件 -->
|
||||
<!-- 宣贯材料 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('workCenter.standardPromotionProcess.promotionalMaterials')">
|
||||
{{ $t('workCenter.standardPromotionProcess.promotionalMaterials') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="promotionalMaterials">
|
||||
<a-button type="primary" class="button-text" @click="clickButtonToUpload" :disabled="disabled">
|
||||
<a-form-model-item class="item-model" prop="declareFile">
|
||||
<a-button type="primary" class="button-text" @click="clickButtonToUpload" style="width: 100%;">
|
||||
{{
|
||||
(formInline.promotionalMaterials === 'null' || formInline.promotionalMaterials === '' || formInline.promotionalMaterials === null || formInline.promotionalMaterials === undefined)
|
||||
(formInline.declareFile === 'null' || formInline.declareFile === '' || formInline.declareFile === null || formInline.declareFile === undefined)
|
||||
? $t('uploadFile.clickUpload')
|
||||
: $t('uploadFile.viewUploadedFiles')
|
||||
}}
|
||||
@@ -176,7 +178,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- 上传 -->
|
||||
<upload-file ref="uploadFile" @change="uploadFileChange" :return-url="false"></upload-file>
|
||||
<upload-file ref="uploadFile" @change="uploadFileChange" :return-url="false" :disabled="disabled"></upload-file>
|
||||
</a-form-model>
|
||||
</template>
|
||||
|
||||
@@ -184,6 +186,7 @@
|
||||
import StandardSelection from '@comp/selection/StandardSelection'
|
||||
import UserSelection from '@comp/selection/UserSelection'
|
||||
import UploadFile from '@comp/UploadFile'
|
||||
import { getLiaisonList } from '@api/workCenter'
|
||||
export default {
|
||||
name: 'BaseInfoForm',
|
||||
components: { UploadFile, UserSelection, StandardSelection },
|
||||
@@ -197,6 +200,8 @@ export default {
|
||||
data () {
|
||||
return {
|
||||
formInline: {},
|
||||
// 当前数据
|
||||
model: {},
|
||||
// 操作类型
|
||||
operationType: null,
|
||||
rules: {
|
||||
@@ -238,34 +243,36 @@ export default {
|
||||
methods: {
|
||||
// 拿到外面传进来的数据初始化,因为套了几层就不在外层初始化数据了
|
||||
initData (data) {
|
||||
this.data = data
|
||||
this.model = Object.assign({}, data)
|
||||
// 给表单赋值
|
||||
// this.formInline =
|
||||
this.formInline = {
|
||||
...data
|
||||
}
|
||||
},
|
||||
// 外层要获取数据
|
||||
getData () {
|
||||
// 把数据抛出,在线编辑不知道要不要抛
|
||||
const data = {}
|
||||
data.formInline = this.formInline
|
||||
return data
|
||||
return { ...this.formInline }
|
||||
},
|
||||
// 外层获取数据要过校验,返回false表示没有通过校验
|
||||
getDataValidate (callback) {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
const data = {}
|
||||
data.formInline = this.formInline
|
||||
callback(data)
|
||||
}
|
||||
// 获取数据并验证
|
||||
getDataValidate () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
const data = { ...this.formInline }
|
||||
resolve(data)
|
||||
} else {
|
||||
reject(new Error('base'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 选择标准带出名称
|
||||
changeStandardName (val) {
|
||||
this.formInline.esName = val
|
||||
this.formInline.standardName = val
|
||||
},
|
||||
// 点击点击上传按钮
|
||||
clickButtonToUpload (item) {
|
||||
this.$refs.uploadFile.open(item.fileId)
|
||||
clickButtonToUpload () {
|
||||
this.$refs.uploadFile.open(this.formInline.declareFile)
|
||||
// this.uploadName = item.dbFieldName
|
||||
},
|
||||
// 文件上传改变后的回调
|
||||
@@ -277,7 +284,17 @@ export default {
|
||||
})
|
||||
}
|
||||
/** 赋值给当前对应的表单文件 */
|
||||
this.form.file = attIdList.join(',')
|
||||
this.$set(this.formInline, 'declareFile', attIdList.join(','))
|
||||
// this.formInline.attachment = attIdList.join(',')
|
||||
},
|
||||
// 选择参宣单位,回显联络人
|
||||
changeParticipatingUnits (val) {
|
||||
getLiaisonList({ deptIds: val }).then(res => {
|
||||
if (res.success) {
|
||||
const data = res.result || ''
|
||||
this.$set(this.formInline, 'initiator', data)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -285,8 +302,5 @@ export default {
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
.collapsible-content-no-head {
|
||||
border-top: 1px solid #E5E6EB;
|
||||
border-radius: 8px 8px 8px 8px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user