[update] 修改企标流程保存后回显的bug

This commit is contained in:
lideqin
2024-01-04 15:30:24 +08:00
parent d0e22cd06b
commit ff76fffa2c
11 changed files with 236 additions and 106 deletions
+2 -1
View File
@@ -114,7 +114,7 @@ export default {
}
getPersonInfoList(param).then(res => {
if (res.success) {
console.log(res.result)
console.log('-------------获取人员信息完成', res.result)
// 处理人员信息数据,判断每个节点是否能选人
this.personnelInfoData = res.result.map(item => {
return {
@@ -128,6 +128,7 @@ export default {
},
// 从草稿进来填过的人员需要回显
draftInitPersonInfo (personInfoObj) {
console.log('--------------draftInitPersonInfo 草稿进来回显')
this.personnelInfoData = this.personnelInfoData.map(item => {
return {
...item,
+31 -11
View File
@@ -135,6 +135,7 @@
import ListMixin from '../mixins/ListMixin'
import CustomHeader from '@/components/CustomHeader'
import { queryAllRole, queryDepartTreeList } from '../api/api'
import { getAction } from '@/api/manage'
export default {
name: 'SelectUser',
@@ -167,16 +168,16 @@ export default {
default: 'radio'
}
},
// watch: {
// selectedData: {
// immediate: true,
// deep: true,
// handler (val) {
// console.log(val)
// this.handleCheckedArr()
// }
// }
// },
watch: {
selectedData: {
immediate: true,
handler (val) {
if (val) {
this.getUserListByIds(val)
}
}
}
},
data () {
return {
realname: '', // 搜索框数据
@@ -193,7 +194,8 @@ export default {
pageSize: 10
},
url: {
list: '/sys/user/page'
list: '/sys/user/page',
userListByIds: '/sys/user/queryByIds'
},
checkedArr: [],
selectedDataArr: [],
@@ -231,6 +233,12 @@ export default {
arr.push(i)
}
}
for (const i of this.selectedDataArr) {
if (!arr.find(item => item.id === i.id)) {
// 已加载完的列表里还没有的选中数据,按顺序推入
arr.push(i)
}
}
this.selectedDataArr = arr
} else {
console.log('------------删除了数据------------')
@@ -242,6 +250,18 @@ export default {
}
console.log(this.selectedDataArr)
},
// 根据id获取用户信息,初始化选中数据,不查选中数据的话如果没有划到那一页,名字带不出来
getUserListByIds (ids) {
const params = {}
params.userIds = ids
getAction(this.url.userListByIds, params).then((res) => {
if (res.success) {
this.selectedDataArr = res.result || []
} else {
this.$message(res.message)
}
})
},
handleCheckedArr () {
// 清空选中的数据
if (this.type === 'checkbox') {
+41 -6
View File
@@ -64,7 +64,7 @@
stop-propagation
:before-close="handleBeforeClose">
<div class="item-box">
<van-checkbox :name="item.id" @click="checkboxClick(item)" shape="square" :disabled="readonly"></van-checkbox>
<van-checkbox :name="item.userId" @click="checkboxClick(item)" shape="square" :disabled="readonly"></van-checkbox>
<div class="item-container">
<div class="item-title">
{{ item.realname }}({{ item.username }})
@@ -91,7 +91,7 @@
stop-propagation
:before-close="handleBeforeClose">
<div class="item-box">
<van-radio :name="item.id" @click="checkboxClick(item)" :disabled="readonly"></van-radio>
<van-radio :name="item.userId" @click="checkboxClick(item)" :disabled="readonly"></van-radio>
<div class="item-container">
<div class="item-title">
{{ item.realname }}({{ item.username }})
@@ -134,6 +134,7 @@
import CustomHeader from '@/components/CustomHeader'
import ListMixin from '@/mixins/ListMixin'
import { getWorkGroupTreeList, queryAllRole } from '@/api/api'
import { getAction } from '@/api/manage'
export default {
name: 'SelectUserByWorkGroup',
@@ -166,6 +167,16 @@ export default {
default: 'radio'
}
},
watch: {
selectedData: {
immediate: true,
handler (val) {
if (val) {
this.getUserListByIds(val)
}
}
}
},
data () {
return {
realname: '', // 搜索框数据
@@ -182,7 +193,8 @@ export default {
pageSize: 10
},
url: {
list: '/act/user/workGroupPage'
list: '/act/user/workGroupPage',
userListByIds: '/sys/user/queryByIds'
},
checkedArr: [],
selectedDataArr: [],
@@ -211,12 +223,18 @@ export default {
checkboxClick (item) {
console.log(item)
if (this.type === 'checkbox') {
if (this.checkedArr.includes(item.id)) {
if (this.checkedArr.includes(item.userId)) {
console.log('------------增加了数据------------')
// 说明是增加了数据,为了顺序和列表顺序保持一致,用循环设置
const arr = []
for (const i of this.listData) {
if (this.checkedArr.includes(i.id)) {
if (this.checkedArr.includes(i.userId)) {
arr.push(i)
}
}
for (const i of this.selectedDataArr) {
if (!arr.find(item => item.userId === i.userId)) {
// 已加载完的列表里还没有的选中数据,按顺序推入
arr.push(i)
}
}
@@ -224,13 +242,30 @@ export default {
} else {
console.log('------------删除了数据------------')
// 说明是删除了数据
this.selectedDataArr = this.selectedDataArr.filter(i => i.id !== item.id)
this.selectedDataArr = this.selectedDataArr.filter(i => i.userId !== item.userId)
}
} else {
this.selectedDataArr = [item]
}
console.log(this.selectedDataArr)
},
// 根据id获取用户信息,初始化选中数据,不查选中数据的话如果没有划到那一页,名字带不出来
getUserListByIds (ids) {
const params = {}
params.userIds = ids
getAction(this.url.userListByIds, params).then((res) => {
if (res.success) {
this.selectedDataArr = res.result.map(item => {
return {
...item,
userId: item.id
}
}) || []
} else {
this.$message(res.message)
}
})
},
handleCheckedArr () {
// 清空选中的数据
if (this.type === 'checkbox') {
+4 -3
View File
@@ -131,12 +131,13 @@ export const EsRevisionPlanStandardizationInitNodes = new EsEnums({
standardizationStart: { text: '标准化工程师发起', value: 'sid-880237E7-1735-49AE-B9EC-D7DA5D28E17D' },
contactSelectApprover: { text: '部所联络人选取审批人', value: 'sid-C3F65D96-76B0-4901-8C8A-D6B390099381' },
standardizationUpdate: { text: '标准化工程师修改调整', value: 'sid-3CB0E6B1-9918-4A21-9C62-9344FF1B7269' },
mainDrafterLeaderSend: { text: '主起草单位主管级领导审批下发', value: 'sid-57656F2E-0AE1-45D8-85D0-CE3E37D9E926' },
mainDrafterLeaderSend: { text: '主起草单位主管级领导审批下发', value: 'sid-050827D6-AA12-4561-8B37-4D2023AF6D7F' },
contactUpdate: { text: '部所联络人修改调整', value: 'sid-3AF454B3-1D93-4BF6-B925-98F1A7E125B8' },
mainDrafterEnterInfo: { text: '主起草人填写信息', value: 'sid-E2015AB3-9C52-4E49-A261-DA11CB4BAA7E' },
contactsApproval: { text: '部所联络人汇总', value: 'sid-158523C5-7D8F-4433-B2DB-8A6C09DFDB1B' },
mainDrafterLeaderApproval: { text: '主起草单位主管级领导批准', value: 'sid-050827D6-AA12-4561-8B37-4D2023AF6D7F', isMobile: true },
standardizationSumUp: { text: '标准化归档', value: 'sid-86610E08-1DDB-467A-A32E-C661FE889A57' }
mainDrafterLeaderApproval: { text: '主起草单位主管级领导批准', value: 'sid-57656F2E-0AE1-45D8-85D0-CE3E37D9E926', isMobile: true },
standardizationSumUp: { text: '标准化归档', value: 'sid-86610E08-1DDB-467A-A32E-C661FE889A57' },
standardizationTwoUpdate: { text: '标准化工程师二次修改调整', value: 'sid-BEAAC29F-17D8-4162-8C0B-01A4A8ED7729' }
})
// 企标制修订流程
@@ -65,7 +65,7 @@
bordered
:scroll="{x: '100%'}"
ref="table"
rowKey="espId"
rowKey="id"
:columns="columns"
:dataSource="baseInfoForm"
:pagination="false">
@@ -125,7 +125,7 @@
<script>
import ProcessCommonLayout from '@/components/ProcessCommonLayout'
import {EsInitChangeNodes, EsInspectionPlan, ProcessKey} from '@/enums/commonEnums'
import { EsRevisionPlanActivityReportNodes, ProcessKey } from '@/enums/commonEnums'
import CalendarField from '@/components/CalendarField'
import SelectUser from '@/components/SelectUser'
import {
@@ -285,13 +285,13 @@ export default {
scopedSlots: { customRender: 'text' }
}
],
baseInfoForm: {}
baseInfoForm: []
}
},
// 组件内路由拦截
beforeRouteEnter (to, from, next) {
// 如果不是移动端支持的节点,就跳转NoMobile
if (!EsInitChangeNodes.propertyOfValue('isMobile', to.query.nodeId)) {
if (!EsRevisionPlanActivityReportNodes.propertyOfValue('isMobile', to.query.nodeId)) {
next({ path: '/noMobile' })
}
next()
@@ -306,7 +306,21 @@ export default {
activelyReportGetDataById(this.$route.query.taskId).then(res => {
if (res.success) {
const result = res.result
this.processInfoForm = result.common
// 有草稿json按草稿进来的回显
if (result.infoJsonStr) {
// 初始化流程信息
const prcObj = Object.assign({}, result)
prcObj.dueTime = result.processDueDate
prcObj.prcMes = result.processDescription
// 初始化流程审批信息
prcObj.commitText = result.handleText
prcObj.commitFile = result.handleFile
this.processInfoForm = Object.assign({}, prcObj)
result.dataList = JSON.parse(result.infoJsonStr).dataList
console.log(result.data)
} else {
this.processInfoForm = result.common
}
this.baseInfoForm = result.dataList
} else {
this.$message(res.message)
@@ -113,14 +113,14 @@
<script>
import ProcessCommonLayout from '@/components/ProcessCommonLayout'
import {EsInitChangeNodes, ProcessKey} from '@/enums/commonEnums'
import {EsInitChangeNodes, EsRevisionPlanStandardizationInitNodes, ProcessKey} from '@/enums/commonEnums'
import CalendarField from '@/components/CalendarField'
import SelectUser from '@/components/SelectUser'
import {
standardizationInitGetDataById,
standardizationInitTurnTo,
standardizationInitAgree,
standardizationInitReject, activelyReportGetDataById, activelyReportTurnTo, activelyReportAgree, activelyReportReject
standardizationInitReject
} from '@/api/api'
export default {
@@ -272,7 +272,7 @@ export default {
// 组件内路由拦截
beforeRouteEnter (to, from, next) {
// 如果不是移动端支持的节点,就跳转NoMobile
if (!EsInitChangeNodes.propertyOfValue('isMobile', to.query.nodeId)) {
if (!EsRevisionPlanStandardizationInitNodes.propertyOfValue('isMobile', to.query.nodeId)) {
next({ path: '/noMobile' })
}
next()
@@ -287,7 +287,21 @@ export default {
standardizationInitGetDataById(this.$route.query.taskId).then(res => {
if (res.success) {
const result = res.result
this.processInfoForm = result.common
// 有草稿json按草稿进来的回显
if (result.infoJsonStr) {
// 初始化流程信息
const prcObj = Object.assign({}, result)
prcObj.dueTime = result.processDueDate
prcObj.prcMes = result.processDescription
// 初始化流程审批信息
prcObj.commitText = result.handleText
prcObj.commitFile = result.handleFile
this.processInfoForm = Object.assign({}, prcObj)
result.dataList = JSON.parse(result.infoJsonStr)
console.log(result.data)
} else {
this.processInfoForm = result.common
}
this.baseInfoForm = result.dataList
} else {
this.$message(res.message)
@@ -1109,7 +1109,21 @@ export default {
getProcessDataById(this.$route.query.taskId).then(res => {
if (res.success) {
const result = res.result
this.processInfoForm = result.common
// 有草稿json按草稿进来的回显
if (result.infoJsonStr) {
// 初始化流程信息
const prcObj = Object.assign({}, result)
prcObj.dueTime = result.processDueDate
prcObj.prcMes = result.processDescription
// 初始化流程审批信息
prcObj.commitText = result.handleText
prcObj.commitFile = result.handleFile
this.processInfoForm = Object.assign({}, prcObj)
result.dataList = JSON.parse(result.infoJsonStr).arr
console.log(result.data)
} else {
this.processInfoForm = result.common
}
this.baseInfoForm = result.dataList
// 节点7或者节点8需要回显选人表单
if (this.currentNode === 7) {
@@ -53,17 +53,17 @@
></standardization-check-base-info>
<!-- 5评分人打分 -->
<scorer-mark-base-info
v-if="currentNode === 5"
v-else-if="currentNode === 5"
ref="baseInfoRef"
></scorer-mark-base-info>
<!-- 6标准化确认是否开启征求意见 -->
<confirm-whether-comment-base-info
v-if="currentNode === 6"
v-else-if="currentNode === 6"
ref="baseInfoRef"
></confirm-whether-comment-base-info>
<!-- 7部所联络人下发 -->
<depart-liaison-issue-base-info
v-if="currentNode === 7"
v-else-if="currentNode === 7"
ref="baseInfoRef"
></depart-liaison-issue-base-info>
<!-- 13其他起草人校对 -->
@@ -151,7 +151,7 @@ import SelectUser from '@/components/SelectUser'
import CalendarField from '@/components/CalendarField'
import StandardizationCheckBaseInfo
from '@/views/workCenter/enterpriseStandardRevision/module/StandardizationCheckBaseInfo'
import {EsInitChangeNodes, EsRevisionNodes, ProcessKey} from '@/enums/commonEnums'
import { EsRevisionNodes, ProcessKey } from '@/enums/commonEnums'
import {
enStandardEditSave,
enStandardEditTurnTo,
@@ -159,12 +159,12 @@ import {
enStandardEditReject,
enStandardEditGetDataById
} from '@/api/api'
import ScorerMarkBaseInfo from "@/views/workCenter/enterpriseStandardRevision/module/ScorerMarkBaseInfo";
import ScorerMarkBaseInfo from '@/views/workCenter/enterpriseStandardRevision/module/ScorerMarkBaseInfo'
import ConfirmWhetherCommentBaseInfo
from "@/views/workCenter/enterpriseStandardRevision/module/ConfirmWhetherCommentBaseInfo";
from '@/views/workCenter/enterpriseStandardRevision/module/ConfirmWhetherCommentBaseInfo'
import DepartLiaisonIssueBaseInfo
from "@/views/workCenter/enterpriseStandardRevision/module/DepartLiaisonIssueBaseInfo";
import OnlyOnlineEditBaseInfo from "@/views/workCenter/enterpriseStandardRevision/module/OnlyOnlineEditBaseInfo";
from '@/views/workCenter/enterpriseStandardRevision/module/DepartLiaisonIssueBaseInfo'
import OnlyOnlineEditBaseInfo from '@/views/workCenter/enterpriseStandardRevision/module/OnlyOnlineEditBaseInfo'
export default {
name: 'EnterpriseStandardRevision',
@@ -246,6 +246,7 @@ export default {
this.currentNode = 999
}
}
this.initData()
},
data () {
return {
@@ -265,9 +266,6 @@ export default {
baseInfoForm: {}
}
},
created () {
this.initData()
},
methods: {
// 初始化数据
initData () {
@@ -286,9 +284,11 @@ export default {
prcObj.commitFile = result.handleFile
this.processInfoForm = Object.assign({}, prcObj)
result.data = JSON.parse(result.infoJsonStr).data
// 如果是节点1的保存回显人员信息
// 如果是节点7的保存回显人员信息
if (this.currentNode === 7) {
this.$refs.processCommonLayout.draftInitPersonInfo(JSON.parse(result.infoJsonStr).personnelObj)
this.$refs.processCommonLayout.$nextTick(() => {
this.$refs.processCommonLayout.draftInitPersonInfo(JSON.parse(result.infoJsonStr).personnelObj)
})
}
console.log(result.data)
} else {
@@ -372,6 +372,7 @@ export default {
this.$message.warning(this.$t('pleaseFillInAtLeastOneItem'))
return
} else {
console.log(personnelObj)
// 业务基本信息和人员信息
paramObj.infoJsonStr = JSON.stringify({
data: Object.assign({}, baseInfo),
@@ -470,6 +471,7 @@ export default {
})
}).catch((errorInfo) => {
console.log(errorInfo)
this.$refs.processCommonLayout.activeTab = 'basic'
if (errorInfo.find(item => item.name === 'commitText')) {
// 没通过校验的有备注,弹窗提示输入备注
this.$message(this.$t('pleaseEnterRemarks'))
@@ -49,8 +49,7 @@ export default {
contactUser: [
{
required: true,
message: this.$t('pleaseSelect') + this.$t('enStandardRevision.departmentalLiaison'),
trigger: 'change'
message: this.$t('pleaseSelect') + this.$t('enStandardRevision.departmentalLiaison')
}
]
},
@@ -63,9 +62,9 @@ export default {
handler (val) {
if (val && val === '1') {
// 开启征求意见,部门联络人必填
this.rules.contactUser[0].required = true
this.baseInfoRule.contactUser[0].required = true
} else {
this.rules.contactUser[0].required = false
this.baseInfoRule.contactUser[0].required = false
}
}
}
@@ -66,6 +66,9 @@ export default {
methods: {
initData (data) {
this.formInline = Object.assign({}, data)
if (!this.formInline.workGroup) {
this.formInline.workGroup = undefined
}
// 给表单赋值
this.$nextTick(() => {
this.$refs.baseInfoForm.initData(data)
@@ -1,62 +1,69 @@
<template>
<div>
<base-info-form ref="baseInfoForm"></base-info-form>
<van-form
ref="baseInfoFormRef"
input-align="right"
error-message-align="right"
:readonly="readonly"
>
<!-- 是否可进行评审会 -->
<picker-field
:rules="baseInfoRule.reviewMeetingFlag"
:label="$t('enStandardRevision.isCanAuditMeeting')"
:placeholder="$t('pleaseSelect') + $t('enStandardRevision.isCanAuditMeeting')"
:columnData="isColumnData"
@change="reviewMeetingFlagChange"
v-model="formInline.reviewMeetingFlag" />
<template v-if="formInline.reviewMeetingFlag === '1'">
<!-- 评审人 -->
<select-user-field
:rules="baseInfoRule.reviewUser"
:label="$t('enStandardRevision.assessor')"
v-model="formInline.reviewUser"
fieldName="reviewUser"
@selectNameChange="userNameChange"
:checkedNames="formInline.reviewUser_dictText"
type="radio"
/>
<!-- 评分人 -->
<select-user-field
:rules="baseInfoRule.raters"
:label="$t('enStandardRevision.scorer')"
v-model="formInline.raters"
fieldName="raters"
@selectNameChange="userNameChange"
:checkedNames="formInline.raters_dictText"
type="checkbox"
/>
<!-- 评审日期 -->
<calendar-field
:rules="baseInfoRule.reviewDate"
:label="$t('enStandardRevision.reviewDate')"
v-model="formInline.reviewDate"
:placeholder="$t('pleaseSelect') + $t('enStandardRevision.reviewDate')"
type="date"
/>
<!-- 评审地点 -->
<van-field
:rules="baseInfoRule.reviewPlace"
v-model="formInline.reviewPlace"
:label="$t('enStandardRevision.judgingVenue')"
:placeholder="$t('pleaseEnter') + $t('enStandardRevision.judgingVenue')"
type="textarea"
autosize
rows="1"
:border="false"
/>
</template>
</van-form>
<!-- 标准文本 -->
<div class="process-part process-right-box">
<div class="title-wrapper">
<div class="process-part-title">{{ $t('standardText') }}</div>
<van-button plain color="#E63636">{{ $t('look') }}</van-button>
</div>
<van-form
ref="baseInfoFormRef"
input-align="right"
error-message-align="right"
:readonly="readonly"
>
<!-- 是否可进行评审会 -->
<picker-field
:rules="baseInfoRule.reviewMeetingFlag"
:label="$t('enStandardRevision.isCanAuditMeeting')"
:placeholder="$t('pleaseSelect') + $t('enStandardRevision.isCanAuditMeeting')"
:columnData="isColumnData"
@change="reviewMeetingFlagChange"
v-model="formInline.reviewMeetingFlag" />
<template v-if="formInline.reviewMeetingFlag === '1'">
<!-- 评审人 -->
<select-user-field
:rules="baseInfoRule.reviewUser"
:label="$t('enStandardRevision.assessor')"
v-model="formInline.reviewUser"
fieldName="reviewUser"
@selectNameChange="userNameChange"
:checkedNames="formInline.reviewUser_dictText"
type="radio"
/>
<!-- 评分人 -->
<select-user-field
:rules="baseInfoRule.raters"
:label="$t('enStandardRevision.scorer')"
v-model="formInline.raters"
fieldName="raters"
@selectNameChange="userNameChange"
:checkedNames="formInline.raters_dictText"
type="checkbox"
/>
<!-- 评审日期 -->
<calendar-field
:rules="baseInfoRule.reviewDate"
:label="$t('enStandardRevision.reviewDate')"
v-model="formInline.reviewDate"
:placeholder="$t('pleaseSelect') + $t('enStandardRevision.reviewDate')"
type="date"
/>
<!-- 评审地点 -->
<van-field
:rules="baseInfoRule.reviewPlace"
v-model="formInline.reviewPlace"
:label="$t('enStandardRevision.judgingVenue')"
:placeholder="$t('pleaseEnter') + $t('enStandardRevision.judgingVenue')"
type="textarea"
autosize
rows="1"
:border="false"
/>
</template>
</van-form>
</div>
</div>
</template>
@@ -117,9 +124,16 @@ export default {
methods: {
initData (data) {
this.formInline = Object.assign({}, data)
// 是否进行评审会没有值,设置默认选是
if (!this.formInline.reviewMeetingFlag) {
this.formInline.reviewMeetingFlag = '1'
}
if (!this.formInline.reviewUser) {
this.formInline.reviewUser = undefined
}
if (!this.formInline.raters) {
this.formInline.raters = undefined
}
this.reviewMeetingFlagChange()
// 给表单赋值
this.$nextTick(() => {
@@ -155,6 +169,19 @@ export default {
}
</script>
<style scoped>
<style scoped lang="less">
@import '~@assets/less/common.less';
.process-right-box {
.title-wrapper {
display: flex;
justify-content: space-between;
align-items: center;
/deep/ .van-button {
width: 1.22rem;
height: 0.57rem;
margin: 0 0.32rem 0.24rem 0;
font-size: 0.28rem;
}
}
}
</style>